Hey all, thought this might be of interest to some here.
Wrote about why I moved from NixOS to Ubuntu after using it for several months on my daily driver. Suspect that this take is likely to be kind of controversial and court claims of skill issues, which might even be true.
Let me know what you think.
tldr:
- fucking with configs for hours regularly
- pip & venv doesn’t work on nixos
- DE broke when installed new DM
- not much community support
I didn’t realize pip and venv didn’t work… that’s a pretty big deal breaker for a lot of people, myself included.
I’m not a Nix user, but doesn’t Nix make both pip and venv obsolete in a way? Nix is a package manager (which could be used to package anything including Python packages/modules) and also allows you to create environments that include only certain packages of certain versions.
Sounds good in theory, until you want to install scikit-image or other Python libraries which need complex builds.
pip and venv are working, but packages that require compiling or ship binaries by itself usually won’t work out of the box. They depend on gcc or libopenssl to be globally available: the whole gist of Nix not doing 😅
I’ve found devenv.sh to be most convenient way to handle such projects. You can define the dependencies for a project. It has explicit python/venv/requirements.txt/poetry support. It works for NixOS, but also other distros and MacOS. Very convenient to share and lock development tools and libraries across a team.
fucking with configs for hours regularly
this is the one reason i dont board the hype train for “customizable” distros: arch, nix, gentoo and so on unless im specifically looking to learn.
i use linux so i can install it and forget which distro im actually using.
I have been on arch professionally for ~5 years.
I am a GUI fan and I don’t like fucking around with the OS. In fact, I don’t even want to think about it at all.
So far it hardly required any maintenance (much less than Ubuntu, Windows or Mac, at least for my workflows).
And the only fucking around I did with it was the first two days setting everything up just the way I like.
To be fair, I already had extensive linux knowledge at the point of switching to arch - through ~4 years of constantly breaking my Debians and Ubuntus every couple of months.
i find arch to sometimes break on updates for me. it always turns out to be either:
1- bleeding edge package update made it bleed 2- needed to be watching announcements and change some config file 3- i havent updated in a while and it dislikes that.
i like having 100% automatic updates.
Since I bricked my Debian setup in an unfortunate accident involving compiling from source
How on earth?
Debian really doesn’t like installing different versions of GUI libraries & their dependencies.
I really like Pantheon Files.
I know, I’ve once messed around to install a newer QT framework which was required by some package I’ve downloaded directly. Did you install them from the repos or manually copied the files into place? At first I thought the issues were due to compiling source code, not installing conflicting libraries.
I actually can’t remember as it would have been 6+ months ago now. The issue is probably fixed already by the Debian maintainers / Elementary Team / both.
Likely something with Meson build / apt not playing nicely.
Makes sense. NixOS isn’t for everybody and that’s fine.
For people like me who don’t change things on the regular, it’s fine. But using the latest and greatest or having to customise stuff is really a drag. Getting a new electron app on nixpkgs can take a long time because doing it yourself is pain. It’s easier to hope somebody else will deal with that pain.
Have fun on Ubuntu.
I run nix unstable, so I get all the latest software. It’s actually been very stable for me, and I love knowing I can rollback at any time if something happens to break.
By latest and greatest I meant stuff not packaged in nixpkgs yet.
I know it’s not for everyone, but creating your own nix derivation for software that doesn’t exist yet on nixpikgs is not terribly difficult (for most things).
It varies wildly, in my experience. A binary package in nix? For sure, easy. Any programming language with its own ecosystem: good luck. Python, JS, and anything electron is hilariously difficult to package when anything goes wrong. If it doesn’t work at the 5th try, gotta get ready for a long night.
Even C/C++ projects that should “just work” with mkDerivation
are far from trivial, but that’s also due to how shit the ecosystems of those languages are. “have A,B,C installed on ubuntu 18.04” and then you find out that there are actually a bunch more dependencies, or gcc is too recent, or you have to mess with the LD_LIBRARY_PATH
, or or or or.
There have been very, very few packages that I found trivial to package. nix is very good at exposing hidden dependencies.
While many of the issues with Debian can be resolved by compiling from source, this has been one of the main causes of system failure for me in the past. It also requires equal or greater effort than playing with Nixfiles.
I guess you are doing something wrong here. I can’t imagine that compiling stuff on Debian would be trickier than tinkering with NixOS.
Maybe you have been following advices on the web instead of taking the time to understand problems and keep your Debian tidy?
Besides, between an expert niche like NixOS and the popular Ubuntu, there are more than a dozen OSes you can consider when it comes to preferences on maintenance. You don’t have to consider so many, but a blog article on your particular three / four (NixOS, Debian Ubuntu + Mint) looks a bit off.
I’ve tried Arch and others as well, even stuff like Slackware, Bodhi, Void, but I’d say that my preference has generally moved away from doing tinkering / maintenance at all other than for fun or profit. I’d still consider Nix for a server / workstation setup but just not as a daily driver.
I may be a touch biased, but I feel like you might enjoy trying Gentoo one day, especially with the recent official binary package host.