October 31, 2025
Schrödinger’s Ruby, now with drama
Nix Derivation Madness
Ruby is real, its recipe isn’t — Nix users meltdown
TLDR: A Nix user found Ruby installed but the ‘deriver’ recipe in the cache didn’t match what was on their machine, thanks to fixed-output quirks. Comments split between calling the deriver field a mistake, pushing future content-addressed fixes, and yelling to rewrite Nix entirely.
Ruby shows up, but its “recipe” vanishes? That’s the chaos Farid bumped into with Nix, the brainy package system. He installed Ruby, checked the cache, and discovered two different "derivations" (think: build instructions) pointing to the same Ruby — one missing locally, one present but different. Cue the comments, cue the popcorn.
The crowd quickly split into camps. beardsciences waved a hopeful flag: content‑addressed derivations (aka Ca‑derivations) are coming and should make this “ghost recipe” a normal, explainable thing — not a bug (wiki). Then edolstra (the Nix creator!) dropped a mic: the deriver field was “always a misfeature,” a source of confusion that never truly provided traceability. Translation: the label is lying and everyone’s been gaslit by metadata.
Meanwhile, ronef backed the diagnosis: fixed‑output derivations (recipes where the output path depends only on the content) can change their recipe without changing the final path — so you get Schrödinger’s Ruby, same result, different paperwork. eviks turned it into a naming rant: why are the file names so ugly; can’t we start with "ruby-3.3.9" so lists are readable? And amelius went nuclear: “Nix was a great research project. Time to rewrite it from the ground up.” The memes flowed: “The deriver is a deriver of drama,” “dragons ahead,” and “my package manager gaslit me.”
Key Points
- •The Ruby 3.3.9 binary is present in the Nix store, but the recorded .drv path is invalid locally.
- •Attempts to realize the missing .drv from the NixOS cache fail, indicating it cannot be built.
- •Local SQLite DB and cache narinfo both record the same Deriver .drv for the Ruby output.
- •A different local .drv exists that produces the same Ruby output path, showing a mismatch.
- •A fixed-output derivation example demonstrates that identical output paths can arise despite differing .drv files.