devenv 声明式开发者环境
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/devenv-declarative-developer-environments-nix。
技能介绍
问题:每台机器都在重建一次环境
团队里最常见的状态是"在我机器上能跑":新成员 clone 仓库后,要对着 README 逐个安装数据库、语言运行时和一堆工具,版本稍有差异就出现诡异的构建失败;CI 跑一套镜像,本地又是另一套,排查问题前先要花时间对齐环境差异。把环境本身当作代码管理,意味着漂移可以被版本控制、评审和回滚。
它如何工作
devenv 的核心思路是让 devenv.nix 成为环境的单一事实来源:
- 声明而非脚本:在单一配置文件中描述项目依赖、服务(数据库、Redis 等)、脚本和语言工具链,而不是编写一步步的安装命令。
- 可重现构建:基于 Nix 的包管理与固定输入,不同机器上解析出的结果是确定的。
- OCI 容器直接运行:从环境中直接构建 OCI 容器,无需单独维护 Dockerfile,CI 与本地执行的是同一个环境。
- 语言工具链即插即用:通过类似
config.languages.python.import ./python-app {}的声明启用指定版本的语言环境,例如固定python 3.10。
典型流程是运行 devenv init 生成 devenv.nix,之后随项目演进增删配置条目即可。
适用边界
- 团队需要接受把环境纳入版本控制,以及 Nix 表达式的学习成本。
- 配置中引用的包与服务应来自可信输入,输入锁定的质量决定重现性的质量。
- 对已有大量手工环境脚本的老项目,迁移意味着重写配置,而非一键替换。
使用场景
- 新成员 clone 仓库后运行 devenv init,按 devenv.nix 自动重建依赖、服务与工具链,不必再逐条照 README 安装。
- CI 流水线需要与本地一致的运行环境,直接从 devenv 环境构建 OCI 容器镜像,无需单独维护 Dockerfile。
- 团队因各机 Python 版本不一致导致构建偶发失败,通过 config.languages.python.import 固定版本实现跨机器一致。
- 项目依赖数据库、Redis 等服务和多语言工具链,需要在单一配置文件中声明,保证每台机器解析出相同的环境。
适合人员
- 负责后端服务的工程师,希望本地调试与 CI 时依赖、运行时版本完全一致,减少环境差异引发的故障。
- 维护 CI 流水线的 DevOps 工程师,想用同一份环境配置直接构建 OCI 容器,不必为本地和 CI 维护两份镜像定义。
- 带领多名新成员的技术负责人,希望新成员 clone 仓库后按配置文件重建环境,不再依赖人工逐台机器安装。
- 开发多语言项目的工程师,需要在单一仓库中管理多种语言工具链与服务依赖并灵活切换版本。