There’s no shortage of Linux distros, whether you’re looking for easy-to-use options or one that's super niche. Most people stick to popular options like Ubuntu or Linux Mint, but I decided to try something different and unique – NixOS. It is a distro that runs on the Nix package manager, and unlike other Linux systems, where packages are dumped into a shared folder, NixOS keeps every package in its own unique path. This means dependencies don’t clash with each other.
I've been using NixOS as my primary OS for about a month now. There are several reasons I prefer it over other Linux distros, but the most important ones include its declarative configuration, flexible customization, and the powerful Nix package manager. Whether or not you relate to these reasons depends entirely on your use case.
6 Ample documentation is available

I'll admit, NixOS is not for beginners, even though it does offer a user-friendly GUI. For instance, there's no graphical app store. You’ll need to install packages through the command line. That said, NixOS has a handy reference site at search.nixos.org, where you can look up any software and get the exact command to install it.
The community is another highlight. NixOS has an incredibly supportive presence on platforms like Reddit and Jupiter Broadcasting. Community-made guides and documentation have been invaluable in helping me understand NixOS’s unique approach.

Related
5 of the most unique Linux distros you need to try out
Spice up your Linux life with these fun yet highly-functional distributions
5 It has security built in
NixOS is convenient and secure
As I mentioned earlier, NixOS uses a declarative model (more on that later), which is not just convenient but also more secure. Your system state is defined in a configuration file, meaning stray changes cannot persist unless they're explicitly declared. Traditional distributions, by contrast, allow rogue scripts to modify files without much visibility, silently.
In NixOS, every package in the Nixpkgs repository is built in a sandboxed environment, isolated from the network and other processes. This ensures that no malicious build script can leak data or compromise your system.
NixOS also enforces certain restrictions on what apps can be installed, which helps reduce the overall attack surface. For instance, by default, the system doesn't allow non-free applications, nudging you toward open-source and more transparent alternatives.

Related
These 7 Linux myths you still believe simply aren't true
Linux is a completely different beast than it was a decade ago.
4 Rollback capability
Revert to any earlier system state
In most Linux distributions, upgrading a package typically replaces the old version with the new one, but NixOS works differently. Each package version is stored in its own unique directory, so when you upgrade a package, NixOS updates the symbolic links to point to the new version. The old version remains intact.
The OS also supports atomic system upgrades, which means updates are applied all at once or not at all. You can revert to any earlier system state, and NixOS even lists all old versions in the boot menu by default.
3 Updating apps is easy
Thanks to a declarative approach

Source: NixOS Foundation/Wikimedia Commons
Installing apps on NixOS isn’t exactly straightforward, but updating them is. Application updates are not tied to system updates, which means you can update a single app in your user environment without touching the rest of the system.
Tools like nix-env make it easy to manage packages at the user level, while system-level updates can be pinned to specific versions using snapshots of the Nix packages repository. User and system environments are kept separate, so updates in one do not interfere with the other. You can even pin your entire system configuration to a specific commit, such as one from a GitHub snapshot of nixpkgs.
2 Declarative Configuration
NixOS is a refreshing take on OS design
I’ve said this multiple times in this article, but it’s worth repeating that NixOS follows a declarative approach to system configuration.
Unlike traditional Linux distributions like Ubuntu or Fedora, where you manage your system imperatively by issuing commands one at a time, NixOS lets you define your entire system in a single configuration file. This file includes every package, service, and setting.
In a traditional setup, you might run commands like sudo apt install nginx or manually edit configuration files in /etc/. Over time, these ad-hoc changes accumulate, leading to what’s known as configuration drift.
Two systems that started out identical can slowly become different in subtle or even major ways. Replicating a setup becomes harder, and troubleshooting turns into a slow, frustrating process. NixOS avoids all that.
1 It’s the best OS for a home lab
You can make your home lab truly immutable
I self-host and maintain a home lab, and while it all sounds fun and games, keeping everything running smoothly becomes a challenge over time. However, NixOS has helped a lot in managing things and making the system immutable. It lets me rebuild servers identically across hardware, track every change, try new things without fear of breaking anything, and, most importantly, add and manage more nodes as the lab scales.
I use nixos-rebuild to build and apply changes. It evaluates your system configuration, builds a new system generation, and then activates it. NixOS has also made home lab management more predictable. Every system change now goes through configuration files. This results in well-documented updates with commit history, and helps avoid the usual problem where something works on one machine but not on another.

Related
5 reasons I can’t go back to Windows after trying Linux
As weird as it may sound, Linux has more game-changing QoL features than Windows
Linux is for everyone
While NixOS isn't for everyone, there’s likely a Linux distro out there that fits your specific use case. Just make sure to avoid these five distributions if you're just getting started. And while you're at it, check out some must-have productivity apps to install on Linux.