Skip to content

Reasons to use NixOS

If you are considering switching to NixOS, you are in the right place. In this tutorial I will treat NixOS, the Nix package manager, and Nix language as closely related entities, since they are well and tightly integrated in practice. The Nix package manager can be used standalone but it is just one of the parts that overall make NixOS a great OS.

I would not recommend NixOS to someone without software development experience. While the configuration system is intuitive for programmers, it can seem daunting to newcomers.

If you already have a working configuration on another Linux distribution, there are two key points to consider:

  • You have already completed the hardest part: understanding what needs to be configured.
  • Translating your existing setup into NixOS may take significant time. I recommend starting from a Nix configuration that roughly matches your desired setup and modifying to your needs.

NixOS, like other high-quality productivity tools, has a “once you try it, you can’t go back” effect. Once you become accustomed to features such as Neovim, a minimal ergonomic keyboard, a tiling/scrolling window manager, or a modern programming language, returning back to ‘NORMAL’ and ‘INTUITIVE FOR MOST PEOPLE’ tools is just painful.

NixOS primarily uses two separate package channels, which allow it to serve two distinct user groups: those who prioritize stability above all else, and those who prefer access to the latest, cutting-edge features.

Stable channels (nixos-25.11) provide conservative updates for fixing bugs and security vulnerabilities, but do not receive major updates after initial release. New stable channels are released every six months.

Unstable channels (nixos-unstable, nixpkgs-unstable) correspond to the main development branch (unstable) of Nixpkgs, delivering the latest tested updates on a rolling basis.

Based on my nearly three years of daily use of NixOS on the unstable branch, the most common issue is that sometimes a package fails to compile. This problem only occurs on the unstable branch and can block the OS update process. If you prefer not to contribute to resolving the issue, it can usually be ignored temporarily; most failures are fixed within about a week.

As with any package manager, occasional regressions can occur. For example, I recently encountered an issue with SDDM completely not working. NixOS provides a straightforward way to handle these situations: you can rollback to a previous system generation. When a regression occurs, simply submit an issue to the package repository, rollback to the last working generation, and continue with your business as usual.

The NixOS wiki is an excellent learning resource that provides high quality information for most popular use-cases. Many Linux programs also include NixOS-specific instructions due to its popularity. You can always use information made for other distros, arch wiki is great for general Linux topics.

NixOS has the largest package repository in the world. If this wasn’t sufficient you can install flatpaks declaratively with Nix-flatpak or run standard Linux executables with the steam-run.

Installing any piece of software is straightforward. For example, you can set up KDE Plasma along with additional applications by copying a default configuration directly from the NixOS wiki.

services = {
desktopManager.plasma6.enable = true;
displayManager.sddm.enable = true;
displayManager.sddm.wayland.enable = true;
};
environment.systemPackages = with pkgs; [
# KDE Utilities
kdePackages.discover # Optional: Software center for Flatpaks/firmware updates
kdePackages.kcalc # Calculator
kdePackages.kcharselect # Character map
kdePackages.kclock # Clock app
kdePackages.kcolorchooser # Color picker
kdePackages.kolourpaint # Simple paint program
kdePackages.ksystemlog # System log viewer
kdePackages.sddm-kcm # SDDM configuration module
kdiff3 # File/directory comparison tool
# Hardware/System Utilities (Optional)
kdePackages.isoimagewriter # Write hybrid ISOs to USB
kdePackages.partitionmanager # Disk and partition management
hardinfo2 # System benchmarks and hardware info
wayland-utils # Wayland diagnostic tools
wl-clipboard # Wayland copy/paste support
vlc # Media player
];

Disabling it is as simple as commenting this out or not importing module with this configuration. Installing and customizing most of the software on NixOS is as easy as this. You can also use Home-Manager to manage all the dot-configs on all of your system reliably and declaratively.

This process is so fast that I can install NixOS form scratch using a live ISO on my desktop within 20 minutes. NixOS makes it so easy because I just need to clone my config from public GitHub repo(I don’t need to even log into anything) and rebuild my system. You can even do this remotely through ssh with

NixOS reduces the risk of a system becoming unusable by storing previous generations. If you encounter a fatal regression, you can simply rollback to an earlier generation. You can also use Btrfs to store system snapshots, as is recommended on other distributions. Personally, I find this unnecessary in NixOS due to its built-in rollback functionality.

My guide on installing my complete NixOS configuration with a single command is available here. This process is so fast that I can install NixOS from scratch using a live ISO on my desktop in approximately 20 minutes. NixOS simplifies this by allowing you to clone your configuration directly from a public GitHub repository(no login required)and rebuild the system. You can even perform this installation remotely via SSH using nixos-anywhere.