I don't find Nix the language particularly weird. But pick an arbitrary .nix file, see a bunch of stuff passed to the derivation, and try to find out whence it comes, and what types / attributes are expected there. The only definitely working solution I know is a full-text search over the file tree.
Now compare it even to Haskell, to say nothing about e.g. Typescript.
That... is all on the language. In fact the main trouble now that you spelled out is the major blow against nix: is terrible at modularity!