Curated Nix flake project templates — bootstrap reproducible development environments with a single command.
templates.nixcafe.org
# Register the alias (once)
nix registry add beans "github:nixcafe/develop-templates"
# Bootstrap a project
nix flake init -t beans#node
nix flake init -t beans#python
nix flake init -t beans#rust
nix flake init -t beans#java
# Enter the dev shell
nix developThat's it — no Docker, no manual toolchain setup, no version managers. nix develop drops you into a fully provisioned environment with your language toolchain, formatters, linters, and pre-commit hooks.
| Template | Stack | What's included |
|---|---|---|
nix (default) |
Nix | nixfmt, deadnix, statix — Nix dev shell with formatting & linting |
node |
Node.js / Bun / Deno | Node.js, Bun, Deno, ni — pick your runtime |
python |
Python | Python auto-configured, ruff, hatchling |
rust |
Rust | cargo, rustc, clippy, rustfmt, rust-analyzer |
java |
Java | GraalVM JDK, Maven, Gradle |
kotlin |
Kotlin | GraalVM JDK, Kotlin compiler, Gradle |
latex |
LaTeX | LaTeX with Nix formatters and pre-commit hooks |
typst |
Typst | Typst with Nix formatters and pre-commit hooks |
nix-config |
NixOS / macOS | NixOS, nix-darwin, home-manager with auto-discovered systems |
colmena-config |
NixOS + Colmena | NixOS with Colmena deployment & ISO/image builds |
secrets |
Secrets | agenix/ragenix with YubiKey support |
purr |
purr Framework | purr project (mkFlake, standalone) |
purr-flake-parts |
purr + flake-parts | purr project with flake-parts integration |
- Reproducible — identical environments across Linux, macOS, and WSL
- No Docker overhead — native Nix builds, no container runtime
- Declarative — tools, dependencies, and env vars in one
flake.nix - Zero-install bootstrap —
nix flake init -t+nix develop, ready to code - Polyglot — one toolchain for all programming languages
- CI-friendly — same environment locally and in GitHub Actions / GitLab CI
Each template is a thin wrapper that pulls content from a dedicated repository under nixcafe-develop:
# templates/node/default.nix
{ inputs, ... }:
{
description = "Node.js development environment";
path = "${inputs.templates-node}";
welcomeText = ''
# Node.js — Nix Development Environment
Run `nix develop` to enter the dev shell.
'';
}The template flake itself uses purr for auto-discovery:
flake.nix # inputs + mkFlake call
templates/ # 13 templates, each a default.nix wrapper
shells/default/default.nix # Dev shell with nixfmt, deadnix, statix
checks/git-hooks/ # pre-commit hooks
git clone https://github.com/nixcafe/develop-templates.git
cd develop-templates
nix develop # enters dev shell with nixfmt, deadnix, statix
nix flake check # run all checksFull docs at templates.nixcafe.org — quick start, template details, contributing guide.