3 ms·
So the thing here is docker provides the tooling to produce reproducible artifacts with graphs of content addressable inputs and outputs. nix provides the tool
by cpuguy83 3y ago
So the thing here is docker provides the tooling to produce reproducible artifacts with graphs of content addressable inputs and outputs.
nix provides the toolchain of reproducible artifacts... and then uses that toolchain to build a graph of content addressable inputs in order to produce a content addressable output.
So yes they are very different, but not in the way you are describing.
Using nix, just like using docker, cannot guarantee a reproducible output.
Reproducible outputs are dependent on inputs.
If your inputs change (and inputs can even be a build timestamp you inject into a binary) then so does your output.
- ok_dad 3y agoWith nix, you just have to be careful not to do anything non deterministic to get a deterministic build. With docker build, you have to specifically design a deterministic build yourself. It’s easier to just not use inputs that change than to design a new build that’s perfectly deterministic.