nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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 }