NixOS Migration

NixOS Migration

June 18, 2023
technical, linux, nixos

I recently decided to migrate to NixOS for my main laptop. I utilize a desktop with Windows (mainly for gaming), but the laptop I use more for development, learning and day-to-day usage.

I made the switch from:

  1. Windows 11 - for the vast majority of my laptops lifecycle.
  2. Manjaro
  3. ArchLinux
  4. (Now) NixOS

Each of the Distributions I thoroughly enjoyed.

Manjaro - My first venture into non-Debian-based distributions for full-time usage. I’ve used Fedora too, but only for temporary testing. I enjoyed Manjaro. There are definitely some valid concerns against it’s recommendation and usage (https://github.com/arindas/manjarno is one brief page of issues), but I think some of the issues are remediated/less prevelent, and some of the other points are probably not as much of an issue for the average user (Manjaro repository vs AUR for example).

ArchLinux - Not much to say on this one. I really enjoyed it. It felt satisfying to make changes on the system, and I felt I learned a ton just installing and configuring necessary components. I would have stuck with Arch if I had not discovered NixOS, and I may return one day.

Thoughts on NixOS #

I love it.

The declaration of packages and config is so useful. I always dreaded re-installation due to the reconfiguration required afterwards (I’m lazy). You have dotfiles which can control configuration via shell commands and hooks, but NixOS just feels so much more powerful and fluid by having it all integrated natively.

Roll-back and previous configurations - This is a fantastic feature, probably more for server usage, but hugely helpful for a desktop environment. You feel more confident making changes that could be more destructive in nature as you can always roll-back to a previous configuration simply by choosing it in your bootloader entries.

However, using NixOS does mean that making changes requires a new approach rather than just running a apt-get install or pacman -S (however I acknowledge you can use nix-shell -p <package> to perform a similar function). You’ll likely need to modify a package or program configuration, write a derivation to install custom packages, or write shell scripts in a “non-traditional” way.

Overall I am impressed. I’m new to the Distribution, but I’m keen to keep using it and exploring the options available.