What would the nixpkg repo look like without non-essential packages?

If I only wanted the built-in functionality, what files/folders would I need to keep inside of nixpkgs? I’ve spent a few days just looking through the code, but with nix being lazily evaluated and the outcomes of expressions not always being obvious, I’m not sure what is optional and what isn’t. Normally I’d just delete things and see what happens, but that strategy hasn’t been working too well.

I’ve tried going back in the commit history. 18 years ago the repo was a bit more understandable with a system/all-packages-generic.fix (yes .fix not .nix) being the main definition of nixpkgs. It only contained 17 attributes total, so I could see that fetchUrl was the one thing all other packages depended on, and that gnugrep, gcc, glibc had extra dependencies. That helped, but the repo is very different today, and I’d like to get a better understanding of which are the fundamental packages nix needs to operate.

There’s a surprising number of “TODO” and “FIXME”'s in top-level packages, and I’d like to understand the code around them a bit better.

2 Likes