nix-configs

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

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 }