What are simple(ish) packages to start studying for beginners?

I guess hello from the Nix manual would fit this description (although the actual implementation looks quite intimidating already).

By “simple”, I don’t mean “few lines of code” - it could be a big/complex package too, but one that is well maintained, it’s organization is well-thought-out, and knowing the Nix basics1 one could follow the breadcrumbs with relative ease to figure things out.

Basically looking for packages that you would be comfortable recommending as a template. Thanks!

[1]: Yeah, still working on figuring out what the “Nix basics” are…

I don’t think you’ll find simpler than the hello derivation. Most of the complexity in the nixpkgs implementation comes from metadata/tests, so if you want to keep it simple at all costs the best you can do is cut down on those, but I think that’s explicitly not following best practices.

Less does cut down on those, for example. It also uses rec, which is falling out of favor. On the upside, it does show off lib.optional, which is probably nice to show off the fact that lib exists and is super useful.

Generally the buildXPackage derivations such as gitea’s are pretty clean too IMO, but the buildXPackage helpers do a lot of the heavy lifting in those cases.