El modelo de Nix se basa en derivaciones que deberían describir de forma completa el proceso de construcción y garantizar así la repetibilidad de los builds. Sin embargo, la opción sandbox-paths, configurable mediante --option, añade al sandbox rutas del sistema de archivos que la derivación no declara y que, aun así, influyen en el resultado.
El artículo demuestra el problema con una derivación mínima que busca el archivo /truth: si existe, imprime su contenido; si no, asume que 2 + 2 = 4. Al montar /truth desde fuera mediante extra-sandbox-paths, el mismo hash de derivación produce la salida 2 + 2 = 5, sin que el .drv registre el cambio. El valor por defecto de sandbox-paths depende de cómo se compiló el binario de Nix, ya que sandbox-shell se enlaza en tiempo de compilación; dos usuarios con la misma versión pueden tener sandboxes distintos, lo que rompe la compartición de cachés de binarios.
El autor ilustra el impacto real al construir OpenJDK con source bootstrapping: el daemon de Guix carece de /bin/sh porque Guix se bifurcó de Nix antes de introducir esta opción, mientras que el daemon de Nix, basado en Nixpkgs, usa BusyBox. Esa diferencia silenciosa hizo que un script fallara de forma distinta y contaminara una caché binaria ya publicada. El texto concluye que la propiedad que permite compartir builds es la misma que permite envenenarlos.
