CLI Reference¶
Command-line usage for Bootible bootstrap scripts and runners.
Bootstrap Commands¶
The one-liner commands that download and run Bootible. Both default to a dry run — nothing is changed until you run bootible.
Steam Deck¶
What it does:
- Downloads
deck.shfrom bootible.dev (with SHA256 integrity verification) - Clones the bootible repo to
~/bootible - Runs the configuration in check mode (dry run)
- Installs the
bootiblecommand for the real run
ROG Ally¶
What it does:
- Downloads
ally.ps1from bootible.dev (with SHA256 integrity verification; falls back to GitHub if bootible.dev is unavailable) - Clones the bootible repo to
%USERPROFILE%\bootible - Runs
Run.ps1in dry-run mode - Installs the
bootiblecommand for the real run
The bootible Command¶
After bootstrap, bootible is installed for easy re-runs. It is a thin wrapper around the platform runner — a real run by default (you already did the dry run via the one-liner).
Steam Deck¶
Location: /usr/local/bin/bootible
What it runs:
deck.sh takes no flags — it prompts for instance selection and runs the full Ansible playbook. For dry runs, re-run the curl one-liner; for tag-scoped runs, run ansible-playbook manually.
ROG Ally¶
Location: %LOCALAPPDATA%\Microsoft\WindowsApps\bootible.cmd (falls back to %USERPROFILE%\bootible\bootible.cmd, added to PATH)
What it runs:
It forwards all arguments to Run.ps1, so bootible accepts the same parameters:
ROG Ally: Run.ps1 Parameters¶
Run.ps1 accepts exactly three parameters:
| Parameter | Type | Description |
|---|---|---|
-ConfigFile <path> | string | Merge a specific config file on top of the defaults. When set (the bootstrap does this), the ~/.config local layer and private-repo instance selection are bypassed. |
-Tags <list> | string[] | Run only the listed modules. There is no skip flag — list what you want, or disable modules in config. |
-DryRun | switch | Preview changes without applying them. |
cd $env:USERPROFILE\bootible\config\rog-ally
# Dry run
.\Run.ps1 -DryRun
# Specific modules
.\Run.ps1 -Tags base,apps
# Specific config file
.\Run.ps1 -ConfigFile C:\path\to\config.yml
Available Tags¶
Tags are module names, executed in this fixed order:
| Tag | Description |
|---|---|
validate | Package validation (dry-run only) |
base | Hostname, network, winget, directory scaffolding |
apps | Desktop applications |
gaming | Game platforms |
streaming | Streaming clients |
remote_access | VPN, remote desktop, RDP |
ssh | OpenSSH configuration |
emulation | EmuDeck |
rog_ally | Device-specific tools |
optimization | Gaming tweaks |
power | Sleep/hibernate, power button, CPU boost |
display | HDR toggle, refresh rate |
debloat | Privacy settings |
health | Post-install health checks |
Examples:
# Only base and gaming
.\Run.ps1 -Tags base,gaming
# Dry run the display module
.\Run.ps1 -Tags display -DryRun
Steam Deck: Running Ansible Manually¶
The Steam Deck uses Ansible under the hood. The bootible wrapper doesn't accept flags, but you can run the playbook directly for tag-scoped or verbose runs:
cd ~/bootible/config/steamdeck
# Basic
ansible-playbook playbook.yml --ask-become-pass
# With private config
ansible-playbook playbook.yml --ask-become-pass \
-e @../../private/device/steamdeck/MySteamDeck/config.yml \
-e device_instance=MySteamDeck
# Check mode (dry run)
ansible-playbook playbook.yml --check --ask-become-pass
# Only specific tags
ansible-playbook playbook.yml --tags ssh,tailscale --ask-become-pass
# Skip specific tags
ansible-playbook playbook.yml --skip-tags decky --ask-become-pass
Available Tags¶
| Tag(s) | Description |
|---|---|
always | Always runs (pre-tasks, post-tasks) |
base | Base setup (Flathub, hostname) |
apps, flatpak | Flatpak applications |
ssh, remote | SSH configuration |
tailscale, remote, vpn | Tailscale VPN |
remote_desktop, remote, streaming | Sunshine/remote desktop |
decky, plugins, gaming | Decky Loader |
proton, gaming, wine | Proton tools |
emulation, roms, gaming | EmuDeck |
stickdeck, controller, gaming | StickDeck |
waydroid, android | Waydroid |
distrobox, containers, password_manager | Distrobox apps |
Reference¶
Environment Variables¶
| Variable | Description |
|---|---|
BOOTIBLE_RUN | 1 = real run. Unset/0 = dry run (the curl one-liner default). The bootible wrapper sets this for you. |
deck.sh also accepts a single positional argument: the private repo URL.
| Variable | Description |
|---|---|
BOOTIBLE_PRIVATE | Private repo URL to clone (skips the interactive prompt) |
BOOTIBLE_RUN | 1 = real run. Unset = dry run (the irm one-liner default). |
BOOTIBLE_DIRECT | Internal — marks the re-launched-from-saved-file process (fixes piped-stdin and git credential manager issues); don't set manually |
BOOTIBLE_TRANSCRIPT | Internal — transcript path handoff between ally.ps1 and Run.ps1 |
Exit Behavior¶
A non-zero exit code means the run failed. Run.ps1 exits 1 on setup failures (not Windows, not Administrator, winget unavailable, no package sources, YAML parser missing, or config validation errors). There is no extended exit-code table.
Logging¶
Transcript logs are committed to your private repo per instance:
Transcript logs are automatically pushed to your private repo after each run.