mise bootstrap
- Usage:
mise bootstrap [FLAGS] [SUBCOMMAND] - Source code:
src/cli/bootstrap/mod.rs
[experimental] Set up a machine for the current config in one command
Runs the bootstrap steps for the current config in order:
[bootstrap.hooks.pre-packages]— optional setup hookmise bootstrap packages apply— install missing[bootstrap.packages]then[bootstrap.hooks.post-packages]mise bootstrap repos apply— clone/update[bootstrap.repos]surrounded bypre-repos/post-reposhooksmise bootstrap dotfiles apply— apply dotfiles from[dotfiles]surrounded bypre-dotfiles/post-dotfileshooksmise bootstrap mise-shell-activate apply— configure shell activation from[bootstrap.mise_shell_activate]mise bootstrap macos defaults apply— write[bootstrap.macos.defaults]entries (macOS) surrounded bypre-defaults/post-defaultshooksmise bootstrap macos launchd-agents apply— install/load[bootstrap.macos.launchd.agents]mise bootstrap linux systemd-units apply— install/start[bootstrap.linux.systemd.units]mise bootstrap user apply— set[bootstrap.user].login_shell(Unix) surrounded bypre-user/post-userhooksmise install— install missing tools from[tools]surrounded bypre-tools/post-toolshooksmise run bootstrap— if a task namedbootstrapis defined[bootstrap.hooks.final]— optional final hook
The declarative steps converge — anything already in its desired state is skipped, so re-running is safe. The bootstrap task runs on every invocation; keep it idempotent. Use it for any project-specific setup that doesn't fit the declarative sections (seeding databases, auth flows, etc.) — it runs with the installed tools on PATH.
Use --skip <part> to skip named parts, or --only <part> to run just named parts. Both flags can be repeated or comma-separated, but they cannot be used together.
Flags
-n --dry-run
Print what would happen without installing anything
-y --yes
Skip confirmation prompts
--force-dotfiles
Overwrite existing files that conflict with whole-file dotfile entries
--only… <ONLY>
Run only one or more bootstrap parts
Can be passed multiple times or as a comma-separated list. Cannot be used with --skip.
Choices:
packagesreposdotfilesmise-shell-activateshellmacos-defaultsdefaultsmacos-launchd-agentslaunchdlinux-systemd-unitssystemdusertoolstaskfinal-hook
--skip… <SKIP>
Skip one or more bootstrap parts
Can be passed multiple times or as a comma-separated list.
Choices:
packagesreposdotfilesmise-shell-activateshellmacos-defaultsdefaultsmacos-launchd-agentslaunchdlinux-systemd-unitssystemdusertoolstaskfinal-hook
--update
Refresh system package manager metadata first (apk: --update-cache, apt: apt-get update)
Subcommands
mise bootstrap dotfiles <SUBCOMMAND>mise bootstrap linux <SUBCOMMAND>mise bootstrap macos <SUBCOMMAND>mise bootstrap mise-shell-activate <SUBCOMMAND>mise bootstrap packages <SUBCOMMAND>mise bootstrap repos <SUBCOMMAND>mise bootstrap status [-J --json] [--missing]mise bootstrap user <SUBCOMMAND>
Examples:
mise bootstrap # packages + repos + dotfiles + tools + bootstrap task
mise bootstrap --force-dotfiles # replace conflicting dotfile targets
mise bootstrap --skip tools,task # skip tool installation and the bootstrap task
mise bootstrap --only tools # run just tool installation
mise bootstrap status --missing
mise bootstrap packages apply --yes
mise bootstrap repos status
mise bootstrap repos apply --dry-run
mise bootstrap dotfiles status
mise bootstrap mise-shell-activate apply --dry-run
mise bootstrap macos defaults status
mise bootstrap macos launchd-agents apply --dry-run
mise bootstrap linux systemd-units apply --dry-run
mise bootstrap user apply --dry-run