About this project

devenv builds reproducible developer environments on top of Nix, configured through devenv.nix and devenv.yaml. It targets fast iteration: incremental Nix evaluation caching, a terminal UI with live build progress, and native shell reloading that rebuilds in the background while the shell stays interactive. A bundled nixd-based LSP provides autocomplete, hover docs and go-to-definition for devenv.nix. Environments can be created ad hoc from the CLI without config files, or pulled from other repositories with --from, and configuration options can be overridden with typed values such as --option services.postgres.enable:bool true. Coverage includes 50+ languages with compilers, LSP servers, formatters, linters and version selection; 100,000+ packages from Nixpkgs for Linux, macOS, x64 and ARM64 including WSL2; and 40+ services such as PostgreSQL, Redis, MySQL, MongoDB, Elasticsearch and Caddy. A native process manager written in Rust handles dependency ordering, restart policies, readiness probes (exec, HTTP, systemd notify), socket activation, watchdog heartbeats and file watching, plus automatic free-port allocation. Tasks support DAG-based execution, caching, parallel runs and namespaces, and scripts run with access to all environment packages. Packaging and deployment features include building OCI containers from the environment without Docker, outputs for packaging apps with language-specific tools, and polyrepo support for referencing outputs and options across repositories. Composition is handled through profiles, imports and pinned or overridden inputs. Integrations cover SecretSpec for declarative secrets management, git hooks via git-hooks.nix, testing with devenv test that starts and stops processes automatically, direnv for automatic shell activation, an MCP server for AI assistant integration, and AI-based environment generation from a natural language description. The CLI offers commands including init, generate, shell, update, search, info, up, processes, tasks, test, container, inputs, changelogs, repl, gc, build, eval, direnvrc, version, mcp and lsp, along with options for Nix build concurrency, hermeticity, offline mode, profiles, evaluation caching and tracing output.