Skip to content

Run Omarchy on Apple Silicon under Asahi Linux - #9835

Closed
maralcbr wants to merge 31 commits into
omacom:quattrofrom
maralcbr:omacom/asahi-overlay
Closed

maralcbr wants to merge 31 commits into
omacom:quattrofrom
maralcbr:omacom/asahi-overlay

Conversation

@maralcbr

@maralcbr maralcbr commented Sep 2, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Preliminary runtime integration for running Omarchy on Apple Silicon under Asahi Linux, coordinated with the package repository and subsequent image-builder work.

  • Detect Apple displays, trackpads and system batteries; configure Apple HID, Vulkan, audio scheduling and the appropriate platform exclusions. Tap-to-click is disabled only for the named built-in Apple touchpads.
  • Make signing-key updates, conflict recovery and toolchain setup architecture-aware. Keyring recovery reinstalls missing payloads while preserving existing trust requirements, checks the pinned Omarchy fingerprint, and verifies the key before reporting success. Apple refreshes the Omarchy, Arch Linux ARM and Asahi repository keyrings. A wiped platform trust store still needs trusted bootstrap media.
  • Express optional-install package/architecture guards directly in menu rows, with one cached availability checker supporting provider/version resolution. Chrome and Edge remain x86-only. Xbox support uses upstream's matching-header base guarantee.
  • Share architecture-aware pacman configuration staging between refresh and offline finalization. Preserve upstream's developer-checkout-before-refresh behavior, transaction protection and channel-switch recovery guidance.

Companion package and remaining integration

Wi-Fi package: omacom/omarchy-pkgs#506. omarchy-settings-asahi owns /usr/lib/NetworkManager/conf.d/wifi_backend.conf with the iwd backend. Generic settings advertise it as an optional aarch64 dependency; the Apple image profile must select it before hardware setup. Administrator /etc configuration retains precedence. Existing Apple installations receive it through a migration using the protected update transaction wrapper.

The earlier package foundation is omacom/omarchy-pkgs#275, #276 and #277. This remains coordinated source integration: the add-on must be signed/published and included in the Apple image profile before this dependent runtime is distributed. Creating the companion PR does not publish a package repository or an image.

ARM channel activation remains deferred. The checked-in FIXME and empty qualification allowlist preserve the installed repositories until channel publication/aliases and signed upgrade/downgrade/reboot qualification are complete. Configuration consolidation is implemented; channel enablement is not being claimed as complete.

Latest review corrections

Rebased onto quattro 9c5482c58dbe4974de337450754885083c91eada, resolving all seven conflicting files. Retained upstream keyring failure checks, developer-channel order, protected update wrappers and current GitHub URLs. Removed redundant Xbox header selection/guard and docs/apple-review-integration.md. The SPI one-liner and removal of the network heredoc remain present; old review-thread hunks can still show their previous versions.

Validation

Runtime commit: 97668c5641f973e3678a05c6142ca903593f00aa.
Package commit: 097cc7f0adee0adf4cef86494ac2bbfeb70667a5.

  • Focused keyring, Apple settings migration, developer-channel order, pacman staging, conflict recovery, optional availability/transaction drift and SPI tests pass as unprivileged users in both aarch64 and x86_64 containers.
  • CLI checks pass for both upstream and this head on both architectures.
  • Full shell comparison: 244 upstream files versus 260 on this head. All 16 added test files pass on both architectures. The x86 run has exactly the same 24 failing files on base and head. The final ARM run has 13 baseline failures plus an intermittent update-lock failure in unchanged code; that test passes for both base and head on an isolated rerun. Existing environment/test failures are retained in the evidence, so the overall shell suite is not described as green. All runs use disposable containers and non-root users; do not run this suite as root on a live installation.
  • The ARM runtime and development settings packages were rebuilt from this exact runtime commit, with archive contents verified. Runtime build-only dependency checks were skipped; these are unsigned review artifacts, not release packages.
  • The companion add-on passes makepkg checksum verification and a native M2 Max build with dependency checks enabled. NetworkManager's isolated print-config test confirms the vendor iwd default and administrator override precedence. The M2 also has the matching Aurora header tree for its running kernel. No live networking or boot state was changed.
  • Companion PR Enable accelerated video decode for Chromium #506 passes both build-isolation and self-tests CI jobs. Two Claude CLI Fable 5.1 High reviews reported no blockers in the supplied implementation excerpts; the Asahi keyring and protected-migration suggestions were implemented and retested.

These checks cover source integration and package construction. No fresh-install, signed channel transition or reboot qualification was performed in this follow-up. No shared feed or runtime release was published.

@ryanrhughes

Copy link
Copy Markdown
Collaborator

Reviewed all five commits at 1b35de5, read against the surrounding code and quattro's AGENTS.md, with a second opinion from Codex at xhigh reasoning as an independent reviewer. Where Codex agreed with what I had already concluded, its independence is not guaranteed (it runs read-only but can read this session); its two findings below that I had not reached on my own stand on their own terms.

Two defects, both fixed and pushed to this branch (a623a31 and d67ef02), each with a test that fails against 1b35de5 and passes with the fix:

  • The Install menu availability guard asked pacman -Si for every name in a row's transaction, which cannot see AUR packages or provided names. On a stock x86_64 install Chrome, Edge, Brave, Brave Origin and Zen (built by omarchy-pkg-aur-add) and Dropbox (libappindicator-gtk3 is only ever provided, by libappindicator) all disappeared from Install, which the commit said could not happen. The five AUR rows now live in optional-aur-packages.tsv beside NordVPN and lose the sync guard; availability asks pacman -Sp, which resolves the way -S will, so provided names and constraints both count. Codex found this independently.
  • Widening the battery helpers from BAT* to any Battery let a wireless mouse or keyboard stand in for the machine's battery: the kernel registers those as type=Battery with scope=Device, and UPower lists them as battery_hidpp_battery_0 with power supply: no. omarchy-battery-present then answered yes on a desktop with a wireless mouse (which lpmd.sh and thermald.sh gate on), and omarchy-battery-status could report the mouse's charge on a laptop. battery-present now skips scope=Device; battery-status takes the first UPower device marked a power supply. Codex found this independently.

Still open, for you:

  • The branch conflicts with quattro in default/omarchy/omarchy-menu.jsonc, install/config/all.sh (quattro dropped the locate.sh line) and test/shell.d/network-manager-transition-test.sh (quattro dropped the migration assertions). It needs a rebase before it can land.
  • With the AUR rows unguarded, Edge is offered on aarch64 again and its AUR recipe declares x86_64 only, so it fails at build there. Chrome, Brave, Brave Origin and Zen all declare aarch64. If you want Edge hidden on Apple Silicon, optional-aur-packages.tsv could carry an architecture column that omarchy-install-available and the menu prelude answer from uname -m; I left that to you since it extends the manifest you designed.
  • The drift test excludes omazed and the kernel-headers packages by name, so a row whose recipe installs one of those can pass the test with an incomplete transaction. On the current repositories omazed is in the omarchy repo for both architectures, so nothing is hidden today.

What was checked and where. test/cli and the full test/shell suite ran on a credential-free Docker worker built from Arch, against this branch and against the merge base d3d23fd: the same 16 environment-bound files fail on both (fonts, docker, sudo, hybrid-GPU, provisioning), every one of the 12 new test files passes, and no file that passes on the base fails here. That worker has no compositor, so nothing compositor-backed ran, and nothing here was exercised on Apple Silicon hardware; the hardware, migration and keyring paths were read, not executed. The omarchy-update-keyring fingerprint read works as an unprivileged user (/etc/pacman.d/gnupg/pubring.gpg is world-readable on a stock install), and omarchy-state set reboot-required exists on quattro.

Codex findings rejected: it flagged the two added lines in AGENTS.md as an attempt to steer an automated reviewer; they document the two new helpers in the existing helper list, in the same shape as the entries around them, and I read the house rules from quattro rather than from this branch.

The tap-to-click default (commit 5) is a product call and I have not touched it. Overlaps worth knowing about: #8131 carries the same apple-panel-bl hunk, #7488 the same multi-touch hunk, #7577 gates the Broadcom quirk on uname -m and adds a repair migration for machines the old gate already reached (this branch gates on omarchy-hw-apple-silicon and has no repair), and #8039 touches install/post-install/pacman.sh and install/user/mise-work.sh for the same reason.

— 🤖 Claude, posting on behalf of @ryanrhughes

@scottjones

Copy link
Copy Markdown
Contributor

Detector follow-up (Naeem's architecture split: helpers invoked next to the script, match only apple,* device-tree entries, not a pineapple,board substring): #11325. Unique commit is on top of this overlay. Close that and cherry-pick onto here if you would rather keep a single PR.

@scottjones

Copy link
Copy Markdown
Contributor

Correction: the detector follow-up is stacked on this overlay's head, not a competing quattro PR. maralcbr#99 — merge there and it lands in this PR.

@ryanrhughes

Copy link
Copy Markdown
Collaborator

Re-reviewed at c260643. This answers what moved since d67ef02: the rebase onto quattro 31bd80d and the seven commits on top, again with Codex at xhigh as an independent reviewer of those commits only.

Everything left open last time is resolved on this head. The branch is mergeable-clean against quattro. Edge is gated off aarch64 through the architecture column in optional-aur-packages.tsv, and the shared helper in install/helpers/optional-packages.sh gives the CLI and the menu batch one implementation. Tap-to-click is now off only for apple-mtp-multi-touch and apple-spi-trackpad via hl.device, which is the same call default/hypr/disabled-input-device.lua already makes on quattro, so no other machine's default changes. The drift test no longer excludes omazed or the kernel headers, and the Xbox row derives its header from the same predicate the installer uses. Migration 1789172112 takes the Broadcom quirk back off Apple Silicon machines the old gate reached; its block text matches what the leaf and migration 1786391100 write byte for byte, and the pending marker survives a failed mkinitcpio and a second user. The two fixes I pushed came through the rebase unchanged apart from menu key order.

Nothing new to fix. I read the seven diffs against the surrounding code, checked that a failed source in the guard prelude makes the menu keep its last results rather than hide rows, that pacman -Sp works offline against the local sync database, and that every name in optional-packages.tsv except libappindicator-gtk3 is in core, extra, multilib or the omarchy repo on stable, rc and edge (that one resolves through -Sp as intended).

Codex finding rejected: it reported google-chrome as x86_64-only on the AUR. The recipe declares aarch64 with a source_aarch64 pointing at Google's arm64 deb, so the table's x86_64 aarch64 is right.

What ran where. test/cli and the full test/shell suite on a credential-free Docker worker, against this head and against the new merge base: the same 20 environment-bound files fail on both (docker, sudo, fonts, kitty, locate, hybrid GPU, provisioning), all 14 new test files pass, and no file that passes on the base fails here. The worker has no compositor, so the compositor-backed tests skipped and the Hyprland change rests on the Lua test plus the author's M1 Pro run. Nothing here executed on Apple Silicon.

For the maintainer: the follow-up scottjones stacked on this branch (maralcbr#99) is closed unmerged, so the detector on this head is still the apple, substring match. No shipping device-tree vendor prefix contains that substring, so it is a tidiness point rather than a defect.

— 🤖 Claude, posting on behalf of @ryanrhughes

@ryanrhughes

Copy link
Copy Markdown
Collaborator

Pushed da68d5e: Chrome is now x86_64 only in optional-aur-packages.tsv. Google ships an arm64 deb and the AUR recipe declares aarch64, but Omarchy does not build or test Chrome for aarch64, so the maintainer's call is that the row stays hidden there until it does. Chromium, the shipped default, is unaffected on both architectures. The availability test covers Chrome the same way it covers Edge and fails against the previous table.

Nothing else is open.

— 🤖 Claude, posting on behalf of @ryanrhughes

@ryanrhughes ryanrhughes self-assigned this Sep 13, 2026
Comment thread bin/omarchy-channel-set Outdated
Comment on lines +47 to +50
if omarchy-hw-apple-silicon; then
fail "There is no per-channel aarch64 repository for Apple Silicon yet; preserving the existing Arch Linux ARM repositories."
fi

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@maralcbr Even though this isn't live yet, should we just make it work properly? We could easily alias the other locations if need be.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Added architecture-aware channel templates and shared configuration staging, with a repository/target preflight before changing live configuration. The ARM templates retain the Arch Linux ARM and Asahi repositories. Activation remains gated until the aliases are available and signed upgrade/downgrade/reboot testing passes; the FIXME names that remaining dependency.

Comment thread bin/omarchy-update-keyring Outdated
trusted_key=40DFB630FF42BCFFB047046CF0134EE680CAC571

if omarchy-hw-apple-silicon; then
# Apple Silicon images ship omarchy-keyring with the installed system, so the

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we simplify this? I believe it's the same on x86 as well. We ship the key with the ISO but this is meant to update it should you ever need.

It just needs to install the pkgs and trust the key.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Removed the Apple presence-only shortcut and unified the update flow, varying only the platform keyring. Both paths now update and populate the keyring packages while retaining the pinned Omarchy fingerprint check. Also fixed failure propagation: previously a failed pacman command could still print “Keys are correct”; the regression test now verifies that it exits with the failure.

Comment thread install/hardware/apple/fix-brcmfmac-supplicant.sh Outdated
Comment on lines +4 to +8
if product_name=$(cat /sys/class/dmi/id/product_name 2>/dev/null); then
product_name=${product_name:-}
else
product_name=""
fi

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the point of all of this when the comparison doesn't change?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Simplified it to product_name=$(cat /sys/class/dmi/id/product_name 2>/dev/null) || product_name="". The comparison stays unchanged; the fallback prevents missing or unreadable DMI from aborting hardware setup under errexit. Tests cover that failure path and matching Intel models.

Comment thread install/hardware/network.sh Outdated
Comment on lines +7 to +12
if omarchy-hw-apple-silicon && [[ ! -e /etc/NetworkManager/conf.d/wifi_backend.conf ]]; then
install -Dm644 /dev/stdin /etc/NetworkManager/conf.d/wifi_backend.conf <<'EOF'
[device]
wifi.backend=iwd
EOF
fi

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be shipped as a drop-in file so it just comes from omarchy-settings

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed on package ownership. Removed the installer-written configuration and prepared a companion omarchy-settings-asahi package owning /usr/lib/NetworkManager/conf.d/wifi_backend.conf. The Apple-only add-on avoids changing x86 or generic ARM defaults and preserves administrator /etc overrides. This PR checks for the package during setup and adds a migration for existing installations. The companion package/profile changes still need to land before this runtime ships. Add-on installation, Wi-Fi reconnect and reboot passed on the M2 Max.

Comment thread install/helpers/optional-packages.sh Outdated
@@ -0,0 +1,92 @@
# Shared by the standalone availability commands and the menu's Bash batch.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed this helper, the generic install-availability wrapper and the transaction manifest. Menu conditions now name the complete package targets directly. Kept one small sourceable omarchy-pkg-available checker shared by the CLI and menu so caching and provider/version handling remain consistent. Tests cover secondary dependencies, source failures and CLI/menu parity.

Comment thread install/post-install/pacman.sh Outdated
cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-${OMARCHY_MIRROR:-stable}" /etc/pacman.d/mirrorlist
# Apple Silicon keeps the Arch Linux ARM and Asahi repositories that own its
# kernel and firmware: the Omarchy x86_64 mirrorlist would leave it unbootable.
if ! omarchy-hw-apple-silicon; then

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we consolidate apple silicon here as well?

If we can't we should leave a FIXME to address later

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consolidated configuration staging into a shared helper used by refresh and post-install. Finalization reuses only the configuration step, avoiding an online sync/upgrade during offline installation. Until ARM channels are qualified, it preserves the installed Apple configuration. Added the explicit FIXME for repository publication/aliases and qualification.

Comment thread install/optional-aur-packages.tsv Outdated
Comment thread test/fixtures/optional-aarch64-required
@ryanrhughes

Copy link
Copy Markdown
Collaborator

Re-reviewed at 980ce7e, the five commits answering the nine review threads, with Codex at xhigh as an independent reviewer of those commits only. Six of the nine are resolved. One is not, and the way it was answered breaks every Apple Silicon machine, so this cannot land as it stands.

Resolved: the brcmfmac exclusion is an explicit if (3); the SPI DMI read is the one-liner (4); the shared helper, omarchy-install-available, both manifests and the aarch64-required list are gone from the install tree, and menu rows name their packages or architecture directly (6, 8, 9); the pacman configuration lives in one helper with the FIXME (7); the keyring script is one path for both architectures (2).

Not resolved, and a regression (5). install/hardware/network.sh now aborts hardware setup on Apple Silicon unless omarchy-settings-asahi is installed, and migrations/1789275235.sh installs that package on every existing Apple machine. The package does not exist: not in omacom/omarchy-pkgs, not in the fork's pkgbuilds, not in the aarch64 edge repository (which carries omarchy-settings and omarchy-settings-dev only). So a fresh Apple install fails in omarchy-apply-hardware under set -e with no iwd configuration written, and every existing Apple user's omarchy update stops at this migration and retries it forever. The previous head wrote the drop-in itself and worked. Until the companion package is published, this branch has to keep writing the file, or the package must land first; a runtime that depends on a package nobody can install is not a fix. Codex found this independently.

Not really resolved (1). omarchy-channel-set no longer refuses outright, but qualified_arm_channels is empty, so it still refuses every channel on Apple Silicon, and the new aarch64 templates are unreachable code. Two of the three channels they point at return 404 (pkgs.omarchy.org/{stable,rc}/aarch64). That is the same behaviour as before with more machinery around it, which is fine if the maintainer accepts "not yet" as the answer, but the thread should say so rather than "addressed".

Two things the reorder and the rebase introduce:

  • omarchy-channel-set now runs omarchy-refresh-pacman before link_dev_checkout, so omarchy-channel-set dev refreshes from the installed release's templates instead of the checkout it is about to link. The test was changed to lock in the new order. That is a behaviour change on x86_64 for developers, unrelated to Apple Silicon, and should be its own decision.
  • quattro has moved under the branch again (7 conflicting files). Two of them matter: Stop update-keyring from claiming success when key operations fail #7807 already added set -euo pipefail and a final key check to omarchy-update-keyring, and 24417bf made matching kernel headers a base guarantee and dropped linux-headers from the Xbox installer. After the rebase the PR's header selection and the dynamic header target in the Xbox menu guard are obsolete, and the keyring change should be reconciled with quattro's version rather than replace it. The keyring script also runs pacman-key --populate before the keyring package is installed, which aborts under errexit if that package's keyring file is missing.

Drop docs/apple-review-integration.md. It is release-process narration and review bookkeeping, not reference on how the system is shaped, which is what docs/ is for. Its last line, "Prepare a response for all nine PR review threads", is an instruction addressed to whoever is reading the repository. Fold anything durable into the commit messages and remove the file.

What ran where. test/cli and the full test/shell suite on a credential-free Docker worker at 980ce7e: the same 20 environment-bound files fail as on the merge base, every PR test passes. The network.sh and migration tests pass because they stub pacman; they prove the code fails closed when the package is absent, which is exactly the shipping condition. Nothing ran on Apple Silicon hardware. Codex's other findings agreed with what I had already established, so independence is not guaranteed there.

— 🤖 Claude, posting on behalf of @ryanrhughes

maralcbr and others added 12 commits September 18, 2026 12:14
omarchy-hw-apple-silicon is the probe the rest of the Apple Silicon
support gates on: aarch64 with "apple," in the device-tree compatible
string, in the same shape as the other omarchy-hw-* predicates.

The display, touchpad and battery helpers learn the names Asahi uses:
the Touch Bar's phantom backlights are excluded and apple-panel-bl is
preferred, the trackpad reports as apple-mtp-multi-touch, the battery is
macsmc-battery rather than BAT*, and macsmc reports the discharge rate
as a negative number. None of this is gated: it is name matching, and
changes nothing on hardware that does not carry those names.
The install-time pieces of the Apple Silicon support, each gated on
omarchy-hw-apple-silicon:

- early-load hid_apple and hid_magicmouse in the initramfs so the
  dockchannel-hid trackpad does not lose the race to hid-generic, with a
  migration that applies it to existing installs and rebuilds the
  initramfs once (docs/apple-silicon-trackpad.md explains the race);
- keep the Intel Mac Broadcom firmware-supplicant quirk off Apple
  Silicon, where it breaks scanning, and let the SPI keyboard fix cope
  with the absent DMI tables;
- install vulkan-asahi explicitly (there is no PCI display vendor to
  match on) and select NetworkManager's iwd backend for the Broadcom
  Wi-Fi, plus rtkit for PipeWire's realtime scheduling;
- skip the x86 platform steps that have nothing to act on there: the
  Snapper config (no Limine snapshot entries), systemd-oomd (the aarch64
  package ships neither the drop-ins nor the zram they are tuned for),
  the pacman.conf/mirrorlist restore (Apple Silicon keeps the Arch Linux
  ARM and Asahi repositories that own its kernel and firmware), and the
  direct-boot, pacman-refresh and channel-set commands, which refuse
  with a clear message.
On Apple Silicon the keyring refresh syncs archlinuxarm-keyring and
verifies the Omarchy key is already present instead of fetching it from
a keyserver; the conflicted-update handler refuses to move platform-owned
paths (/boot, the mkinitcpio and pacman configuration, the initcpio
tree) out of the way, since the Asahi packages own those; the Xbox
controller driver builds against linux-asahi-headers; and rustup uses
its curl backend, whose downloads do not reset there.

The Node tarball for the mise work environment is now selected by
architecture (arm64 or x64) rather than assumed to be x64. That one is
not Apple-specific and applies to any aarch64 machine.
Not every optional install exists on aarch64: some vendors ship no ARM
build, some AUR recipes are x86_64-only. Rather than let a menu row fail
halfway through a pacman transaction, each optional-install row now
carries `when: omarchy-install-available <id>`, which resolves the row's
full package transaction through install/optional-packages.tsv and asks
pacman whether every package in it can be installed here. Rows with no
package for this architecture disappear; nothing changes on x86_64,
where every transaction resolves.

The guard prelude in the menu model answers the whole batch with one
`pacman -Slq`, so the menu does not pay one pacman call per row.
install/optional-packages-aarch64-required lists the rows that must stay
resolvable on aarch64, and a drift test keeps the manifest in step with
what each install script actually installs.

The menu test's rule that an Install row never hides because the
software is already there still holds; it now recognises the
availability guard as the one other reason a row may hide, and checks
that every such guard names its own row.
On the Asahi touchpad, disable_while_typing alone does not stop stray
taps while typing; turning off tap_to_click does. Physical clicks stay
the default everywhere, and the user override example documents how to
turn tap-to-click back on.

This is the one Apple Silicon change that alters behaviour on every
machine, so it is its own commit and can be dropped or made
device-conditional without touching the rest of the series.
The availability guard asked the sync database with pacman -Si for every name in a row's transaction, and hid the row when any name was absent. Two kinds of name are absent from every x86_64 sync database while the row installs fine: the five browsers omarchy-install-browser builds through omarchy-pkg-aur-add (google-chrome, microsoft-edge-stable-bin, brave-bin, brave-origin-bin, zen-browser-bin), and libappindicator-gtk3, which no repository ships by that name because libappindicator provides it. Chrome, Edge, Brave, Brave Origin, Zen and Dropbox all disappeared from Install on a stock x86_64 machine, which is the regression the commit adding the guard said could not happen.

The five AUR rows move to install/optional-aur-packages.tsv beside NordVPN and lose the sync guard, the way that file already handles a row the sync database cannot answer for. Availability now asks pacman -Sp, which resolves a target the way -S will when the row is chosen, so a provided name counts and a constraint still does; the guard prelude keeps its one pacman -Slq for the batch and falls through to -Sp only for a name the set does not hold. The tests stub -Sp instead of -Si and assert outright that a provided name resolves, since agreement between the helper and the prelude alone would have passed with both wrong.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Codex XHigh <noreply@openai.com>
Widening the battery helpers from BAT* to any Battery let a wireless mouse or keyboard stand in for the machine's own battery. The kernel registers a Logitech HID++ or Bluetooth peripheral as a power_supply of type Battery too, scoped Device, and UPower lists it as battery_hidpp_battery_0 with "power supply: no". omarchy-battery-present then answered yes on a desktop with a wireless mouse, which is what install/hardware/intel/lpmd.sh and thermald.sh gate laptop-only services on, and omarchy-battery-status took whichever battery_ device UPower listed first, so the power panel and the battery notification could report the mouse's charge on a laptop.

battery-present skips a Battery whose scope is Device, keeping System and unscoped ones so older drivers still count. battery-status walks the battery_ devices in order and takes the first UPower marks as a power supply. The tests put a peripheral first in both enumerations and check the machine's battery is still the one reported.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Codex XHigh <noreply@openai.com>
@maralcbr
maralcbr force-pushed the omacom/asahi-overlay branch from 980ce7e to 97668c5 Compare September 18, 2026 02:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants