(Context: I'm pretty thick into Nix, and have been for about four years. Most of this post is focussed on the NixOS desktop experience, so DevOps nerds, ymmv.)<p>Unpopular opinion: Nix is not that hard.<p>What's "hard" from a nix-promotion strategy is motivating people to understand why they would want the benefits it offers. Mostly because Nix, especially with home-manager, dramatically <i>worsens</i> UX for several day-to-day tasks, simply by violating the Law of Least Surprise every couple of hours in normal use.<p><i>I</i> want a fully idempotent, version-locked, rewindable user environment, with a version-controlled central config, because I have half a dozen devices that, for reasons, I need to keep perfectly interchangeable with one another. <i>Most users</i> do not want this, for the simple fact that <i>mutating their configs and differentiating them locally on specific machines</i> is not a bug, but a feature.<p>Even more than that, it's an expectation that most software developers share as well.<p>Case in point: I filed a bug against the GitHub CLI last week. If any org has the scope and motivation to build software that's compatible with NixOS, an OS most of whose users are developers, it should be GitHub, which is, at least notionally, all about developers, developers, developers. A change in GH required a config format migration, which was sensibly done by opening the config .yml and rewriting it.<p>Of course, this breaks NixOS not just in practice but in principle. NixOS/home-manager makes config files read-only. Surprise! <a href="https://github.com/cli/cli/issues/8462">https://github.com/cli/cli/issues/8462</a><p>The response from GitHub was basically, "yeah, we knew this was going to happen, we mentioned it to the packagers at NixOS, but we did it anyway, because it was still the best way to proceed for us." (And they weren't wrong.)<p>Now, once a month is an annoyance, but I run into these problems daily. I can't imagine any sane person -- which I am <i>not</i> -- would persist with using it.<p>Why do I keep using NixOS, then? Because I am terribly and disproprotionately annoyed by small changes in my user experience, which I find disruptive to my workflow and hence threaten my success. For me, forbidding apps from mutating the config files I established for them is a selling point. Being able to version-control an idempotent declarative config for <i>all of them at once</i> is heaven.<p>Unless you're like me, you'll hate NixOS. But some were meant for Nix.