Disk & Account Setup
The installer is a plain Python TUI (python-textual) with disk, account, and locale setup on one screen, before handing off to archinstall.
The TUI is one screen. A bordered Steps list on the left holds one entry per step, and the selected step's form appears on the right, with a status line below saying what, if anything, still needs fixing. The steps are:
- Network: only shown when the machine has no connectivity at startup; see Network Step
- Disk: wipes and partitions the entire target disk by default, or installs into existing free space instead for dual-boot alongside another OS; also the optional LUKS encryption toggle and passphrase. On a T2 Mac, each partition you made in macOS is also offered as a target to replace
- Account: hostname, username, and password (entered twice). Hostnames are lowercase letters, digits, and inner hyphens; usernames start with a lowercase letter or underscore. This account is the only login, since root is locked
- Locale: keyboard layout, system language, timezone, and mirror regions (pick any number, or none to keep the live ISO's speed-ranked mirrors)
- Options: rescue media, the optional SSH toggle, and an optional git name and email; see SSH & Git Options
- Software: optional software profiles
- Install: a summary of every choice, then Save configuration and Install now; see What the Install Does
Each step shows a mark in the list: a check once it's filled in, an exclamation mark while it needs attention, and a dim dot for the Network step until you have connected. Nothing is written to disk until you confirm on the Install step.
Keys
- Up/Down move between steps; Enter or Tab moves into the step's form, and Esc returns to the Steps list
- Ctrl+N / Ctrl+P jump to the next or previous step
- Ctrl+Q quits
Running it without installing
The installer runs the same way on an ordinary dev machine as it does on the live ISO, which is what makes iterating on it possible without a VM or spare disk:
python3 installer/tui/__main__.py --dry-runor, with no setup at all, via uv:
uv run installer/tui/__main__.py --dry-run--dry-run lets you fill in every step and generates the resulting archinstall configuration, but the Install step only offers saving it, never installing. Without the flag, "Install now" is also offered, but only when running as root, since partitioning a real disk needs it. Choosing it lists the partitions that will be destroyed (or says existing partitions are left alone, for a free-space install) and asks you to type the disk's name, such as nvme0n1, to confirm. Either way, "Save configuration" writes base.json and credentials.json to --output-dir (default: /root/sobarch-install as root, ./sobarch-install-output otherwise) so you can inspect the generated config. credentials.json contains your password hash and any disk encryption passphrase, so it is readable by root only.