Status: 38 recipes, zero live adoption
No recipe has been adopted into a live cluster yet
Every recipe was generalized from a system where that app genuinely runs, so the knowledge in it is real — but “renders in CI” and “runs in production” are different claims, and this repository has only earned the first. Treat everything here as evaluated, not live-verified.
38 recipes across 12 categories
advanced, chat, data, dev, documents, files, home, media, notes, office, productivity and utility — see the full breakdown below. There is no central list of categories anywhere in this repository: a recipe's own directory is its category, so adding one is adding a directory.
Knowledge carries a default; a value never does
A recipe ships every default that makes a stranger's deploy work — the pinned image, the container port, the paths it writes inside the container, the probe timings — and refuses to guess the handful of things true only of one site: a namespace, a host directory, the name of a Secret it will not create, a public URL. Enabling a recipe with nothing else fails loudly, naming what you still owe. The rules are fixed in CONTRACT.md.
The pitch
Recipes, not a renderer
Every recipe is one file of ordinary lib.mkOption,
readable top to bottom, with no shared library and no generic
render-any-app module to learn first. Duplication between recipes is
accepted on purpose: two recipes that look similar are two independent
statements about two different apps.
Capacity stays at the site
Recipes never render replicas, resource limits, node selectors, tolerations, autoscalers, or Ingress — those are one site's hardware and networking decisions. These are NixOS-style modules, so a consumer merges its own tuning into the same attribute path from its own file.
Checked, not just claimed
nix flake check renders all 38 recipes against real
nixidy from placeholder values in examples/all/values.nix.
That is the one mechanical check this repository makes, and nothing
here claims more than that.
Recipes by category
The directory is the category: a recipe at apps/media/castopod
declares nixapps.media.castopod. There is no central list
anywhere in the repository — adding a category means adding a
directory. Start with
media/castopod,
the reference recipe: one Deployment, one Service, three values,
everything else knowledge.
| advanced (2) | comfyui, tts |
| chat (2) | mattermost, tuwunel |
| data (1) | directus |
| dev (3) | bytestash, chartdb, whodb |
| documents (4) | bookstack, overleaf, paperless, papra |
| files (5) | nextcloud, opencloud, pingvin, syncthing, versitygw |
| home (3) | grocy, homarr, homebox |
| media (3) | castopod, ontime, tubearchivist |
| notes (4) | archivebox, linkwarden, memos, silverbullet |
| office (2) | collabora, eurooffice |
| productivity (5) | calcom, donetick, leantime, planka, vikunja |
| utility (4) | assets, cyberchef, quickchart, rclone |