diff --git a/install/hardware/apple/fix-t2.sh b/install/hardware/apple/fix-t2.sh index 377bc37d..ea15af3a 100644 --- a/install/hardware/apple/fix-t2.sh +++ b/install/hardware/apple/fix-t2.sh @@ -3,6 +3,17 @@ if lspci -nn | grep "106b:180[12]" >/dev/null; then echo "Detected MacBook with T2 chip. Installing support items..." + # The fetcher replaced the packaged firmware upstream and declares + # Conflicts=apple-bcm-firmware, so a machine that already carries the old + # package (an earlier install) must drop it first or the noninteractive + # transaction fails. Fresh installs have nothing to drop, which is a no-op. + omarchy-pkg-drop apple-bcm-firmware + + # apple-bcm-firmware-fetcher reads its firmware off an on-disk macOS volume — + # Wi-Fi firmware for T2 Macs is only legally obtainable from there. A + # single-boot install that wiped macOS has no such volume, so the fetch comes + # up empty; those machines need the firmware supplied from a macOS copy or a + # downloaded recovery image instead. omarchy-pkg-add \ linux-t2 \ linux-t2-headers \ diff --git a/test/shell.d/t2-hardware-test.sh b/test/shell.d/t2-hardware-test.sh index 8b2c478b..c7cf388b 100644 --- a/test/shell.d/t2-hardware-test.sh +++ b/test/shell.d/t2-hardware-test.sh @@ -20,6 +20,16 @@ grep -Fq 'KERNEL_CMDLINE[default]+=" intel_iommu=on iommu=pt pm_async=off mem_sl fail "T2 setup leaves optional Touch Bar customization uninstalled" ! grep -qx 'tiny-dfr' "$other_packages" || fail "the ISO no longer caches tiny-dfr" +grep -Fq 'apple-bcm-firmware-fetcher' "$fix_t2" || + fail "T2 setup installs the firmware fetcher" +grep -Fq 'omarchy-pkg-drop apple-bcm-firmware' "$fix_t2" || + fail "T2 setup drops the superseded firmware package before the fetcher conflicts with it" +! grep -Fq 'apple-bcm-firmware \' "$fix_t2" || + fail "T2 setup no longer adds the superseded firmware package" +grep -Fq 'apple-bcm-firmware-fetcher' "$other_packages" || + fail "the default package list installs the firmware fetcher" +! grep -qx 'apple-bcm-firmware' "$other_packages" || + fail "the default package list no longer names the superseded firmware package" pass "fresh T2 setup uses t2bce-compatible suspend, fan, and Touch Bar defaults" test_tmp=$(mktemp -d)