hosts/ni/services/backup: refactor code

This commit is contained in:
Gabriel Arazas 2024-03-06 17:03:12 +08:00
parent 486153b2e4
commit 9577f5a4f7
No known key found for this signature in database
GPG Key ID: ADE0C41DAB221FCC

View File

@ -5,7 +5,7 @@ let
hostCfg = config.hosts.ni; hostCfg = config.hosts.ni;
cfg = hostCfg.services.backup; cfg = hostCfg.services.backup;
borgJobCommonSetting = { patterns ? [ ], passCommand }: { borgJobCommonSetting = { patterns ? [ ], passCommand }@args: args // {
compression = "zstd,12"; compression = "zstd,12";
dateFormat = "+%F-%H-%M-%S-%z"; dateFormat = "+%F-%H-%M-%S-%z";
doInit = false; doInit = false;
@ -66,58 +66,47 @@ in
}; };
services.borgbackup.jobs = { services.borgbackup.jobs = {
local-archive = borgJobCommonSetting local-archive = borgJobCommonSetting {
{
patterns = with config.sops; [ patterns = with config.sops; [
secrets."${pathPrefix}/patterns/home".path secrets."${pathPrefix}/patterns/home".path
secrets."${pathPrefix}/patterns/etc".path secrets."${pathPrefix}/patterns/root".path
secrets."${pathPrefix}/patterns/keys".path secrets."${pathPrefix}/patterns/keys".path
]; ];
passCommand = "cat ${config.sops.secrets."${pathPrefix}/repos/archive/password".path}"; passCommand = "cat ${config.sops.secrets."${pathPrefix}/repos/archive/password".path}";
} // {
removableDevice = true; removableDevice = true;
repo = "/mnt/archives/backups"; repo = "/mnt/archives/backups";
startAt = "04:30"; startAt = "04:30";
}; };
local-external-drive = borgJobCommonSetting local-external-drive = borgJobCommonSetting {
{
patterns = with config.sops; [ patterns = with config.sops; [
secrets."${pathPrefix}/patterns/home".path secrets."${pathPrefix}/patterns/home".path
secrets."${pathPrefix}/patterns/etc".path secrets."${pathPrefix}/patterns/root".path
secrets."${pathPrefix}/patterns/keys".path secrets."${pathPrefix}/patterns/keys".path
]; ];
passCommand = "cat ${config.sops.secrets."${pathPrefix}/repos/external-drive/password".path}"; passCommand = "cat ${config.sops.secrets."${pathPrefix}/repos/external-drive/password".path}";
} // {
removableDevice = true; removableDevice = true;
repo = "/mnt/external-storage/backups"; repo = "/mnt/external-storage/backups";
startAt = "04:30"; startAt = "04:30";
}; };
#remote-backup-hetzner-box = borgJobCommonSetting remote-backup-hetzner-box = borgJobCommonSetting {
# { patterns = with config.sops; [
# patterns = with config.sops; [ secrets."${pathPrefix}/patterns/home".path
# secrets."${pathPrefix}/patterns/remote-backup".path secrets."${pathPrefix}/patterns/root".path
# ]; secrets."${pathPrefix}/patterns/keys".path
# passCommand = "cat ${config.sops.secrets."${pathPrefix}/repos/hetzner-box/password".path}"; ];
# } // { passCommand = "cat ${config.sops.secrets."${pathPrefix}/repos/hetzner-box/password".path}";
# doInit = true; doInit = true;
# repo = "ssh://${hetzner-boxes-user}@${hetzner-boxes-server}:23/./borg/desktop/ni"; repo = "ssh://${hetzner-boxes-user}@${hetzner-boxes-server}:23/./borg/desktop/ni";
# startAt = "04:30"; startAt = "04:30";
# environment.BORG_RSH = "ssh -i ${config.sops.secrets."${pathPrefix}/ssh-key".path}"; environment.BORG_RSH = "ssh -i ${config.sops.secrets."${pathPrefix}/ssh-key".path}";
#}; };
}; };
programs.ssh.extraConfig = '' programs.ssh.extraConfig = ''
Host ${hetzner-boxes-server} Host ${hetzner-boxes-server}
IdentityFile ${config.sops.secrets."${pathPrefix}/ssh-key".path} IdentityFile ${config.sops.secrets."${pathPrefix}/ssh-key".path}
''; '';
services.btrfs.autoScrub = {
enable = true;
fileSystems = [
"/mnt/archives"
];
};
}; };
} }