# resticprofile config for nh3-dev.
#
# User workstation at the NH3 site (nh3-dev.phasefinal.com). Primary
# payload is /home/lkraven — ~12 GB of active development code, shell
# history, dotfiles, notes, Claude Code memory, etc. Not a server; no
# Docker stacks to dump. No databases.
#
# Writes to the Synology rest-server at 10.100.50.50:8000 as user
# `nh3-dev` — site-local, matches the pattern nh3-docker uses.
#
# Schedule accommodates a workstation that may be off/sleeping at the
# scheduled time: systemd timer uses Persistent=true (resticprofile sets
# this by default for schedule-permission: system) so a missed run
# catches up on next boot.
#
# Excludes trim ~8 GB of regenerable caches from the 22 GB home. First
# snapshot should land at ~14 GB; incrementals much smaller.

version: "1"

global:
  priority: low
  ionice: true
  ionice-class: 2
  ionice-level: 7
  min-memory: 200   # workstation has more RAM than agents; give restic a bit more

default:
  env-file: /etc/restic/restic.env
  env:
    RESTIC_PASSWORD_FILE: /etc/restic/password
  initialize: false
  lock: /var/lock/restic-nh3-dev.lock

  backup:
    verbose: 1
    run-after:
      - date +%s > /var/lib/restic/last-success
    source:
      - /home/lkraven           # the whole reason this backup exists
      - /etc                    # host config
      - /root                   # root's state, ssh keys, etc.
    exclude:
      # ---- Language / toolchain caches (all regenerable) -------------------
      - /home/lkraven/.cache
      - /home/lkraven/.rustup
      - /home/lkraven/.cargo/registry
      - /home/lkraven/.cargo/git
      - /home/lkraven/.npm
      - /home/lkraven/.pnpm-store
      - /home/lkraven/.m2
      - /home/lkraven/.gradle
      - /home/lkraven/.conda
      - /home/lkraven/go/pkg
      - /home/lkraven/.dotnet
      # ---- Editor / remote-dev caches ---------------------------------------
      - /home/lkraven/.vscode-server
      - /home/lkraven/.vscode
      # ---- Project build outputs (often committed to .gitignore) ------------
      - "**/node_modules"
      - "**/__pycache__"
      - "**/.venv"
      - "**/venv"
      - "**/target"              # Rust/Java/other — regenerable from source
      - "**/dist"
      - "**/build"
      - "**/.pytest_cache"
      - "**/.tox"
      - "**/.next"               # Next.js
      - "**/.nuxt"               # Nuxt
      # ---- Trash / shell noise ---------------------------------------------
      - /home/lkraven/.local/share/Trash
      - /home/lkraven/.mozilla/firefox/*/Cache*
      - /home/lkraven/.thumbnails
      - /home/lkraven/.zcompdump*
      # ---- Browser profiles (if any) ----------------------------------------
      - /home/lkraven/snap
      - /home/lkraven/.steam
      - /home/lkraven/Steam
      # ---- Root side ---------------------------------------------------------
      - /root/.cache
      - /root/.npm
      - /root/.local/share/Trash
      # ---- Logs / pids ------------------------------------------------------
      - "**/*.log"
      - "**/*.log.*"
      - "**/*.pid"
    tag:
      - host:nh3-dev
      - site:nh3
      - fleet:pfi
      - role:workstation
    schedule: "*-*-* 01:00:00"
    schedule-permission: system
    schedule-log: /var/log/restic-backup.log

  forget:
    keep-daily: 7
    keep-weekly: 4
    keep-monthly: 12
    keep-yearly: 3
    tag:
      - host:nh3-dev
    # Schedule removed 2026-04-21: forget against --append-only rest-server
    # always fails (delete ops blocked). Run manually during the prune
    # ceremony when --append-only is temporarily off.

  check:
    read-data-subset: 10%
    schedule: "Sun *-*-* 05:00:00"
    schedule-permission: system
    schedule-log: /var/log/restic-check.log
