nix-configs

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

commit 0a4c156f49b63798459f0dd819863ecf0513b340
parent d7f26109652b5039b67555ba83a87a807654fa46
Author: breadcat <breadcat@users.noreply.github.com>
Date:   Sun, 14 Jun 2026 17:50:30 +0100

Add prune argument to Restic script

Diffstat:
Mscripts/restic.nix | 45+++++++++++++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 14 deletions(-)

diff --git a/scripts/restic.nix b/scripts/restic.nix @@ -5,21 +5,38 @@ let # variables directories=( "$HOME/docker/" "$HOME/vault/" ) excludes=( "*.flac" "*.jpg" "*.jpeg" "*.mp4" "*.webm" "*.mkv") - exclude_args=() - for ext in "''${excludes[@]}"; do - exclude_args+=("--exclude=$ext") - done - # process source "$HOME/vault/docs/secure/restic.env" - # Directory loop - for dir in "''${directories[@]}"; do - if [[ -d "$dir" ]]; then - echo "Directory exists: $dir" - ${pkgs.restic}/bin/restic backup "$dir" "''${exclude_args[@]}" - else - echo "Directory does not exist: $dir" - fi - done + + case "''${1:-backup}" in + prune) + echo "Running restic retention policy..." + ${pkgs.restic}/bin/restic forget \ + --group-by host,paths \ + --keep-daily 7 \ + --keep-weekly 4 \ + --keep-monthly 6 \ + --keep-yearly 2 \ + --prune + ;; + backup) + exclude_args=() + for ext in "''${excludes[@]}"; do + exclude_args+=("--exclude=$ext") + done + for dir in "''${directories[@]}"; do + if [[ -d "$dir" ]]; then + echo "Directory exists: $dir" + ${pkgs.restic}/bin/restic backup "$dir" "''${exclude_args[@]}" + else + echo "Directory does not exist: $dir" + fi + done + ;; + *) + echo "Usage: backup-cloud [backup|prune]" + exit 1 + ;; + esac ''; in { environment.systemPackages = [ backup-cloud ];