2023-11-11 03:14:37 +03:00
|
|
|
{ config, ... }:
|
|
|
|
let
|
|
|
|
secret-conf = { services = [ "rustic-backups-nas.service" ]; };
|
|
|
|
in {
|
2023-11-16 03:45:22 +03:00
|
|
|
secrets.rustic-nas-pass = secret-conf;
|
|
|
|
secrets.rclone-nas-config = secret-conf;
|
2023-11-24 00:17:53 +03:00
|
|
|
services.rustic.backups = let
|
|
|
|
label = "hypervisor";
|
|
|
|
in rec {
|
2023-11-16 03:45:22 +03:00
|
|
|
nas-backup = {
|
|
|
|
backup = true;
|
|
|
|
prune = false;
|
|
|
|
initialize = false;
|
|
|
|
rcloneConfigFile = config.secrets.rclone-nas-config.decrypted;
|
|
|
|
timerConfig = {
|
|
|
|
OnCalendar = "05:00";
|
|
|
|
Persistent = true;
|
|
|
|
};
|
|
|
|
settings = {
|
|
|
|
repository = {
|
|
|
|
repository = "rclone:rustic-b2:ataraxia-nas-backup";
|
|
|
|
password-file = config.secrets.rustic-nas-pass.decrypted;
|
|
|
|
};
|
|
|
|
copy = {
|
|
|
|
targets = [{
|
|
|
|
repository = "rclone:gdrive:rustic-backup/nas-backup";
|
|
|
|
password-file = config.secrets.rustic-nas-pass.decrypted;
|
|
|
|
}];
|
|
|
|
};
|
|
|
|
repository.options = {
|
|
|
|
timeout = "10min";
|
|
|
|
};
|
|
|
|
backup = {
|
2024-01-12 23:52:30 +03:00
|
|
|
host = config.device;
|
2023-11-24 00:17:53 +03:00
|
|
|
label = label;
|
2023-11-16 03:45:22 +03:00
|
|
|
ignore-devid = true;
|
|
|
|
glob = [
|
|
|
|
"!/media/nas/**/cache"
|
|
|
|
"!/media/nas/**/.cache"
|
|
|
|
"!/media/nas/**/log"
|
|
|
|
"!/media/nas/**/logs"
|
|
|
|
"!/media/nas/media-stack/configs/lidarr/config/MediaCover"
|
|
|
|
"!/media/nas/media-stack/configs/qbittorrent/downloads"
|
|
|
|
"!/media/nas/media-stack/configs/recyclarr/repositories"
|
|
|
|
"!/srv/gitea"
|
2023-12-18 02:08:29 +03:00
|
|
|
"!/srv/wiki"
|
2023-11-16 03:45:22 +03:00
|
|
|
];
|
|
|
|
sources = [{
|
|
|
|
source = "/srv /media/nas/containers /media/nas/media-stack/configs";
|
|
|
|
}];
|
|
|
|
};
|
|
|
|
forget = {
|
2023-11-24 00:17:53 +03:00
|
|
|
filter-label = [ label ];
|
2023-11-16 03:45:22 +03:00
|
|
|
prune = true;
|
2024-01-12 23:52:30 +03:00
|
|
|
keep-daily = 5;
|
|
|
|
keep-weekly = 2;
|
|
|
|
keep-monthly = 1;
|
2023-11-16 03:45:22 +03:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
nas-prune = nas-backup // {
|
|
|
|
backup = false;
|
|
|
|
prune = true;
|
2023-11-24 00:17:53 +03:00
|
|
|
createWrapper = false;
|
2023-11-16 03:45:22 +03:00
|
|
|
timerConfig = {
|
|
|
|
OnCalendar = "Mon, 07:00";
|
|
|
|
Persistent = true;
|
|
|
|
};
|
2023-11-11 03:14:37 +03:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|