NixOS is a Linux distribution based on the Nix package system. Nix is built around the concept of immutability.
It makes all packages immutable by giving them their own directory identified by a hash that is derived from ALL of that package’s dependencies. This has some advantages:
- It makes it easy to have multiple versions of the same package installed simultaneously, and be able to switch between them. It further enhance reproducibility by using a flake.lock version lock file, which records the data source addresses, hash values, and other relevant information for all dependencies.
- Non-privileged users can install software completely securely.
- With just a few configuration changes, various components of the system can be easily replaced.
- Modifications are safe and switching between different desktop environments (such as GNOME, KDE, i3, and sway) is straightforward, with minimal pitfalls.
- Projects packaged with Nix have build reproducibility because Nix copes with all dependencies including system libraries. The distro uses declarative configuration to manage the entire system environment. These configurations can be managed directly with Git, allowing the system to be restored to any historical state as long as the configuration files are preserved
- Easy to rollback a system after a botched upgrade. NixOS even includes all old versions in the boot options by default, ensuring the ability to easily revert changes.
Nix is a purely functional package manager. This means that it treats packages like values in purely functional programming languages such as Haskell.
Working state: | Active |
Desktop: | GNOME, KDE Plasma, Xfce, Pantheon, Cinnamon, MATE, Enlightenment, LXQt, Budgie, Deepin, or no desktop |
Init Software: | systemd |
Package Management: | Nix |
Release Model: | Fixed |
Platforms: | i686, x86-64, AArch64 |
Home Page: | nixos.org |
Developer: | NixOS Foundation |
This article is part of our Big List of Active Linux Distros which is currently under development. |
What's a Linux distribution ("distro")? |
A distro provides the user with a desktop environment, preloaded applications, and ways to update and maintain the system. Each distro makes different choices, deciding which open source projects to install and provides custom written programs. They can have different philosophies. Some distros are intended for desktop computers, some for servers without a graphical interface, and others for special uses. Because Linux is an open source operating system, combinations of software vary between Linux distros. |