restic.nix (1083B)
1 { pkgs, username, ... }: 2 3 let 4 backup-cloud = pkgs.writeShellScriptBin "backup-cloud" '' 5 # variables 6 directories=( "$HOME/docker/" "$HOME/vault/" ) 7 # process 8 source "$HOME/vault/docs/secure/restic.env" 9 # Directory loop 10 for dir in "''${directories[@]}"; do 11 if [[ -d "$dir" ]]; then 12 echo "Directory exists: $dir" 13 ${pkgs.restic}/bin/restic backup "$dir" 14 else 15 echo "Directory does not exist: $dir" 16 fi 17 done 18 ''; 19 in { 20 environment.systemPackages = [ backup-cloud ]; 21 22 systemd.timers.restic-backup = { 23 description = "Timer to run Restic backup"; 24 wantedBy = [ "timers.target" ]; 25 timerConfig = { 26 OnCalendar = "0/12:00:00"; 27 Persistent = true; 28 }; 29 }; 30 31 systemd.services.restic-backup = { 32 description = "Backup specific directories to BorgBase"; 33 script = "backup-cloud"; 34 path = [ "/run/current-system/sw" ]; 35 serviceConfig = { 36 Type = "oneshot"; 37 User = "${username}"; 38 # ExecStart = "${backup-cloud}/bin/backup-cloud"; 39 }; 40 }; 41 42 }