Published 1 minute ago
Abhishek is an author at XDA who covers computing.
He has loved computers since he got the Lenovo G570 in 2012. Abhishek holds a master’s degree in computer applications and began his writing career in 2018. He loves writing how-to articles, listicles, and informational posts on popular operating systems and web services.
He closely follows the Windows Insider program and tests new Insider builds to discover upcoming experimental features and upgrades. His past work includes long-term collaborations with reputed publications like Tom’s Hardware, and Windows Latest.
When not writing anything, he is busy watching new episodes of One Piece or searching for …
Published 1 minute ago
Abhishek is an author at XDA who covers computing.
He has loved computers since he got the Lenovo G570 in 2012. Abhishek holds a master’s degree in computer applications and began his writing career in 2018. He loves writing how-to articles, listicles, and informational posts on popular operating systems and web services.
He closely follows the Windows Insider program and tests new Insider builds to discover upcoming experimental features and upgrades. His past work includes long-term collaborations with reputed publications like Tom’s Hardware, and Windows Latest.
When not writing anything, he is busy watching new episodes of One Piece or searching for something binge-worthy.
Linux is a different operating system experience for many, and switching to it can be intimidating. Distros like Ubuntu have done a great job of simplifying the user’s experience and focusing on graphical ways of doing things. Windows users aren’t accustomed to CLI package management, and there’s a learning curve to understanding it. I’m quite familiar with Linux, but some distros can truly test your patience. NixOS literally reworked my brain as I had to kind of relearn and adapt to the way it does things.
NixOS’s declarative approach is not everyone’s cup of tea, and installing packages will make your head spin at first. But as I grew more accustomed to the OS, I really couldn’t look back. Let’s discuss how this new approach Linux distro fared in my experience and whether it’s worth your time or not.
Related
I tried multiple Linux distros on WSL - these are the best 5
Ever wanted to run Linux apps without resorting to dual-booting or VMs? These neat WSL distributions can help you out!
Installing NixOS on a PC
It’s the easy part
Installing a Linux distribution isn’t a troublesome task. All you need is a bootable USB drive made with the ISO image file of the distro. You can easily make one with Ventoy or Balena Etcher, but I prefer the former. NixOS’s latest version 25.11 offers two choices, GNOME or KDE Plasma, and I went with the latter because Plasma looks very good in my opinion.
Then begins a series of option selection, disk wiping, and user creation, all of which take a while to install NixOS on the system. One thing that I appreciate about NixOS is offering the option to pick a desktop environment. Even though you choose a GNOME or Plasma version, you can still select another desktop environment during the installation.
For example, if you prefer Xfce, which is a lightweight desktop environment, you can tell NixOS to include it during installation. You’ll also encounter an “Allow unfree software” option, and you must enable it to install third-party, non-open-source apps like VS Code or Chrome. After a quick reboot, you’ll boot to the desktop. Sadly, this is where the NixOS simplicity ends.
The declarative approach is a bit infuriating
But it makes the job easy
NixOS uses a declarative approach, and mind you, I didn’t understand a thing when I first heard about it. Simply put, you define your configuration needs in a file once, and then it’s applied system-wide. Configuration needs can be anything from how your system handles external USB devices to networks, files, users, or apps.
Having a single file eliminates the need to run around the system or play with commands for enabling or toggling each feature. Instead, having a single file gives you full access to control all the essential settings. I can even define how the system handles updates and garbage collection from here.
Yeah, so what? I declare a bunch of things, and the system remembers them. Well, it doesn’t do that automatically. You have to use a nixos-rebuild switch command to apply the changes you mentioned in the configuration file. Doing so creates a “generation” that is another confusing word, but is a lifesaver.
Ever had to reinstall the OS because you hastily added or modified something, making it unbootable? I’ve done it plenty of times, and NixOS’s generation saves me from further accidents. Think of it like a system image or a restore point (if you use Windows) that contains all the files, settings, OS, or app changes until that time.
If I break the system, I can use the Boot menu to pick any old configuration and switch to it. It makes rolling back a bad system state change super convenient. Another advantage of the configuration file is that it can help you recreate a similar OS installation on another system.
I tried it with another GNOME installation of NixOS and swapped the configuration file after the installation with the one from my Plasma system. The file manager won’t let you do any of it, so I used sudo and the terminal tool to remove and replace the configuration file. After a quick sudo nixos-rebuild switch command, NixOS rebuilt the new system exactly like my old one, with all the apps and settings.
All I needed was the configuration file, and that’s it. I don’t need to worry about GRUB problems or anything else because I get to do it after the OS installation completes. However, the method of installing an application really forced me to learn my way around NixOS.
Unorthodox package management
It takes a while to grasp
NixOS has a huge library of packages listed on the website. Sadly, you have to open the browser window to find the package name. You can also search for it using the nixos-env command, but I’m not a fan of it. The **env **command installs the package for the current user, but if you add the package name to the configuration file, you can make it available system-wide.
I appreciate the fact that NixOS mentions commands for each package in all three modes on its website. Also, the idea of simply adding the correct name to the configuration file or multiple app names and installing them in one go is an underappreciated feature. Even finding what apps you’ve installed becomes convenient this way.
You’ll also find multiple versions for each package, which brings another interesting concept. NixOS lets you try the package temporarily before permanently installing it on your system with the nix-shell command. It stays there until you reboot the system, and it’s something that other distros can adopt.
I would always prefer running something simple like the apt command to install something rather than doing it the NixOS way, because it becomes challenging sometimes. There will be times when you need to specify arguments or plugins that need to be included with the app you need.
You can do so in the configuration file, and might have to add them as services. The isolated approach of maintaining packages like Docker is a good thing, but it comes at the cost of my peace.
It’s a mixed bag
NixOS is not for beginners at all if you’re thinking of switching to it. I wish it were, but you need to invest quite a bit of time to become comfortable with it. Once you do that, the comfort of the declarative approach won’t let you go back. The huge package repository is another bonus for picking it, but be prepared to face errors and fix them on your own.
NixOS
A different Linux distro with a declarative approach and a unique package management system.