Nixpkgs Multiverse:一个输入拿到曾经存在的每一个版本
来源:fzakaria.com — 2026-08-09
📋 概述
Farid Zakaria 因 NixOS 配置刷新时依赖的某个包版本被'前向升级'破坏而苦恼,索性写了 nixpkgs-multiverse——一个 flake 输入,把所有曾经存在于 Nixpkgs 的版本一次性全部提供。其核心思路是:既然多个 nixpkgs 输入能让 flake 拿到特定包版本,那为什么不把每个历史版本都作为可访问的宇宙。通过它,用户可以用一条命令跑任意历史版本(如 python3 3.6.2),按 release、日期或 commit 取用完整 Nixpkgs 修订,甚至混用不同版本于同一构建环境。
🔑 核心要点
- 一个 flake 输入即可同时访问 Nixpkgs 中每一个历史版本的每一个包。
- 可用 `nix run github:fzakaria/nixpkgs-multiverse#versions.python3."3.6.2"` 跑指定版本,也可用 `latest` 取最新。
- 通过 `at` 函数可按 release(如 24.11)、日期(2022-03-15)或 commit 取用完整 Nixpkgs 修订。
- 支持查询某个包曾经存在的所有版本,并在同一 shell、包或构建环境里混用。
- 解决'Nixpkgs 难以让一个包原地不动而其余持续演进'的痛点。
💡 金句
如果所有历史版本都在手边,'版本回退'就不再是四处翻找 commit 的苦差事。
👍 0
👎 0
← 返回 Lobsters 首页