Back to Mise

`mise bootstrap`

docs/cli/bootstrap.md

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

mise bootstrap

  • Usage: mise bootstrap [FLAGS] [SUBCOMMAND]
  • Aliases: bs
  • Effect: destructive — may delete or irreversibly overwrite
  • Source code: src/cli/bootstrap.rs

Set up a machine from the current configuration

Runs these phases in order, when configured and selected:

  1. Linux accounts, then package-manager plugins.
  2. The pre-packages hook, then packages handled by built-in managers.
  3. Privileged files/directories, system and user services, firewall, and Compose projects.
  4. Git repositories, then dotfiles, each with its pre/post hooks.
  5. Shell activation, macOS defaults and LaunchAgents, Linux user units, and user settings.
  6. The pre-tools hook, versioned tools, and post-tools hook.
  7. Package-plugin packages, then the post-packages hook and services requiring tools.
  8. The bootstrap task, when defined, then the final hook.

Defaults and user settings also have pre/post hooks. See https://mise.jdx.dev/bootstrap.html for the complete phase order and configuration. Unchanged resource state is skipped, but hooks and the bootstrap task can run again; make those commands safe to repeat. Dotfile templates may execute while checking state.

Use --dry-run to preview the selected workflow, bootstrap status to inspect state, or bootstrap plan for the declarative-resource plan. --only and --skip accept repeated or comma-separated parts and cannot be combined.

Flags

  • --from <GIT_URL> — Clone a git repository and bootstrap from its configuration

  • --from-git <GIT_URL> — Clone a git repository into the global mise config directory and bootstrap

  • --from-dir <DIR> — Directory used for the repository cloned by --from

  • -n --dry-run — Print what would happen without installing anything

  • -y --yes — Skip confirmation prompts

  • --skip-dirty — Skip configured repos with local changes instead of failing

  • --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: plugins, packages, accounts, files, services, firewall, compose, repos, dotfiles, mise-shell-activate, macos-defaults, macos-launchd-agents, linux-systemd-units, user, tools, task, final-hook, shell, defaults, launchd, systemd

  • --prompt-secrets — Prompt securely for missing bootstrap secret inputs

  • --skip <SKIP> — Skip one or more bootstrap parts

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

    Choices: plugins, packages, accounts, files, services, firewall, compose, repos, dotfiles, mise-shell-activate, macos-defaults, macos-launchd-agents, linux-systemd-units, user, tools, task, final-hook, shell, defaults, launchd, systemd

  • --update — Refresh package manager metadata and update configured repos

  • -h --help — Print help

Examples

mise bootstrap                    # packages + repos + dotfiles + tools + bootstrap task
mise -E work bootstrap --from [email protected]:example/dotfiles.git --yes
mise bootstrap --from-git [email protected]:example/mise-config.git --yes
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

Subcommands

<!-- generated reference navigation -->