Commit Graph
429 Commits
Author SHA1 Message Date
David Heinemeier HanssonandClaude Fable 5 01a5203009 Pick the test ISO like omarchy-iso-boot does
Offer the same gum chooser over release/*.iso when no ISO is passed,
and fail plainly when there is no existing ISO to test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 09:47:46 -07:00
David Heinemeier Hansson a72a109e7a Add fallback mirror for arch-mact2 2026-07-22 09:46:08 -07:00
David Heinemeier HanssonandClaude Fable 5 3c98b0e10c Add omarchy-iso-test acceptance harness
Installs an ISO into a headless QEMU VM by driving the real interactive
install flow: each screen is read via QMP screendumps + OCR and answered
with virtual keystrokes, so the configurator wizard, install dashboard,
reboot prompt, and SDDM login are exercised exactly as a user would.
SSH access is bootstrapped by logging into a console TTY, the installed
disk is snapshotted for fast reruns, and a throwaway overlay then runs
the omarchy repo's in-guest acceptance suite over SSH.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 18:29:49 -07:00
David Heinemeier Hansson 9d4b155e22 Language tweaks 2026-07-19 21:04:27 -07:00
David Heinemeier HanssonandClaude Fable 5 04aafcb781 Retry the partition commit when udev holds the disk
Full-disk installs flaked with "Partition(s) 1, 2 on /dev/vda have been
written, but we have been unable to inform the kernel of the change":
archinstall's disk wipe and parted's own partition registrations fire
udev probes, and when one is still holding the disk mid-commit, the
BLKPG sync fails and the install halts. The table is written correctly
when this happens — only the kernel's view is stale — so settle udev
before partitioning and redo the filesystem operations (wipe, partition,
format) when parted throws exactly this error. Recoveries are logged so
they show up in the support log.

Reproduced headlessly by booting the ISO on a serial console and driving
the real installer: stock failed 1 in 5 full-disk cycles at this exact
phase, with an audit watch confirming nothing else writes the disk. With
the fix, 13 of 13 cycles got cleanly through partitioning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:58:39 -07:00
David Heinemeier Hansson c3f9743847 Don't like the first one 2026-07-18 18:27:10 -07:00
David Heinemeier HanssonandClaude Fable 5 434db24b81 Keep the installer centered when console geometry shifts
Remeasure the terminal at every screen redraw instead of once at boot:
the framebuffer can settle after the configurator starts (VM windows
especially), which left stale padding for the whole flow. Pad the
confirm-screen warnings with say so every line shares the same left
edge. Boot the test VM with SDL instead of GTK, whose GL display path
crops the guest framebuffer on HiDPI Wayland desktops.

Verified in a live VM by driving the whole flow over QMP and reading
each screen back from /dev/vcs1: all screens center on the real console
width.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 16:41:23 -07:00
David Heinemeier HanssonandClaude Fable 5 969d461eb9 Parse the free-space fields with a single read
Three echo-through-awk substitutions to split one line into three
variables is what read was made for.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 10:55:49 -07:00
David Heinemeier HanssonandClaude Fable 5 4583a0e5e6 Extract the helpers shared by both install paths
The free-space and full-disk paths each carried verbatim copies of the
T2 Mac kernel detection, the credentials JSON heredoc, the identity/
encryption answer files, the dry-run print-and-cleanup block, and the
udev settle loops. Pull those into detect_kernel, write_user_files,
print_dry_run_files, and wait_for_device, which also removes a subtle
rm vs rm -f drift between the two dry-run cleanups.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 10:55:32 -07:00
David Heinemeier HanssonandClaude Fable 5 f79578f2db Remove the dead shared-ESP path from the free-space install
We decided Omarchy always creates its own dedicated ESP and never adopts
a Windows one, so shared_esp was declared empty and never assigned —
every conditional on it was guaranteed to take the dedicated-ESP branch.
Collapse the whole dual-path structure into straight-line code and keep
detect_windows_esp only for the "leaving it untouched" message.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 10:54:38 -07:00
David Heinemeier HanssonandClaude Fable 5 4e3e82922d Trust that tzupdate is on the ISO
build-iso.sh bakes tzupdate into the live environment, so the runtime
pacman fallback was dead there — and in a dry run on a dev machine it
would install a package as a side effect. tzupdate -p already fails
gracefully into the manual timezone filter when the tool is missing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 10:53:57 -07:00
David Heinemeier HanssonandClaude Fable 5 59ffc3321e Simplify the configurator preamble
Drop the dead LOGO_PATH override, the redundant package-targets sourcing,
the unused TERM_HEIGHT and OMARCHY_NVIM_PACKAGE, the non-gum exports, and
the logo fallback branches. Trust that logo.txt is where OMARCHY_PATH says.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 10:40:33 -07:00
David Heinemeier Hansson 1463936de3 Simplify the free-space install selection 2026-07-16 14:41:18 -07:00
David Heinemeier Hansson f6775344f6 Offer easy way to test partitioned install 2026-07-16 09:48:21 -07:00
David Heinemeier Hansson 49dcd808aa Whimsy tweaks 2026-07-15 18:07:07 -07:00
David Heinemeier Hansson c2a58526f4 Replace installer preview Python with jq 2026-07-15 18:05:29 -07:00
David Heinemeier HanssonandClaude Fable 5 a5e605af4c Replace dashboard Python heredocs with jq + bash
The install dashboard shelled out to a full Python interpreter to read
four keys from the installer state JSON — including inside the render
loop, twice a second. jq is already on the ISO and does the same job
with plain bash arithmetic for the phase-weight interpolation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 17:52:47 -07:00
David Heinemeier Hansson 8c1e143686 Hand write the whimsy 2026-07-15 17:40:24 -07:00
David Heinemeier Hansson 4ad8a22abe We don't need more than 8 cores for this 2026-07-15 17:35:37 -07:00
David Heinemeier Hansson 764a65f7ee Bring back gl acceleration 2026-07-15 17:35:19 -07:00
David Heinemeier Hansson c167bf9c1d Cleanup the look 2026-07-14 18:09:48 -07:00
David Heinemeier Hansson f87b08bba7 Merge branch 'main' into omarchy-4 2026-07-14 17:13:26 -07:00
David Heinemeier Hansson 588973b0cd Only offer a choice of installing alongside existing data if it's actually possible 2026-07-14 17:05:45 -07:00
David Heinemeier Hansson c77a7b555b Drop the tool offering during this initial install 2026-07-14 17:03:06 -07:00
David Heinemeier Hansson 08b7460900 Explain purpose 2026-07-14 16:53:10 -07:00
David Heinemeier Hansson 341bb84093 Use same naming as omarchy-iso-configurator 2026-07-14 16:53:06 -07:00
David Heinemeier Hansson c303a9f746 More aesthetic tweaks 2026-07-13 17:06:43 -07:00
David Heinemeier Hansson abbd9eda34 Read signing key from 1pw 2026-07-13 16:06:41 -07:00
David Heinemeier Hansson c8a0072403 Tweak the installer aesthetics 2026-07-13 15:55:08 -07:00
David Heinemeier Hansson ff6c9582ca Use the real flow during simulation so they don't drift 2026-07-13 14:44:42 -07:00
David Heinemeier Hansson 94c779d028 Fix QEMU display startup 2026-07-13 11:17:34 -07:00
David Heinemeier Hansson d44bbc5e5f Fix archinstall 4.4 compatibility 2026-07-12 18:43:51 -07:00
David Heinemeier Hansson d51a280636 Let's go quattro 2026-07-12 18:31:10 -07:00
David Heinemeier Hansson eadb117560 Add --quattro as an option for iso creation 2026-07-12 17:59:13 -07:00
David Heinemeier Hansson 2ed796535d Ensure we aren't sharing mirror caches between channels 2026-07-12 17:04:05 -07:00
David Heinemeier Hansson 7e830d6a28 Fix ISO boot finalization
Archinstall unmounts the ESP before the Omarchy finalizer runs, leaving /boot empty in the target chroot. Mount it so Limine setup can access the generated configuration and EFI artifacts.

The installed ESP uses root-only masks while finalization runs as the target user. Mount it temporarily with fmask=0022,dmask=0022 and verify the target user can traverse /boot; the installed fstab remains unchanged.

Remove the fallback shell from the installer invocation so finalizer errors propagate instead of reporting a completed installation and rebooting a partially configured system.
2026-07-12 16:26:55 -07:00
Ryan Hughes 8c77631f68 Delegate Snapper setup to Omarchy packages 2026-06-21 02:29:09 -04:00
Ryan Hughes 58221e5ed6 Fix bootstrap pacman database setup 2026-06-08 19:25:25 -04:00
Ryan Hughes b1c09fa1a8 Use dev Omarchy packages in dev ISO builds 2026-06-08 12:53:01 -04:00
Ryan Hughes ef3b0e4b61 Always create our own ESP 2026-05-30 01:38:24 -04:00
Ryan Hughes b280cbcc42 Patch t2 mirror for now 2026-05-27 23:06:03 -04:00
Ryan Hughes ce9e648ade Drop omarchy-limine package; settings now ships limine configs
Pairs with omarchy-pkgs' fold of omarchy-limine into omarchy-settings.

Changes:
- EARLY_BOOTSTRAP_PACKAGES in phases_impl.py drops omarchy-limine.
  The limine configs it shipped (mkinitcpio hooks, entry-tool drop-ins,
  snapper template, default/limine/, default/snapper/) now come with
  omarchy-settings, which is already in the early bootstrap.
- builder/build-iso.sh's offline-mirror seed list and post-mirror filter
  no longer reference omarchy-limine.
- builder/build-omarchy-packages.sh's build queue drops omarchy-limine.
- Test manifests (fresh-4.json, fresh-4-semantic.json) no longer expect
  omarchy-limine in the installed-packages list. The /etc/pacman.d/hooks/
  99-omarchy-limine.hook entry stays — that hook file is generated by the
  orchestrator regardless, and the filename is descriptive, not tied to
  the package name.
2026-05-27 19:09:05 -04:00
Ryan Hughes 239c8e7f64 Use omarchy-finalize-user in target chroot setup
Pairs with omarchy-installer's rename of bin/omarchy-setup-user to
bin/omarchy-finalize-user. The orchestrator now invokes
omarchy-finalize-user --force --first-install in the run_chroot_finalizer
phase, and the phase-ordering docstring is updated to match.
2026-05-27 19:05:38 -04:00
Ryan Hughes afa8293b2b Improve ISO installer flow and VM tooling 2026-05-25 19:54:12 -04:00
Ryan Hughes c50d0bc299 Unify ISO install orchestration
Drive installs through the common ISO pipeline, carry install intent in configurator JSON, and finalize Limine boot setup from the ISO.
2026-05-25 12:50:31 -04:00
Ryan Hughes 660edcb3af installer: defer boot hooks during pacstrap 2026-05-23 14:39:52 -04:00
Ryan Hughes 3a51e875b6 installer: move hibernation into orchestrator 2026-05-23 14:05:15 -04:00
Ryan Hughes c7b8d4b584 builder: prune stale offline package versions 2026-05-23 13:08:15 -04:00
Ryan Hughes 38f56103e1 builder: add debug install instrumentation 2026-05-23 12:45:12 -04:00
Ryan Hughes b16303f294 installer: always clean up finalizer log bind 2026-05-23 10:30:53 -04:00