What's your favorite distro, and why?

Levi Pearson levipearson at gmail.com
Fri Dec 6 11:05:14 MST 2013

On Wed, Dec 4, 2013 at 11:56 PM, Dan Egli <ddavidegli at gmail.com> wrote:
> On December 3, 2013, Levi Pearson wrote:
>> If I was going to spend a bunch of time installing and learning a new
>> distro, I'd try out NixOS (http://nixos.org/) which has my favorite
>> concept of all the distributions. It treats package managment and
>> configuration as part of the same system,
> That sounds rather bizzare to me. But maybe I'm misunderstanding you on
> that. I'll look over the site a bit, but perhaps you can explain better how
> this package managment and configuration works combined?

I'm not sure why it seems bizarre to you. Most software requires
configuration of some sort, and some requires configuration at both
build- and run-time. If you want to be able to reproduce entire
systems, you need to capture all the inputs to the process of
producing a working system.

One of the core principles of NixOS is that the resulting system is a
pure function of the configuration input.  No matter what the current
state of your system is, if you change the configuration and switch to
the new configuration, your system will always end up in the new state
that corresponds to the new configuration. It also performs
configuration changes as an atomic transaction; your system never runs
in a partially-upgraded state; an update failure (such as a power
outage in the middle of an upgrade) will simply boot you to the last
good configuration.

Describing packaging and configuration together is hardly an uncommon
thing in today's world of virtual machines and cloud computing.
Vagrant, Docker, and probably a bunch of other systems I'm not aware
of are designed to build complete and usable system images from a
comprehensive configuration file.

If you like living on the edge but need to always be able to go back
to a known good configuration, managing your base OS that way is a
great idea as well.

> Out of curosity, if it's a distribution of Linux, why are they calling it
> something else (NixOS vs. Nix Linux)? Or, is it not so much Linux as a *NIX
> O/S? That's what I'd guess from the name, but I could be wrong.

Why do they call it CentOS instead of something else?  Why does anyone
pick the names they do?  A cursory glance at the NixOS page (or the
CentOS page, for that matter) will reveal that it's a GNU/Linux

The overall project isn't just about NixOS, though; it's about
declarative specification of systems. The Nix package management
system is not tied to the NixOS distribution. You can use it to
install packages (in its own private area) on any existing unixoid
operating system.

In addition to the package manager and the OS, they also have a system
to do distributed continuous builds called Hydra.  They use this on a
server farm to do continuous testing of NixOS builds.

There is also a similar declarative configuration system called Disnix
for distributed deployment of systems. This captures
inter-dependencies between services on different physical machines and
ensures that a distributed service has all the necessary components
and that they're started in the right order. Disnix can manage the
distributed services across heterogeneous platforms as well (some
components may run on Linux, some on OS X or BSD or even
Windows+cygwin). You can combine Disnix and NixOS to manage the whole
system configuration of the individual machines as well.

More information about the PLUG mailing list