NixOS: A Personal Post-Mortem
Thanks for the great write-up.
As someone who somewhat recently got into Nix I&#x27;ve struggled with many of the same problems.<p>With the whole &quot;your system is read-only&quot; bit, I&#x27;ll add that Nix can make trial and error editing of config files quite tedious. Editing and reapplying the configuration is fast, but not as fast as editing a file and `systemctl restart`ing the service in question.<p>On development environments I&#x27;ve also had similar problems. My workplace uses a combination of Python and C++. While Python has an established package management system, C++ is still in the early days. The traditional is just use what your OS provides, but the production OS is different from the development OS, the former being much more &quot;stable&quot; (and therefore with older package versions) than the latter. This has caused plenty of headaches with features not being available, and is holding us back from using newer C++ features, or even adding dependencies easily.<p>Being keen on Nix, I&#x27;ve been testing out using it locally for dependencies.<p>With C++ it mostly works. Some annoyances have been packages not providing CMake or pkglib config files. Some packages don&#x27;t quite have all the possible features enabled, and it&#x27;s not trivial to enable them (I struggled with arrow and liborc).<p>Then comes Python, which introduces the same nightmares which the author experienced. Python packages that use system shared libraries are troublesome. The buildUserFHS solution seems like the right approach when mixing and matching, but it introduces a few more problems (the details of which elude me right now).<p>An additional problem is portability. Theoretically one could use `nix bundle` to ship whole applications, but a shared library is a different matter. We&#x27;ve got a Python module written in C++ module, I&#x27;m not sure a module built by Nix would be compatible with the host&#x27;s Python, given the libstdc++ differences and so on.<p>This struggle is topped with the fact I&#x27;m the one going against the grain, trying to sort out the issues I hit, for my own purposes only. I do hope I manage to prove to myself that it&#x27;s a tenable approach, and eventually can propose it to the wider team. But for now I know it&#x27;s a dream.