nix-darwin: add missing options
Add useGlobalPkgs, verbose and backupFileExtension support
This commit is contained in:
parent
1f34c048b3
commit
bd4c2b0651
|
@ -313,5 +313,22 @@ home-manager.useUserPackages = true;
|
|||
value in the future.
|
||||
</para>
|
||||
</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>
|
||||
</chapter>
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue