1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 19:46:05 +01:00

nix-darwin: add missing options

Add useGlobalPkgs, verbose and backupFileExtension support
This commit is contained in:
Nicolas Berbiche 2020-08-27 13:57:56 -04:00 committed by Robert Helgesson
parent 1f34c048b3
commit bd4c2b0651
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
2 changed files with 46 additions and 5 deletions

View file

@ -10,11 +10,12 @@ let
hmModule = types.submoduleWith {
specialArgs = { lib = extendedLib; };
modules = [(
{name, ...}: {
modules = [
({ name, ... }: {
imports = import ../modules/modules.nix {
inherit pkgs;
lib = extendedLib;
useNixpkgsModule = !cfg.useGlobalPkgs;
};
config = {
@ -24,8 +25,8 @@ let
home.username = config.users.users.${name}.name;
home.homeDirectory = config.users.users.${name}.home;
};
}
)];
})
];
};
in
@ -38,6 +39,24 @@ in
<option>users.users.name?.packages</option> option.
'';
useGlobalPkgs = mkEnableOption ''
using the system configuration's <literal>pkgs</literal>
argument in Home Manager. This disables the Home Manager
options <option>nixpkgs.*</option>
'';
backupFileExtension = mkOption {
type = types.nullOr types.str;
default = null;
example = "backup";
description = ''
On activation move existing files by appending the given
file extension rather than exiting with an error.
'';
};
verbose = mkEnableOption "verbose output on activation";
users = mkOption {
type = types.attrsOf hmModule;
default = {};
@ -77,7 +96,12 @@ in
system.activationScripts.postActivation.text =
concatStringsSep "\n" (mapAttrsToList (username: usercfg: ''
echo Activating home-manager configuration for ${username}
sudo -u ${username} -i ${usercfg.home.activationPackage}/activate
sudo -u ${username} -i ${pkgs.writeShellScript "activation-${username}" ''
${lib.optionalString (cfg.backupFileExtension != null)
"export HOME_MANAGER_BACKUP_EXT=${lib.escapeShellArg cfg.backupFileExtension}"}
${lib.optionalString cfg.verbose "export VERBOSE=1"}
exec ${usercfg.home.activationPackage}/activate
''}
'') cfg.users);
};
}