<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa" -->

---
title: nixpkgs-multiverse: fast mode | daily.dev
description: nixpkgs-multiverse adds a new 'fast' attribute that skips Nixpkgs evaluation entirely, letting you fetch a specific historical package version's store path...
canonical: https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: nixpkgs-multiverse: fast mode | daily.dev
og:description: nixpkgs-multiverse adds a new 'fast' attribute that skips Nixpkgs evaluation entirely, letting you fetch a specific historical package version's store path...
og:url: https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa
og:image: https://api.daily.dev/og/posts/0zq7rYvxa.png
og:image:alt: nixpkgs-multiverse: fast mode
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# nixpkgs-multiverse: fast mode

**[Farid Zakaria’s Blog](https://daily.dev/sources/fzakaria)** · 6 min read · 0 upvotes · 0 comments

## Summary

nixpkgs-multiverse adds a new 'fast' attribute that skips Nixpkgs evaluation entirely, letting you fetch a specific historical package version's store path directly from cache.nixos.org. The trick, borrowed from tomberek's fastpkgs project, uses mkFakeDerivation with builtins.appendContext to fake a store path derivation without requiring --impure or evaluating the full Nixpkgs tree. A census found all 271,187 indexed package versions (14.8 TB) are still alive in the binary cache dating back to 2013, since NixOS's cache has never garbage collected. The feature is also exposed via the mvs CLI tool for offline use.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://fzakaria.com/2026/08/14/nixpkgs-multiverse-fast-mode>

## Questions this post answers

### How can I get a specific historical version of a package like python3 3.8.9 in Nix without evaluating the whole old Nixpkgs tree?

Use nixpkgs-multiverse's fast attribute, which resolves directly to the store path via nix build 'github:fzakaria/nixpkgs-multiverse#fast.versions.python3."3.8.9".out'. This skips fetching and evaluating the ~378 MB historical Nixpkgs tree entirely and pulls the build straight from cache.nixos.org, requiring no experimental features or --impure flag.

_Developers chasing pinned dependency versions can track tooling like this through daily.dev._

### How does mkFakeDerivation let Nix treat a plain string as a store path without using --impure?

It attaches store-path context to a string manually via builtins.appendContext, setting { path = true; } on the string, then wraps it in an attribute set shaped like a derivation (type, name, pname, version, outputs). This convinces the nix CLI to realise the path from cache without needing the impure builtins.storePath function, a trick originated by tomberek's fastpkgs project.

_Anyone digging into Nix internals like this can follow deep-dive explainers via daily.dev._

### Are old Nixpkgs binary cache paths from years ago still available on cache.nixos.org?

Yes, as of August 14 2026 a census found all 271,187 indexed package versions still alive in the cache, totaling 14.8 TB of unpacked software dating back to 2013. The NixOS binary cache has never been garbage collected since it is an S3 bucket that only grows, funded by the NixOS Foundation and its sponsors.

_Teams relying on long-term binary cache availability can keep tabs on Nix ecosystem changes via daily.dev._

## Similar posts on daily.dev

- [nixpkgs-multiverse: every version that ever existed](https://daily.dev/posts/nixpkgs-multiverse-every-version-that-ever-existed-iamzpa09p) · Farid Zakaria’s Blog · 0 upvotes · 0 comments
- [Changelog: Determinate Nix 3.21.7](https://daily.dev/posts/changelog-determinate-nix-3-21-7-spb0ixqhl) · Determinate Systems · 0 upvotes · 0 comments
- [Installing Every NixOS Package](https://daily.dev/posts/installing-every-nixos-package-lar2ojdt9) · Lobsters · 2 upvotes · 1 comments
- [Any Nix package, live in your browser](https://daily.dev/posts/any-nix-package-live-in-your-browser-w1ybvii2l) · Farid Zakaria’s Blog · 2 upvotes · 0 comments

---

Tags: [#open-source](https://daily.dev/tags/open-source)

[View this post on daily.dev](https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"nixpkgs-multiverse: fast mode","url":"https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa"},"datePublished":"2026-08-15T00:13:44.467Z","dateModified":"2026-09-14T08:57:07.329Z","description":"nixpkgs-multiverse adds a new 'fast' attribute that skips Nixpkgs evaluation entirely, letting you fetch a specific historical package version's store path...","image":"https://media.daily.dev/image/upload/s--qPvKM23u--/f_auto/v1722860399/public/Placeholder%2009","thumbnailUrl":"https://media.daily.dev/image/upload/s--qPvKM23u--/f_auto/v1722860399/public/Placeholder%2009","isAccessibleForFree":true,"articleSection":"Farid Zakaria’s Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Farid Zakaria’s Blog","logo":"https://media.daily.dev/image/upload/s--YqqvRt90--/f_auto/v1723789280/logos/fzakaria","url":"https://daily.dev/sources/fzakaria"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"open-source","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Farid Zakaria’s Blog","item":"https://daily.dev/sources/fzakaria"},{"@type":"ListItem","position":3,"name":"nixpkgs-multiverse: fast mode"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/nixpkgs-multiverse-fast-mode-0zq7ryvxa#faq","mainEntity":[{"@type":"Question","name":"How can I get a specific historical version of a package like python3 3.8.9 in Nix without evaluating the whole old Nixpkgs tree?","acceptedAnswer":{"@type":"Answer","text":"Use nixpkgs-multiverse's fast attribute, which resolves directly to the store path via nix build 'github:fzakaria/nixpkgs-multiverse#fast.versions.python3.\"3.8.9\".out'. This skips fetching and evaluating the ~378 MB historical Nixpkgs tree entirely and pulls the build straight from cache.nixos.org, requiring no experimental features or --impure flag. Developers chasing pinned dependency versions can track tooling like this through daily.dev."}},{"@type":"Question","name":"How does mkFakeDerivation let Nix treat a plain string as a store path without using --impure?","acceptedAnswer":{"@type":"Answer","text":"It attaches store-path context to a string manually via builtins.appendContext, setting { path = true; } on the string, then wraps it in an attribute set shaped like a derivation (type, name, pname, version, outputs). This convinces the nix CLI to realise the path from cache without needing the impure builtins.storePath function, a trick originated by tomberek's fastpkgs project. Anyone digging into Nix internals like this can follow deep-dive explainers via daily.dev."}},{"@type":"Question","name":"Are old Nixpkgs binary cache paths from years ago still available on cache.nixos.org?","acceptedAnswer":{"@type":"Answer","text":"Yes, as of August 14 2026 a census found all 271,187 indexed package versions still alive in the cache, totaling 14.8 TB of unpacked software dating back to 2013. The NixOS binary cache has never been garbage collected since it is an S3 bucket that only grows, funded by the NixOS Foundation and its sponsors. Teams relying on long-term binary cache availability can keep tabs on Nix ecosystem changes via daily.dev."}}]}
```

