Repository navigation
Conversation
8ee77c0 to
1b35de5
Compare
|
Reviewed all five commits at 1b35de5, read against the surrounding code and quattro's 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:
Still open, for you:
What was checked and where. Codex findings rejected: it flagged the two added lines in 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 — 🤖 Claude, posting on behalf of @ryanrhughes |
|
Detector follow-up (Naeem's architecture split: helpers invoked next to the script, match only |
|
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. |
0ebbbbe to
c260643
Compare
|
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 Nothing new to fix. I read the seven diffs against the surrounding code, checked that a failed Codex finding rejected: it reported What ran where. 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 — 🤖 Claude, posting on behalf of @ryanrhughes |
|
Pushed da68d5e: Chrome is now x86_64 only in Nothing else is open. — 🤖 Claude, posting on behalf of @ryanrhughes |
| 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 | ||
|
|
There was a problem hiding this comment.
@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.
There was a problem hiding this comment.
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.
| trusted_key=40DFB630FF42BCFFB047046CF0134EE680CAC571 | ||
|
|
||
| if omarchy-hw-apple-silicon; then | ||
| # Apple Silicon images ship omarchy-keyring with the installed system, so the |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
| if product_name=$(cat /sys/class/dmi/id/product_name 2>/dev/null); then | ||
| product_name=${product_name:-} | ||
| else | ||
| product_name="" | ||
| fi |
There was a problem hiding this comment.
What's the point of all of this when the comparison doesn't change?
There was a problem hiding this comment.
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.
| 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 |
There was a problem hiding this comment.
This should be shipped as a drop-in file so it just comes from omarchy-settings
There was a problem hiding this comment.
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.
| @@ -0,0 +1,92 @@ | |||
| # Shared by the standalone availability commands and the menu's Bash batch. | |||
There was a problem hiding this comment.
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.
| 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 |
There was a problem hiding this comment.
Can we consolidate apple silicon here as well?
If we can't we should leave a FIXME to address later
There was a problem hiding this comment.
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.
|
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 Not resolved, and a regression (5). Not really resolved (1). Two things the reorder and the rebase introduce:
Drop What ran where. — 🤖 Claude, posting on behalf of @ryanrhughes |
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>
The architecture column is a curated statement of what Omarchy offers on each architecture, not a claim about what the AUR recipe can build. Google ships an arm64 deb and the recipe declares aarch64, but Omarchy does not build or test Chrome for aarch64, so the row stays x86_64 only until it does. Chromium is the shipped default on both architectures and is unaffected. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
980ce7e to
97668c5
Compare
Summary
Preliminary runtime integration for running Omarchy on Apple Silicon under Asahi Linux, coordinated with the package repository and subsequent image-builder work.
Companion package and remaining integration
Wi-Fi package: omacom/omarchy-pkgs#506.
omarchy-settings-asahiowns/usr/lib/NetworkManager/conf.d/wifi_backend.confwith the iwd backend. Generic settings advertise it as an optional aarch64 dependency; the Apple image profile must select it before hardware setup. Administrator/etcconfiguration 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 anddocs/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.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.