feat(mobile): the Mac role, and role-dependent plugins

Looking at the actual machine turned up something the shared plugin list could
not express. The Mac loads macos, brew and dotbare; beastix and shron load
archlinux. One list filtered by availability - which is what the stub did -
would have dropped four plugins on the Mac without a word. Assembly moves into
05-pre-omz.zsh, which knows the role, and the availability filter stays on top
of it so a plugin that is not installed still cannot produce a warning at every
login.

.zprofile is added, and that is the whole point of the mobile role. The Mac
sets its PATH in .zshrc, so /opt/homebrew/bin exists for interactive shells and
for nothing else: "ssh mac brew --version" comes back empty, which during the
design phase was read as Homebrew not being installed. It is installed, with
178 formulae. Homebrew's shellenv belongs in .zprofile and now lives there; the
loop is inert on Linux, where neither prefix exists.

Carried over from the Mac: the Homebrew auto-update settings and bench(), which
runs bench inside the ERPNext compose stack.

PYTHONPATH pointed at /usr/lib/python3.9/site-packages there too - a Linux path
on macOS, so doubly wrong. All three machines had a variant of that line and
none of them is kept.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
thomas.kopp
2026-08-08 14:11:58 +02:00
co-authored by Claude Opus 5
parent 39f9d11200
commit 003ba4b390
4 changed files with 65 additions and 31 deletions
-13
View File
@@ -28,19 +28,6 @@ export ZSH="$HOME/.oh-my-zsh"
ROLE=$(cat "$HOME/.config/dotconfs/role" 2>/dev/null || echo desktop)
export ROLE
# One list for every machine, filtered by what is actually installed. A plugin
# named but not present makes oh-my-zsh complain on every single shell start,
# and the alternative - a separate list per role - means editing three files to
# add one plugin.
_want_plugins=(git archlinux colored-man-pages colorize zsh-interactive-cd fzf)
plugins=()
for _p in $_want_plugins; do
if [[ -d "$ZSH/plugins/$_p" || -d "${ZSH_CUSTOM:-$ZSH/custom}/plugins/$_p" ]]; then
plugins+=("$_p")
fi
done
unset _p _want_plugins
# Theme and oh-my-zsh's own settings, which it reads while being sourced.
# Anything of that kind placed in a role file - which comes afterwards - is
# silently ignored, so it lives here instead.