It was a rainy weekend, and after brewing a mugfull of coffee I sat comfortably and opened my laptop that I powered off yesterday after running an sudo pacman -Syuu yesterday to keep my Arch up to date. I like keeping things nice and up-to-date you know. The first red flags came when my fingerprint recognition wasn’t working when I tried to log in – but that’s fine, I can fix that later, not a biggie. Then the bluetooth was not seeing any devices; after 20 minutes of twiggling, reinstalling, restarting services, it did ultimately find, but didn’t cast audio through that. That’s ok, we’ve been there before, right? Wait why does my dGPU not turn on? Ok, let’s try reinstalling the drivers and cleaning some of processes, restarting. Ok now my bluetooth doesn’t work again – odd. Wait dGPU also still doesn’t work, let me remove the drivers completely… oh wait you also want to remove HIP SDK? But I need that for work… I mean, sure, ok I’ll install it again.
Morning slowly drifted to late afternoon, while I realized I have not spent a minute of that time on what I originally intended to do – recreational coding (that’s what all the normal people do on weekends, right?). After ultimately fixing all my issues I sat silently staring at my laptop, realizing I’m now roughly where I left things yesterday evening, except I burnt through a good fraction of my weekend scrolling through the Arch wiki and oftentimes toxic forums, the recurring suggestion from which was “if you can’t handle it, maybe you shouldn’t have used Arch to begin with.”
Well… maybe I shouldn’t have. …


To address some negatives:
The dot files could be generated from your nix configuration (given that they are, and usually just symlinked). This way you still keep one source of truth. Only catch is any hardcoded nix store paths from pkg stringification. Also not sure if there’s an easy way to do this, besides maybe automating some way of grabbing them from your nix build. (alternatively, keep your dot files and just have nix yoink them)
The “patch for nix” is a serious downside, admittedly. VMs and containers can get you a lot of milage, but properly nixifying things can hurt and be a big time investment.
Dev shells and missing deps is the same. Updating deps is usually okay but “repackage everything” starts to feel bad. But you aren’t limited to nixpkgs for deps; you can pull in other managers (conan, vc, etc) for the project. Issues may arise if packages need or expect FHS / system stuff, then you’re back to patching and pain.
The benefit is that when it’s done, it’s done; other than maintenance / upgrades. Reproducibility is like automation: the time and effort you put in, and the tools you use, determine the quality of the result. Similarly, the costs can quickly outpace the benefits.. Requires careful allocation and wise judgement.
Nix is a silver bullet, but silver is expensive and not everyone is hunting werewolves.