Meta-repo: the Copier template that scaffolds standalone projects, plus backup config and shared conventions. Projects get config by copy, never by reference — delete this and they all still build.
  • Jinja 71.5%
  • Shell 28.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
jonnxor 742fd1b516 docs: why the template is untagged, and the missing _commit failure
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 18:00:17 +00:00
backup feat: back up Forgejo via forgejo dump before every snapshot 2026-09-20 15:06:05 +00:00
docs docs: real remotes in the onboarding runbook 2026-09-20 17:27:03 +00:00
templates docs: why the template is untagged, and the missing _commit failure 2026-09-20 18:00:17 +00:00
.gitignore refactor: dumb desk, one ignored repos/ folder, two bounded backups 2026-09-20 11:32:51 +00:00
.sops.yaml feat: add sops config targeting the existing age key 2026-09-18 21:55:45 +00:00
CHEATSHEET.md feat: back up Forgejo via forgejo dump before every snapshot 2026-09-20 15:06:05 +00:00
CLAUDE.md refactor: dumb desk, one ignored repos/ folder, two bounded backups 2026-09-20 11:32:51 +00:00
copier.yml refactor: template is consumed by git URL, not a local path 2026-09-20 17:58:45 +00:00
lefthook.yml feat: add copier project template with feature toggles 2026-09-18 22:00:04 +00:00
mise.toml refactor: template is consumed by git URL, not a local path 2026-09-20 17:58:45 +00:00
README.md docs: real remotes in the onboarding runbook 2026-09-20 17:27:03 +00:00

workdesk

A desk, not a dependency. It holds the project template, the backup config, and the rules — nothing that needs maintaining by hand.

~/Projects/workdesk/
├── CHEATSHEET.md        every command you actually type
├── docs/                manuals (below)
├── templates/project/   copier template, every feature a toggle
├── backup/              restic → local disk + Backblaze B2
└── repos/               ignored; every project lives here
    ├── vault/           Obsidian vault (own repo)
    └── servers/         Podman Quadlet units per host (own repo)

Projects in repos/ are standalone: config got there by copy (a copier template) or as a real published package, never by reference. Delete the desk and every project still builds, lints and runs the same.

Start here

you are… read
new to this, or setting up a machine docs/onboarding.md
unsure what a word means docs/glossary.md
asking what's installed and pinned where docs/stack.md
looking for a command CHEATSHEET.md
doing something you do rarely docs/operations.md
wondering why it's built this way docs/architecture.md
something is broken or stale docs/reset.md
something is lost docs/recovery.md

The three rules

  1. Config reaches a project by copy, never by reference. A project must work with nothing on the machine but itself.
  2. Changes every commit → app repo. Changes when you roll out → servers repo. The boundary between them is a container image tag.
  3. The desk stays dumb. No manifests, indexes or status scripts that have to be kept in sync by hand.

Most used

mise run new -- repos/<name>     # scaffold a project
mise run backup                  # snapshot to local + B2
mise run backup:snapshots        # what's in each repository

Status

  • Root of trust: age keypair, sops, key in Bitwarden + paper
  • Copier template with toggles (mise run new)
  • Obsidian vault (repos/vault, GSD structure)
  • Backups: local disk + B2, nightly 03:00, last 3 snapshots each, restore-tested 2026-09-19
  • servers repo: host hades (this machine), mise run deploy -- hades
  • Forgejo 16.0.5 installed, registration disabled
  • Forgejo backed up: forgejo dump on every run, restore-verified from B2 (2026-09-20)
  • Public at https://git.jonnxor.is — DNS at ISNIC (CNAME to the router's DDNS name), MikroTik dstnat, ufw, Caddy with a real Let's Encrypt certificate. Git over SSH on port 2222.
  • All three repos pushed, branches renamed mastermain: WAAAGH/workdesk (public), WAAAGH/servers and jonnxor/vault (private)
  • Apex jonnxor.is still points at Vercel — move the site here, then retire the Vercel project (not before: resolvers holding the old delegation still need it)

Tools: git, age, sops, mise, podman, gh, rsync (system); restic, lefthook, copier (via mise). Full inventory: docs/stack.md.