Nix is actually a very simple tool, that in fact only does one thing and does it well.
That one thing is building packages in sandboxes and adding them to the nix store. You can see that manual for Nix is actually fairly short: https://nixos.org/manual/nix/stable/
The properties of Nix allow for everything else. This enables NixOS and nixpkgs to exist, and they have much longer manuals:
https://nixos.org/manual/nixos/stable/
https://nixos.org/manual/nixpkgs/stable/
So nix does one thing and does it very well.
Tangent. The "unix philosophy" isn't very true on Linux, and hasn't been since GNU. The problem with "do one thing and do it well" is that very often you need to do more than one thing. You then need to learn a completely different thing to do another basic operation.
Having one tool do literally everything is also unreasonable. But there are natural boundaries for things to exist. It is not unreasonable for the uniq to have a count tool, or for sort to have uniq.
I've been doing this for 20 years now, so I've very comfortable with Linux/Unix tooling. But I see new comers come on. It's often easier for them to script something completely from scratch in python then figure out how to stitch coreutils together.