diff options
author | Kaiden Fey <kookie@spacekookie.de> | 2020-09-21 14:12:32 +0200 |
---|---|---|
committer | Katharina Fey <kookie@spacekookie.de> | 2020-09-21 14:12:32 +0200 |
commit | f80843dd45d7acd563d0a5b014cec3a2ea686fc2 (patch) | |
tree | 87189d873d6f932d85f9c1a480462b37d96cd6a5 /home-manager/nix-darwin | |
parent | e0800985dab8f8ebb4cebdfd7e361fd1fafdb2a7 (diff) | |
parent | 9b1b55ba0264a55add4b7b4e022bdc2832b531f6 (diff) |
Merge commit '9b1b55ba0264a55add4b7b4e022bdc2832b531f6'
Diffstat (limited to 'home-manager/nix-darwin')
-rw-r--r-- | home-manager/nix-darwin/default.nix | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/home-manager/nix-darwin/default.nix b/home-manager/nix-darwin/default.nix index 24f042a7f0b..12d02174332 100644 --- a/home-manager/nix-darwin/default.nix +++ b/home-manager/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 = {}; @@ -68,14 +87,21 @@ in users.users = mkIf cfg.useUserPackages ( mapAttrs (username: usercfg: { - packages = usercfg.home.packages; + packages = [ usercfg.home.path ]; }) cfg.users ); + environment.pathsToLink = mkIf cfg.useUserPackages [ "/etc/profile.d" ]; + 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); }; } |