restic.nix (1063B)
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 RandomizedDelaySec = "30min"; 28 Persistent = true; 29 }; 30 }; 31 32 systemd.services.restic-backup = { 33 description = "Backup specific directories to BorgBase"; 34 script = "backup-cloud"; 35 path = [ "/run/current-system/sw" ]; 36 serviceConfig = { 37 Type = "oneshot"; 38 User = "${username}"; 39 }; 40 }; 41 42 }