aboutsummaryrefslogtreecommitdiff
path: root/home-manager/nix-darwin
diff options
context:
space:
mode:
authorKaiden Fey <kookie@spacekookie.de>2020-09-21 14:12:32 +0200
committerKatharina Fey <kookie@spacekookie.de>2020-09-21 14:12:32 +0200
commitf80843dd45d7acd563d0a5b014cec3a2ea686fc2 (patch)
tree87189d873d6f932d85f9c1a480462b37d96cd6a5 /home-manager/nix-darwin
parente0800985dab8f8ebb4cebdfd7e361fd1fafdb2a7 (diff)
parent9b1b55ba0264a55add4b7b4e022bdc2832b531f6 (diff)
Merge commit '9b1b55ba0264a55add4b7b4e022bdc2832b531f6'
Diffstat (limited to 'home-manager/nix-darwin')
-rw-r--r--home-manager/nix-darwin/default.nix38
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);
};
}