nixos-config/machines/read/backup.nix

52 lines
1.1 KiB
Nix

{ pkgs, config, ... }:
let
borgJob = name: {
environment = {
BORG_RSH = "ssh -i ${config.sops.secrets.miniflux-backup-ssh-key.path}";
};
repo = "ssh://zh2088@zh2088.rsync.net/./backups/read/${name}";
compression = "zstd,10";
startAt = "*-*-* 2:30:00";
extraInitArgs = "--make-parent-dirs";
archiveBaseName = name;
encryption = {
mode = "repokey-blake2";
passCommand = "cat ${config.sops.secrets.miniflux-backup-pass.path}";
};
prune = {
keep = {
within = "1d";
daily = 7;
weekly = 4;
monthly = -1;
};
};
};
in
{
services = {
borgbackup.jobs = {
postgresql = borgJob "postgresql" // {
paths = [ "/var/backup/postgresql" ];
};
miniflux = borgJob "miniflux" // {
paths = [ "/var/lib/miniflux" ];
};
};
postgresqlBackup = {
enable = true;
backupAll = true;
# borg will do compression and deduplication
compression = "none";
startAt = "*-*-* 02:00:00";
};
};
environment.systemPackages = [ pkgs.borgbackup ];
}