Back to Mise

`mise bootstrap`

docs/cli/bootstrap.md

2026.6.144.4 KB
Original Source
<!-- @generated by usage-cli from usage spec -->

mise bootstrap

[experimental] Set up a machine for the current config in one command

Runs the bootstrap steps for the current config in order:

  1. [bootstrap.hooks.pre-packages] — optional setup hook
  2. mise bootstrap packages apply — install missing [bootstrap.packages] then [bootstrap.hooks.post-packages]
  3. mise bootstrap repos apply — clone/update [bootstrap.repos] surrounded by pre-repos/post-repos hooks
  4. mise bootstrap dotfiles apply — apply dotfiles from [dotfiles] surrounded by pre-dotfiles/post-dotfiles hooks
  5. mise bootstrap mise-shell-activate apply — configure shell activation from [bootstrap.mise_shell_activate]
  6. mise bootstrap macos defaults apply — write [bootstrap.macos.defaults] entries (macOS) surrounded by pre-defaults/post-defaults hooks
  7. mise bootstrap macos launchd-agents apply — install/load [bootstrap.macos.launchd.agents]
  8. mise bootstrap linux systemd-units apply — install/start [bootstrap.linux.systemd.units]
  9. mise bootstrap user apply — set [bootstrap.user].login_shell (Unix) surrounded by pre-user/post-user hooks
  10. mise install — install missing tools from [tools] surrounded by pre-tools/post-tools hooks
  11. mise run bootstrap — if a task named bootstrap is defined
  12. [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:

  • packages
  • repos
  • dotfiles
  • mise-shell-activate
  • shell
  • macos-defaults
  • defaults
  • macos-launchd-agents
  • launchd
  • linux-systemd-units
  • systemd
  • user
  • tools
  • task
  • final-hook

--skip… <SKIP>

Skip one or more bootstrap parts

Can be passed multiple times or as a comma-separated list.

Choices:

  • packages
  • repos
  • dotfiles
  • mise-shell-activate
  • shell
  • macos-defaults
  • defaults
  • macos-launchd-agents
  • launchd
  • linux-systemd-units
  • systemd
  • user
  • tools
  • task
  • final-hook

--update

Refresh system package manager metadata first (apk: --update-cache, apt: apt-get update)

Subcommands

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