home-manager: add extendModules attribute
The `home-manager.lib.homeManagerConfiguration` function now has an additional attribute that can be used to extend a Home Manager configuration with additional modules outside the project tree. It works similar to the result of `lib.nixosSystem` from Nixpkgs
This commit is contained in:
parent
c82e52b0d9
commit
c7ce343d9b
|
@ -28,18 +28,21 @@ let
|
||||||
specialArgs = { modulesPath = builtins.toString ./.; } // extraSpecialArgs;
|
specialArgs = { modulesPath = builtins.toString ./.; } // extraSpecialArgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = showWarnings (let
|
moduleChecks = raw:
|
||||||
failed = collectFailed rawModule.config;
|
showWarnings (let
|
||||||
|
failed = collectFailed raw.config;
|
||||||
failedStr = concatStringsSep "\n" (map (x: "- ${x}") failed);
|
failedStr = concatStringsSep "\n" (map (x: "- ${x}") failed);
|
||||||
in if failed == [ ] then
|
in if failed == [ ] then
|
||||||
rawModule
|
raw
|
||||||
else
|
else
|
||||||
throw ''
|
throw ''
|
||||||
|
|
||||||
Failed assertions:
|
Failed assertions:
|
||||||
${failedStr}'');
|
${failedStr}'');
|
||||||
|
|
||||||
in {
|
withExtraAttrs = rawModule:
|
||||||
|
let module = moduleChecks rawModule;
|
||||||
|
in {
|
||||||
inherit (module) options config;
|
inherit (module) options config;
|
||||||
|
|
||||||
activationPackage = module.config.home.activationPackage;
|
activationPackage = module.config.home.activationPackage;
|
||||||
|
@ -52,4 +55,7 @@ in {
|
||||||
(filter (a: a.condition) rawModule.config.news.entries);
|
(filter (a: a.condition) rawModule.config.news.entries);
|
||||||
|
|
||||||
inherit (module._module.args) pkgs;
|
inherit (module._module.args) pkgs;
|
||||||
}
|
|
||||||
|
extendModules = args: withExtraAttrs (rawModule.extendModules args);
|
||||||
|
};
|
||||||
|
in withExtraAttrs rawModule
|
||||||
|
|
Loading…
Reference in a new issue