nix aside1, I recently shifted to using asdf to manage different language versions. 1git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1 The main reason to prefer asdf over competing language specific options like rvm or pyenv or nvm and company is simply uniformity of the interface. This can be coupled with zinit snippet OMZ::plugins/asdf for loading the completions. Note that the installation steps can take a while especially if openssl is being installed.