Your whole development environment, declared.
Define packages, languages, services, tasks, secrets, and tooling once. Give every developer—and CI—the same fast, reproducible environment.
Generate with AI →
Rust + Postgres
Python ML
Node + Redis
Go + MySQL
Rails + React
Ready to compose
Ingredient streamsDrag anything into the file. Send configured items back to remove them.

devenv.nix
Copy
{ pkgs, ... }: { languages = { # devenv.sh/languages/rust/ rust = { enable = true; channel = "stable"; }; }; services = { # devenv.sh/services/postgres/ postgres = { enable = true; initialDatabases = [{ name = "app"; }]; }; # devenv.sh/services/redis/ redis.enable = true; }; # devenv.sh/tasks/ tasks."app:test".exec = "cargo test"; # devenv.sh/integrations/secretspec/ processes.api.exec = "secretspec run -- cargo run"; packages = [ # devenv.sh/packages/ pkgs.docker ];}
Ydevenv.yaml
Copy

devenv.nix✦
Composing with AI
Teaching your stack to speak Nix.
Reading your stack
Languages · Services · Tools
ANAnsible
CC
CLClojure
C+C++
CRCrystal
CUCUE
DADart
DEDeno
NE.NET
ELElixir
ELElm
ERErlang
FOFortran
GNGNU Awk
GLGleam
GOGo
HAHare
HAHaskell
HEHelm
IDIdris
JAJava
JAJavaScript
JSJsonnet
JUJulia
KOKotlin
LELean 4
LOLobster
LULua
NINim
NINix
OCOCaml
ODOdin
OPOpenTofu
PAPascal
PEPerl
PHPHP
PKPkl
PUPureScript
PYPython
RR
RARacket
RARaku
RORobot Framework
RURuby
RURust
SCScala
SHShell
SOSolidity
STStandard ML
SWSwift
TETerraform
TETeX Live
TYTypeScript
TYTypst
UNUnison
VV
VAVala
ZIZig
ANAnsible
CC
CLClojure
C+C++
CRCrystal
CUCUE
DADart
DEDeno
NE.NET
ELElixir
ELElm
ERErlang
FOFortran
GNGNU Awk
GLGleam
GOGo
HAHare
HAHaskell
HEHelm
IDIdris
JAJava
JAJavaScript
JSJsonnet
JUJulia
KOKotlin
LELean 4
LOLobster
LULua
NINim
NINix
OCOCaml
ODOdin
OPOpenTofu
PAPascal
PEPerl
PHPHP
PKPkl
PUPureScript
PYPython
RR
RARacket
RARaku
RORobot Framework
RURuby
RURust
SCScala
SHShell
SOSolidity
STStandard ML
SWSwift
TETerraform
TETeX Live
TYTypeScript
TYTypst
UNUnison
VV
VAVala
ZIZig
ADAdminer
BLBlackfire
CACaddy
CACassandra
CLClickHouse
COCockroachDB
COCouchDB
DYDynamoDB Local
ELElasticMQ
ELElasticsearch
GAGarage
HThttpbin
INInfluxDB
KAKafka
KEKeycloak
MAMailHog
MAMailpit
MEMeilisearch
MEMemcached
MIMinIO
MOMongoDB
MOMosquitto
MYMySQL
NANATS
NGnginx
NINixseparatedebuginfod
OPOpenSearch
OPOpenTelemetry
Collector
POPostgreSQL
PRPrometheus
RARabbitMQ
RERedis
RURustFS
SQsqld
TATailscale
Funnel
TETemporal
TITideways
TRTraffic
Server
TYTypesense
VAVarnish
VAVault
WIWireMock
ADAdminer
BLBlackfire
CACaddy
CACassandra
CLClickHouse
COCockroachDB
COCouchDB
DYDynamoDB Local
ELElasticMQ
ELElasticsearch
GAGarage
HThttpbin
INInfluxDB
KAKafka
KEKeycloak
MAMailHog
MAMailpit
MEMeilisearch
MEMemcached
MIMinIO
MOMongoDB
MOMosquitto
MYMySQL
NANATS
NGnginx
NINixseparatedebuginfod
OPOpenSearch
OPOpenTelemetry
Collector
POPostgreSQL
PRPrometheus
RARabbitMQ
RERedis
RURustFS
SQsqld
TATailscale
Funnel
TETemporal
TITideways
TRTraffic
Server
TYTypesense
VAVarnish
VAVault
WIWireMock
+Docker
+Git
+curl
{}jq
rgripgrep
+cargo-watch
AWSAWS CLI
+Terraform CLI
+Node.js 22
$✓ShellCheck
$_just
✓Test task
›_App process
◇SecretSpec
✓Pre-commit
+Docker
+Git
+curl
{}jq
rgripgrep
+cargo-watch
AWSAWS CLI
+Terraform CLI
+Node.js 22
$✓ShellCheck
$_just
✓Test task
›_App process
◇SecretSpec
✓Pre-commit
Three steps. Done.
From zero to a reproducible environment your whole team can use.
1
Install
Once Nix is installed. Works on Linux, macOS, and WSL.
$ nix profile install nixpkgs#devenv
2
Initialize & describe
Scaffold the project, then edit devenv.nix or generate it from a
prompt above.
$ devenv init
$EDITOR devenv.nix
3
Activate
Everything available, in under 100ms after the first build.
$ devenv shell
(devenv) $ cargo runYour whole stack, declared together
Languages, services, processes, tasks, and secrets. Everything is declarative.
58
Languages
Python, Rust, Go, Node, Ruby, PHP, Java, Elixir, and more, with version pinning and LSP servers.
Services
42 preconfigured services, including PostgreSQL, Redis, MySQL, RabbitMQ, MinIO, Caddy, and Elasticsearch.
services.postgres.enable = true;
services.redis.enable = true;
Processes
Declarative process management with logs, restarts, and dependencies.
Just devenv up.
Tasks & git hooks
Define dependencies, run in parallel, hook into your shell or commits. Linters, formatters, codegen.
tasks."app:build" = {
exec = "yarn build";
before = [ "devenv:enterShell" ];
};
SecretSpec
Declarative secrets from Keychain, 1Password, LastPass, or dotenv. Keep
values out of config and committed .env files.
processes.api.exec =
"secretspec run -- npm start";
Containers
Build OCI containers from your dev environment. Same packages, same versions, same behavior.
Tests
Run integration tests with all processes active. devenv test and done.
Basics
Packages, variables, files, and scripts in native bash, zsh,
fish, or nushell. Auto-activate on cd and apply updates at the
next prompt.
Ad-hoc shells, zero config
Spin up a temporary environment without writing a devenv.nix. Great
for experiments, scripts, and CI matrices.
$ devenv -O languages.python.enable:bool true \
-O languages.python.version:string "3.12" \
shell
Search packages & options
Search 100,000+ packages and every devenv option from the CLI, using the exact Nixpkgs version pinned by your project.
$ devenv search postgres
pkgs.postgresql_17
services.postgres.enable
Evaluation caching
Warm shells in milliseconds.
Auto-invalidated evaluation caching skips unchanged work. No daemons. No manual cache management. How it works.
Cached shell startup
<100ms
Cold
4832 ms
Warm
47 ms
Same config. ~100× faster on every subsequent shell.
Composability
Many environments. One shell.
Import config across folders and repositories. First-class monorepo support.
frontend/devenv.nix
languages.javascript.enable = true;
backend/devenv.nix
languages.rust.enable = true;
services.postgres.enable = true;
github:myorg/shared
services.redis.enable = true;
→
Unified environment
$ devenv shell
noderustpostgresredis
Profiles
One project. Every workflow.
Switch between frontend, backend, testing, and full-stack environments without duplicating configuration. Layer profiles manually or activate them by hostname and user.
$ devenv –profile backend shell
postgresredisAPI tools
$ devenv –profile fullstack up
backendfrontenddev server
hostname.ci-runner + user.alice
automaticdeterministic priority
devenv.nix
profiles = {
backend.module = {
services.postgres.enable = true;
services.redis.enable = true;
};
frontend.module = {
languages.javascript.enable = true;
processes.dev.exec = "npm run dev";
};
fullstack.extends = [ "backend" "frontend" ];
};
Native process manager
One devenv up. Whole stack alive.
Built-in process supervision: dependencies, ready probes, restart policies, socket activation, automatic port allocation. Or swap in process-compose, overmind, mprocs.
postgresrunning
port :5432 · uptime 3m 12s
ready probe: pg_isready
redisrunning
port :6379 · uptime 3m 12s
restart: on-failure
migratecompleted
one-shot · exit 0
after: postgres
apirunning
port :8080 · uptime 3m 09s
after: postgres, redis, migrate
socket activation · zero-downtime restarts
Declared once in devenv.nix. Started, ordered, restarted, and stopped
by the native supervisor.
SecretSpec
Declare a secret. Swap the source.
The same declaration reads from Keychain, 1Password, dotenv, or env. Load secrets at runtime without committing their values.
Keychain
1Password
LastPass
.env
env
secretspec.toml
[project]
name = "my-app"
[profiles.default]
DATABASE_URL = { required = true }
STRIPE_SECRET_KEY = { required = true }
🔐Source: macOS Keychain
↓
📄secretspec.toml declares DATABASE_URL
↓
🐚$ secretspec run -- npm start, exposed only to the app
Packaging
From dev shell to deployable artifact.
Same languages, same versions, same packages. Define outputs and ship a Nix derivation.
1 · Declare
devenv.nix
languages.rust.enable = true;
outputs.app =
config.languages.rust.import ./. {};
→
2 · Build
devenv build
$ devenv build outputs.app
• Built /nix/store/...-app
in 12.4s
→
3 · Ship
Nix store · binary cache · CI
$ nix copy --to ssh://deploy \
/nix/store/...-appBuilt in the open
Active community, frequent releases, and a growing ecosystem of services and languages.
GitHubStar & contributeRead the source, file an issue, send a PR. MIT
licensed.DiscordChat with the
teamGet help, share setups, follow what’s coming
next.BlogWhat’s newRelease notes,
design deep-dives, and case studies.ExamplesReady-made
setupsCopy a working devenv.nix for your
stack.
Start building.
Set up your first environment in minutes, or generate one from the hero above.
Last updated Oct 08, 2026