{ config, lib, ... }: with lib; { options.services.borgbackup.jobList = mkOption { default = []; type = types.listOf types.str; description = "List of Borgbackup jobs for which we want nice defaults"; }; config.services.borgbackup.jobs = let passFile = name: "/etc/nixos/usecases/common/backup-client/private/${name}_pass.txt"; keyFile = name: "/etc/nixos/usecases/common/backup-client/private/${name}_key"; in genAttrs config.services.borgbackup.jobList (name: { compression = mkDefault "auto,zstd"; encryption = { mode = mkDefault "repokey"; passCommand = mkDefault "cat ${passFile name}"; }; environment = { BORG_RSH = mkDefault "ssh -i ${keyFile name}"; }; extraCreateArgs = mkDefault "--stats"; extraPruneArgs = mkDefault "--list --stats"; }); }