On the OS side, dmd is also pretty damn cool. The whole system feels kind of polished and reminded me much of current *BSD systems, including a decent texinfo manual on the first boot. With the difference that you get a working framebuffer through linux on startup.
While NixOS is kind of an academical experiment, I think Guix really has the potential to become the only true GNU system. It still lacks stability and has some rough edges of course. Maybe Guix will also help merging the Emacs and GNU operating systems to create a single, tightly integrated Lisp OS ;) There is already an Emacs interface for Guix.
The ideas behind Nix/Guix are really interesting and a major improvement from traditional packagement solutions, and personally I much prefer using Scheme than a Haskell-derived DSL to configure my environment and operating system.
The problem is a political one: NixOS ships with current Linux standard technologies such as systemd, while this Guix-based OS uses this GNU dmd project I've never heard of until now, but I have no doubts its features and maturity is a fraction of systemd's (whatever is your opinion on systemd).
All for the sake of the free software radicalism. I love GNU and FSF and everything, but as a Linux user and administrator I'd really like we settle on something and build from there.
I may be mistaken, and open to criticism.
As for maturity, you are mistaken. GNU dmd was first started around 2003, before even launchd existed.
As a comparison, the Hurd project started in 1990, Ubuntu in 2004. Which one is more mature? That is, which one would you use in a production environment?
"Seriously, when was the last time you heard someone arguing whether it's dmd or DMD, or the same for any other init system other than SystemD? The reason SystemD fags complain is because they want people to respect their brand image - they're in the marketing business. Nobody else gives a shit."
You, uh, wow.
Aforementioned discorteous post from reddit user would really be understandable coming from a GNU enthusiast if caustic in form.
However, I'm curious about containers. For example systemd-nspawn seems like a simple way to achieve many of the functionality NixOS brings into the table.
I'm not aware of a way to do that in Nix, but I think it's more a consequence that the convention is to call
stdenv.mkDerivation { descriptor }
(where the descriptor includes things like the upstream url, version, etc.)without providing a direct handle to the descriptor (which one might inherit and modify just the upstream url, for example).
(In practice, I find it an order of magnitude easier to create custom packages in Nix compared to .deb.)
To do this with any derivation in in nixpkgs, call pkgs.lib.overrideDerivation on it, passing the relevant new attributes. This'll inherit the old attributes, only modifying the ones you supply. This is described in the manual: http://nixos.org/nixos/manual/#sec-customising-packages