Vundle's :PluginInstall hangs when stdout is not a TTY (e.g. automated
runs on Alpine). Clone each plugin declared in .vimrc directly instead
- unattended, idempotent, and skips the Vundle self-reference.
- Enable Alpine community repo (vim/fzf live there, commented out by default).
- Split essential vs extra packages; extras (htop/neofetch/fzf) install
best-effort so a missing neofetch (removed from Alpine 3.20+) does not abort.
- Make run() return its command's exit status explicitly so 'if run ...'
guards work under 'set -e'.
Bootstraps a fresh host: detects apt vs apk, installs base + extra
packages (htop/neofetch/fzf), installs oh-my-zsh + zsh-autosuggestions,
deploys the matching server/<host> dotfiles by hostname, and runs
Vundle :PluginInstall. Flags: --host --no-zsh --chsh --dry-run.