I'm using zsh on Linux with OhMyZsh and the powerlevel10k theme. I'm also using nvm since I have to switch node versions for different projects.
I'd like to achieve that zsh automatically uses the node version set in the .nvmrc file (if one exists). That should be triggered when changing into a directory that has a .nvmrc file, but also when opening a terminal (e.g. opening a vscode project, the internal terminal should be set to the respective node version).
I tried the ohmyzsh nvm plugin (with export NVM_LAZY=true and export NVM_AUTOLOAD=true), but that causes this behavior with powerlevel10k when opening a terminal:
[WARNING]: Console output during zsh initialization detected.
When using Powerlevel10k with instant prompt, console output during zsh
initialization may indicate issues.
...
The zsh-nvm plugin works better (with export NVM_LAZY_LOAD=true and export NVM_AUTO_USE=true). It automatically changes the version when changing directories, however not when opening the terminal.
I achieved that by adding this line to my .zshrc file:
[ -s "./.nvmrc" ] && nvm use > /dev/null 2>&1
That does not cause the above mentioned powerlevel10k issue, however the terminal changes the look (applying the powerlevel10k theme) after a couple seconds. I guess that is because of loading nvm right away (and not lazy loading it anymore). If I open the terminal in a directory without .npmrc, it opens fast and with the p10k theme right away.
I can live with this setup, but it is still not ideal and feels hacky. Is there a better way to do it?
Just for reference, there is also this issue on the zsh-nvm github