Commit Graph
317 Commits
Author SHA1 Message Date
Ryan Hughes f8010a355a Rebuild offline repo db from scratch each run
repo-add --new skips updating entries that are already in the db, so when
the omarchy-* packages are rebuilt in place (new content, same filename,
because pkgver is constant) the persistent cache's offline.db.tar.gz
kept the OLD size/checksum entries. Pacman then read the stale db size
and rejected the new file with 'Exceeded the maximum allowed file size'.

Delete the db files and let repo-add regenerate them fresh — slower but
deterministic, and 'offline.db.tar.gz' is small to rebuild even for the
full ~600 package set.
2026-05-21 00:28:32 -04:00
Ryan Hughes ca2b58fa4d Install omarchy-installer + omarchy-settings into the live ISO
Two motivations:

1. Plymouth: the omarchy plymouth theme + /etc/plymouth/plymouthd.conf
   ship from omarchy-settings (theme at /usr/share/plymouth/themes/omarchy,
   plymouthd.conf via the package's post_install etc-overrides hook).
   Without omarchy-settings on the live ISO, mkarchiso builds the initrd
   with plymouth pointing at the default theme instead of Omarchy's. Now
   it picks up the Omarchy theme on boot like the installed system does.

2. Drops the .pkg.tar.zst extraction hack in .automated_script.sh:
   OMARCHY_PATH=/usr/share/omarchy is the real package install path, so
   use_omarchy_helpers no longer needs to bsdtar pieces out of the
   offline mirror into /tmp/omarchy-iso.
2026-05-21 00:13:05 -04:00
Ryan Hughes 53bc2550f9 .automated_script.sh: seed user home from /etc/skel after archinstall
archinstall creates the user from user_credentials.json BEFORE installing
the 'additional packages' list, so when omarchy-settings populates
/etc/skel/.config/... later in the pacstrap, the user's home has already
been created from an empty skel and missed the seed (user boots into a
terminal with no Hyprland configs).

Copy /etc/skel into /home/$OMARCHY_USER after archinstall finishes (by
which point omarchy-settings has populated skel) and chown to the user.
cp -rT keeps it idempotent: existing files get overwritten, dirs merge.
2026-05-21 00:08:33 -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 cf9f2745f3 .automated_script.sh: arch-chroot pacman -S omarchy-base.packages after pacstrap
omarchy's hard depends are now just the bricking set, not the full default
install. After archinstall pacstraps the meta packages (which populates
/etc/skel before user creation), install the rest of omarchy-base.packages
in the chroot before running omarchy-install.
2026-05-20 23:10:30 -04:00
Ryan Hughes 01b932023a configurator: pacstrap omarchy + omarchy-installer (not just installer)
With the cleaner dep graph, omarchy-installer no longer transitively
pulls omarchy + omarchy-settings + omarchy-limine. Pacstrap both
explicitly so /etc/skel (via omarchy -> omarchy-settings) is populated
before archinstall creates the user.
2026-05-20 22:27:38 -04:00
Ryan Hughes a4f5c1bf14 Pacstrap omarchy-installer via archinstall so /etc/skel is set up first
archinstall creates the user AFTER pacstrap. If omarchy-settings (which
ships /etc/skel/.config/**) isn't pacstrap'd, the user is created with
an empty skel and never gets the Omarchy default configs in their HOME.

Add omarchy-installer to the configurator's archinstall package list
(its depends pull omarchy + omarchy-settings + omarchy-limine), so all
the package files are in place before the user is created.

install_omarchy no longer needs the explicit 'pacman -S omarchy-installer'
step; it just runs 'omarchy-install' which is already at /usr/bin/.
2026-05-20 22:18:14 -04:00
Ryan Hughes 8982984f40 .automated_script.sh: also extract omarchy-settings into the helpers tree
presentation.sh reads $OMARCHY_PATH/logo.txt to compute LOGO_WIDTH and
LOGO_HEIGHT, which then drive max_line_width in logging.sh / errors.sh.
We were only extracting omarchy-installer into /tmp/, so logo.txt was
missing, LOGO_WIDTH=0, max_line_width=-4, and bash's substring expression
errored with 'substring expression < 0'.

Extract from omarchy-settings into the same /tmp tree so all the
presentation/logging helpers find what they expect. Renamed the dir
from omarchy-installer-iso to plain omarchy-iso since it now blends
content from two packages.
2026-05-20 22:16:34 -04:00
Ryan Hughes a74d20f8fb build-omarchy-packages.sh: pass --nodeps to makepkg
We're not installing the deps in the build container — just producing
.pkg.tar.zst files that pacman will resolve against the offline mirror
on the target. Installing limine-mkinitcpio-hook into the build
container also fires its pacman hook that errors about a missing ESP.
2026-05-20 21:42:22 -04:00
Ryan Hughes 1224531ce1 Add the [omarchy] repo to the build container's pacman.conf
makepkg in build-omarchy-packages.sh installs runtime build deps via
pacman, which uses the container's /etc/pacman.conf. That config only
had core/extra/multilib by default, so deps that live in the omarchy
repo (limine-snapper-sync, limine-mkinitcpio-hook) failed to resolve.

Append the [omarchy] block from the channel-specific online config to
/etc/pacman.conf right after omarchy-keyring is installed.
2026-05-20 21:39:58 -04:00
Ryan Hughes 8b0fd93011 chown the package build dir to the builder user
makepkg runs as the builder user and needs to write PKGDEST. /tmp/omarchy-pkg-build
is created by root, so without an explicit chown the build aborts with
'You do not have write permission for the directory $PKGDEST'.
2026-05-20 21:38:09 -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 023cd14f2a No beeps 2026-05-10 14:22:50 +02:00
David Heinemeier Hansson 80042969ed Add missing snapper 2026-05-07 14:51:48 +02:00
David Heinemeier Hansson 6c00d03272 Do a more thorough job at scrubbing the install disk
So we don't fail on past installations of linux
2026-05-07 14:26:59 +02:00
David Heinemeier Hansson 5925634c74 More reliable +x of everything for waybar 2026-05-07 14:07:34 +02:00
David Heinemeier Hansson eb9112ae45 Allow all valid hostnames
Closes #69
2026-05-07 12:49:33 +02:00
Daniel Main 5297020040 Add Colemak keyboard layout option (#49) 2026-05-07 12:47:20 +02:00
David Heinemeier Hansson 01f393f10d Install without encryption (#79)
* Configurator tester

* Make it a dry run

* Offer a no-encryption install mode

* Fix SDDM login

* Simplify the flow by using ctrl-c to toggle into unencrypted mode
2026-05-07 12:03:11 +02:00
David Heinemeier Hansson 7b42d8011e Preload the signing key 2026-05-01 19:32:06 +02:00
David Heinemeier Hansson 2d8ed3d1c3 More plans 2026-04-30 13:51:08 +02:00
David Heinemeier Hansson 7a8d9708e3 Fix disk selection 2026-04-28 12:17:14 +02:00
Michael Placzek eadb1c05d4 Exclude install media from disk picker (#73)
* Exclude install media from disk picker

* Document boot-disk exclusion in configurator
2026-04-24 22:22:30 +02:00
mijuny 94494c8837 Disable xe Panel Replay on live boot for Panther Lake compatibility (#77) 2026-04-24 22:21:46 +02: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 dc8242c8c7 Expand patch for python 3.14 issue with archinstall 4.2 2026-04-16 22:33:21 +02:00
David Heinemeier Hansson c43841c827 Batch archinstall 4.2 regression 2026-04-16 22:18:31 +02:00
David Heinemeier Hansson b341fa6eea Add --rc option 2026-04-16 16:10:50 +02:00
David Heinemeier Hansson f73062e156 Clear out packages that might conflict on build 2026-04-03 19:18:57 +02:00
David Heinemeier Hansson 0ace44e96e Include workaround for panther lake audio issue on 6.19 kernel 2026-03-16 22:13:11 +01:00
David Heinemeier Hansson 78af4402e4 Ensure all indicators are executable 2026-02-21 17:40:49 +01:00
David Heinemeier Hansson 6aff2b3e20 Give better information for the drive selection
Model/vendor + known partitions
2026-02-21 17:06:20 +01:00
David Heinemeier Hansson 772d4e2813 Plan revisions 2026-02-21 15:20:44 +01:00
David Heinemeier Hansson 0cbe625343 Add plans for dual boot and OEM installs 2026-02-21 09:39:17 +01:00
Ryan Hughes 5756f35844 Update pacman conf to use for build 2026-02-19 12:44:54 -05:00
Ryan Hughes 83a54e7fd5 Use offline for boot 2026-02-19 12:15:39 -05:00
David Heinemeier Hansson 716e118c81 Need the list for offline install? 2026-02-19 17:43:41 +01:00
David Heinemeier Hansson 9cf9cd1612 Use rc mirror and stable mirror fixed 2026-02-19 15:12:15 +01:00
David Heinemeier Hansson fba9fb3758 Use correct pacman conf 2026-02-19 12:44:56 +01:00
David Heinemeier Hansson 72b7a1f245 Simplify the options here 2026-02-18 18:58:59 +01:00
David Heinemeier Hansson 1f465cfeac rc just uses edge 2026-02-18 18:02:51 +01:00
David Heinemeier Hansson 6cd3702c27 Need bigger disk for testing 2026-02-05 16:45:53 +01:00
David Heinemeier Hansson bba89468f1 Need the rc conf too 2026-02-05 16:42:43 +01:00
David Heinemeier Hansson 5ba771dc1b Prepare for making RC ISOs 2026-02-04 18:17:10 +01:00
David Heinemeier Hansson 54991588e9 Make the mirror available during install 2026-01-07 20:13:20 +01:00
David Heinemeier Hansson 9d9a69e0c4 Set the mirror as we have it 2026-01-07 20:05:56 +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