47 lines
1.1 KiB
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" ];
|
|
};
|
|
}
|
|
|