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.

0 points
*

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.

permalink
report
reply
11 points

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

permalink
report
reply
1 point

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

permalink
report
parent
reply
0 points

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

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
1 point

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

Anti Commercial-AI license

permalink
report
parent
reply
4 points
*
Deleted by creator
permalink
report
reply
13 points

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

permalink
report
parent
reply
3 points

It’s not really fully reproducible either.

permalink
report
parent
reply
3 points

Isn’t it fully reproducible with flakes?

permalink
report
parent
reply
4 points
*

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

permalink
report
parent
reply
76 points
*

tldr:

  • fucking with configs for hours regularly
  • pip & venv doesn’t work on nixos
  • DE broke when installed new DM
  • not much community support
permalink
report
reply
-2 points

it is for advanced users

permalink
report
parent
reply
21 points

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

permalink
report
parent
reply
9 points

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.

permalink
report
parent
reply
14 points

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

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
6 points
*

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.

permalink
report
parent
reply
2 points
*

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.

permalink
report
parent
reply
4 points
*

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.

permalink
report
parent
reply
20 points

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.

permalink
report
reply
-4 points

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.5K

    Monthly active users

  • 1.6K

    Posts

  • 26K

    Comments