Still a Distro Hopper: NixOS to Silverblue

codenomad
7 min readDec 2, 2023

--

I loved the idea of NixOS where I could declare my entire setup once, and never have to worry about reinstalls because it would literally take me 10 minutes to get a freshly-baked, new-electronic-smell OS with all my configurations and oddities the way I like them (yes, I still use “Unnatural” scrolling with my trackpad, gasp… and no, I don’t want fprintd enabled when the laptop lid is closed…). I could also distribute the same config to any other computer at my disposal knowing it will result in the same experience. It was like having the benefits of dockerfiles and ansible baked into my installation process.

But… I guess I hit a point where I just wanted a setup to work for development, media creation, and general computing… more easily. In an age of iOS and Android, I didn’t want to have to think about how to install an application or get a service running. I know I’ve got some OCD tendencies, and I’ve found that to learn something new I need to treat my workstation as a tool. I didn’t need it to be a never-ending pool of distractions. I needed my OS to be a tad more opinionated at the expense of control.

I felt it was time for a mixup. This surprised me because I thought my distro hopping days were over when I found Nix… Whenever I get this itch, however, I immediately start a backup in prep for the inevitable disruption. This gave me some time to think.

Nostalgically, I remembered my path… For Gentoo, I ultimately decided spending 2 days to emerge world with -O3 wasn’t a good use of computer resources when I had CS assignments due — though it helped with java performance! From there I hopped to Debian where stability was at odds with ancient versions of everything. Ubuntu was the new kid on the block at that time and fixed the version issues with Debian but had stability issues. I moved on to Slackware, then on to Arch, and then onto a few Arch-based distros like Manjaro and Antergos. Arch stuck for a while and became my go-to install for all machines until I hopped to Nix.

The Journey

Sadly, my honeymoon with NixOS was over, it lasted right up until I wanted to learn rust. After many failed attempts trying to get my flake.nix files working, I got frustrated and shelved the adventure for a month. I came back refreshed, and fell into the same trap, though a little better off having done a deep dive into home manager. But alas, no go.

Recently, I gave it another shot and after getting a very basic gtk-rs HelloWorld app up and running I ran into environment issues around additional tooling. I wanted to install Cambalache to start getting familiar with the GNOME UI development. Unfortunately, the Libadwaita widgets I wanted to use (from tutorials) weren’t in the version of Cambalache available in NixOS stable/unstable. I wanted bleeding edge and that required me to build an overlay. It’s not that hard to build an overlay, but I was tired of the process. Final straw met camel’s back when I installed the flatpak for Cambalache and it had what I needed. Which got me thinking…

I didn’t want to create flakes for new projects, I didn’t want to do the documentation binge, source code plunge, or ask on forums to figure something out any more.

While I love NixOS, I felt every time I tried to start learning something new it was a yak shaving event.

It wasn’t for naught, the declarative nature of Nix meant if my config solved a problem it solved it for good. The experience was enlightening, and I learned something about myself in the process. I’m not a Nix magician and I didn’t want to have to become one to function efficiently inside my OS. Nix gave me the power, I just didn’t want to fully wield it. Nor did I want to take the time to start using mynixos. It’s not Nix’s fault, it’s mine.

I just wanted to be able to use some random tutorial online and figure out a new language/service/utility without having to tinker with my environment.

Being pragmatic, I know documentation isn’t always the greatest, and you typically need to scour the web for other projects to get examples of how things work or for a better way to do things. That’s the investment I’m willing to make for tinkering because researching is a great way to learn by forcing experimentation… For me, using Nix added another research layer — an additional cognitive load — before I began a project. I found myself not wanting to learn rust/gtk-rs because I couldn’t escape doing another deep dive refresher in Nix.

What next?

It was about 7pm on a Monday night when the deflation started to set in: I’m not the OS tinkerer I thought I was and NixOS might not be for me.

If only my brain worked like a multi staged Dockerfile…

I could do away with my home-manager setup and move to flatpaks for everything in my user environment, but that didn’t quite resolve my core issues and it felt heretical in Nix. Regardless, a flatpak move would still be disruptive to my whole setup so why not try something new. I guess I’m a masochistic, distro purest. When I find myself gravitating away from a distro’s philosophy I almost instantly favor switching. So now I find myself back to distro hopping.

Is distro hopping considered tinkering in 2023? Are there levels of tinkerer now? I rolled a D18 and got a 4...

My immediate thought was that I could go back to Arch, but damnit I loved the immutability and rollback capabilities that NixOS gave me. In addition, the journey trained me to be a better administrator of my system so I wanted some separation between user and host. Abstracting the host system from a user environment meant a level up in security. Putting some effort into understanding that separation reinforced what I was willing to deal with on my personal box.

On the technology side, the nix store guaranteed me getting versions of applications just as its author/build-bot intended. Additionally, I could easily rollback updates that broke my system when I decided to mess with the kernel. Cleanup guaranteed a true cleanup, but it also required removing the cache of dangling libraries after a few weeks to reclaim space (Nix can be space hungry if you don’t optimize your store).

By 8pm, a backup of my home directory was complete, and I at least knew an OS with immutability was a core requirement for my next puddle jump.

By 9pm, I decided on my distro dealbreakers:

  • Must support Full Disk Encryption
  • Must be immutable (Bonus points for Out-of-box Secure Boot Support)
  • Must have rollback
  • Must be easy for a family member to install apps (aka flatpak)
  • Must not be a PITA to make a host wide change

I limited myself to 4 browser tabs: Endless OS, VanillaOS, Blend OS, and Fedora Silverblue and downloaded ISOs for each.

Dear distro’s that don’t have front and center download links or torrents… Don’t you know I’m re-evaluating a part of my life by choosing a different OS? Don’t you want me to love you by showing me the path? Don’t you want me to be able to contribute?? If I’m here don’t you know I’m going through something???

Yes I’m sad, I thought I was done distro hopping… sniffle…

Anyhow… BlendOS was out because it didn’t look like it supported full disk encryption via the installer (at the time of this writing). A distro based on Ubuntu didn’t intrigue me much, and I hadn’t touched anything based on Fedora/Redhat in a while. I’m wondering if I’m just addicted to distro hopping…

9:05p — I decided on Silverblue. I was okay with reboots for host level changes and I was okay with the duplication of libraries across flatpaks. I wasn’t thrilled moving to a system that didn’t allow me to audit applications’ dependent libraries (re. flatpaks), but I also don’t remember that issue directly impacting me on my personal workstation. If this were a production system I might feel differently… We’ll see how this goes…

Takeaway: Once a distro hopper always a distro hopper

NixOS is a fantastic declarative OS and I will continue using it for my infrastructure. Who can beat a one time config that allows me to quickly re-image a broken or upgraded server and be back up and running in less than a half-an-hour? It’s slick. Unfortunately, I don’t feel like it is the right tool for my personal workstation.

My Nix adventure offered me some insights on what I would like out of a distro in 2023. I want more of an appliance-like distro (think iOS or Android) with super powers. Time will tell what type of super powers I require… On to the next OS.

Fedora Silverblue is batter up and Blend OS is ondeck until they get FDE going.

--

--

codenomad

I'm a code nomad. I'm traveling, coding, sharing, and helping whenever I can.