summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorMario Rodas <marsam@users.noreply.github.com>2021-07-07 18:41:57 -0500
committerGitHub <noreply@github.com>2021-07-07 18:41:57 -0500
commitbb1ff7da54b22be0b314c4dffb56212e9678e7db (patch)
treef555792776a1d62887633507b6012cd92757a0dd /nixos/modules
parent596f825533919ca114d04b92a640756b9ad84a7e (diff)
parent81c8189a841728a813bcde8604b80427fcf33522 (diff)
downloadnixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.tar
nixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.tar.gz
nixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.tar.bz2
nixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.tar.lz
nixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.tar.xz
nixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.tar.zst
nixpkgs-bb1ff7da54b22be0b314c4dffb56212e9678e7db.zip
Merge pull request #125696 from hercules-ci/postgresql-backup-only-replace-if-successful
nixos/postgresqlBackup: only replace if successful
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/backup/postgresql-backup.nix14
1 files changed, 10 insertions, 4 deletions
diff --git a/nixos/modules/services/backup/postgresql-backup.nix b/nixos/modules/services/backup/postgresql-backup.nix
index 9da2d522a68..f658eb756f7 100644
--- a/nixos/modules/services/backup/postgresql-backup.nix
+++ b/nixos/modules/services/backup/postgresql-backup.nix
@@ -14,15 +14,21 @@ let
 
       requires = [ "postgresql.service" ];
 
+      path = [ pkgs.coreutils pkgs.gzip config.services.postgresql.package ];
+
       script = ''
+        set -e -o pipefail
+
         umask 0077 # ensure backup is only readable by postgres user
 
         if [ -e ${cfg.location}/${db}.sql.gz ]; then
-          ${pkgs.coreutils}/bin/mv ${cfg.location}/${db}.sql.gz ${cfg.location}/${db}.prev.sql.gz
+          mv ${cfg.location}/${db}.sql.gz ${cfg.location}/${db}.prev.sql.gz
         fi
 
         ${dumpCmd} | \
-          ${pkgs.gzip}/bin/gzip -c > ${cfg.location}/${db}.sql.gz
+          gzip -c > ${cfg.location}/${db}.in-progress.sql.gz
+
+        mv ${cfg.location}/${db}.in-progress.sql.gz ${cfg.location}/${db}.sql.gz
       '';
 
       serviceConfig = {
@@ -113,12 +119,12 @@ in {
     })
     (mkIf (cfg.enable && cfg.backupAll) {
       systemd.services.postgresqlBackup =
-        postgresqlBackupService "all" "${config.services.postgresql.package}/bin/pg_dumpall";
+        postgresqlBackupService "all" "pg_dumpall";
     })
     (mkIf (cfg.enable && !cfg.backupAll) {
       systemd.services = listToAttrs (map (db:
         let
-          cmd = "${config.services.postgresql.package}/bin/pg_dump ${cfg.pgdumpOptions} ${db}";
+          cmd = "pg_dump ${cfg.pgdumpOptions} ${db}";
         in {
           name = "postgresqlBackup-${db}";
           value = postgresqlBackupService db cmd;