Environment containers in GNU Guix
lists.gnu.org
lists.gnu.org
There's even support coming in Nix for building standard layered Docker containers in a fully deterministic way: https://github.com/NixOS/nixpkgs/pull/11156
The deterministic properties of Guix and NixOS allow some amazing things. I personally prefer Nix as it has a more complete and mature ecosystem, but everyone should check out both projects though.
As a lover of Scheme, that's a big win for me. I really don't want to have to learn a special-purpose language just for package management.
The laziness allows for some really cool and clean patterns that work intuitively and simply while still enabling powerful features. Also the syntax is tuned for clean hierarchical config files. And in some cases being pure helps you not shoot yourself in the foot with determinism.
I still would probably prefer Guile, but Nix is nice enough.
Mainly I just like the much larger ecosystem Nix/NixOS has. I can forsee myself being productive with NixOS as a desktop OS, not so much for GuixSD.
I think of it this way: one new somewhat-fancy config language to learn is much better than the 100 simple config languages you learn to tweak Arch Linux.
This is in addition to whole-system containers: http://www.gnu.org/software/guix/manual/html_node/Invoking-g... .
Sometimes you actually need or want something to be done before something else, though. I'm wondering how Guix deals with that, or if it's capable of dealing with that.
I've been bitten many times by Puppet's default lack of order in its declarative manifests. What was vaunted to be an advantage turned out to be a curse when you actually do want/need them to be in order.
I hope Guix does a better job at this than Puppet.
Nix and Guix use special file structures to make sure everything is isolated so no build can affect another, unless there is a depedency, in which case one will be built before the other.
It is this powerful isolated file structure that allows NixOS and GuixSD to deliver on the promise of deterministic system set up in a way Puppet and Chef will never be able to. It works incredibly well.
Tears of joy stream down my face.