<!-- @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`](https://github.com/jdx/mise/blob/main/src/cli/bootstrap.rs)

Set up a machine for the current config in one command

Runs the bootstrap steps for the current config in order:

0. `mise bootstrap accounts apply` — converge `[bootstrap.users]` and
   `[bootstrap.groups]` (Linux)
1. `mise bootstrap plugins apply` — install `[bootstrap.plugins]`
   1.7. `[bootstrap.hooks.pre-packages]` — optional setup hook
2. Install built-in-manager entries from `[bootstrap.packages]`
3. `mise bootstrap files apply` — converge `[bootstrap.files]` and
   `[bootstrap.directories]`
4. `mise bootstrap services apply` — converge `[bootstrap.services]`
   systemd system services (Linux)
5. `mise bootstrap firewall apply` — converge `[bootstrap.linux.firewall]`
   host firewall policy and rules (Linux)
6. `mise bootstrap compose apply` — converge `[bootstrap.compose]`
   Docker Compose projects
7. `mise bootstrap repos apply` — clone/converge `[bootstrap.repos]`
   surrounded by `pre-repos`/`post-repos` hooks
8. `mise bootstrap dotfiles apply` — apply dotfiles from `[dotfiles]`
   surrounded by `pre-dotfiles`/`post-dotfiles` hooks
9. `mise bootstrap mise-shell-activate apply` — configure shell activation
   from `[bootstrap.mise_shell_activate]`
10. `mise bootstrap macos defaults apply` — write
```
`[bootstrap.macos.defaults]` entries (macOS)
surrounded by `pre-defaults`/`post-defaults` hooks
```
11. `mise bootstrap macos launchd-agents apply` — install/load
```
`[bootstrap.macos.launchd.agents]`
```
12. `mise bootstrap linux systemd-units apply` — install/start
```
`[bootstrap.linux.systemd.units]`
```
13. `mise bootstrap user apply` — set `[bootstrap.user].login_shell`
```
(Unix)
surrounded by `pre-user`/`post-user` hooks
```
14. `mise install` — install missing tools from `[tools]`
```
surrounded by `pre-tools`/`post-tools` hooks; package-plugin entries
from `[bootstrap.packages]` install afterward, followed by
`[bootstrap.hooks.post-packages]`
```
15. `mise run bootstrap` — if a task named `bootstrap` is defined
16. `[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:**

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

### `--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`
- `shell`
- `macos-defaults`
- `defaults`
- `macos-launchd-agents`
- `launchd`
- `linux-systemd-units`
- `systemd`
- `user`
- `tools`
- `task`
- `final-hook`

### `--update`

Refresh package manager metadata and update configured repos
- [`mise bootstrap accounts <SUBCOMMAND>`](/cli/bootstrap/accounts.md)
- [`mise bootstrap compose <SUBCOMMAND>`](/cli/bootstrap/compose.md)
- [`mise bootstrap dotfiles <SUBCOMMAND>`](/cli/bootstrap/dotfiles.md)
- [`mise bootstrap files <SUBCOMMAND>`](/cli/bootstrap/files.md)
- [`mise bootstrap firewall <SUBCOMMAND>`](/cli/bootstrap/firewall.md)
- [`mise bootstrap linux <SUBCOMMAND>`](/cli/bootstrap/linux.md)
- [`mise bootstrap macos <SUBCOMMAND>`](/cli/bootstrap/macos.md)
- [`mise bootstrap mise-shell-activate <SUBCOMMAND>`](/cli/bootstrap/mise-shell-activate.md)
- [`mise bootstrap packages <SUBCOMMAND>`](/cli/bootstrap/packages.md)
- [`mise bootstrap plan [FLAGS]`](/cli/bootstrap/plan.md)
- [`mise bootstrap plugins <SUBCOMMAND>`](/cli/bootstrap/plugins.md)
- [`mise bootstrap remote [FLAGS] [TARGET]…`](/cli/bootstrap/remote.md)
- [`mise bootstrap repos <SUBCOMMAND>`](/cli/bootstrap/repos.md)
- [`mise bootstrap secrets <SUBCOMMAND>`](/cli/bootstrap/secrets.md)
- [`mise bootstrap services <SUBCOMMAND>`](/cli/bootstrap/services.md)
- [`mise bootstrap status [FLAGS]`](/cli/bootstrap/status.md)
- [`mise bootstrap user <SUBCOMMAND>`](/cli/bootstrap/user.md)

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
```
