> - What if rvm or nvm don't have a specific version
Let's get back to reality for a second. For most development needs this is a hypothetical situation.
Right now, in reality, ruby-lang hosts versions dating to 2002.
Also, right now, in reality nix limits the number of available versions. Quote: "in NixPkgs we choose to restrict the number of maintained versions", https://github.com/NixOS/nixpkgs/issues/93327#issuecomment-6... So it's already worse than the hypothetical "what if rvm don't have a specific version".
Also, right now, in reality there's no easy way to pin a version of a tool in nix. Except going to a third-party website (lazamar's site), hope that your specific version is listed there (he only maintains a snapshot of a few years), and dig through nixpckg commit hashes. And this has been a known issue for as long as nix has been around. 18 years, at least. And we're still hoping that someone somewhere will incorporate this into standard tooling. You yourself linked to an issue on this.
I'd like to link to a reply in that issue: https://github.com/NixOS/nixpkgs/issues/93327#issuecomment-6...
And to this reply: https://github.com/NixOS/nixpkgs/issues/93327#issuecomment-7...
> What are you going to do for other languages which don't have a package/VM manager like Java, C/C++, etc?
That varies between languages, of course. I have several Java versions installed side-by-side. C/C++ is worse because they are mostly stuck in 1960s, tooling-wise (though on windows you can have multiple msvcrt versions installed side-by-side).
This still can be (and is) handled. And nix doesn't offer great advantages, except providing a complex, complicated, poorly documented tool.