Nope, nix doesn’t ensure or require that the builds are deterministic. It’s not any better in that regard than other package managers.
Nope, nix doesn’t ensure or require that the builds are deterministic. It’s not any better in that regard than other package managers.
It’s not really fully reproducible either.
The way you can think of it is that in OCaml everything is implicitly wrapped in an IO monad. In Haskell the IO monad is explicit, so if a function returns something in IO you know it can perform input and output, in OCaml there is no way to tell just from the types. That means that in Haskell the code naturally stratifies into a part that does input and output and a pure core. In OCaml you can do the same thing, however it needs to be a conscious design decision.
The implementations mostly don’t matter. The only thing that you need to get right are the interfaces.
You can use libvirt. It’s not exactly declarative but you can automate it.
Some people consider working on programming languages fun, so they create new ones.
deleted by creator
A package is reproducible if you use the same inputs, run the build, and get the same outputs.
The issue is that the build can produce different outputs given the same inputs. So you need to modify the build or patch the outputs. This is something that is being worked on by most distributions: https://reproducible-builds.org/who/projects/
NixOS is not special in that regard nor are all NixOS packages reproducible.