Provisioning: migrate dev CLIs from Homebrew to mise + bootstrap
Context
mise bootstrap graduated from experimental in v2026.7.4 (July 2026) and provides a unified, cross-platform provisioning pipeline: system packages, git repos, dotfiles, macOS defaults, LaunchAgents, login shell, and [tools] (CLI management) — all in one mise bootstrap command.
Currently the dotfiles bare repo (~/.dotfiles) tracks shell config, gitconfig, and topgrade config but doesn't yet include a mise config.toml or leverage mise bootstrap for machine setup.
Goals
1. Transfer dev CLIs from brew → mise [tools]
Many CLI tools currently installed via brew leaves can be managed by mise with pre-built binaries (aqua: backend), which is faster and cross-platform (same config works on macOS and Linux).
Candidates (aqua: — pre-built, instant):
| Tool |
Mise backend |
bat |
aqua:sharkdp/bat |
fd |
aqua:sharkdp/fd |
fzf |
aqua:junegunn/fzf |
gh |
aqua:cli/cli |
glow |
aqua:charmbracelet/glow |
jq |
aqua:jqlang/jq |
lazydocker |
aqua:jesseduffield/lazydocker |
lazygit |
aqua:jesseduffield/lazygit |
starship |
aqua:starship/starship |
topgrade |
aqua:topgrade-rs/topgrade |
xh |
aqua:ducaale/xh |
zoxide |
aqua:ajeetdsouza/zoxide |
crush |
aqua:charmbracelet/crush |
hunk |
aqua:modem-dev/hunk |
worktrunk |
aqua:max-sixty/worktrunk |
helix |
aqua:helix-editor/helix (optional — or keep in brew) |
Candidates (cargo: — compiles from source):
Remains in brew (system deps, shells, build toolchain): fish, git, cmake, coreutils, pkgconf, ffmpeg, pandoc, macchina, git-delta, eva, tz, mole, peekaboo.
2. Add ~/.config/mise/config.toml to the dotfiles bare repo
A new tracked file containing:
[tools] — all transferred CLIs
[bootstrap.macos.defaults] — declarative macOS system preferences (optional)
[bootstrap.macos.launchd.agents] — user LaunchAgents (optional)
3. Define the fresh-machine bootstrap procedure
Document in README.md or a BOOTSTRAP.md:
macOS:
xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install fish mise
git clone --bare git@github.com:marcodeltongo/dotfiles.git ~/.dotfiles
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME checkout
echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/fish
exec fish
dotfiles status
mise bootstrap
Linux (Beelink Debian/Ubuntu):
curl https://mise.run | sh
sudo apt install -y fish git
git clone --bare git@github.com:marcodeltongo/dotfiles.git ~/.dotfiles
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME checkout
# … set fish as login shell, etc.
mise bootstrap
4. Handle cross-platform splits
[bootstrap.packages] must be conditional: brew blocks on macOS, apt blocks on Linux.
- macOS-specific shell commands (like
/opt/homebrew/bin/...) need conditionals in config.fish.
mise manages [tools] identically on both platforms — that's the whole point.
Tasks
Future / Nice-to-have
[bootstrap.macos.defaults] — Dock, Finder, Keyboard, Trackpad preferences declaratively
[bootstrap.repos] — auto-clone work repos alongside dotfiles
[bootstrap.linux.systemd.units] — user services on the Beelink
/label ~"enhancement"
/label ~"devx"
/milestone %"Infrastructure"
Provisioning: migrate dev CLIs from Homebrew to mise + bootstrap
Context
mise bootstrapgraduated from experimental in v2026.7.4 (July 2026) and provides a unified, cross-platform provisioning pipeline: system packages, git repos, dotfiles, macOS defaults, LaunchAgents, login shell, and[tools](CLI management) — all in onemise bootstrapcommand.Currently the dotfiles bare repo (
~/.dotfiles) tracks shell config, gitconfig, and topgrade config but doesn't yet include a miseconfig.tomlor leveragemise bootstrapfor machine setup.Goals
1. Transfer dev CLIs from brew → mise
[tools]Many CLI tools currently installed via
brew leavescan be managed by mise with pre-built binaries (aqua:backend), which is faster and cross-platform (same config works on macOS and Linux).Candidates (
aqua:— pre-built, instant):bataqua:sharkdp/batfdaqua:sharkdp/fdfzfaqua:junegunn/fzfghaqua:cli/cliglowaqua:charmbracelet/glowjqaqua:jqlang/jqlazydockeraqua:jesseduffield/lazydockerlazygitaqua:jesseduffield/lazygitstarshipaqua:starship/starshiptopgradeaqua:topgrade-rs/topgradexhaqua:ducaale/xhzoxideaqua:ajeetdsouza/zoxidecrushaqua:charmbracelet/crushhunkaqua:modem-dev/hunkworktrunkaqua:max-sixty/worktrunkhelixaqua:helix-editor/helix(optional — or keep in brew)Candidates (
cargo:— compiles from source):eza→cargo:ezaRemains in brew (system deps, shells, build toolchain):
fish,git,cmake,coreutils,pkgconf,ffmpeg,pandoc,macchina,git-delta,eva,tz,mole,peekaboo.2. Add
~/.config/mise/config.tomlto the dotfiles bare repoA new tracked file containing:
[tools]— all transferred CLIs[bootstrap.macos.defaults]— declarative macOS system preferences (optional)[bootstrap.macos.launchd.agents]— user LaunchAgents (optional)3. Define the fresh-machine bootstrap procedure
Document in
README.mdor aBOOTSTRAP.md:macOS:
Linux (Beelink Debian/Ubuntu):
4. Handle cross-platform splits
[bootstrap.packages]must be conditional:brewblocks on macOS,aptblocks on Linux./opt/homebrew/bin/...) need conditionals inconfig.fish.misemanages[tools]identically on both platforms — that's the whole point.Tasks
mise bootstrapcapabilities and candidate tools~/.config/mise/config.tomlwith[tools]blockdotfiles add ~/.config/mise/config.tomland commitbrew uninstall --ignore-dependenciesfor each transferred tool, verify all work via misemise bootstrapon macOS from scratch (or dry-run)mise bootstrapon Linux (Beelink) from scratch (or dry-run)Future / Nice-to-have
[bootstrap.macos.defaults]— Dock, Finder, Keyboard, Trackpad preferences declaratively[bootstrap.repos]— auto-clone work repos alongside dotfiles[bootstrap.linux.systemd.units]— user services on the Beelink/label ~"enhancement"
/label ~"devx"
/milestone %"Infrastructure"