From d7fbdf54e13884ed2c5491f9430bc0af6570810d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Mon, 3 Mar 2025 22:46:30 +0100 Subject: [PATCH] nixos/postgresql-backup: do not enable assertions when module is disabled --- .../services/backup/postgresql-backup.nix | 77 ++++++++++--------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/nixos/modules/services/backup/postgresql-backup.nix b/nixos/modules/services/backup/postgresql-backup.nix index 2e78cfa5e6d1..b05435b4db36 100644 --- a/nixos/modules/services/backup/postgresql-backup.nix +++ b/nixos/modules/services/backup/postgresql-backup.nix @@ -152,45 +152,48 @@ in }; - config = lib.mkMerge [ - { - assertions = [ - { - assertion = cfg.backupAll -> cfg.databases == [ ]; - message = "config.services.postgresqlBackup.backupAll cannot be used together with config.services.postgresqlBackup.databases"; - } - { - assertion = - cfg.compression == "none" - || (cfg.compression == "gzip" && cfg.compressionLevel >= 1 && cfg.compressionLevel <= 9) - || (cfg.compression == "zstd" && cfg.compressionLevel >= 1 && cfg.compressionLevel <= 19); - message = "config.services.postgresqlBackup.compressionLevel must be set between 1 and 9 for gzip and 1 and 19 for zstd"; - } - ]; - } - (lib.mkIf cfg.enable { - systemd.tmpfiles.rules = [ - "d '${cfg.location}' 0700 postgres - - -" - ]; - }) - (lib.mkIf (cfg.enable && cfg.backupAll) { - systemd.services.postgresqlBackup = postgresqlBackupService "all" "pg_dumpall ${cfg.pgdumpOptions}"; - }) - (lib.mkIf (cfg.enable && !cfg.backupAll) { - systemd.services = lib.listToAttrs ( - map ( - db: - let - cmd = "pg_dump ${cfg.pgdumpOptions} ${db}"; - in + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + assertions = [ { - name = "postgresqlBackup-${db}"; - value = postgresqlBackupService db cmd; + assertion = cfg.backupAll -> cfg.databases == [ ]; + message = "config.services.postgresqlBackup.backupAll cannot be used together with config.services.postgresqlBackup.databases"; } - ) cfg.databases - ); - }) - ]; + { + assertion = + cfg.compression == "none" + || (cfg.compression == "gzip" && cfg.compressionLevel >= 1 && cfg.compressionLevel <= 9) + || (cfg.compression == "zstd" && cfg.compressionLevel >= 1 && cfg.compressionLevel <= 19); + message = "config.services.postgresqlBackup.compressionLevel must be set between 1 and 9 for gzip and 1 and 19 for zstd"; + } + ]; + + systemd.tmpfiles.rules = [ + "d '${cfg.location}' 0700 postgres - - -" + ]; + } + + (lib.mkIf cfg.backupAll { + systemd.services.postgresqlBackup = postgresqlBackupService "all" "pg_dumpall ${cfg.pgdumpOptions}"; + }) + + (lib.mkIf (!cfg.backupAll) { + systemd.services = lib.listToAttrs ( + map ( + db: + let + cmd = "pg_dump ${cfg.pgdumpOptions} ${db}"; + in + { + name = "postgresqlBackup-${db}"; + value = postgresqlBackupService db cmd; + } + ) cfg.databases + ); + }) + ] + ); meta.maintainers = with lib.maintainers; [ Scrumplex ]; }