Preferences

I don't see how NixOS doesn't provide 2.

It's extremely easy to apply patches.


I guess it should rather say that NixOS provides 1 and 2, since I don't see how it would be ABI compatible to a major distribution.
With FHS I'd say it does 3 also.
FHS makes it more similar, but not compatible.

I'll quote from my blog post linked above:

> Different distributions make different choices, and therefore they are closely related operating systems, but not a single OS. Even Linux syscall interface subtly changes from distribution to distribution, as they pick and choose options to build their kernels.

> Every niche Linux distribution that does not follow the interface of a larger one is a unique OS, closely related but not compatible with other Linux OSes. This means the applications have to be ported.

> Application developers have to choose what targets their applications support. With Linux distributions being just a blip on the graph of operating systems popularity, the application developers may not invest significant amount of resources into porting and testing.

Basically, NixOS = zero QA effort from application developer -> nothing works.

That's just not true. Nixpkgs has the largest package database of any distribution. It contains many closed source application that work flawlessly. Hell I can even run Vivado or Quartus on it which are two of the worst of the worst proprietary pieces of software on it. I also have packaged proprietary libraries for hardware we use at my company with no issues.
It is answered at the end of my blog post:

> I don’t care about anything that’s not packaged by the distribution

> This is totally fine. Just note that you are using a niche OS with a limited set of applications available.

Yes, Nixpkgs is large, but it does not package every piece of software out there, and you either at mercy of distribution maintainers to keep it packaged, or do it yourself. There is no way to disintermediate you and application developers.

Almost -- it's not quite as bad as you'd expect, because nixpkgs has packages for quite a lot of closed-source software, with whatever hacks are required to make it work.
I tried NixOS and dropped it after spending several hours trying to make an experimental FPGA compiler work. The instructions were reasonable, but they expected to have a classic Linux distro: Fedora or Debian-like.

I don't remember the exact set of errors (there was more than one), but NixOS+FHS failed so many times I gave up, and wrote that blog post.

This is the essence: you can't expect application developers to target your niche distro.

It is answered at the end of my blog post:

> I don’t care about anything that’s not packaged by the distribution

> This is totally fine. Just note that you are using a niche OS with a limited set of applications available.

Even though in case of Nixpkgs "a limited set" is quite large, it does not include every application imaginable.

Ah, fair enough, though it feels a bit like stretching the definition.
Yes, that's what I meant.
Depending on what you are patching, it will invalidate a great part of the cache, and you will be looking at very long build times for everything in your system.
If that dependency is deep in your dep tree and is statically linked somewhere than there is no way preventing that.

If it’s only dynamic linking than yeah, it might happen that you need a huge recompile (but that is not that big of a problem nowadays in my experience - gentoo used to compile way longer in my subjective experience for example). Also note: nix will soon get content-based hashing which may solve this problem.

For that reason many modules have options to set the packages used, so that you can eg. patch openssh without rebuilding everyone.

This item has no comments currently.

Keyboard Shortcuts

Story Lists

j
Next story
k
Previous story
Shift+j
Last story
Shift+k
First story
o Enter
Go to story URL
c
Go to comments
u
Go to author

Navigation

Shift+t
Go to top stories
Shift+n
Go to new stories
Shift+b
Go to best stories
Shift+a
Go to Ask HN
Shift+s
Go to Show HN

Miscellaneous

?
Show this modal