From dc31e3e36b59e8df6f908e49f2da6454299ddf42 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Tue, 23 Jul 2024 18:27:15 +0800 Subject: [PATCH] flake-parts/setups: create module option for unified configuration directory --- modules/flake-parts/setups/default.nix | 33 ++++++++++++++----- modules/flake-parts/setups/disko.nix | 5 +-- modules/flake-parts/setups/home-manager.nix | 2 +- modules/flake-parts/setups/nixos.nix | 3 +- modules/flake-parts/setups/nixvim.nix | 2 +- .../flake-parts/setups/wrapper-manager.nix | 2 +- 6 files changed, 32 insertions(+), 15 deletions(-) diff --git a/modules/flake-parts/setups/default.nix b/modules/flake-parts/setups/default.nix index 27c3a147..4a861015 100644 --- a/modules/flake-parts/setups/default.nix +++ b/modules/flake-parts/setups/default.nix @@ -14,15 +14,30 @@ ./wrapper-manager.nix ]; - options.setups.sharedNixpkgsConfig = lib.mkOption { - type = with lib.types; attrsOf anything; - description = '' - Shared configuration of the nixpkgs instance to be passed to all of the - module environments based from the nixpkgs module system. - ''; - default = { }; - example = { - allowUnfree = true; + options.setups = { + configDir = lib.mkOption { + type = lib.types.path; + default = ../../../configs; + description = '' + The directory containing configurations of various environments. The + top-level directories are expected to be the name of the environment + with their configurations inside. + ''; + example = lib.literalExpression '' + ''${inputs.my-flake}/configs + ''; + }; + + sharedNixpkgsConfig = lib.mkOption { + type = with lib.types; attrsOf anything; + description = '' + Shared configuration of the nixpkgs instance to be passed to all of the + module environments based from the nixpkgs module system. + ''; + default = { }; + example = { + allowUnfree = true; + }; }; }; } diff --git a/modules/flake-parts/setups/disko.nix b/modules/flake-parts/setups/disko.nix index 72ae9dc2..ec48026d 100644 --- a/modules/flake-parts/setups/disko.nix +++ b/modules/flake-parts/setups/disko.nix @@ -8,6 +8,7 @@ let cfg = config.setups.disko; + partsConfig = config; diskoConfigType = { name, config, ... }: { options = { @@ -57,7 +58,7 @@ in config = lib.mkIf (config.diskoConfigs != [ ]) ( let diskoConfigs = - builtins.map (name: import ../../../configs/disko/${name}) config.diskoConfigs; + builtins.map (name: import "${partsConfig.setups.configDir}/disko/${name}") config.diskoConfigs; in { modules = lib.singleton { @@ -75,6 +76,6 @@ in config = { flake.diskoConfigurations = - lib.mapAttrs (name: _: import ../../../configs/disko/${name}) cfg.configs; + lib.mapAttrs (name: _: import "${partsConfig.setups.configDir}/disko/${name}") cfg.configs; }; } diff --git a/modules/flake-parts/setups/home-manager.nix b/modules/flake-parts/setups/home-manager.nix index 66a49b97..9f447b1f 100644 --- a/modules/flake-parts/setups/home-manager.nix +++ b/modules/flake-parts/setups/home-manager.nix @@ -105,7 +105,7 @@ let config = { modules = [ - ../../../configs/home-manager/${config.configName} + "${partsConfig.setups.configDir}/home-manager/${config.configName}" ( let diff --git a/modules/flake-parts/setups/nixos.nix b/modules/flake-parts/setups/nixos.nix index 8b254574..4c50e5a6 100644 --- a/modules/flake-parts/setups/nixos.nix +++ b/modules/flake-parts/setups/nixos.nix @@ -6,6 +6,7 @@ let cfg = config.setups.nixos; + partsConfig = config; nixosModules = ../../nixos; # A thin wrapper around the NixOS configuration function. @@ -172,7 +173,7 @@ let config.modules = [ # Bring in the required modules. - ../../../configs/nixos/${config.configName} + "${partsConfig.setups.configDir}/nixos/${config.configName}" # Setting up the typical configuration. ( diff --git a/modules/flake-parts/setups/nixvim.nix b/modules/flake-parts/setups/nixvim.nix index a503e95d..5edf68d0 100644 --- a/modules/flake-parts/setups/nixvim.nix +++ b/modules/flake-parts/setups/nixvim.nix @@ -103,7 +103,7 @@ let config = { modules = [ - ../../../configs/nixvim/${config.configName} + "${partsConfig.setups.configDir}/nixvim/${config.configName}" ]; }; }; diff --git a/modules/flake-parts/setups/wrapper-manager.nix b/modules/flake-parts/setups/wrapper-manager.nix index db34cd97..3fcd5ce0 100644 --- a/modules/flake-parts/setups/wrapper-manager.nix +++ b/modules/flake-parts/setups/wrapper-manager.nix @@ -86,7 +86,7 @@ let nixpkgs.config = cfg.sharedNixpkgsConfig; modules = [ - ../../../configs/wrapper-manager/${config.configName} + "${partsConfig.setups.configDir}/wrapper-manager/${config.configName}" ]; }; };