System details: Apple MacBookPro16,1 (T2, 106b:1801/106b:1802), Intel i7-9750H + AMD Navi 14, Omarchy 4.0.2-1, kernel linux-t2 7.1.8.arch1-3, Hyprland 0.56.2, bootloader Limine (UKI).
Summary
omarchy-refresh-pacman overwrites /etc/pacman.conf from the channel template but never re-applies the hardware-specific repository additions that install/hardware/pacman.sh is responsible for. On Apple T2 Macs this silently drops the [arch-mact2] repository, orphaning linux-t2 and the other T2 packages so they can no longer receive updates — including the kernel.
The install path does this correctly; the refresh/upgrade path does not.
Impact
After upgrading to 4.x on a T2 Mac, these packages remain installed but have no update source:
linux-t2 — the running kernel
t2fanrd
apple-t2-audio-config
apple-bcm-firmware
The machine keeps booting and working, so there is no visible symptom. The failure is silent: the kernel simply stops receiving security and bugfix updates, and the user has no indication anything is wrong. pacman -Syu reports nothing missing because the packages resolve locally.
Root cause
bin/omarchy-refresh-pacman overwrites the config and then only runs the user hook:
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
# Allow user customization of /etc/pacman.conf before the upgrade runs
omarchy-hook pre-refresh-pacman
sudo env OMARCHY_UPDATE_PACMAN=1 pacman -Syyuu --noconfirm
install/post-install/pacman.sh does the same overwrite but does re-apply hardware repos:
cp -f "$OMARCHY_PATH/default/pacman/pacman-${OMARCHY_MIRROR:-stable}.conf" /etc/pacman.conf
...
source "$OMARCHY_INSTALL/hardware/pacman.sh"
And install/hardware/pacman.sh states the intent explicitly:
# Hardware-specific pacman repository extensions that must survive the final
# pacman.conf restore.
if lspci -nn | grep "106b:180[12]" >/dev/null; then
if ! grep -q '^\[arch-mact2\]' /etc/pacman.conf; then
cat >> /etc/pacman.conf <<'EOF'
[arch-mact2]
Server = https://github.com/NoaHimesaka1873/arch-mact2-mirror/releases/download/release
SigLevel = Never
EOF
fi
fi
So the repo is added deliberately for this hardware and is meant to survive a template restore — but the refresh path is missing the source "$OMARCHY_INSTALL/hardware/pacman.sh" line. No migration re-adds it either (grep -rn arch-mact2 migrations/ returns nothing).
Note the ordering hazard: pacman -Syyuu --noconfirm runs immediately afterwards, so the full upgrade proceeds with the repo already missing.
Reproduction
- Apple T2 Mac (
lspci -nn shows 106b:1801 / 106b:1802) installed via the T2 path, with [arch-mact2] in /etc/pacman.conf
- Upgrade to 4.x (or run
omarchy refresh pacman)
grep arch-mact2 /etc/pacman.conf → gone
pacman -Si linux-t2 → no repository
Evidence from the affected machine
/etc/pacman.conf before the upgrade (/etc/pacman.conf.bak, 15:53) ended with:
[omarchy]
SigLevel = Optional TrustAll
Server = https://pkgs.omarchy.org/stable/$arch
[arch-mact2]
Server = https://github.com/NoaHimesaka1873/arch-mact2-mirror/releases/download/release
SigLevel = Never
The upgrade's own backup (/etc/pacman.conf.omarchy-upgrade-to-quattro.20260902155457.bak, 15:54) already ends at [omarchy] — [arch-mact2] is gone.
Resulting state:
$ pacman -Q linux-t2
linux-t2 7.1.8.arch1-3
$ pacman -Si linux-t2
error: package 'linux-t2' was not found
arch-mact2-mirrorlist was also removed.
Suggested fix
Re-apply hardware repository additions in omarchy-refresh-pacman after the template copy and before pacman -Syyuu, mirroring what install/post-install/pacman.sh already does:
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
source "$OMARCHY_INSTALL/hardware/pacman.sh" # <-- add
omarchy-hook pre-refresh-pacman
sudo env OMARCHY_UPDATE_PACMAN=1 pacman -Syyuu --noconfirm
install/hardware/pacman.sh is already idempotent (it guards on grep -q '^\[arch-mact2\]'), so this is safe to run unconditionally on every refresh.
A migration to repair already-upgraded machines would also help, since affected users have no symptom to prompt them to look.
Workaround
Re-append the stanza to /etc/pacman.conf manually, or add a
~/.config/omarchy/hooks/pre-refresh-pacman.d/ hook that re-adds it on each refresh.
Note on scope
The removal of tiny-dfr by migration 1785944594.sh is not part of this report — that is clearly deliberate and well-reasoned ("the optional daemon holds stale device descriptors across suspend with t2bce"), and matches this machine's experience. Only the loss of the repository appears unintended.
This issue was researched and written by Claude (Claude Code) running on the affected machine, and filed by the repository account owner. All command output above was collected from that machine.
System details: Apple MacBookPro16,1 (T2,
106b:1801/106b:1802), Intel i7-9750H + AMD Navi 14, Omarchy 4.0.2-1, kernellinux-t27.1.8.arch1-3, Hyprland 0.56.2, bootloader Limine (UKI).Summary
omarchy-refresh-pacmanoverwrites/etc/pacman.conffrom the channel template but never re-applies the hardware-specific repository additions thatinstall/hardware/pacman.shis responsible for. On Apple T2 Macs this silently drops the[arch-mact2]repository, orphaninglinux-t2and the other T2 packages so they can no longer receive updates — including the kernel.The install path does this correctly; the refresh/upgrade path does not.
Impact
After upgrading to 4.x on a T2 Mac, these packages remain installed but have no update source:
linux-t2— the running kernelt2fanrdapple-t2-audio-configapple-bcm-firmwareThe machine keeps booting and working, so there is no visible symptom. The failure is silent: the kernel simply stops receiving security and bugfix updates, and the user has no indication anything is wrong.
pacman -Syureports nothing missing because the packages resolve locally.Root cause
bin/omarchy-refresh-pacmanoverwrites the config and then only runs the user hook:install/post-install/pacman.shdoes the same overwrite but does re-apply hardware repos:And
install/hardware/pacman.shstates the intent explicitly:So the repo is added deliberately for this hardware and is meant to survive a template restore — but the refresh path is missing the
source "$OMARCHY_INSTALL/hardware/pacman.sh"line. No migration re-adds it either (grep -rn arch-mact2 migrations/returns nothing).Note the ordering hazard:
pacman -Syyuu --noconfirmruns immediately afterwards, so the full upgrade proceeds with the repo already missing.Reproduction
lspci -nnshows106b:1801/106b:1802) installed via the T2 path, with[arch-mact2]in/etc/pacman.confomarchy refresh pacman)grep arch-mact2 /etc/pacman.conf→ gonepacman -Si linux-t2→ no repositoryEvidence from the affected machine
/etc/pacman.confbefore the upgrade (/etc/pacman.conf.bak, 15:53) ended with:The upgrade's own backup (
/etc/pacman.conf.omarchy-upgrade-to-quattro.20260902155457.bak, 15:54) already ends at[omarchy]—[arch-mact2]is gone.Resulting state:
arch-mact2-mirrorlistwas also removed.Suggested fix
Re-apply hardware repository additions in
omarchy-refresh-pacmanafter the template copy and beforepacman -Syyuu, mirroring whatinstall/post-install/pacman.shalready does:install/hardware/pacman.shis already idempotent (it guards ongrep -q '^\[arch-mact2\]'), so this is safe to run unconditionally on every refresh.A migration to repair already-upgraded machines would also help, since affected users have no symptom to prompt them to look.
Workaround
Re-append the stanza to
/etc/pacman.confmanually, or add a~/.config/omarchy/hooks/pre-refresh-pacman.d/hook that re-adds it on each refresh.Note on scope
The removal of
tiny-dfrby migration1785944594.shis not part of this report — that is clearly deliberate and well-reasoned ("the optional daemon holds stale device descriptors across suspend with t2bce"), and matches this machine's experience. Only the loss of the repository appears unintended.This issue was researched and written by Claude (Claude Code) running on the affected machine, and filed by the repository account owner. All command output above was collected from that machine.