"NixOS: The hype is real!"

NixOS is a Linux distribution that has its own package manager and with it, its own programming language. The entire system configuration is in one configuration file. You edit the configuration file, and the system adds and removes apps all by itself. You can copy the file to another computer and replicate the entire system from just that configuration file.

It does this with a human-readable file and "functional" package manger that handles packages in a fully isolated manner. It has the largest repository of any Linux with over 80,000 packages. Packages declare exactly which versions of dependencies they use, and the Nix package manager will guarantee the different versions will be isolated.

Updates are atomic, meaning the updates are done entirely or not at all. The old system is kept and you can always switch back to it. NixOS never breaks because you can always roll back to a working system.

NixOS doesn't sacrifice performance and makes all the Linux desktop environments available.

That's what's in the video. Now my own commentary. NixOS has been around for 20 years, but it may just now be reaching the "critical mass" of functionality and users for it to break out. I suspect it may break out slowly. Like the people in the Jupiter Broadcasting podcast (link below) say, maybe it 10 years most Linux users will be using NixOS, but the transition will probably be gradual. I'm going to try it out.

I put the word "functional" in quotes above on purpose. In regular english, "functional" just means something works as intended. But in computer science, the word "functional" has a very particular meaning. Think "math functions" like you learned in calculus class. In computer science, a functional programming language is a language where functions are treated as deterministic mathematical functions, which take an input and compute an output, and crucially, produce so "side effects" altering data outside the output data. In regular "imperative" languages, the language executes a series of statements which update the program's state.

Nix applies this "functional" concept to package management. They've made a "purely functional package manager." This means that it treats packages like values in a purely functional programming language, "pure" meaning it forbids all side effects. Packages, once installed, never change after they have been built. If a different version of a package is needed, it gets built and lives alongside the first one, and likewise can never change. Cryptographic hashes are used to differentiate the versions. All these packages are stored in the "Nix store".

The Nix build process ensures package dependency specifications are complete. The build process can only find resources that have been declared explicitly as dependencies, so if any are missing, the build will fail.

It's definitely a different philosophy from traditional Linux. And may have some pitfalls for those used to regular Linux (see below).

NixOS : The hype is real ! Everything you need to know (new!) - Linux Tex

#solidstatelife #linux #distros #nixos