summary refs log tree commit diff
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)
downloadnixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.tar
nixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.tar.gz
nixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.tar.bz2
nixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.tar.lz
nixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.tar.xz
nixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.tar.zst
nixpkgs-27644a82a99b4855e40dfd6c09d7288664217662.zip
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 c25972999df..3a420451bf8 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;