nixapps

A cookbook of recipes for ordinary self-hosted applications

Apps as typed Nix, not copy-pasted YAML. Each recipe is one plain nixidy module describing how to run one app completely enough that a stranger can deploy it, and configuring nothing about any particular site. Recipes render onto the spine shipped by nixk3s. The two recipes that hold a scarce GPU declare against nixgpu's arbiter and implement none of it; apps that need an LLM point at nixllm's front door instead of running one of their own.

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