Why I'm Ditching Nix Home Manager And What I'm Using Instead


Why I'm Ditching Nix Home Manager
And What I'm Using Instead

This issue is brought to you by:

Ready to Take Your Testing to the Next Level?


Don’t let complex testing slow you down! With Squish, you can automate your entire UI testing process across multiple platforms, ensuring both speed and accuracy. 

For the longest time, my dotfiles felt like a junk drawer: essential, but keeping them in order is a constant battle.

Like many developers, I've been through the evolution of dotfiles management systems, from a basic git repo to more sophisticated tools like Nix Home Manager.

But sometimes (or, more precisely - almost always), simpler is better (this should be a t shirt).

One British researcher noted on his post "Using GNU Stow to manage your dotfiles":

GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place.

This post was written back in 2012 (!) and was one of the resources, leading me to my stow flow 🎶.

This straightforward approach has stood the test of time, even as more complex solutions have emerged, like Nix Home Manager, and the popular open source Chezmoi. Each with its own set of features and functionalities, appealing to a slightly different audience.

Here's what I've learned

While Nix Home Manager offers powerful features like system reproducibility and declarative configuration, it comes with significant drawbacks.

Every configuration change requires a complete system resync. Now, mind you, if this would be a 100ms operation we wouldn't be here in the first place. But much like I recently discovered I can "burn" my keyboard's layout changes instantly without waiting like I'm used to with my Moonlander, having to wait long seconds for every simple dotfiles change can be frustrating, especially when testing out new plugins and setups.

Not only that, the tool takes ownership of your dotfiles, making them inaccessible to other processes without special permissions. For many developers, including myself, this creates more friction than function.

One example that drove me nuts was Neovim's Lazy inability to change its own lockfile due to home manager taking over it. I mean, a lockfile! Quite literally a dynamic file that's sole function is keeping up to date and being managed by its creator...

One sunny Satureday, with yet another wait for a neovim's config change, followed by a lockfile error blocked due to permissions, I've had enough. Home manager is out.

The solution?

Going back to basics with GNU Stow. It's lightweight, doesn't lock you into an ecosystem, and most importantly, keeps you in control of your files.

Setting it up is straightforward: create a .stowrc file pointing to your ~/.config directory, configure file ignores, and run a single command to manage your symlinks.

No constant resyncing, no permission issues, and no complexity overhead.

This experience has taught me that sometimes the most sophisticated solution isn't the best one.

While Nix Home Manager is powerful, the simplicity and flexibility of tools like Stow often prove more practical for day-to-day use. Your dotfiles should work for you, not the other way around.

One more tip

Do you have something in your setup that hinders your work instead of supporting it?
Maybe a file sync system of some sort, a home manager of your own, perhaps a plugin you're used to but is actually taking long seconds to load and if you're honest with yourself, isn't doing the best service. I suggest this set of questions:

  • Is it supporting my workflow?
  • Is it only here because I'm used to it?
  • Does its features outweigh its flaws?

In my scenario, it was no, yes, no. Leading me to an easy decision, and back to my flow, and I'm not looking back.

Thanks for reading!

See ya next week.

What Squish offers:

  • ✅ Increase test coverage and efficiency
  • ✅ Trusted by leading companies worldwide 
  • ✅ Full CI/CD compatibility for seamless integration
  • ✅ Free up your team's time for higher-value tasks

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

This Neovim "Plugin" Replaces 40 Others You know the feeling of finding a new improvement to your setup that you KNOW is going to change it completely? "Imagine living your entire life carrying heavy loads on your back dragging things through the road thinking: `well that's just how it is`" - Homo sapiens, before the invention of the wheel That's exactly what coding without mini.nvim feels like once you've experienced its power, especially if you're Neovim setup was closer to vanilla. Will...

This $600 Keyboard's Best Feature Is Also Its Biggest Flaw I always felt like my keyboard was missing something. First, it was the ergonomic split that my wrists craved. Then, when I got my Moonlander, it was the awkward reach for crucial keys (what's up with that thumb cluster ZSA?). Until one day, I stumbled upon a keyboard that seems similar, but is very much different: the Dygma Defy, a keyboard that promised to turn my thumbs into power users. The Defy arrived like a treasure chest....

THIS Is The Terminal For People Who Just Want Things To Work Picture this: You're watching a skilled developer, one that you value their skills, repeatedly hitting the up arrow key, hunting for that command they used yesterday. Then, another senior, pops up three different default terminal windows just to show you their process running, while sending requests from the other, instead of simply splitting their terminal screen. Sound familiar? That's the reality for the vast majority of terminal...