Parts of the nixpkgs documention is generated from code, but I always have trouble finding things.
There is an RFC about it:
too many unspoken rules for nixpkgs PRs
I am writing a FAQ about my personal preferences. But many of them were found by routinely bumping on them.
barely any linting → “Please remove this newline”, “this function doesn’t use the proper case”
Another RFC:
fields in mkDerivation.meta have minimal descriptions and it isn’t clear when to use the optional fields
How precisely you say the descriptions are minimal?
https://ryantm.github.io/nixpkgs/stdenv/meta/
Also, you can just ignore optional fields if you are in doubt.
package naming conventions aren’t clear. fresh, still, wrapped, unwrapped, bin … what?
Wrapped packages are there because many packages are not so useful without being wrapped first. E.g. X16 emulator needs a ROM that is distributed separately. The wrapper puts both together.
-bin
is because sometimes we provide both a source-based package and a binary one. Firefox is such an example.
Others are mostly because the upstream uses a similar naming.