From ad1ceba28e1e57c5b9296d95f018bf44d0b30d1a Mon Sep 17 00:00:00 2001 From: rope Date: Tue, 30 Jun 2026 10:42:08 +0100 Subject: [PATCH 1/2] macbook: pin to 6.12 LTS kernel so broadcom_sta + facetimehd build (7.x breaks them) Co-Authored-By: Claude Opus 4.8 --- hosts/hardware/FredOS-Macbook.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hosts/hardware/FredOS-Macbook.nix b/hosts/hardware/FredOS-Macbook.nix index 3518b0e..a045388 100644 --- a/hosts/hardware/FredOS-Macbook.nix +++ b/hosts/hardware/FredOS-Macbook.nix @@ -34,10 +34,17 @@ hardware.enableRedistributableFirmware = true; hardware.facetimehd.enable = true; + # Pin to the 6.12 LTS kernel: the out-of-tree broadcom_sta (Wi-Fi) and + # facetimehd (iSight) modules don't build against linuxPackages_latest + # (7.x) — broadcom-sta's wl_cfg80211 ops no longer match the cfg80211 API. + # 6.12 LTS is the newest kernel both modules compile against. Overrides + # common.nix's linuxPackages_latest. + boot.kernelPackages = lib.mkForce pkgs.linuxPackages_6_12; + # wait_prepare/wait_finish were removed from struct vb2_ops in Linux 6.8 nixpkgs.overlays = [ (final: prev: { - linuxPackages_latest = prev.linuxPackages_latest.extend (lpFinal: lpPrev: { + linuxPackages_6_12 = prev.linuxPackages_6_12.extend (lpFinal: lpPrev: { facetimehd = lpPrev.facetimehd.overrideAttrs (old: { postPatch = (old.postPatch or "") + '' sed -i '/\.wait_prepare[[:space:]]*=.*vb2_ops_wait_prepare/d' fthd_v4l2.c From 6cc3fb641970242752bf40e18d0f5f78d87d79a6 Mon Sep 17 00:00:00 2001 From: rope Date: Tue, 30 Jun 2026 10:42:08 +0100 Subject: [PATCH 2/2] hardware-health: drop fwupd; no P700 BIOS published on LVFS Co-Authored-By: Claude Opus 4.8 --- services/hardware-health.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/services/hardware-health.nix b/services/hardware-health.nix index 9ada84d..6d2d525 100644 --- a/services/hardware-health.nix +++ b/services/hardware-health.nix @@ -24,13 +24,6 @@ # ras-mc-ctl on PATH for manual inspection. environment.systemPackages = [ pkgs.rasdaemon ]; - # fwupd: lets us check whether Lenovo publishes a P700 BIOS/microcode - # update to LVFS that can be flashed in-place (UEFI capsule, applied on - # reboot). The dual-Xeon QPI fault is intermittent; a microcode bump may - # improve link tolerance. If LVFS has no payload for this 2014 board, - # this is harmless and can be removed. - services.fwupd.enable = true; - # Hardware watchdog: auto-reboot a hung box instead of a dead LAN. # systemd pets /dev/watchdog0 at half the runtime interval; if it stops # (hang), the chipset resets after RuntimeWatchdogSec.