From aaf77b9ca9deabc8678e0b4319b202952c2cce74 Mon Sep 17 00:00:00 2001 From: Mikael Voss Date: Sat, 9 Nov 2024 23:06:01 +0100 Subject: [PATCH] akkoma: Create backups from database dump --- config/hosts/florp/configuration.nix | 20 +++++++++++++++++--- modules/restic/default.nix | 13 +++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/config/hosts/florp/configuration.nix b/config/hosts/florp/configuration.nix index c258a57..133e22d 100644 --- a/config/hosts/florp/configuration.nix +++ b/config/hosts/florp/configuration.nix @@ -1,4 +1,4 @@ -{ lib, ... }: { +{ lib, config, ... }: { imports = [ ../../common ../../profiles/headless.nix @@ -13,7 +13,9 @@ }; kyouma.nginx.defaultForbidden = "florp.social"; - kyouma.restic = { + kyouma.restic = let + pgBackup = "/var/cache/postgresql.sql"; + in { enable = true; remoteUser = "zh3485s1"; timerConfig = { @@ -22,9 +24,21 @@ }; paths = [ "/var/lib/akkoma" - "/var/lib/postgresql" "/var/lib/secrets" + pgBackup ]; + + backupPrepareCommand = '' + umask 0077 + rm -f -- ${pgBackup} + ${lib.getExe' config.services.postgresql.package "pg_dumpall"} \ + -U ${config.services.postgresql.superUser} \ + -f ${pgBackup} + ''; + + backupCleanupCommand = '' + rm -f -- ${pgBackup} + ''; }; systemd.network.networks."98-eth-default" = { address = [ diff --git a/modules/restic/default.nix b/modules/restic/default.nix index 2661253..b1c8ca3 100644 --- a/modules/restic/default.nix +++ b/modules/restic/default.nix @@ -48,6 +48,19 @@ in { Persistent = true; }; }; + + # FIXME: Can these be just inherited? + backupPrepareCommand = mkOption { + description = "preparation script"; + type = with types; nullOr str; + default = null; + }; + + backupCleanupCommand = mkOption { + description = "cleanup script"; + type = with types; nullOr str; + default = null; + }; }; config = lib.mkIf cfg.enable { sops.secrets."restic/${cfg.remoteUser}/password" = {