{
  "id": 416769,
  "title": "nixpkgs-multiverse: every version that ever existed",
  "url": "https://urgent.news/2026/08/09/nixpkgs-multiverse-every-version-that-ever-existed",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-09T23:06:03.000Z",
  "source": {
    "name": "Lobsters",
    "slug": "lobsters",
    "url": "https://fzakaria.com/2026/08/09/nixpkgs-multiverse-every-version-that-ever-existed"
  },
  "original_language": "en",
  "account": "The Nixpkgs multiverse is a single flake input that provides access to every version of every package that has ever existed in the Nixpkgs repository. The user experienced issues when a dependency they relied on was version bumped, breaking their tooling. To circumvent this, they added another nixpkgs input pinned to a specific commit, but this became cumbersome as they needed to search for and pin specific versions of packages. To simplify this process, the author created the nixpkgs-multiverse, which consolidates all versions of packages into a single flake input. This allows users to query the flake for all versions of a package that have existed in Nixpkgs, and mix them together in a single shell, package, or build environment. The concept of a Nixpkgs input being distinct from a flake input is illustrated, with the author noting that each Nixpkgs input creates a separate universe. The multiverse eliminates the need for flake inputs that are eagerly fetched even if not used, and instead fetches revisions lazily, only when needed. This results in a more efficient and manageable way to access historical versions of packages. The author emphasizes that every version of every package is already available, it's just a matter of addressing them by version number instead of commit hash. The entire project is a mere 5 MB of JSON and about 200 lines of Nix code, making it a simple yet powerful solution to managing package versions in Nixpkgs.",
  "summary": "The article discusses the creation of nixpkgs-multiverse, a flake input that provides access to every version of every package that has ever existed in the Nixpkgs repository. The author explains how they encountered issues with packages being \"bumped forward\" in NixOS, leading them to pin specific commits to maintain their desired versions. This led to the realization of the need for a more streamlined solution, which ultimately resulted in the development of nixpkgs-multiverse. The author explains how the new flake input fetches revisions lazily using builtins.fetchTree, only when they are actually referenced, and how it limits commits to those that were actually built and cached by Hydra. This allows for easy access to all the versions of packages without having to pin specific commits or maintain multiple nixpkgs inputs.",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}