Here be dragons ๐
My personal dotfiles, including my system setup and the recipes and aliases I use day to day. macOS is the primary workstation target. Ubuntu containers can use the same Zsh, Git, agent, and mise setup without installing Homebrew.
Run bootstrap/install.sh. It will:
- Clone this repo from Forgejo to
~/workspace/self/dotfilesusing the existing SSH setup - Install Homebrew (if missing) and
brew install mise - Run
mise bootstrap --yes --force-dotfiles(symlinks, Brewfile, tools, macOS defaults, extras)
After pulling changes, converge with:
m dotfiles:syncOr step through the migration runbook:
m dotfiles:pull
mise bootstrap dotfiles apply --dry-run
mise bootstrap dotfiles apply --yes
mise bootstrap --skip repos --yes
m dotfiles:statusDo not use --force-dotfiles on existing machines unless mise bootstrap dotfiles status reports conflicts.
On a clean macOS VM:
- Install Xcode CLI tools:
xcode-select --install - Verify SSH access to Forgejo and GitHub, then run
bootstrap/install.sh - Open a new shell and verify:
echo $DOTFILES_PATHโ~/workspace/self/dotfilesm dotfiles:statusexits 0mise doctorโ no config conflicts- Spot-check:
m dns:list,ls -la ~/.zshrc(symlink into repo)
All personal repos live under ~/workspace/. Dotfiles are cloned to:
~/workspace/self/dotfiles
This path is declared in .mise.toml as [env].DOTFILES_PATH and [bootstrap.repos], exported in .zshrc, and used by bootstrap/install.sh.
Anything living under .local folder is ignored from git. This folder is intended
for storing anything system specific that isn't from the dotfiles repo.
Currently the only special thing there is the system specific Git configurations, which
are included as ~/.local/.gitconfig in the main .gitconfig file. During bootstrap
a symlink is created pointing ~/.local to ./.local, and you can add
./.local/.gitconfig with machine-specific Git settings.
Per-machine mise overrides live in .mise.local.toml (git-ignored). Copy from
.mise.local.toml.sample or let bootstrap seed it on first run.
Codex execution-policy rules live under .codex/rules.
Mise links them into ~/.codex/rules without replacing Codex's machine-local
configuration, credentials, plugins, or runtime state.
| Task | Description |
|---|---|
m dotfiles:pull |
Pull latest changes |
m dotfiles:sync |
Pull + apply dotfiles + install tools + bundle if Brewfile changed |
m dotfiles:status |
Show bootstrap and dotfiles drift |
m dotfiles:bootstrap |
Full mise bootstrap --yes |
m dotfiles:bundle |
Install Homebrew packages from Brewfile |
m dotfiles:edit |
Open dotfiles repo in $EDITOR |