Integrate restic as a tfstate backup #45

Open
tepichord wants to merge 10 commits from feat/41-integrate-restic-tfstate-backup into main
Owner

Closes #41

Automated PR created by forgejo-done adapter.

Closes #41 Automated PR created by forgejo-done adapter.
- excludes.txt: .terraform/ and .git/ patterns
- milner-backup.sh: core backup with restic forget retention
- milner-init.sh: one-time repo initialization
- milner-restore.sh: restore with configurable snapshot/target
- post-apply-hook.sh: trigger backup after terraform apply

Refs: #41
- restic-backup.service: oneshot unit with env file
- restic-backup.timer: 30-minute interval with Persistent=true
- README.md: architecture, retention, setup, restore procedure

Refs: #41
- flake.nix: add restic to buildInputs
- test_static.py: add backup scripts to shellcheck list
- AGENTS.md: add backup/ to Repo Map
- OPERATIONS.md: add §10 documenting backup/restore workflow
- .gitignore: exclude backup/*.env

Refs: #41
Remove incorrect fallback comment in milner-backup.sh (no fallback exists),
replace reference to non-existent .env.example with inline creation instructions.

Refs: #41
- milner-backup.sh: bail with a clear error when RESTIC_REPOS is unset
  or empty, instead of silently doing nothing.
- README.md: use plain space-separated list in the env file example,
  not bash array syntax — systemd EnvironmentFile does not support
  arrays.
Author
Owner

Merge changes from main.

Merge changes from main.
tepichord added this to the MVP project 2026-09-10 22:33:56 -07:00
Refs: #41
Client devices moved from §5 to §6 when §5 became Pocket ID, but the
"where things live" table still pointed at the old number.
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
Required
Details
This pull request has changes conflicting with the target branch.
  • .gitignore
  • OPERATIONS.md
  • flake.nix
  • tests/test_static.py
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/41-integrate-restic-tfstate-backup:feat/41-integrate-restic-tfstate-backup
git switch feat/41-integrate-restic-tfstate-backup
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tepichord/milner!45
No description provided.