Lobsters | 原文链接 | 2026-08-31 收录

一统天下的一条 flake:omniflake 把上万个 Nix flake 装进一个输入

来源: fzakaria.com — 2026-08-28

概述

作者厌倦了为每个依赖单独添加 flake 输入并手动做 follows 的繁琐体验,于是构建了 omniflake——一个背后承载近 1.2 万条 Nix flake 的单一 flake 输入。核心技巧是这些 flake「并非真正的 inputs」:omniflake 的 flake.nix 只声明 5 个输入,另外用一个 JSONL 的 pin 表记录所有 flake 的锁定对象;得益于 Nix 的惰性,未访问的输入永远不会被获取或求值,只有当你请求某条 flake 时才通过内嵌加载器复刻 Nix 对锁文件的行为去取树、导入并调用 outputs。作者还提交了 NixOS/nix#16387 修复锁文件命名冲突导致的二次方复杂度(4000 输入时约 21 倍提速)。

核心要点

金句

我爱联邦的思想,但我也想要集中的简单——omniflake 就是我的蛋糕。
返回 Lobsters 首页