Build the omarchy package pair for aarch64 - #275
Open
maralcbr wants to merge 2 commits into
Open
Conversation
The Omarchy payload is architecture-independent, but the package is not.
On x86_64 omarchy pulls the Limine + mkinitcpio hook + Snapper boot stack;
on Apple Silicon the system boots through m1n1 + GRUB from the Asahi
packages on Arch Linux ARM's kernel, so that stack does not apply, and
Wi-Fi on the Broadcom parts needs the iwd backend. The shipped /etc tree
differs too: mkinitcpio reads every file under /etc/mkinitcpio.conf.d/,
so shipping omarchy_hooks.conf on aarch64 injects the Limine hooks into
the Asahi kernel's initramfs, and the zram/zswap/oomd drop-ins and the
zram-tuned vm.* sysctls belong to the x86_64 memory stack.
makepkg only honours depends_<arch> and optdepends_<arch> on
arch-specific packages, so arch=('any') becomes ('x86_64' 'aarch64').
backup=() has no arch-suffixed form, so the x86_64-only entries are
appended under CARCH and each of those paths is removed from the aarch64
package in package(). The x86_64 package keeps exactly the contents it
had; only its filename suffix changes.
The install scriptlet applies the hardened cups-files.conf on every
platform, then on Apple Silicon keeps the Arch Linux ARM system identity
(/etc/os-release stays the distribution's symlink) instead of the
etc-overrides. The -dev pair carries the same change so the pairs stay in
lockstep.
The recipe fetched the branch tip, so a rebuild on another architecture could package a different tree than the one already published. Pin the source to a commit and set pkgver to what that commit describes (1.22.0.r96.g0331510, as an aarch64 build of it reports); bump both together from now on.
maralcbr
force-pushed
the
omacom/pkgbuild-portability
branch
from
September 2, 2026 13:15
92ef157 to
0b9d797
Compare
maralcbr
force-pushed
the
omacom/pkgbuild-portability
branch
from
September 3, 2026 02:23
0b9d797 to
59d557a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Build the
omarchy/omarchy-settingspair (and the-devpair) for aarch64 alongside x86_64, and pinretroarch-joypad-autoconfig-gitto a commit.This is the first of a small series bringing the Apple Silicon (Asahi) work from
maralcbr/omarchy-pkgsupstream. It contains only recipe changes; the aarch64 release plumbing (built on the existing x86_64 build host under QEMU, on its own timer) follows in a separate PR so each can be reviewed on its own.Why the pair becomes arch-specific
The Omarchy payload is architecture-independent, but the package is not:
omarchypulls the Limine + mkinitcpio hook + Snapper stack. On Apple Silicon the system boots through m1n1 + GRUB from the Asahi packages on Arch Linux ARM's kernel, so that stack does not apply, and Wi-Fi on the Broadcom parts needs the iwd backend./etctree differs. mkinitcpio reads every file under/etc/mkinitcpio.conf.d/, so shippingomarchy_hooks.confon aarch64 injects the Limine hooks into the Asahi kernel's initramfs. The Limine entry-tool config, the zram/zswap/oomd drop-ins and the zram-tunedvm.*sysctls belong to the x86_64 boot and memory stack.makepkg only honours
depends_x86_64,depends_aarch64andoptdepends_x86_64on arch-specific packages, soarch=('any')becomesarch=('x86_64' 'aarch64'). The x86_64 package is byte-for-byte what it was apart from the filename suffix (-anybecomes-x86_64).backup=()has no arch-suffixed form, so the x86_64-only entries are appended under[[ $CARCH == x86_64 ]]and each of those paths is removed from the aarch64 package inpackage().What the aarch64 package leaves out
etc/limine-entry-tool.d/,etc/mkinitcpio.conf.d/,/usr/share/omarchy/default/limine/etc/systemd/oomd.conf.d/,etc/systemd/zram-generator.conf,etc/tmpfiles.d/omarchy-zswap.conf, the userapp.slice.d/10-oomd.confand the zram vendor drop-inetc/modprobe.d/omarchy-usb-autosuspend.conflimine-snapper-notifyautostart entryetc/sysctl.d/99-omarchy-sysctl.confkeeps only the TCP MTU probing lineThe install scriptlet on Apple Silicon
omarchy-settings.installnow applies the hardenedcups-files.confon every platform, then on Apple Silicon (aarch64 withapple,in the device-tree compatible string) keeps the Arch Linux ARM system identity:/etc/os-releasestays a symlink to/usr/lib/os-releaseand the PAM, NSS, plymouth and skel overrides are not applied. This is the behaviour of the shipped Apple Silicon builds. If you would rather narrow it to justos-release, that is a one-line change and I am happy to make it.retroarch-joypad-autoconfig-gitThe recipe fetched the branch tip, so a rebuild on another architecture could package a different tree than the one already published. It is now pinned to a commit, with
pkgverset to what that commit describes (1.22.0.r96.g0331510, as an aarch64 build of it reports). The oldpkgverhad drifted 72 commits behind the tip it was building.Testing
makepkg --printsrcinfofor all five recipes underCARCH=aarch64andCARCH=x86_64in an Arch Linux ARM container: the arch-suffixed depends and backup entries land only under x86_64.makepkgofomarchy-settingsandomarchyfor bothCARCHvalues in the same container; the aarch64 package contains none of the paths listed above, the x86_64 package contains all of them, and.PKGINFOcarries the split depends.bin/omarchy-pkgs self-testandbin/omarchy-release self-testpass.apple,j314s) running Omarchy on Asahi:pacman -U --printof both aarch64 packages against the live install resolves with no missing dependencies (iwd and NetworkManager already present, no Limine or Snapper requested). A fullpacman -Uof both packages plus their dependencies (1.36 GiB from Arch Linux ARM, the Asahi repo and an Omarchy aarch64 repo) in a privileged Arch Linux ARM container on the same machine, so the scriptlet sees the real device tree: it takes the Apple Silicon branch,/etc/os-releasestays the distribution symlink, the PAM/NSS overrides are untouched,depends_aarch64pulls iwd + networkmanager, and no Limine or Snapper package is installed.Follow-ups (separate PRs)
OMARCHY_SKIP_BUILDER_IMAGE,OMARCHY_KEEP_BUILD_WORKSPACE,OMARCHY_DEFER_RUNTIME_DEPS).check-versions,auto-release, a separate aarch64 timer,clean-repo,omarchy-release, and a keyring bootstrap for a not-yet-published aarch64 tree). Built on the same host as x86_64 via the QEMU pathbin/buildalready has; expect roughly 5-10x the x86_64 wall time. This will carry Build aarch64 packages on native ARM64 runners #171 and Publish a reusable aarch64 repository artifact #223 with their authors' commits.