Why I Left NixOS for Ubuntu (fd93.me)
from fd93@programming.dev to programming@programming.dev on 02 May 06:47
https://programming.dev/post/13537279

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.

#programming

threaded - newest

Deckweiss@lemmy.world on 02 May 06:59 next collapse

tldr:

  • fucking with configs for hours regularly
  • pip & venv doesn’t work on nixos
  • DE broke when installed new DM
  • not much community support
mortalic@lemmy.world on 02 May 13:47 next collapse

I didn’t realize pip and venv didn’t work… that’s a pretty big deal breaker for a lot of people, myself included.

Faresh@lemmy.ml on 02 May 14:45 next collapse

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.

fd93@programming.dev on 02 May 14:49 collapse

Sounds good in theory, until you want to install scikit-image or other Python libraries which need complex builds.

Corbin@programming.dev on 02 May 17:48 collapse

python3Packages.scikit-image appears to be available and non-broken in nixpkgs; on my machine, I get /nix/store/w8681ncsw92cn4gq6gyraw4z19r0r6c3-python3.11-scikit-image-0.21.0. Do you have an actual example?

I understand your point, but given nixpkgs’ position in the community, it might be a moot point.

frozencow@lemmy.world on 02 May 19:45 collapse

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.

wargreymon2023@sopuli.xyz on 02 May 14:09 next collapse

it is for advanced users

umbrella@lemmy.ml on 04 May 05:57 collapse

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.

Deckweiss@lemmy.world on 04 May 11:25 collapse

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.

umbrella@lemmy.ml on 04 May 16:55 collapse

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.

Deckweiss@lemmy.world on 04 May 18:45 collapse

Depends on what yoy install I guess.

It only broke twice for me from updates during the 5 year period. 1. grub 2. openjdk

and the openjdk one simply didn’t update until I uninstalled the old one and reinstalled the new one.

Successful_Try543@feddit.de on 02 May 07:07 next collapse

Since I bricked my Debian setup in an unfortunate accident involving compiling from source

How on earth?

fd93@programming.dev on 02 May 07:12 next collapse

Debian really doesn’t like installing different versions of GUI libraries & their dependencies.

I really like Pantheon Files.

Successful_Try543@feddit.de on 02 May 07:21 next collapse

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.

fd93@programming.dev on 02 May 07:24 collapse

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.

suy@programming.dev on 02 May 08:26 collapse

I’ve been compiling apps depending on newer Qt and/or kdelibs versions for ages (back when the repository was literally called “kdelibs”, about 20 years ago).

This has never been an issue for me. Even with autoconf/automake, I just compiled everything to its own prefix, so it doesn’t interfere with the system at all. You don’t even need to fix the build system in the cases where it’s broken/lacks features, if you leverage all the “path” variables (CPATH, LIBRARY_PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH, etc.). But autotools, cmake, qmake, and every build system I’ve used so far supports this out of the box.

Not claiming it’s a skill issue, but I have to say I’m very surprised by reading any of this.

Specifically, for Debian, I was told 20 years ago by a very wise person “you never do make install on Debian, specially not for the kernel”, and taught me how to use make-kpkg (or something like that, I don’t remember the name of the tool), which was a way to make a debian package of a self built kernel, which is obviously something that can’t be installed to its own prefix.

GammaGames@beehaw.org on 02 May 13:30 collapse

Pantheon Files is the best, i also compiled it from source when i was stuck on Pop!

XTL@sopuli.xyz on 02 May 08:02 next collapse

I have actually done that once. Somehow managed to make install glibc over libc5 or something like that.

That was a while ago, though.

duhdugg@programming.dev on 03 May 21:58 collapse

I also don’t understand. For compiling from source, why not use podman or docker to just compile everything into a tarball that can be extracted into /opt? I used to do this all the time when installing multiple php versions on a CentOS machine.

tinocofaidh@lemmy.ml on 02 May 07:41 next collapse

Didn’t really look into NixOS so only learned that it is an immutable OS after reading your article.

I once tried Fedora Sericea. Ended up having many Toolboxes (like Distrobox) with libraries and tools for development, but only a couple of Flatpaks.

I think the ideal user for immutable OS will be someone who want to use computer like a smartphone, just install apps (as Flatpaks) and let the OS do its update things.

sxt@lemmy.world on 02 May 08:41 next collapse

Nixos is immutable to force system configuration through the declarative nix configs/build system not to limit tinkering.

eveninghere@beehaw.org on 02 May 08:43 collapse

NixOS is a reproducible OS. I wouldn’t call it immutable.

oessessnex@programming.dev on 02 May 09:28 collapse

It’s not really fully reproducible either.

Shareni@programming.dev on 02 May 13:10 collapse

Isn’t it fully reproducible with flakes?

oessessnex@programming.dev on 02 May 13:38 collapse

Nope, nix doesn’t ensure or require that the builds are deterministic. It’s not any better in that regard than other package managers.

Shareni@programming.dev on 02 May 14:18 collapse

nix doesn’t ensure or require that the builds are deterministic

Pin package version and --pure?

That should already allow it to be ahead of other PMs.

oessessnex@programming.dev on 02 May 19:57 collapse

A package is reproducible if you use the same inputs, run the build, and get the same outputs.

The issue is that the build can produce different outputs given the same inputs. So you need to modify the build or patch the outputs. This is something that is being worked on by most distributions: reproducible-builds.org/who/projects/

NixOS is not special in that regard nor are all NixOS packages reproducible.

onlinepersona@programming.dev on 02 May 07:48 next collapse

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.

Anti Commercial-AI license

something_random_tho@lemmy.world on 02 May 11:44 next collapse

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.

onlinepersona@programming.dev on 02 May 11:47 collapse

By latest and greatest I meant stuff not packaged in nixpkgs yet.

Anti Commercial-AI license

tatterdemalion@programming.dev on 02 May 13:39 collapse

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).

onlinepersona@programming.dev on 02 May 15:14 collapse

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.

Anti Commercial-AI license

eveninghere@beehaw.org on 02 May 08:40 next collapse

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.

fd93@programming.dev on 02 May 09:08 collapse

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.

Kangie@lemmy.srcfiles.zip on 02 May 11:25 collapse

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.

fd93@programming.dev on 02 May 13:06 collapse

I keep meaning to try Gentoo out but haven’t gotten round to it. I think it didn’t like VirtualBox or something?

bungle_in_the_jungle@lemmy.world on 02 May 10:48 next collapse

Someone recently recommended PopOs to me. Any thoughts on that?

mihnt@lemmy.ca on 02 May 11:16 next collapse

Great beginner distro for sure. On par with Mint with “it just works”.

franklin@lemmy.world on 02 May 11:32 next collapse

It’s honestly one of my favorite distros and has a lot of unique awesome features and guides for beginners.

Discord has some rough edges if you use it regularly but it definitely still works.

fd93@programming.dev on 02 May 12:54 collapse

They’re between releases right now, but once COSMIC desktop is ready and they release Pop 24.04 I’ll probably try it out. More likely that I’m moving to Xubuntu Minimal 24.04 on the daily driver though.

PopOS is great OOTB but I’ve become attached to rofi and XFCE recently and like the old-school “apps are utilities” style of Linux desktops over PopOS / Mint which try to bundle everything together.

mihnt@lemmy.ca on 02 May 20:07 collapse

Xubuntu Minimal 24.04

Why not just do Mint XFCE then? At least that way there’s no snap to deal with.

GarlicToast@programming.dev on 02 May 13:27 next collapse

I really don’t get it, I moved to NixOS some years ago. Okay, first few months I had to fiddle with configurations and add some packages that were missing. Everything past those early months was a blast.

Replacing a dead laptop? The most time consuming part (for me) is making a bootable USB. After that I can push my already ready made configuration and just back to where I was (backs ups are important).

Working on different versions of Python? No problem, a small nix script for each environment.

Working with different versions of GCC? Same as Python.

Everything just works. And if I fuck around I can revert the change. I can easily experiment in a way that will no fuck affect my ability to work.

At work we have Ubuntu, and I got the conclusion that nuking Canonical’s offices will be a blessing on humanity. They manage to deliver broken packages for years, even packages that work well on Debian.

xilliah@beehaw.org on 02 May 19:21 collapse

<img alt="1000011525" src="https://beehaw.org/pictrs/image/c3d2541f-e2e1-4498-95c4-2bd360c3300a.webp">

praetor@lemmy.sdf.org on 03 May 21:25 next collapse

Yes and no. It depends on what your aim is. I LOVE Nix and it runs like a beast on my ZBook. But I’m after reproducible environments I can just blast around on all over the place without a heavy imagining solution. Works great for that.

Does it take some time to setup as a daily driver? Yes. But no more than Arch. But the thing with Nix is if you already have a robust config, it takes less time than Arch to go from zero to stomping out code.

Ubuntu is a great generic distro. But I find Nix gives me oomph. As with everything in this ecosphere…use what works for YOU! 😁

SirDimples@programming.dev on 04 May 05:03 next collapse

I like reading about OS journeys like these. Personally I ended up living with immutable fedora despite of its endless challenges, but I don’t think I’ll ever go back to mutable linux for my dev laptop. I feel immutability is a shield against change over time.

IndustryStandard@lemmy.world on 04 May 08:40 collapse

More serious than this is the rare occasions Nix packages conflict with each other. While Nix separates dependencies, it doesn’t separate them as absolutely as a full container system like Docker. Therefore it is possible, albeit unlikely, to end up with conflicts between versions of installed libraries.

Never tried it but thanks for dispelling the hype. What a meme OS.