From 511c25788cd7c8cd3ebd1e84923c7024bc87baa1 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Sun, 22 Sep 2024 20:46:32 +0800 Subject: [PATCH] flake-parts/devpackages: init --- modules/flake-parts/default.nix | 1 + modules/flake-parts/devpackages.nix | 47 +++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 modules/flake-parts/devpackages.nix diff --git a/modules/flake-parts/default.nix b/modules/flake-parts/default.nix index 0f0f450a..61af71fe 100644 --- a/modules/flake-parts/default.nix +++ b/modules/flake-parts/default.nix @@ -7,6 +7,7 @@ { imports = [ ./images.nix + ./devpackages.nix ./disko-configurations.nix ./deploy-rs-nodes.nix ./home-configurations.nix diff --git a/modules/flake-parts/devpackages.nix b/modules/flake-parts/devpackages.nix new file mode 100644 index 00000000..1dbfe218 --- /dev/null +++ b/modules/flake-parts/devpackages.nix @@ -0,0 +1,47 @@ +{ config, lib, flake-parts-lib, ... }: + +let + inherit (flake-parts-lib) mkSubmoduleOptions mkPerSystemOption; +in +{ + options = { + flake = mkSubmoduleOptions { + devPackages = lib.mkOption { + type = with lib.types; lazyAttrsOf (attrsOf package); + default = { }; + description = '' + An attribute set of per-system packages intended to be consumed for + development environments. + ''; + }; + }; + + perSystem = mkPerSystemOption { + options = { + devPackages = lib.mkOption { + type = with lib.types; attrsOf package; + default = { }; + description = '' + An attribute set of per-system packages intended to be consumed for + development environments. + ''; + }; + }; + }; + }; + + config = { + flake.devPackages = + lib.mapAttrs + (k: v: v.devPackages) + (lib.filterAttrs + (k: v: v.devPackages != { }) + config.allSystems + ); + + perInput = system: flake: + lib.optionalAttrs (flake ? devPackages.${system}) { + devPackages = flake.devPackages.${system}; + }; + }; +}