加载失败
这篇 Show HN 介绍的是一个把开发依赖、任务和环境配置写进 Makefile 的工具,目标是让新机器只需克隆仓库并运行少量命令就能进入开发状态。评论区把它和 Mise(一个管理语言版本、工具与任务的开发环境管理器)、Nix(声明式包管理与环境构建系统)以及 Home Manager(Nix 生态中的用户级配置管理工具)放在一起比较。讨论还延伸到 Docker(容器技术)和 CI(持续集成)如何配合,形成“主机尽量干净、项目自带环境”的工作流。与此同时,也有人担心把 dotfiles 和安装脚本直接纳入仓库,会让不同项目之间的语言版本和工具链互相打架。另一条支线则是用 LLM 或 codex 代替人工安装,把环境搭建从“写脚本”进一步变成“让助手执行命令”。
不少评论把 Mise 当成这类问题的更成熟答案:它在用户级管理工具链,比 Nix 更不“全包”,也更容易和 immutable distro(不可变 Linux 发行版)兼容。有人把它直接提交进仓库,用来统一每个工程师的环境,并在 CI 里复用同一套任务,连原本写在 README 里的命令也改成了 mise tasks。还有人强调把真实凭据放进 gitignored 的 mise.local,只把环境加载和任务编排放进仓库,从而让项目既可复现又不泄露 secrets。反对者则提醒,把 dotfiles 和安装逻辑塞进代码仓库会在 node、python 这类版本兼容性差的语言上踩坑,而且并不是所有 Linux 开发者都会 make 和 bash。
另一组评论认为这个思路其实是在重新发明 wheel,因为 Nix 生态里早就有 home-manager 这类工具,可以把用户级配置、包和环境全部声明式管理起来。有人分享自己通过 Claude Code 学习 nix 和 home-manager 后,得到了可随身携带的 source-controlled tool kit,日常使用体验很好。也有人补充自己先从 Nix flakes 入手,再扩展到 Home Manager、nix-darwin 和 NixOS,最终觉得整套体系非常完整。这个观点的核心是,与其用 Makefile 拼装开发工具,不如直接上一个专门为可复现环境设计的声明式系统。
有评论从“过去会喜欢这个”出发,承认 Make 的简洁和威力,但也说自己现在更多让 codex 代劳安装软件,把它当成一个通用 package manager。理由很现实:很多包的“当前推荐安装方式”变化太快,交给 LLM 反而比人工维护脚本更省心。有人还会维护一份安装过的软件列表,并同步到 GitHub,作为 workstation 配置的记录。调侃声也很明显:既然如此,不如直接把 LLM 放进 makefile,或者把通用安装脚本写进 AGENTS.md,然后一把梭。
还有人分享了一个更窄但很实用的做法:专门管理那些必须手动安装或从源码编译的 MISC packages。最初只是为了检查这些包是否有更新,后来又扩展成了安装和升级功能。做法是把第一次手工完成的步骤保存成 install script,再纳入系统统一管理,这样以后既能复用,又能自动检查更新。这个思路和主题很接近,但更偏向补齐 package manager 覆盖不到的缝隙。
Mise: 一个按用户级管理语言版本、工具和任务的开发环境管理器,可用于统一本地开发与 CI 配置。
Nix: 一个声明式包管理与环境构建系统,强调可复现、隔离和版本可控。
Home Manager: Nix 生态中的用户级配置管理工具,用来管理 shell、应用设置和安装的包。
Makefile: Make 工具读取的任务定义文件,用 target 组织自动化命令。
Docker: 一种容器技术,把运行时和依赖封装在隔离环境里。
dotfiles: 用户主目录中的配置文件集合,如 shell、编辑器和终端设置。
CI: 持续集成环境,用于自动构建、测试和检查代码。