The Nix sandbox is a hidden input
Nix, a system known for its "reproducibility," actually contains a hidden input that can subtly affect its output. The default Nix model is an extensional-model, where the output is derived from the recipe (derivation) that produced it, focusing on the input hashes rather than the output bytes. However, the sandbox-paths, which can alter the output, are not part of the derivation.
This hidden input comes from Nix's default sandbox paths, which can mount different files based on the Nix binary built. These paths are not explicitly mentioned in the derivation and can cause the same derivation to behave differently on different machines. This leads to potential hermeticity issues, where the same derivation produces different outputs on different systems, despite appearing byte-reproducible.
This vulnerability extends to Guix packages built via GuixPkgs, which relied on the absence of /bin/sh, causing unexpected behavior in OpenJDK builds. This hidden input underscores the importance of transparency and completeness in build recipes and highlights the risks of relying on hidden configurations that can lead to reproducibility breaking.
Written by urgent.news from Lobsters's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.