Skip to content

Runtime settings profile and platform package lists - #542

Merged
maralcbr merged 11 commits into
quattro-upstreamfrom
mac/14-settings-profile
Sep 25, 2026
Merged

maralcbr merged 11 commits into
quattro-upstreamfrom
mac/14-settings-profile

Conversation

@maralcbr

@maralcbr maralcbr commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Ticket 14. Stacked on #514 (mac/13-hw-platform). Recipe side: omacom/omarchy-pkgs#638.

What changed

  • Runtime settings profile. omarchy-settings can now ship the same files on aarch64 as on x86_64, because each platform-specific file decides at runtime:

    • omarchy_hooks.conf leaves an Apple root's HOOKS alone. It checks whether the detector says Apple Silicon, or whether HOOKS already carry asahi, which covers Apple images built in a chroot or booted in a VM.
    • The Thunderbolt module is optional (thunderbolt?).
    • default/settings-runtime-profile lists the rest. The recipe keys on this file.
  • Package lists are composed as base + architecture + platform:

    • install/omarchy-aarch64.packages (zram-generator)
    • install/omarchy-apple.packages (omarchy-mac, plus the audio, video-decode and Widevine packages Apple setup already installs)
    • install/omarchy-qualcomm.packages (linux-firmware-qcom)

    omarchy-pkg-defaults [platform] prints the composed set, and omarchy-reinstall-pkgs installs it.

  • pacman templates per platform.

    • Apple Silicon gets default/pacman/apple-silicon/, ordered [omarchy], [asahi-alarm], then Arch Linux ARM, so the omacom builds for the Mac win.
    • Qualcomm and generic aarch64 get Arch Linux ARM plus [omarchy], with no Asahi repository. They used to stage the x86 template.
    • x86 is unchanged.
  • Migration 1790328426 installs and starts zram-generator on aarch64 machines that lack it. It also retires the identical /etc zram copy that 1789154627 wrote (the Prepare 4.0.3rc4 trust bootstrap #435 note).

  • The package-resolution fixtures follow the new lists and Apple repository order, and a test keeps each fixture in step with its template.

  • Promoting omarchy-settings through tools/release now needs a Mac hardware record, since it now carries drop-ins that go into what a Mac boots.

Audit rows

Testing

  • Runtime suite (test/all, non-root, CI package set): ARM container gives only the two files in .github/known-test-failures. The emulated x86 Arch container gives the known hermes-remove failure plus launch-shell-test, which fails the same way on the base commit there.
  • New tests: settings-runtime-profile, platform-packages, zram-aarch64-migration. Extended: pacman-staging, nvidia-kms-hook (now hermetic on a Mac host). All new tests fail against the old code.
  • Seam (tools/package-resolution/check, live databases): all checks pass.
    • Apple repositories are omarchy asahi-alarm core extra alarm aur.
    • linux resolves to omarchy/linux-aurora even before the kernel is installed.
    • hyprland, hyprland-guiutils, hyprtoolkit, xdg-terminal-exec and avd-fw come from [omarchy].
    • 175 names resolve to a closure of 953 with single file ownership.
    • Qualcomm and generic aarch64 have no Asahi repository, no Mac-only package in the closure, and nothing depending on one.
    • Still skipped until published: omarchy-mac, omarchy-mac-boot, m1n1-aurora.
  • tools/release/test/omacom-lane and fork-parity pass.
  • Not run: encrypted-install VM on the x86 worker (not reachable from here), and Mac hardware.

Second review found two real problems, both fixed. The HOOKS guard missed Apple images built or booted off a Mac. Existing non-Apple aarch64 machines got zram tuning without zram-generator.

Follow-ups and risks

  • Limine drop-ins on Macs. etc/limine-entry-tool.d now ships on Macs. These files are key=value and can't be gated in-file. On a Mac where Limine is active (omarchy-pkgs#631), /etc/default/limine outranks only the keys it sets. ENABLE_LIMINE_FALLBACK, MAX_SNAPSHOT_ENTRIES, SNAPSHOT_FORMAT_CHOICE and the KERNEL_CMDLINE appends apply, so 09/36/55 should check them on hardware. The new release gate enforces that.
  • Image builds. Off-Mac image builds rely on the asahi hook until 24's target manifest lands. The image builder (21/23) reads only the base and Apple lists today; it should compose with omarchy-pkg-defaults apple-silicon to get zram-generator.
  • systemd-oomd. Fresh Macs still skip it (unchanged), while Macs updated through migration 1785424256 already run it. Owner's call whether to drop the skip.
  • Update conflict handler. omarchy-update-system-pkgs-when-conflicted still refuses to move leftovers on Apple at the memory and USB paths that settings now owns.
  • Ticket 15 overlap. 15 reworks omarchy_hooks.conf; the guard here is interim.

omarchy-pkg-defaults prints the base list plus the aarch64 and Apple or
Qualcomm additions for the detected or named platform, and
omarchy-reinstall-pkgs installs that set instead of the base list alone. Only
the Apple list names Apple packages; only the Qualcomm list adds its firmware.
…icon

Only Apple Silicon gets the Asahi repository, and there [omarchy] comes before
it and Arch Linux ARM so the Mac builds carried there (Aurora kernel, m1n1,
U-Boot, the Hyprland stack) win over the same names. Qualcomm and other aarch64
machines now stage Arch Linux ARM's repositories instead of the x86_64 template.
omarchy-settings can ship the same files on aarch64 as on x86_64 once each
platform-specific one decides at runtime: the HOOKS baseline leaves Apple
Silicon's own hooks alone, and the Thunderbolt module is optional for kernels
without it. default/settings-runtime-profile lists the rest, which only act
where their tools run, and tells the recipe to stop stripping this source.
Migration 1789154627 copied the zram vendor drop-in into /etc on Macs because
their settings package left it out. Now that it ships everywhere, an identical
copy would only hide its updates; an edited one is kept. Fresh Macs get zram
from the aarch64 package list and the packaged drop-in.
The Apple fixture follows the Apple repository order and resolves the base,
aarch64 and Apple lists with the image's kernel, boot chain and Asahi
platform packages; Qualcomm and generic aarch64 resolve their own lists. The
staging test keeps each fixture's repository order in step with its template.
The detector reads the machine it runs on, so an Apple image built in a chroot
or booted in a VM looked generic and the baseline replaced its hooks. The asahi
hook that Apple's mkinitcpio.conf or boot package already put in HOOKS now
keeps the baseline out as well.
Their omarchy-settings now carries the zram drop-in and reclaim tuning, which
expect swap on zram. The migration installs and starts the generator where the
platform's default packages name it. The profile notes also name what else
turns systemd-oomd on, and the new tests quote their literals.
Its mkinitcpio and Limine drop-ins now ship on aarch64 and reach what a Mac
boots, which VM acceptance cannot qualify.
@maralcbr
maralcbr changed the base branch from mac/13-hw-platform to quattro-upstream September 25, 2026 10:33
@maralcbr

Copy link
Copy Markdown
Collaborator Author

Note from ticket 17 (#539): this PR's packages/omarchy-mac/README.md "Setup contract" says to install the runtime, settings and add-on in one pacman transaction, fresh installs included. With the platform guard from #539, a fresh Apple install needs two transactions: first one that installs omarchy-settings (which ships the guard's pre-transaction hook), then one that installs the Apple packages (omarchy-pkg-defaults apple-silicon here). A hook doesn't check the transaction that installs it. The one-transaction rule still holds for upgrades, where the runtime, settings and add-on hand commands over. #539 rewrites that paragraph; whichever PR lands second should keep the two-transaction rule for fresh installs.

The composable HOOKS baseline (00-omarchy-hooks.conf) replaces this branch's
guard in omarchy_hooks.conf; the runtime profile now names it. The Apple list
keeps its video-decode entries, and the composition test expects the optional
Thunderbolt module.
A Mac unlocked by busybox encrypt and cryptdevice= cannot boot the systemd
baseline, and one without the Apple boot package loses its asahi hook to it.
The baseline now leaves mkinitcpio.conf's line alone on a Mac that carries
either, until ticket 45 moves it; an asahi hook marks such a root off a Mac
too.
omarchy-mac is not on the aarch64 channels yet and obs-studio is not built
for aarch64, so the platform set failed as a whole there. Each missing
default is now reported and skipped.
@maralcbr
maralcbr merged commit db3fda7 into quattro-upstream Sep 25, 2026
5 checks passed
maralcbr added a commit that referenced this pull request Sep 25, 2026
Brings in the runtime profile and composed package lists (#542), the
platform mkinitcpio baseline (#536) and deferred first-boot setup (#528).

The Apple package list is #542's with omarchy-mac-boot after omarchy-mac.
The boot package's 90-94 drop-ins now sort after 00-omarchy-hooks.conf; a new
test composes the real baseline with them on an Apple Silicon fixture: the
encrypted systemd image gets asahi, omarchy-vendorfw, omarchy-mac-encrypt and
sd-encrypt once, a non-Latin layout stays out, and a legacy busybox encrypt
line is left as its owner set it up.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant