It doesn't have useful types for a lot of low-level abstractions; take, for example, all the stuff hanging off of stdenv -- if I'm trying to get nixpkgs up and running for a new C compiler that's neither GCC nor Clang, for example, it'd be really nice to know what all attributes need to be set for that. Instead, this ends up being a multi-day exploration through the nixpkgs source, where it turns out that (undocumentedly) the compiler must be named either gcc or clang...