Commit Graph
37 Commits
Author SHA1 Message Date
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 38f56103e1 builder: add debug install instrumentation 2026-05-23 12:45:12 -04:00
Ryan Hughes 8dad5a7436 omarchy-iso-make: lint that executable airootfs files have file_permissions entries 2026-05-21 18:44:09 -04:00
Ryan Hughes 874e6cd24d Cache ISO mirror by channel instead of by date
The previous per-day cache (iso_YYYY-MM-DD) forced a fresh ~6GB download
on the first build of every day. Different channels (stable/edge/rc)
HAVE different package sets and shouldn't share a cache, but different
DAYS within a channel don't, so keying by channel gives us a stable
cache that persists indefinitely.

omarchy* packages always rebuild fresh inside the container regardless:
build-omarchy-packages.sh nukes /tmp/omarchy-pkg-build at the start
and the final mv overwrites the cached .pkg.tar.zst (pkgver is constant).
--no-cache still bypasses the mount entirely for a clean-slate run.
2026-05-20 23:43:37 -04:00
Ryan Hughes b34f53629d Validate --local-source paths before any sudo work
Also includes the build-iso.sh cleanup that I prepared earlier but
forgot to stage (replacing the inline ugly $(...) conditional pipe
with a normal if/then-fi block).
2026-05-20 21:36:31 -04:00
Ryan Hughes e427304f29 Make --local-source require explicit checkout paths
Dropped the sibling-dir convention ($BUILD_ROOT/../omarchy-installer
etc.). Callers now pass paths explicitly:

  omarchy-iso-make --local-source <installer-checkout> <pkgs-checkout>

Errors clearly if either path is missing or doesn't exist.
2026-05-20 21:35:46 -04:00
Ryan Hughes b8df9d3f50 Make --local-source the opt-in; default to network omarchy mirror
The previous version made the local build the only path. Convention is
the opposite: omarchy-iso-make pulls released omarchy* packages from
the omacom-pkgs.org mirror by default, and only builds from local
checkouts when explicitly asked via --local-source.

- bin/omarchy-iso-make: only mount /omarchy-installer + /omarchy-pkgs
  when --local-source is set. Default has neither mount.
- builder/build-iso.sh: skip build-omarchy-packages.sh when no local
  source. Don't filter the omarchy* names out of the pacman -Syw list
  in network mode (so they get downloaded from the mirror). With
  --local-source, the four package names are stripped after assembly
  so we don't re-fetch what we just built.
- For the package-list source: with /omarchy-installer mounted, read
  omarchy-base.packages from the checkout. Without it, briefly pull
  the published omarchy package, extract the .packages files from it
  to /tmp, and use those.
2026-05-20 21:34:49 -04:00
Ryan Hughes 9f4e5feef0 Refactor ISO build for the package-backed install flow
The ISO no longer carries a cp -r'd copy of the omarchy git checkout
into /root/omarchy and the target /home/$user/.local/share/omarchy.
Instead it builds omarchy-installer + omarchy-settings + omarchy +
omarchy-limine from mounted source trees (${OMARCHY_INSTALLER_PATH:-
../omarchy-installer} and ${OMARCHY_PKGS_PATH:-../omarchy-pkgs}),
drops them in the offline mirror, and pacstraps omarchy-installer
during the target install — which deps-in the other three.

- builder/build-omarchy-packages.sh: new. Builds the four packages
  inside the ISO build container using each PKGBUILD's OMARCHY_SRC
  override (introduced in Chunk 2). Creates a 'builder' user because
  makepkg refuses to run as root. Drops the resulting .pkg.tar.zst
  files into the offline-mirror directory.

- builder/build-iso.sh: drop the git clone / -v omarchy mount path;
  call build-omarchy-packages.sh first; filter out the locally-built
  package names from the rest-of-mirror download so we don't try to
  fetch them from the network mirror.

- configs/airootfs/root/.automated_script.sh: replace the install_omarchy
  cp-and-source dance with 'arch-chroot pacman -S omarchy-installer'
  followed by 'OMARCHY_INSTALL_MODE=offline omarchy-install'. Drop the
  big chown/chmod block that was setting up the cloned tree.
  use_omarchy_helpers extracts the installer's helpers/ tree directly
  from the offline-mirror's omarchy-installer-*.pkg.tar.zst so the live
  ISO has access to gum-styled logging before pacstrap.

- bin/omarchy-iso-make: always mount omarchy-installer and omarchy-pkgs
  (paths configurable via OMARCHY_INSTALLER_PATH / OMARCHY_PKGS_PATH;
  default to ../omarchy-installer and ../omarchy-pkgs). --local-source
  is now a back-compat no-op.
2026-05-20 21:29:40 -04:00
David Heinemeier Hansson ed4536cab4 Need to clear out old packages even just on regular make 2026-04-16 22:35:39 +02:00
David Heinemeier Hansson 72b7a1f245 Simplify the options here 2026-02-18 18:58:59 +01:00
David Heinemeier Hansson 5ba771dc1b Prepare for making RC ISOs 2026-02-04 18:17:10 +01:00
David Heinemeier Hansson a202c81a0c Allow ISOs to be build against the edge mirror/package repository 2026-01-05 15:31:30 +01:00
David Heinemeier Hansson 872c8fb03f Allow building the ISO from local source and replace dev build binstub with --dev 2025-11-11 08:47:04 +01:00
Ryan Hughes 8f844655b7 Fix ownership issues 2025-10-08 20:42:06 -04:00
David Heinemeier Hansson 27c64f7a72 No longer relevant 2025-09-13 20:59:19 +02:00
David Heinemeier Hansson 89063e4fee Shorter 2025-09-13 19:12:12 +02:00
David Heinemeier Hansson d9d8dc50c6 No longer used 2025-09-13 19:10:38 +02:00
David Heinemeier Hansson 045db5b028 Inline the configurator 2025-09-13 18:39:45 +02:00
David Heinemeier Hansson 2427a177f5 Yank out the online builder option
Offline is the way
2025-09-13 18:23:31 +02:00
Ryan Hughes 657011cc20 Unify builds 2025-09-12 00:48:58 -04:00
Ryan HughesandDavid Heinemeier Hansson f4b6222c1c Preserve firmware with reuse + use local pacman cache if you have it (#28)
* Keep firmware vars too if we run as reuse

* Leverage local cache for faster builds if we have it

* Convenience

* Also set the URL

* Normally do want boot

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-30 08:37:37 +02:00
David Heinemeier Hansson a58c65a241 Streamline process for pushing both master and dev ISOs 2025-08-28 10:24:37 +02:00
David Heinemeier Hansson 5d2ef89e3a Make it possible to change the installer URL 2025-08-28 08:57:45 +02:00
David Heinemeier Hansson 58c5c3d820 Need the script name 2025-08-27 12:05:31 +02:00
David Heinemeier Hansson 720c2ba5c9 Leave this out for now 2025-08-27 12:04:15 +02:00
David Heinemeier Hansson 67a980f77e Bare is dead 2025-08-25 14:23:38 +02:00
Ryan Hughes 35bd1df498 Add support for variable repo and refs (#23)
* Add ability to define repo / refs to use

* Add bare mode
2025-08-23 08:52:00 +02:00
David Heinemeier Hansson ef2a295852 Separate 2025-08-20 13:48:36 +02:00
David Heinemeier Hansson 4565d89fea Fix latest_iso finder 2025-08-20 13:38:15 +02:00
David Heinemeier Hansson 06ac075d24 Offer to boot newly built ISO 2025-08-20 13:29:42 +02:00
David Heinemeier Hansson 4f206eb599 Move all files under the builder 2025-08-20 11:44:24 +02:00
David Heinemeier Hansson cb078cc13a Clean up the online installer 2025-08-20 09:37:18 +02:00
David Heinemeier Hansson ea379f526f Run with scissors 2025-08-19 10:24:35 +02:00
David Heinemeier Hansson 217f84de33 Add option to build online ISO (#6)
* We will use iwctl directly

* Make it possible to tweak build script

* Allow the toggling

* Add online iso build option

* Formatting
2025-08-19 10:21:44 +02:00
David Heinemeier Hansson c37e893f1e Update to latest 2025-08-18 17:33:04 +02:00
David Heinemeier Hansson 25f7614189 Include pulling 2025-08-15 09:43:16 +02:00
David Heinemeier Hansson 0b28dee781 Add bin to make the iso 2025-08-14 09:59:29 +02:00