Compared to a traditional distro, the packaging difficulty distribution is quite skewed with Nix though as packages that follow common conventions are quite a lot easier to package due to the abstractions Nixpkgs has built for said conventions while some packages are near impossible to package due to the unique constraints Nix (rightfully) enforces.
good luck creating new options
Creating options is really simple actually. Had I known you could do that earlier, I would have done so when I was starting out.
Creating good options APIs is an art to be mastered but you don’t need to do that to get something going.
good luck cross-compiling
Have you ever tried cross-compiling on a traditional distro? Cross-compiling using Nixpkgs is quite easy in comparison.
actually good luck understanding how to configure existing packages
Yeah, no way to do so other than to read the source.
It’s usually quite understandable without knowing the exact details though; just look at the function arguments.
Also beats having no option to configure packages at all. Good luck slightly modifying an Arch package. It has no abstractions for this whatsoever; you have to copy and edit the source. Oh and you need to keep it up to date yourself too.
Gentoo-like standardised flags would be great and are being worked on.
good luck getting any kind of PR merged without the say-so of a chosen few
Hi, one of the “chosen few” here: That’s a security feature.
Not a particularly good one, mind you, but a security feature nonetheless.
There’s also now a merge bot now running in the wild allowing maintainers of packages to merge automatic updates on their maintained packages though which alleviates this a bit.
have fun understanding why some random package is being installed and/or compiled when you switch to a new configuration.
It can be mysterious sometimes but once you know the tools, you can directly introspect the dependency tree that is core to the concept of Nix and figure out exactly what’s happening.
I’m not aware of the existence of any such tools in traditional distros though. What do you do on i.e. Arch if your hourly shot of -Syu goes off and fetches some package you’ve never seen before due to an update to some other package? Manually look at PKGBUILDs?
Packaging is generally hard on any distro.
Compared to a traditional distro, the packaging difficulty distribution is quite skewed with Nix though as packages that follow common conventions are quite a lot easier to package due to the abstractions Nixpkgs has built for said conventions while some packages are near impossible to package due to the unique constraints Nix (rightfully) enforces.
Creating options is really simple actually. Had I known you could do that earlier, I would have done so when I was starting out.
Creating good options APIs is an art to be mastered but you don’t need to do that to get something going.
Have you ever tried cross-compiling on a traditional distro? Cross-compiling using Nixpkgs is quite easy in comparison.
Yeah, no way to do so other than to read the source.
It’s usually quite understandable without knowing the exact details though; just look at the function arguments.
Also beats having no option to configure packages at all. Good luck slightly modifying an Arch package. It has no abstractions for this whatsoever; you have to copy and edit the source. Oh and you need to keep it up to date yourself too.
Gentoo-like standardised flags would be great and are being worked on.
Hi, one of the “chosen few” here: That’s a security feature.
Not a particularly good one, mind you, but a security feature nonetheless.
There’s also now a merge bot now running in the wild allowing maintainers of packages to merge automatic updates on their maintained packages though which alleviates this a bit.
It can be mysterious sometimes but once you know the tools, you can directly introspect the dependency tree that is core to the concept of Nix and figure out exactly what’s happening.
I’m not aware of the existence of any such tools in traditional distros though. What do you do on i.e. Arch if your hourly shot of
-Syu
goes off and fetches some package you’ve never seen before due to an update to some other package? Manually look at PKGBUILDs?