mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-02-07 12:19:07 +00:00
tasks/backup-archive: format and refactor
This commit is contained in:
parent
33a090a73d
commit
91097f18df
@ -36,28 +36,34 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.tasks.backup-archive.enable =
|
options.tasks.backup-archive.enable =
|
||||||
lib.mkEnableOption "backup setup with BorgBackup";
|
lib.mkEnableOption "backup setup with BorgBackup";
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
sops.secrets = let
|
sops.secrets =
|
||||||
borgSecretsPath = key: "borg-backup/${key}";
|
let
|
||||||
getKey = key: {
|
getKey = key: {
|
||||||
inherit key;
|
inherit key;
|
||||||
sopsFile = lib.getSecret "backup-archive.yaml";
|
sopsFile = lib.getSecret "backup-archive.yaml";
|
||||||
name = borgSecretsPath key;
|
};
|
||||||
};
|
getSecrets = keys:
|
||||||
getSecrets = keys:
|
lib.listToAttrs (lib.lists.map
|
||||||
lib.listToAttrs (lib.lists.map (key: lib.nameValuePair (borgSecretsPath key) (getKey key)) keys);
|
(key:
|
||||||
in getSecrets [
|
lib.nameValuePair
|
||||||
"borg-patterns/home"
|
"borg-backup/${key}"
|
||||||
"borg-patterns/etc"
|
(getKey key))
|
||||||
"borg-patterns/keys"
|
keys);
|
||||||
"borg-patterns/remote-backup"
|
in
|
||||||
"ssh-key"
|
getSecrets [
|
||||||
"password"
|
"borg-patterns/home"
|
||||||
];
|
"borg-patterns/etc"
|
||||||
|
"borg-patterns/keys"
|
||||||
|
"borg-patterns/remote-backup"
|
||||||
|
"ssh-key"
|
||||||
|
"password"
|
||||||
|
];
|
||||||
|
|
||||||
profiles.filesystem = {
|
profiles.filesystem = {
|
||||||
archive.enable = true;
|
archive.enable = true;
|
||||||
@ -65,37 +71,40 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.borgbackup.jobs = {
|
services.borgbackup.jobs = {
|
||||||
local-archive = borgJobCommonSetting {
|
local-archive = borgJobCommonSetting
|
||||||
patterns = with config.sops; [
|
{
|
||||||
secrets."borg-backup/borg-patterns/home".path
|
patterns = with config.sops; [
|
||||||
secrets."borg-backup/borg-patterns/etc".path
|
secrets."borg-backup/borg-patterns/home".path
|
||||||
secrets."borg-backup/borg-patterns/keys".path
|
secrets."borg-backup/borg-patterns/etc".path
|
||||||
];
|
secrets."borg-backup/borg-patterns/keys".path
|
||||||
} // {
|
];
|
||||||
|
} // {
|
||||||
doInit = false;
|
doInit = false;
|
||||||
removableDevice = true;
|
removableDevice = true;
|
||||||
repo = "/mnt/archives/backups";
|
repo = "/mnt/archives/backups";
|
||||||
startAt = "daily";
|
startAt = "daily";
|
||||||
};
|
};
|
||||||
|
|
||||||
local-external-drive = borgJobCommonSetting {
|
local-external-drive = borgJobCommonSetting
|
||||||
patterns = with config.sops; [
|
{
|
||||||
secrets."borg-backup/borg-patterns/home".path
|
patterns = with config.sops; [
|
||||||
secrets."borg-backup/borg-patterns/etc".path
|
secrets."borg-backup/borg-patterns/home".path
|
||||||
secrets."borg-backup/borg-patterns/keys".path
|
secrets."borg-backup/borg-patterns/etc".path
|
||||||
];
|
secrets."borg-backup/borg-patterns/keys".path
|
||||||
} // {
|
];
|
||||||
|
} // {
|
||||||
doInit = false;
|
doInit = false;
|
||||||
removableDevice = true;
|
removableDevice = true;
|
||||||
repo = "/mnt/external-storage/backups";
|
repo = "/mnt/external-storage/backups";
|
||||||
startAt = "daily";
|
startAt = "daily";
|
||||||
};
|
};
|
||||||
|
|
||||||
remote-borgbase = borgJobCommonSetting {
|
remote-borgbase = borgJobCommonSetting
|
||||||
patterns = with config.sops; [
|
{
|
||||||
secrets."borg-backup/borg-patterns/remote-backup".path
|
patterns = with config.sops; [
|
||||||
];
|
secrets."borg-backup/borg-patterns/remote-backup".path
|
||||||
} // {
|
];
|
||||||
|
} // {
|
||||||
repo = "r6o30viv@r6o30viv.repo.borgbase.com:repo";
|
repo = "r6o30viv@r6o30viv.repo.borgbase.com:repo";
|
||||||
startAt = "daily";
|
startAt = "daily";
|
||||||
environment.BORG_RSH = "ssh -i ${config.sops.secrets."borg-backup/ssh-key".path}";
|
environment.BORG_RSH = "ssh -i ${config.sops.secrets."borg-backup/ssh-key".path}";
|
||||||
|
Loading…
Reference in New Issue
Block a user