Nix's Substituter List Is Not a Routing Table
Nix's substituter model is designed to streamline the process of fetching dependencies but has limitations in its current form. The system lacks the ability to prioritize requests based on latency or cache availability, leading to inefficiencies. A new tool, ncro, aims to optimize this process by introducing parallel requests and caching mechanisms.
- ▪Nix's substituter list functions as a preference rather than a routing table, leading to potential delays in fetching dependencies.
- ▪The ncro tool acts as an HTTP proxy that improves the efficiency of Nix's substituter logic by racing requests in parallel.
- ▪Ncros's architecture allows it to remember which cache responded first, reducing the need for repeated lookups.
Opening excerpt (first ~120 words) tap to expand
#Nix's Substituter List Is Not a Routing Table Published May 24, 2026 14 min read Source softwareprogrammingnix Table of Contents The Shape of the Problem ncro, Briefly What’s Actually In It What I Did Not Build Was It Worth Writing? Footnotes Nix’s substituter model is one of those designs that is almost right, but isn’t exactly there. It is simple in itself: you list a few binary caches in nix.conf, the daemon walks them in order, and if the path you want is anywhere on the internet a build doesn’t have to happen on your laptop. The binary cache is often listed as a strength of NixOS , but it’s actually a strength of Nix and a bare minimum for something like NixOS to work for users.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at NotAShelf.