mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
When using the backupFileExtension option, if the backup file exists, the activation process fails. This adds an option to instead overwrite the old backup instead of failing.
40 lines
1.2 KiB
Nix
40 lines
1.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
|
|
cfg = config.home-manager;
|
|
|
|
in
|
|
{
|
|
imports = [ ../nixos/common.nix ];
|
|
|
|
config = lib.mkMerge [
|
|
{ home-manager.extraSpecialArgs.darwinConfig = config; }
|
|
(lib.mkIf (cfg.users != { }) {
|
|
system.activationScripts.postActivation.text = lib.concatStringsSep "\n" (
|
|
lib.mapAttrsToList (
|
|
username: usercfg:
|
|
let
|
|
driverVersion = if cfg.enableLegacyProfileManagement then "0" else "1";
|
|
in
|
|
''
|
|
echo Activating home-manager configuration for ${usercfg.home.username} >&2
|
|
launchctl asuser "$(id -u ${usercfg.home.username})" sudo -u ${usercfg.home.username} --set-home ${pkgs.writeShellScript "activation-${usercfg.home.username}" ''
|
|
${lib.optionalString (
|
|
cfg.backupFileExtension != null
|
|
) "export HOME_MANAGER_BACKUP_EXT=${lib.escapeShellArg cfg.backupFileExtension}"}
|
|
${lib.optionalString cfg.overwriteBackup "export HOME_MANAGER_BACKUP_OVERWRITE=1"}
|
|
${lib.optionalString cfg.verbose "export VERBOSE=1"}
|
|
exec ${usercfg.home.activationPackage}/activate --driver-version ${driverVersion} >&2
|
|
''}
|
|
''
|
|
) cfg.users
|
|
);
|
|
})
|
|
];
|
|
}
|