The lazy-load stub wired nvm/node/npm/npx/corepack as wrapper functions
that called a private helper, _nvm_lazy_load, to source nvm.sh on first
real use. That helper went missing in some non-interactive shell contexts
(e.g. a coding agent's captured shell snapshot only kept the public
wrapper functions, not the underscore-prefixed helper), leaving the
wrappers calling a function that no longer existed - infinite recursion
via FUNCNEST, every npm/node/nvm invocation broken.
Sourcing nvm.sh eagerly costs 300-700ms on shell startup but has no
moving parts to go missing.
Manual ln -sfn loop replaced with stow zsh gnupg, matching the repo's
existing per-package-directory convention. Still backs up/removes any
conflicting file or foreign symlink at the target before stowing.
Bumps the GPG passphrase cache from the 10-minute default to 8 hours
(24h hard cap) and switches to pinentry-qt for a native KDE dialog, so
signed commits stop re-prompting constantly.
Cuts shell startup from ~440ms to ~150ms by lazy-loading nvm and pyenv
(previously sourced eagerly on every shell start) and caching oh-my-zsh's
completion rescan, which otherwise reran unconditionally every session.
Also fixes a latent bug where oh-my-zsh's extendedglob option silently
broke nvm's default-version auto-activation.
Adds powerlevel10k, zsh-autosuggestions, zsh-syntax-highlighting,
zsh-history-substring-search, zsh-completions, you-should-use, fzf, and
zoxide. install.sh bootstraps a fresh machine: symlinks these dotfiles
and clones the oh-my-zsh theme/plugins.