In view of some replies downthread: yes, application-level management is entirely possible with Nix(OS).<p>Currently, this works best for Haskell, for which there is a sizeable amount (relatively speaking) of Nix tooling available. This is largely because a lot of Nix(OS) users also use Haskell, perhaps because lend themselves to very similar modes of "declarative" thinking.<p>This is a thorough, excellent guide on how to develop Haskell projects with Nix, including managing non-Haskell dependencies (zlib, SDL, ncurses, and so on):<p><a href="https://github.com/Gabriel439/haskell-nix/" rel="nofollow">https://github.com/Gabriel439/haskell-nix/</a><p>I only started using NixOS about a month ago, and it's fantastic. The best part is that binary caches are available for almost everything, so the hitherto-painful step where one compiles Haskell dependencies locally has been completely eliminated. The best way I can describe how I work now is "Python virtualenvs, but for everything at once and just so much better".<p>PS. Gabriel Gonzalez is, in general, someone who makes great documenation. Check out the tutorial for his stream-processing library Pipes: the ASCII art alone is awesome :)<p><a href="https://hackage.haskell.org/package/pipes-4.3.4/docs/Pipes-Tutorial.html" rel="nofollow">https://hackage.haskell.org/package/pipes-4.3.4/docs/Pipes-T...</a>
Other than integration with the rest of the Nix/NixOS ecosystem, how is NixOps different from Puppet?<p>Reading briefly through the examples, it seems very oriented towards provisioning machine instances rather than provisioning behavior across networks or multi-machine services, which is something that Puppet really excels at. What features does this offer in addition to ones that Puppet provides?<p>That said, I've been getting tired of Puppet recently for some unrelated reasons, so I'll definitely give this a try.
Is there good explanation anywhere of the syntax of those files? I tried getting into nix multiple times and was always put off by the lack of understandability of this.
NixOS makes a great OS for personal/workstation use, too.<p>With NixOS, my system is <i>always</i> 100% clean, and <i>never</i> broken.<p>I can install packages in my home directory without root.<p>Best of all, whenever I want to write any code, I can use nix-shell to make the toolchain and dependencies <i>temporarily</i> available to a self-contained shell. No more cluttering my system with libfoobar-dev for a quick build, and forgetting why.
Seems neat, better than Terraform, although limited to just nix and a few providers. Hopefully that will grow. I've been working on a provisioning tool myself. Provisioning is hard, and supporting multiple APIs can be really difficult.