HexName-NixOS/services/backup-postgres.nix

47 lines
1.1 KiB
Nix

{ config, pkgs, ... }:
let
serviceName = "backup-postgres";
in
{
environment.systemPackages = [
pkgs.restic
];
systemd.timers."${serviceName}" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "10m";
OnUnitActiveSec = "10m";
Unit = "${serviceName}.service";
};
};
systemd.services."${serviceName}"= {
script = ''
set -euo pipefail
cd /var/lib/hexname/postgres
${config.services.postgresql.package}/bin/pg_dumpall \
--exclude-database=roundcube \
--exclude-database=template0 \
--exclude-database=template1 \
--exclude-database=postgres \
--clean \
--file ./postgres.out
'';
wants = [ "restic-backups-postgres.service" ];
serviceConfig = {
Type = "oneshot";
User = "postgres";
Group = "postgres";
RemainAfterExit = true; # Don't start the service on every rebuild
};
};
# Overwrite the restic backup service so that it's triggered after `pg_dump`
systemd.services.restic-backups-postgres = {
after = [ "backup-postgres.service" ];
# requires = [ "backup-postgres.service" ];
};
}