summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2021-10-29 13:15:38 +0200
committerRobert Hensing <robert@roberthensing.nl>2021-11-01 09:34:07 +0100
commit27644a82a99b4855e40dfd6c09d7288664217662 (patch)
tree54b39557501693ae87d2a649714d4a47e62e0fed /lib
parentdece37b83a46d488787859332e18286727b96cc4 (diff)
modules: Add extendModules to module args
Diffstat (limited to 'lib')
-rw-r--r--lib/modules.nix34
1 files changed, 19 insertions, 15 deletions
diff --git a/lib/modules.nix b/lib/modules.nix
index c25972999dfe..3a420451bf8e 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -121,7 +121,9 @@ rec {
};
config = {
- _module.args = args;
+ _module.args = {
+ inherit extendModules;
+ } // args;
};
};
@@ -186,24 +188,26 @@ rec {
checked = builtins.seq checkUnmatched;
+ extendModules = extendArgs@{
+ modules ? [],
+ specialArgs ? {},
+ prefix ? [],
+ }:
+ evalModules (evalModulesArgs // {
+ modules = evalModulesArgs.modules ++ modules;
+ specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
+ prefix = extendArgs.prefix or evalModulesArgs.prefix;
+ });
+
+ type = lib.types.submoduleWith {
+ inherit modules specialArgs;
+ };
+
result = {
options = checked options;
config = checked (removeAttrs config [ "_module" ]);
_module = checked (config._module);
-
- extendModules = extendArgs@{
- modules ? [],
- specialArgs ? {},
- prefix ? [],
- }:
- evalModules (evalModulesArgs // {
- modules = evalModulesArgs.modules ++ modules;
- specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
- prefix = extendArgs.prefix or evalModulesArgs.prefix;
- });
- type = lib.types.submoduleWith {
- inherit modules specialArgs;
- };
+ inherit extendModules type;
};
in result;