macOS and UNIX configuration files
Instead of cloning the repo, use this one as a template by clicking here, and then customize to your needs.
Clone the repo, then:
make
This will install Homebrew (macOS only), Antidote, and GNU stow, then use stow to link all dot files into your home directory.
CAUTION: You probably never want to type make. This entire set up is heavily customized for my usage. I've made it available so others can copy, modify, and then deploy it for themselves.
After installing, run direnv allow in the repo root to activate the local ripgrep config.
misc/dot-config/homebrew/Brewfile
Run with:
brew bundle
To keep this portable across machines/users, put user-specific settings in local files that are not tracked:
~/.config/dotfiles/local.zsh(zsh overrides)~/.config/dotfiles/local.fish(fish overrides)~/.gitconfig.local(git identity, per-user settings)
Create the local files from templates:
install_scripts/bootstrap-local.sh
Templates live at:
misc/dot-config/dotfiles/local.zsh.examplemisc/dot-config/dotfiles/local.fish.examplegit/dot-gitconfig.local.example
Antidote replaces Oh My Zsh. It's a lightweight plugin manager that clones repos and compiles them into a single sourceable file.
Every shell startup, plugins_builder.zsh runs and writes ~/.zsh_plugins.txt — a list of plugins to load (only if the list has changed). Then .zshrc checks whether ~/.zsh_plugins.txt is newer than ~/.zsh_plugins.sh; if so, Antidote recompiles the bundle:
antidote bundle < ~/.zsh_plugins.txt > ~/.zsh_plugins.sh
~/.zsh_plugins.sh is then sourced. This means plugin updates only take effect after the bundle is recompiled — which happens automatically the next time you open a shell after the plugin list changes.
Completions (compinit) run before plugins are sourced. zsh-users/zsh-completions adds extra completions on top of that. The compiled completion cache lives at ~/.zcompdump.
Edit zsh/dot-zsh/plugins_builder.zsh. There are two cases:
Always load it — add to the ALWAYS_ON array:
local -a ALWAYS_ON=(
...
owner/repo # non-OMZ plugin
'ohmyzsh/ohmyzsh path:plugins/plugin-name' # OMZ plugin
)Load only when a binary is present — add to the WANT map:
typeset -A WANT=(
[plugin-name]=binary-to-check-for
)After editing, open a new shell. The plugin list will be rebuilt and Antidote will recompile the bundle automatically.
antidote updateThen open a new shell (or source ~/.zsh_plugins.sh) to pick up the changes.
Drop any .zsh file into ~/.zsh/plugins/. It will be sourced automatically at startup — no Antidote involvement needed. Rename the extension to disable it.
zsh-users/zsh-syntax-highlighting is always forced to load last by plugins_builder.zsh. Don't move it.
Quick check for required/optional tools:
misc/scripts/dotfiles-healthcheck
Copyright (c) Nobody, No rights reserved.