Portable minimal, opinionated dotfiles for Mac, managed with rcm.
Antidote plugin manager, with a configuration approach based on zdotdir. Plugins are declared in a single .zsh_plugins.txt file and organized by category:
- Completions — fzf-tab for fuzzy Tab completion, zsh-completions for extra definitions, ez-compinit for fast init
- Editing — sensible keybindings (Home/End/Delete just work), emacs and vi mode support
- History — shared across sessions, deduplication, substring search with Up/Down
- Utilities — macOS helpers (
cdf,flushdns), saferm/mv/cp,extractfor any archive, git aliases (gst,gco,gl,gp, etc.) - Fish-like features — syntax highlighting, autosuggestions (right-arrow to accept), history substring search
Starship cross-shell prompt.

Zoxide — z to jump to frecent directories.
Spacemacs configuration. Shell aliases: et (terminal) and e (GUI Emacs.app).
tmux configuration.
Aliases (via oh-my-zsh git plugin), global gitignore.
Emacs keybindings system-wide (Library/KeyBindings). macos-defaults.sh configures system preferences: standard function keys, fast key repeat, list-view Finder, tap-to-click, auto-hiding Dock, screen saver hot corner, and immediate lock-screen password.
Brewfile tracks shell dependencies and daily-driver tools.
Custom settings and Starship integration via cship (claude/).

# Install rcm
brew install rcm
# Clone this repo
git clone <repo-url> ~/git/portable-environment
# Install Homebrew packages
brew bundle --file=~/git/portable-environment/Brewfile
# Link all dotfiles
rcup -d ~/git/portable-environment
# Apply macOS system preferences (keyboard, trackpad, Finder, Dock, etc.)
bash ~/git/portable-environment/macos-defaults.shFor Claude Code config, remove any existing files before running rcup so rcm can place its symlinks:
rm -f ~/.claude/settings.json
rcup -d ~/git/portable-environmentThe zsh configuration approach is inspired by zdotdir.