Brings the first-login server setup back to fully working on a fresh install:
- OMATERM: call install-native.sh directly. omaterm.org/install is now an
interactive native/docker dispatcher that would stall the unattended
first-run; the native branch is what a headless Arch box wants. Verified the
closing `exec bash -l` and bundled AI agents (mise.packages) still hold.
- Rebrand the user-facing "OMATERM + Once" headline to "omalocal" (banner,
setup prompt, closing reboot message); body still names the installed tools.
- Fix tmux "can't use /dev/tty" on first login. OMATERM's installer closes with
`exec bash -l </dev/tty >/dev/tty 2>&1`; with fds on /dev/tty, tmux's client
ttyname is the literal "/dev/tty", which tmux's server_client_open refuses.
Strip that redirect from the downloaded installer and run it without
redirecting our stdin, so the closing shell inherits the login pts
(/dev/pts/N) — which tmux accepts. (script(1) did not work: OMATERM
re-redirects to /dev/tty after it.)
- Fix Once not installing. Once installs before OMATERM (which used to provide
Docker); Once requires Docker and can't install it on Arch (get.docker.com is
unsupported there). Provision Docker in base: pacstrap docker, enable
docker.service in the chroot, and add the install user to the docker group at
install time, so the first-run Once install finds a running daemon and
once/once-add need no sudo. OMATERM's later docker setup no-ops.
- gitignore dated build-*.log files.
Full chain confirmed working on a clean install: Welcome to omalocal -> Once
installs -> Omarchy-Send (optional) -> OMATERM -> lands in tmux.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
omaterm.org/install now installs the AI agents itself (node/opencode/
claude-code/codex/gemini are in its mise.packages) and its installer ends
with `exec bash -l`, which re-sources ~/.bash_profile.
- Remove our now-redundant "Install AI agents via mise" prompt and its
stale comment (omaterm provides them).
- Guard against the re-sourced .bash_profile re-firing the welcome: the
firstrun script removes itself up-front, so the one-shot stays one-shot.
- Reorder so OMATERM runs last (Once + Omarchy-Send first), since its
`exec bash -l` hijacks the shell and drops the user into their session.
- Update welcome banner + in-script docs to list the bundled AI agents
and the new ordering. Also gitignore build.log.
Verified: pty-backed logic harness (ordering, one-shot, no recursion) and
a full VM boot of the rebuilt ISO (welcome + Once-first + clean no-recursion
shell on omaterm's failure path).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Avoids the namespace collision with the official OMATERM toolkit
(omaterm.org). Renamed our own identity strings only; genuine
references to the OMATERM toolkit it bootstraps are left intact.
- script omaterm-iso.sh -> omalocal.sh; dir -> ~/Projects/omalocal
- output ISO omaterm-arch-*.iso -> omalocal-arch-*.iso (+ discovery glob)
- first-run mechanism: .omalocal-firstrun.sh, OMALOCAL_FIRSTRUN /
OMALOCAL_PROFILE_HOOK heredoc tags, comments
- embedded Claude skill omaterm-server -> omalocal-server
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
One-script builder that turns a stock Arch ISO into a headless,
key-only-SSH Arch server installer ISO that, on first login, offers
to bootstrap the OMATERM toolkit (omaterm.org) + Once.
- Header clarifies this is the ISO builder, not the OMATERM toolkit
itself (not affiliated with omaterm.org).
- First-run setup offers an opt-in AI-agents step
(mise use -g opencode claude-code codex gemini), since the
bare-metal omaterm.org installer does not include the agents.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>