old
1{
2 config,
3 lib,
4 ...
5}: {
6 services.restic.backups."${config.modules.currentHost}-backup" = {
7 initialize = true;
8 passwordFile = config.sops.secrets.restic-backup-password.path;
9 rcloneConfigFile = config.sops.templates."rclone-restic-backup.conf".path;
10 repository = "rclone:Backup:/Backups/${config.modules.currentHost}-backup/";
11 paths =
12 (lib.mapAttrsToList (n: v: "/var/lib/authelia-${n}") config.services.authelia.instances)
13 ++ [
14 config.services.artalk.workdir
15 "/var/lib/fail2ban"
16 config.services.freshrss.dataDir
17 "/var/lib/goatcounter"
18 "/var/lib/gotosocial"
19 config.services.grafana.dataDir
20 "/var/lib/${config.services.victoriametrics.stateDir}"
21 ];
22 exclude = [
23 "tmp"
24 ".git"
25 "cache"
26 ".cache"
27 "*_cache"
28 ];
29 timerConfig = {
30 OnCalendar = "04:00";
31 RandomizedDelaySec = "1h";
32 };
33 pruneOpts = [
34 "--keep-daily 3"
35 "--keep-weekly 3"
36 "--keep-monthly 3"
37 "--keep-yearly 3"
38 ];
39 };
40
41 sops.templates."rclone-restic-backup.conf".content = ''
42 [Backup]
43 type = onedrive
44 drive_id = 52CE3DAB18B4C557
45 drive_type = personal
46 token = ${config.sops.placeholder.rclone-restic-backup-token}
47 '';
48}