mirror of
https://github.com/nix-community/home-manager
synced 2025-01-19 23:49:51 +01:00
nix-darwin: add missing options
Add useGlobalPkgs, verbose and backupFileExtension support
This commit is contained in:
parent
1f34c048b3
commit
bd4c2b0651
2 changed files with 46 additions and 5 deletions
|
@ -313,5 +313,22 @@ home-manager.useUserPackages = true;
|
||||||
value in the future.
|
value in the future.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
|
||||||
|
<note>
|
||||||
|
<para>
|
||||||
|
By default, Home Manager uses a private <literal>pkgs</literal> instance
|
||||||
|
that is configured via the <option>home-manager.users.<name>.nixpkgs</option> options.
|
||||||
|
To instead use the global <literal>pkgs</literal> that is configured via
|
||||||
|
the system level <option>nixpkgs</option> options, set
|
||||||
|
</para>
|
||||||
|
<programlisting language="nix">
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
</programlisting>
|
||||||
|
<para>
|
||||||
|
This saves an extra Nixpkgs evaluation, adds consistency, and removes the
|
||||||
|
dependency on <envar>NIX_PATH</envar>, which is otherwise used for
|
||||||
|
importing Nixpkgs.
|
||||||
|
</para>
|
||||||
|
</note>
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
|
@ -10,11 +10,12 @@ let
|
||||||
|
|
||||||
hmModule = types.submoduleWith {
|
hmModule = types.submoduleWith {
|
||||||
specialArgs = { lib = extendedLib; };
|
specialArgs = { lib = extendedLib; };
|
||||||
modules = [(
|
modules = [
|
||||||
{name, ...}: {
|
({ name, ... }: {
|
||||||
imports = import ../modules/modules.nix {
|
imports = import ../modules/modules.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
lib = extendedLib;
|
lib = extendedLib;
|
||||||
|
useNixpkgsModule = !cfg.useGlobalPkgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
@ -24,8 +25,8 @@ let
|
||||||
home.username = config.users.users.${name}.name;
|
home.username = config.users.users.${name}.name;
|
||||||
home.homeDirectory = config.users.users.${name}.home;
|
home.homeDirectory = config.users.users.${name}.home;
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
)];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
|
@ -38,6 +39,24 @@ in
|
||||||
<option>users.users.‹name?›.packages</option> option.
|
<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 {
|
users = mkOption {
|
||||||
type = types.attrsOf hmModule;
|
type = types.attrsOf hmModule;
|
||||||
default = {};
|
default = {};
|
||||||
|
@ -77,7 +96,12 @@ in
|
||||||
system.activationScripts.postActivation.text =
|
system.activationScripts.postActivation.text =
|
||||||
concatStringsSep "\n" (mapAttrsToList (username: usercfg: ''
|
concatStringsSep "\n" (mapAttrsToList (username: usercfg: ''
|
||||||
echo Activating home-manager configuration for ${username}
|
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);
|
'') cfg.users);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue