I can setup scripts that install and configure things for emacs to make sure it always runs in an environment that has all it needs. But with the benefit of not having to have everything installed globally.
I can have multiple versions of whatever installed into /nix at once. But still not have to worry about breaking things that need both versions.
As for package availability, I've not hit any issues. It has most of what I personally need.
What I hit more often is random breakage or having to update derivations that only ever got created or maintained from a linux perspective.
I'd say its in the "developer not afraid to fix broken build problems" category as a package manager. Its not bad, but it is really annoying when you have to revert back to a prior generation because some package you use got updated and now won't build because of its test suite failing.
Random stuff like that happens a few times a month, nothing huge though honestly.