all-packages.nix has a reasons to exist: it serves as an index for > packages. Like index in DBs, it allows much faster package lookup.
Without index you have to either
a) traverse directory tree to find package
or b) you have to provide full path to package
I can’t tell for other people, but I only ever install packages by their
attribute name, not by their package name.
As such, if there was an implicit mapping between the firefox
I’m
typing, and eg. fi.firefox
, I wouldn’t care. For performance matters
it might (might) even be better, as that’d transform parsing a 65kloc
file into walking down a directory tree. Not totally sure about that,
though.
However, from my reading the most important proposal here was not to
split all-packages.nix
(that was an aside), but mostly to always have
the latest-working version of packages. Which would mean no longer
blocking the whole channel when a core package doesn’t build, and only
blocking this specific package’s version.
Which sounds like a much better design to me indeed.
That said, it would likely require quite some engineering to actually
perform that efficiently, without having to download the equivalent of
multiple copies of nixpkgs. (Thinking about something like the
auto-nix-build FUSE filesystem by edolstra, but for auto-downloading,
maybe?)
And then with such an auto-downloading filesystem, comes the problem of
downloads. And maybe it could make sense to have the core packages still
be in a nixpkgs-like block (that would be as restricted as possible and
always green), but I’m not 100% sure about whether that’d be needed. But
anyway what’d be important would be to be able to eg. rebuild the config
to add a proxy without internet access.
Just my 2¢