Revisiting NixOS A Journey from Debian + Docker

Back in 2019, I decided to give NixOS a try. As someone who had been using Debian with Docker for quite some time, I was curious to see what NixOS had to offer. At the time, I found it interesting but ultimately decided it wasn’t compelling enough to replace my existing setup. Recently, I revisited NixOS to see how it has evolved and whether it might now be a better fit for my needs.

First Impressions from 2019

When I first tried NixOS in 2019, I appreciated its unique approach to system configuration and package management. The idea of declaratively managing my entire system configuration was appealing. However, after spending some time with it, I realized that it wasn’t quite worth the switch from my reliable Debian + Docker setup. There were some rough edges, and I felt that the benefits didn’t outweigh the familiarity and stability of Debian for my use case.

Revisiting NixOS Today

Fast forward to today, I decided to give NixOS another shot. I was hopeful that the platform had matured and perhaps could offer a smoother experience this time around. Unfortunately, my initial experience was not as positive as I had hoped.

Performance Observations

The first thing that stood out to me was the performance. Compared to my Debian installation, NixOS felt slower. Simple tasks seemed to lag more, and the system didn’t feel as responsive. I expected some differences given the architectural and conceptual distinctions between NixOS and Debian, but I didn’t anticipate this noticeable performance drop.

Resource Usage

Alongside the slower performance, I observed higher CPU and power usage on NixOS. This was surprising, as I had expected it to be more lightweight or at least on par with Debian. I didn’t dig deeper into optimizing the system for efficiency, but it was clear that, “out of the box”, NixOS was consuming more resources than I was comfortable with.

Configuration Effort

One of the strengths of NixOS is its configuration management system. It allows for a declarative approach, where the entire system state can be defined in a configuration file. However, to achieve a system as optimized and efficient as my Debian setup, I realized that I would need to invest a significant amount of time into learning and fine-tuning NixOS’s configurations. This isn’t necessarily a downside for everyone, but for my needs, it felt like more effort than it was worth.

Final Thoughts

After revisiting NixOS, I’ve come to the conclusion that, while it has its merits and a unique approach to system configuration, it still doesn’t quite meet my needs.

NixOS has potential and certainly has a dedicated community that loves its flexibility and power. For users who are looking for a highly configurable and reproducible system, it might be worth the investment.

In the future, I may revisit NixOS again, especially if I hear about significant performance improvements or new features that align with my needs. For now, though, I’m happy with my current setup and the balance of stability and performance it provides.