From 83eeebd967726b1168d5ccd7a13c4a6915e39b7f Mon Sep 17 00:00:00 2001 From: Jess Date: Mon, 19 Jan 2026 14:47:39 +1300 Subject: [PATCH] restic: fix evaluation error in `rcloneOptions` `lib.add` only works on integers. --- modules/services/restic.nix | 6 ++++-- tests/modules/services/restic/backup-configs.nix | 5 +++++ tests/modules/services/restic/unit-files.nix | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/services/restic.nix b/modules/services/restic.nix index d777f4ed..586e5cce 100644 --- a/modules/services/restic.nix +++ b/modules/services/restic.nix @@ -24,10 +24,11 @@ let lib.pipe opt [ (lib.replaceStrings [ "-" ] [ "_" ]) lib.toUpper - (lib.add "RCLONE_") + (upper: "RCLONE_" + upper) ]; - toEnvVal = v: if lib.isBool v then lib.boolToString v else v; + toEnvVal = v: if lib.isBool v then lib.boolToString v else toString v; + attrsToEnvs = attrs: lib.pipe attrs [ @@ -127,6 +128,7 @@ in attrsOf (oneOf [ str bool + int ]); default = { }; apply = lib.mapAttrs' (opt: v: lib.nameValuePair (fmtRcloneOpt opt) v); diff --git a/tests/modules/services/restic/backup-configs.nix b/tests/modules/services/restic/backup-configs.nix index 77171c24..03068645 100644 --- a/tests/modules/services/restic/backup-configs.nix +++ b/tests/modules/services/restic/backup-configs.nix @@ -91,6 +91,11 @@ in ; initialize = true; repository = "rclone:local:/root/restic-rclone-backup"; + rcloneOptions = { + checksum = true; + color = "ALWAYS"; + list-cutoff = 5; + }; }; prune = { diff --git a/tests/modules/services/restic/unit-files.nix b/tests/modules/services/restic/unit-files.nix index 1987c567..6add8b1b 100644 --- a/tests/modules/services/restic/unit-files.nix +++ b/tests/modules/services/restic/unit-files.nix @@ -106,6 +106,9 @@ in serviceFile=$serviceFiles/restic-backups-"$backup".service assertFileRegex $serviceFile "Environment=RESTIC_REPOSITORY=rclone:local:/root/restic-rclone-backup" assertFileRegex $serviceFile "Environment=RESTIC_PASSWORD_FILE" + assertFileRegex $serviceFile "Environment=RCLONE_CHECKSUM=true" + assertFileRegex $serviceFile "Environment=RCLONE_COLOR=ALWAYS" + assertFileRegex $serviceFile "Environment=RCLONE_LIST_CUTOFF=5" assertFileRegex $serviceFile "ExecStart=.*$defaultPruneOpts" for part in ''${defaultPruneOpts[@]}; do assertFileRegex $serviceFile "ExecStart=.*$part"