Nix is amazing in many ways, but its discoverability and transparency are sometimes very poor. Its module system is anything but lean and straightforward.
(I say this as somebody who deeply loves the concepts in most functional languages, and loves the concepts in nix, but recognises that the developer-experience of both is about as pleasant as reading somebody else's code-golfed perl)
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.
I say this as a daily user of Nix.
(I say this as somebody who deeply loves the concepts in most functional languages, and loves the concepts in nix, but recognises that the developer-experience of both is about as pleasant as reading somebody else's code-golfed perl)
Now compare it even to Haskell, to say nothing about e.g. Typescript.