When I first installed NixOS, I’ll be honest — I didn’t think it would stick. I’ve used countless Linux distributions over the years — from Arch to Void, openSUSE, Fedora, and everything in between — but NixOS was a mystery that both fascinated and intimidated me.
Now, after using it as my daily driver for 54 days, I can confidently say that NixOS is unlike anything else in the Linux world. It challenges every convention you’ve learned about package management, configuration, and even system recovery.
In this article, I want to share the five things I genuinely love about NixOS so far — not from a hype perspective, but from the eyes of a long-time Linux user who once made fun of Nix users for worshipping a configuration file.

Let’s dive in, step by step, into what makes this distro so refreshing and thought-provoking.
1️⃣ It’s Just Different — And That’s a Good Thing
Let’s start with the most obvious point: NixOS doesn’t work like any other Linux distribution. And once you embrace that, it’s liberating.
Traditional Linux distributions rely on manual package management — you install software one by one, and your system evolves organically over time. But that also means it accumulates cruft, unused packages, and forgotten dependencies.
NixOS flips this concept completely.
🧩 Everything Comes From a Configuration File
In NixOS, your system is described in a single declarative configuration file (configuration.nix).
Here’s the key difference — instead of telling the system what to do right now, you tell it what it should look like, and Nix makes it happen.
So, if I open my configuration file, I can see exactly which applications I’ve installed, which services are enabled, and how my system is set up — all in one place.
That means:
- I know every program on my machine because I typed it myself.
- There are no surprise dependencies cluttering the system.
- Rebuilding or reinstalling NixOS doesn’t mean “starting over” — it means redeclaring your environment.
Let’s move to an example to illustrate this.
🧠 Example: Installing Applications Declaratively
Here’s a small snippet from a user configuration:
environment.systemPackages = with pkgs; [
firefox
gimp
vlc
libreoffice
libgcc
];
That’s it — those are the applications I want on my system.
NixOS takes care of everything else.
Compare that to running:
sudo apt install firefox gimp vlc libreoffice
on Ubuntu, where you’ll pull down hundreds of dependencies and likely forget what you’ve installed over time.
This difference might sound small, but once you get used to it, going back to “manual package hunting” feels messy and inefficient.
2️⃣ The Repository Is Massive (and Surprisingly Reliable)
Now, let’s talk about something every Linux user cares about — software availability.
When I switched to NixOS, I assumed the repository would be small and niche. I was wrong.
NixOS actually has one of the largest package collections in the Linux world, even bigger than the Arch User Repository (AUR) according to several sources. Whether or not that’s precisely true, the practical experience feels that way — everything I’ve searched for so far, I’ve found.
⚙️ Why the Nixpkgs Repository Stands Out
The NixOS package repository — called Nixpkgs — is unique in a few ways:
- Every package build is reproducible. You can rebuild the exact same environment months later.
- Packages are isolated, meaning installing or removing one doesn’t affect others.
- Updates are handled atomically — you can roll back to any previous state safely.
Need something obscure like Superfile (a rare file manager)?
Just add it to your configuration, rebuild, and it’s ready — no hunting through GitHub, no dependency nightmares.
This vast ecosystem feels like having the best of Arch’s AUR without the instability that often comes from user-built packages.
3️⃣ Verbose and Transparent Service Management
Let’s face it — systemd can feel like a black box. On most distros, you know it’s running, but you’re not always sure what it’s doing.
NixOS changes that dynamic entirely.
🧩 Services in the Configuration File
In NixOS, you can define system services directly in your configuration file, just like your packages. For example:
services.sshd.enable = true;
services.nginx.enable = true;
services.tailscale.enable = true;
That’s it — you declare what should run, and the system ensures those services start automatically every time you rebuild.
You can even define display managers and desktop environments the same way:
services.xserver.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
This approach has two huge benefits:
- You always know what services are running (no hidden surprises).
- You can reproduce your exact setup on another computer — instantly.
It’s a level of transparency and reproducibility that’s hard to achieve with traditional init systems.
4️⃣ Built-in Version Control with Git Integration
Here’s a feature that quietly becomes life-changing:
Every NixOS configuration is meant to live inside a Git repository.
That means your entire operating system setup — from packages to services to kernel tweaks — can be versioned, branched, and restored just like code.
🧠 Why This Matters
If something breaks after a configuration change, you can instantly roll back:
git revert HEAD~1
sudo nixos-rebuild switch
Boom — your old system state is restored.
For someone who’s been burned by botched upgrades and misconfigurations in other distros, this is gold.
You no longer fear updates because you can always undo them.
It’s not just about safety — it’s also about organization. Having your system backed up to a private GitHub or GitLab repo means you can clone it anywhere and get the same setup in minutes.
Imagine reinstalling your OS, running:
git clone https://github.com/yourusername/nixos-config.git
sudo nixos-rebuild switch
…and your entire environment — apps, wallpapers, network mounts — comes back exactly as before.
That’s not just efficiency — that’s engineering elegance.
5️⃣ Declarative File System & Mount Management
Now for something I initially hated about NixOS — managing drives and network shares declaratively.
If you’ve ever manually edited /etc/fstab, you know the old way: mount points, UUIDs, and lots of cryptic syntax.
NixOS lets you do the same thing inside your configuration file, but in a much more organized and reproducible way.
🧩 Example: Mounting Drives and NFS Shares
fileSystems."/mnt/data" = {
device = "/dev/disk/by-uuid/abcd1234";
fsType = "ext4";
options = [ "defaults" "nofail" ];
};
fileSystems."/mnt/server" = {
device = "192.168.1.100:/shared";
fsType = "nfs";
options = [ "auto" "nofail" ];
};
That’s cleaner, centralized, and version-controlled.
If you reinstall your system or migrate to a new machine, your drive and network mounts are instantly restored — no extra steps.
Initially, it felt strange moving away from manually editing fstab, but after seeing how neatly it fits into the declarative model, I’ve come to appreciate it deeply.
This approach also supports auto-mounting via AutoFS, firewall rules, and network share configurations — all from the same file.
So far, this has made managing my drives effortless.
🧩 Why Being “Different” Matters
If there’s a theme connecting all of these features, it’s intentional design.
NixOS isn’t trying to be “easy.” It’s trying to be predictable, reproducible, and rational.
At first, the learning curve feels steep. But once you get used to it, you realize how much time you wasted in the past manually fixing what NixOS can automate.
And unlike traditional Linux distros, reinstalling doesn’t mean rebuilding — it means redeclaring.
It’s a mindset shift from “What do I have installed?” to “What do I want my system to be?”
💬 Frequently Asked Questions
Q1: Is NixOS good for beginners?
Not exactly. NixOS assumes you’re comfortable reading and editing configuration files. However, if you’re a Linux user looking to grow, it’s an incredible learning experience.
Q2: Does NixOS use systemd?
Yes, NixOS still uses systemd by default, but it abstracts it through configuration modules, making it easier to manage and replicate.
Q3: Can I use Nix on other Linux distributions?
Absolutely. You can install the Nix package manager on Ubuntu, Fedora, Debian, and others to get some of its functionality without switching entirely.
Q4: What happens if an update breaks something?
You can roll back instantly — either through
nixos-rebuildor from the bootloader, which keeps multiple system generations.
Q5: Is it stable enough for daily use?
Yes. Despite being unique, NixOS is extremely stable when configured properly. Its reproducible builds mean updates rarely cause unexpected issues.
🧭 Final Thoughts
After nearly two months, my biggest takeaway is that NixOS changes the way you think about Linux.
It’s not just another distro — it’s a philosophy about computing. It values clarity over convenience, reproducibility over routine, and declarative control over reactive management.
Each of the five things I love — from its massive repository and Git integration to its configuration-driven design — contributes to a deeper sense of ownership over my system.
Yes, it’s different. Yes, it forces you to learn. But once you do, you’ll never want to go back to the chaos of traditional package management.
So far, so good — and I can’t wait to see what NixOS teaches me next as I continue this long-term experiment.
Disclaimer:
This article is based on personal experience after daily use of NixOS for nearly two months. Configuration examples and commands are for educational purposes. Always back up your existing configuration files before making major changes to your system.
Official Link:
🔗 https://nixos.org
Tags: NixOS, Linux, configuration.nix, Git, declarative system, Nix package manager, open source, reproducibility, systemd, Linux distributions
Hashtags: #NixOS #Linux #OpenSource #SystemRebuild #NixPkgs #DeclarativeOS #GitVersioning #LinuxCommunity #PackageManagement #TechInsights