🧠 5 Things I’ve Come to Love About NixOS (After 2 Months of Daily Use)

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.

🧠 5 Things I’ve Come to Love About NixOS (After 2 Months of Daily Use)

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:

  1. You always know what services are running (no hidden surprises).
  2. 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-rebuild or 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

Visited 51 times, 1 visit(s) today

Arjun Nair

Arjun Nair

Arjun is a seasoned Linux enthusiast and open-source contributor. He has worked with multiple distributions including Debian, Fedora, and Arch-based systems, and regularly tests new desktop environments and community projects. With over a decade in IT system administration, Arjun brings practical, hands-on insights to Linux tutorials and reviews.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.