Devenv 是一个开源开发环境管理工具,用来把「搭环境」这件事变成一段可提交、可复现的配置文件。你在这份配置里写明项目需要哪些编程语言、软件包和后台服务,Devenv 负责把它们装好,并组织成一个可直接进入的工作环境。它构建在 Nix 之上,核心卖点是可复现:同一份配置,在团队任何成员的电脑上都能构建出相同的环境。适合希望摆脱手工配环境、又需要环境一致性的个人开发者和团队。
Nix 与声明式:环境像代码一样管理
要理解 Devenv,先要知道它脚下的 Nix。Nix 是一个函数式包管理器——它按照描述文件精确构建软件,相同的输入永远产生相同的输出,因此装出来的环境可以量化复现。这是「我机器上能跑、你机器上跑不了」这类问题的根治方案。
Devenv 把 Nix 的能力封装成更友好的声明式接口。开发者只需在 devenv.nix 配置文件里「声明想要什么」:开启某种语言(比如 languages.rust.enable = true)、列出要装的包(比如 pkgs.git)、开启某个服务(比如 services.postgres.enable = true)。至于依赖怎么装、版本怎么锁,都由工具处理。这种写法的好处是:环境从配置就能完整重建,换电脑、加新人、上 CI,都指向同一份描述。
2.0 版本:Rust 重写与新交互
2026 年 3 月,项目发布 2.0 版本,核心用 Rust 重写,带来了两个直观变化。一是终端界面(TUI):构建过程以层级视图实时显示进度、任务状态和错误详情,不再是滚动的日志流。二是原生 shell 热重载:修改配置后环境在后台重新构建,当前打开的 shell 不受打断,改完即可继续用。
另一个关键改进是增量求值缓存。Nix 配置的求值原本是进入环境的主要耗时点,2.0 把求值结果缓存下来,配置没有变化时,进入环境的耗时低于 100 毫秒,接近即时。
覆盖面:语言、包、服务与进程
Devenv 对常见开发栈做了开箱即用支持:50 多种语言自带配套工具链(编译器、语言服务器、格式化与 lint 工具、版本选择),可安装 Nixpkgs 仓库中 10 万以上的软件包,并内置 40 多种后台服务的配置,包括 PostgreSQL、Redis、MySQL、Elasticsearch、Caddy 等。
它还自带一个用 Rust 编写的进程管理器:按依赖顺序启动进程、自动分配空闲端口、提供重启策略与就绪检测,多个项目并行时不会互相抢占端口。任务系统以有向无环图(DAG)组织执行顺序,支持缓存与并行运行;devenv container 则能把当前环境直接打包成 OCI 容器镜像——这是 Docker 等容器运行时通用的镜像格式,不需要手写 Dockerfile。
集成与安全
密钥管理方面,Devenv 支持 SecretSpec,可以从系统钥匙串、1Password、.env 文件等来源声明式注入密钥,明文不落仓库。它与 direnv 集成:进入项目目录即自动激活对应环境,不用手动敲命令。git 钩子由 git-hooks.nix 提供预配置的格式化与 lint 检查。
AI 时代它也没落下:devenv generate 命令能用 AI 根据自然语言描述生成配置脚手架;MCP 服务器(Model Context Protocol,一种让 AI 助手读取工具与配置信息的开放协议)供编程助手查询包和配置项,辅助维护环境。
快速上手
在项目目录运行 devenv init 生成配置文件,再运行 devenv shell 进入环境,两步即可开始。配置随仓库提交,成员克隆后即可得到一致环境。
Devenv 目前约 7.4k star(GitHub 仓库 cachix/devenv,Apache-2.0 许可,由 Cachix 维护)。如果开发环境对你来说还是一件靠个人手工维护、换台机器就失灵的事,Devenv 给出的答案是:把环境写进配置文件,让它像代码一样可复现、可共享、可审查。