devenv is a developer environment manager that uses Nix to create fast, declarative, reproducible, and composable development environments.
The tool addresses the problem of setting up consistent development environments across team members and machines. Rather than relying on manual installation steps or Docker, devenv uses Nix declarations to specify exactly what languages, packages, and services a project needs. It provides a terminal UI showing live build progress and native shell reloading that rebuilds environments in the background while keeping your shell interactive. The approach emphasizes speed through incremental Nix evaluation caching, achieving sub-100ms environment activation when nothing has changed. It includes a language server for the devenv.nix configuration file with autocomplete and hover documentation, and supports ad hoc environments from the command line without requiring configuration files.
The tool suits teams wanting reproducible environments without Docker overhead, and projects using multiple languages or services. It provides built-in support for over fifty languages with compilers, LSP servers, formatters, and linters included, access to over one hundred thousand packages from Nixpkgs across Linux, macOS, x64, and ARM64 architectures, and over forty services like PostgreSQL, Redis, MySQL, and MongoDB. A native process manager written in Rust handles dependency ordering, restart policies, readiness probes, and automatic port allocation to prevent collisions when running parallel environments. The tool supports composable environments through imports, profiles for environment variants, and polyrepo setups that reference outputs across repositories. It can build OCI containers from your environment without Docker and package applications using language-specific tools.
The project maintains active development with regular feature releases and blog posts documenting new capabilities. The codebase is written primarily in Rust, indicating investment in performance-critical components like the process manager and shell integration. The tool includes comprehensive documentation covering languages, packages, services, processes, tasks, and composition patterns, suggesting sustained effort in making the system accessible to new users.