At the moment the happy path for Nix is using it in the same space that Docker is used now - for providing reproducible dev/prod environments for server backends. (And in fact Docker and Nix complement and play nice with each other.)
You could theoretically use Nix for managing user apps too, but that's a niche use case and (as you found out) not in a working state.
So for the happy path, are you declaring the entire development toolchain on a project by project basis? Any chance you have some recommended resources that show the way you're using it? I was hoping to use it for Haskell but I'd love to see a guide targeted to new users that shows what you're describing.
You could theoretically use Nix for managing user apps too, but that's a niche use case and (as you found out) not in a working state.