summaryrefslogtreecommitdiffstats
path: root/usecases/common/backup-client.nix
blob: 39e4ca14b9daf33cae05fc298b0e7d52679be695 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{ 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";
  });
}