Hacker News new | ask | show | jobs
by dangirsh 4152 days ago
Both Guix and Nixos allow your system to be defined declaratively. This means that the details of reproducing your system state, given a declarative configuration, are fully handled by Guix/Nixos. So, if you like, you can consider the mapping between declarations and systems a pure function (i.e. you always get the same startup state for a given config). It's not hard to see how this could be valuable when deploying many servers (reproducability), getting out of dependency hell / failed upgrades (perfect rollbacks), bug reporting (just append the config that fully describes your system!), etc...

I've also found that the increasing entropy caused by stateful alternatives (e.g. apt-get) eventually becomes impossible to manage. This is entirely due to hidden state that grows in complexity over time. Eventually, things break in a way that nobody on StackOverflow has seen before, and you're SOL. In the declarative world, everything specific to your setup is required to be defined upfront, in one central place. This provides you with a much better chance of understanding your system as it evolves.

(Your account name makes me think you've appreciated functional programming data structures at some point. In not surprisingly, the benefits of immutability and declarative style in programming languages seem to carry over to configuration management.)