modules: Add extendModules to module args

Changed files
+19 -15
lib
+19 -15
lib/modules.nix
···
};
config = {
-
_module.args = args;
+
_module.args = {
+
inherit extendModules;
+
} // args;
};
};
···
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;