最近写了个 nix-cache-worker,用 Cloudflare Worker + R2 + D1 搭一个私有的 Nix binary cache 。
主要是因为我自己用 NixOS 管理所有私人机器,deploy 的时候就要现场构建其中部署的私有项目,要花挺久的。更好的办法是在这些项目中配置 CI 触发的构建。一来构建挂了能马上知道,二来构建完成 push 到私有 cache 基本就不用现场编译了。
找了一圈现成的方案,大概有两类:
一类是 Cachix 这类服务,用起来省事,但价格并不便宜,最便宜套餐 50 USD/月。
另一类就是 Attic 、niks3 这些开源方案。功能都挺全,但还是得找地方把服务跑起来,数据库、存储这些也得自己管。
这时就有一个比较尴尬的问题:我的基础设施本身就是用 NixOS 管的。我在 NixOS 机器上部署构建 NixOS 需要的依赖,就出现循环依赖了。
所以我更想要一个完全独立在 NixOS 基础设施之外的东西,不需要我再自己运维一台机器。
正好 Cloudflare Worker 、R2 、D1 都有免费额度,我自己的用量基本碰不到收费线,于是就有了这个项目。
目前支持:
nix copy --to / nix copy --from我自己现在的流程基本就是:
git master push/merge → CI build → nix copy 到 cache → deploy 直接拉
这样私有项目能不能构建,在 CI 的时候就知道了。deploy 的时候也不用再等它们一个个编译。
整个 cache 跑在 Cloudflare 上,不依赖我的任何一台 NixOS 机器。哪怕机器全挂了,重新装系统的时候 cache 也还在。
部署也比较简单,建个 R2 和 D1 ,把 Worker 部署上去就行。
项目是纯 vibe 的,我用了三周了,目前工作良好(对于纯 vibe 这个问题也不用担心,因为 nix 有签名校验,即便 write token 被绕过仍旧无法注入恶意包)。
项目地址: https://github.com/cross-io/nix-cache-worker 欢迎部署体验!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.