1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-12-25 11:19:47 +01:00

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:
GrizzlT 2024-01-24 11:30:39 +01:00 committed by Mikilio
parent 3249809b33
commit 17b2a3a2a7
No known key found for this signature in database
GPG key ID: 5B2F1A890CF33F3F

View file

@ -28,28 +28,34 @@ let
specialArgs = { modulesPath = builtins.toString ./.; } // extraSpecialArgs; specialArgs = { modulesPath = builtins.toString ./.; } // extraSpecialArgs;
}; };
module = showWarnings (let moduleChecks = raw:
failed = collectFailed rawModule.config; showWarnings (let
failedStr = concatStringsSep "\n" (map (x: "- ${x}") failed); failed = collectFailed raw.config;
in if failed == [ ] then failedStr = concatStringsSep "\n" (map (x: "- ${x}") failed);
rawModule in if failed == [ ] then
else raw
throw '' else
throw ''
Failed assertions: Failed assertions:
${failedStr}''); ${failedStr}'');
in { withExtraAttrs = rawModule:
inherit (module) options config; let module = moduleChecks rawModule;
in {
inherit (module) options config;
activationPackage = module.config.home.activationPackage; activationPackage = module.config.home.activationPackage;
# For backwards compatibility. Please use activationPackage instead. # For backwards compatibility. Please use activationPackage instead.
activation-script = module.config.home.activationPackage; activation-script = module.config.home.activationPackage;
newsDisplay = rawModule.config.news.display; newsDisplay = rawModule.config.news.display;
newsEntries = sort (a: b: a.time > b.time) newsEntries = sort (a: b: a.time > b.time)
(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