Migrate from NVM to FNM

This commit is contained in:
Tony Miller 2025-09-07 23:50:04 +10:00
parent 3bf0d19c4d
commit 202f4bad03
6 changed files with 73 additions and 115 deletions

View File

@ -26,7 +26,7 @@ brew "thefuck"
brew "trash", link: true
brew "wget"
brew "yt-dlp"
brew "nvm"
brew "fnm"
brew "go"
cask "alfred"

View File

@ -1,9 +0,0 @@
#!/usr/bin/env sh
# NVM lazy loading wrapper for node
if ! command -v nvm >/dev/null 2>&1; then
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/etc/bash_completion.d/nvm" ] && \. "$NVM_DIR/etc/bash_completion.d/nvm"
fi
exec node "$@"

View File

@ -1,9 +0,0 @@
#!/usr/bin/env sh
# NVM lazy loading wrapper for npm
if ! command -v nvm >/dev/null 2>&1; then
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/etc/bash_completion.d/nvm" ] && \. "$NVM_DIR/etc/bash_completion.d/nvm"
fi
exec npm "$@"

View File

@ -1,9 +0,0 @@
#!/usr/bin/env sh
# NVM lazy loading wrapper for npx
if ! command -v nvm >/dev/null 2>&1; then
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/etc/bash_completion.d/nvm" ] && \. "$NVM_DIR/etc/bash_completion.d/nvm"
fi
exec npx "$@"

View File

@ -1,10 +0,0 @@
#!/usr/bin/env sh
# NVM lazy loading wrapper for yarn
if ! command -v nvm >/dev/null 2>&1; then
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
fi
exec yarn "$@"

149
.zshrc
View File

@ -110,83 +110,6 @@ export GIT_EDITOR='bbedit --wait --resume'
export TEXEDIT='bbedit --wait --resume'
export LESSEDIT='bbedit --wait --resume'
### THE FUCK (lazilly)
function init_thefuck() {
unalias fuck
unset -f init_thefuck
eval $(thefuck --alias)
fuck
}
alias fuck="init_thefuck"
### NVM
export NVM_DIR="/opt/homebrew/opt/nvm"
load_nvm() {
unset -f nvm load_nvm 2>/dev/null || true
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/etc/bash_completion.d/nvm" ] && \. "$NVM_DIR/etc/bash_completion.d/nvm"
}
nvm() { load_nvm; nvm "$@"; }
### DOCKER
if command -v docker &> /dev/null; then
fpath=("$HOME/.docker/completions" $fpath)
fi
### KUBE
if command -v kubectl &> /dev/null; then
source <(kubectl completion zsh)
fi
### GO
export GOROOT="/opt/homebrew/opt/golang/libexec"
export GOPATH="${HOME}/src/go"
### PYTHON
function load_pyenv() {
if command -v pyenv &> /dev/null; then
eval "$(pyenv init --path)"
eval "$(pyenv init - --no-rehash)"
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
pyenv virtualenvwrapper
unset -f load_pyenv
fi
}
# Only load pyenv when needed
alias pyenv='load_pyenv && pyenv'
### RUBY
export RUBY_VERSION=3.3.0
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH
export PATH=$GEM_HOME/ruby/$RUBY_VERSION/bin:$PATH
### HOOKS
autoload -U add-zsh-hook
maybe_nvm_after_cd() {
local dir
dir=$(pwd)
while [ "$dir" != "/" ]; do
if [ -f "$dir/.nvmrc" ]; then
if type load_nvm >/dev/null 2>&1; then
load_nvm
fi
nvm use 2>/dev/null || true
return
fi
dir=$(dirname "$dir")
done
}
function git_branch_cache_clear() {
unset GIT_BRANCH_CACHE
}
add-zsh-hook chpwd maybe_nvm_after_cd
add-zsh-hook chpwd git_branch_cache_clear
### PATH
export PATH="${HOME}/.local/bin:/opt/homebrew/bin:/opt/homebrew/sbin:${HOME}/.cargo/bin:/opt/homebrew/opt/rustup/bin:/Applications/IntelliJ IDEA.app/Contents/MacOS:/usr/local/bin:${GOROOT}/bin:$PATH"
@ -205,6 +128,8 @@ alias rm=trash
alias gst="git status"
alias gwt="git worktree"
alias gdf="gdifftool"
alias fuck="init_thefuck"
alias nvm="fnm"
### KEYS
bindkey -s '\C-g\C-b' 'do_checkout\n'
@ -298,3 +223,73 @@ function shorten_path {
export PS1='%F{cyan}[$(shorten_path)]%F{red}$(git_ps1)
%F{cyan}$(prompt_text)%f'
### THE FUCK (lazilly)
function init_thefuck() {
unalias fuck
unset -f init_thefuck
eval $(thefuck --alias)
fuck
}
### NODE
eval "$(fnm env --use-on-cd --shell zsh)"
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
corepack enable
### DOCKER
if command -v docker &> /dev/null; then
fpath=("$HOME/.docker/completions" $fpath)
fi
### KUBE
if command -v kubectl &> /dev/null; then
source <(kubectl completion zsh)
fi
### GO
export GOROOT="/opt/homebrew/opt/golang/libexec"
export GOPATH="${HOME}/src/go"
### PYTHON
function load_pyenv() {
if command -v pyenv &> /dev/null; then
eval "$(pyenv init --path)"
eval "$(pyenv init - --no-rehash)"
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
pyenv virtualenvwrapper
unset -f load_pyenv
fi
}
# Only load pyenv when needed
alias pyenv='load_pyenv && pyenv'
### RUBY
export RUBY_VERSION=3.3.0
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH
export PATH=$GEM_HOME/ruby/$RUBY_VERSION/bin:$PATH
### HOOKS
autoload -U add-zsh-hook
maybe_nvm_after_cd() {
local dir
dir=$(pwd)
while [ "$dir" != "/" ]; do
if [ -f "$dir/.nvmrc" ]; then
if type load_nvm >/dev/null 2>&1; then
load_nvm
fi
nvm use 2>/dev/null || true
return
fi
dir=$(dirname "$dir")
done
}
function git_branch_cache_clear() {
unset GIT_BRANCH_CACHE
}
add-zsh-hook chpwd maybe_nvm_after_cd
add-zsh-hook chpwd git_branch_cache_clear