OEM mode installs the entire system but defers user creation to first boot, where the runtime's omarchy-oem-setup asks for the owner and lands them in the already-installed system — and the same machinery arms omarchy-reset-computer. The configurator's install-mode step gains an OEM choice, which required moving the user step after mode selection (OEM skips it entirely). Autoinstall rigs select OEM with an `oem` marker file on the cidata drive, which also replaces the user_credentials.json requirement. In the orchestrator, OEM swaps the user phases for a stage_oem_state phase: it stashes the bundled Node tarball (every install, for offline factory resets), arms omarchy-oem-setup.service in the target, and on encrypted installs stages the throwaway LUKS passphrase — generated by InstallContext when the input carries none — with a keyfile embedded in the UKI so boot auto-unlocks until first-boot setup re-keys to the owner's password. The install fails with a clear error if the bundled runtime lacks OEM support. Every install now also ends with a read-only @factory snapshot of @ at the btrfs top level — outside snapper's reach — which is what makes omarchy-reset-computer a true factory reset. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
1.3 KiB
Bash
Executable File
28 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Live-ISO entry point for the Omarchy install orchestrator. Invoked from
|
|
# /root/.automated_script.sh after the configurator wizard has produced its
|
|
# user_*.json / user_*.txt files. The outer shim owns install logging.
|
|
|
|
set -eEo pipefail
|
|
|
|
# Parse our args; convert to env vars before exec'ing Python so archinstall's
|
|
# own argparse (which runs at module import time inside the orchestrator)
|
|
# doesn't choke on flags it doesn't recognize.
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--config) export OMARCHY_INSTALL_CONFIG="$2"; shift 2 ;;
|
|
--creds) export OMARCHY_INSTALL_CREDS="$2"; shift 2 ;;
|
|
--full-name-file) export OMARCHY_INSTALL_FULL_NAME_FILE="$2"; shift 2 ;;
|
|
--email-file) export OMARCHY_INSTALL_EMAIL_FILE="$2"; shift 2 ;;
|
|
--encrypt-file) export OMARCHY_INSTALL_ENCRYPT_FILE="$2"; shift 2 ;;
|
|
--authorized-keys-file) export OMARCHY_INSTALL_AUTHORIZED_KEYS_FILE="$2"; shift 2 ;;
|
|
--tailscale-authkey-file) export OMARCHY_INSTALL_TAILSCALE_AUTHKEY_FILE="$2"; shift 2 ;;
|
|
--oem-file) export OMARCHY_INSTALL_OEM_FILE="$2"; shift 2 ;;
|
|
*) echo "omarchy-iso-install: unknown arg $1" >&2; exit 2 ;;
|
|
esac
|
|
done
|
|
|
|
cd /usr/share/omarchy-iso
|
|
exec python -m orchestrator.main
|