diff options
author | Nicolas Berbiche <nic.berbiche@gmail.com> | 2020-08-27 13:57:56 -0400 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2020-09-04 15:00:00 +0200 |
commit | bd4c2b06515fb7cdef9dda19bccd47f37aa66324 (patch) | |
tree | db92de3ce6edac2f35859b1dd60a65a424a8680a | |
parent | 1f34c048b3b5e6aad099b0a4931752939bbe30e6 (diff) |
nix-darwin: add missing options
Add useGlobalPkgs, verbose and backupFileExtension support
-rw-r--r-- | doc/installation.xml | 17 | ||||
-rw-r--r-- | nix-darwin/default.nix | 34 |
2 files changed, 46 insertions, 5 deletions
diff --git a/doc/installation.xml b/doc/installation.xml index 4c5d1f735bb..3e1f75abb59 100644 --- a/doc/installation.xml +++ b/doc/installation.xml @@ -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> diff --git a/nix-darwin/default.nix b/nix-darwin/default.nix index ce6105d4b12..12d02174332 100644 --- a/nix-darwin/default.nix +++ b/nix-darwin/default.nix @@ -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); }; } |