about summary refs log tree commit diff
path: root/modules/nixos-apple-silicon/apple-silicon-support
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-10-22 08:24:10 +0000
committerAlyssa Ross <hi@alyssa.is>2023-10-22 08:24:10 +0000
commitb5faee77a2dceb31545db209ebee1476acb71198 (patch)
tree784c2f2bb13052e519604b14cc235dec3b7f55ef /modules/nixos-apple-silicon/apple-silicon-support
parent2a87a287685e127797106ffe684015a2371729fd (diff)
parent08cea2d8b6b32b5dd3976d369863d4b22a22f2b4 (diff)
downloadnixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar
nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.gz
nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.bz2
nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.lz
nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.xz
nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.zst
nixlib-b5faee77a2dceb31545db209ebee1476acb71198.zip
Merge commit '08cea2d8b6b32b5dd3976d369863d4b22a22f2b4'
Diffstat (limited to 'modules/nixos-apple-silicon/apple-silicon-support')
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix1
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix20
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix19
-rwxr-xr-xmodules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix4
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config103
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix65
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch15
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch14
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch55
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix5
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix2
-rw-r--r--modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix22
12 files changed, 175 insertions, 150 deletions
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix
index 1ae87bb9e4c5..d6f397671c72 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix
@@ -5,6 +5,7 @@
     ./mesa
     ./peripheral-firmware
     ./boot-m1n1
+    ./sound
   ];
 
   config =
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix
new file mode 100644
index 000000000000..5713f1aa18ec
--- /dev/null
+++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix
@@ -0,0 +1,20 @@
+{ config, pkgs, lib, ... }:
+
+{
+  options.hardware.asahi = {
+    setupAlsaUcm = lib.mkOption {
+      type = lib.types.bool;
+      default = config.sound.enable;
+      description = ''
+	Enable the Asahi-specific ALSA UCM2 configs in the global environment
+        so that headphone jack input and output work properly.
+      '';
+    };
+  };
+
+  config = lib.mkIf config.hardware.asahi.setupAlsaUcm {
+    environment.variables = {
+      ALSA_CONFIG_UCM2 = "${pkgs.alsa-ucm-conf-asahi}/share/alsa/ucm2";
+    };
+  };
+}
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix
new file mode 100644
index 000000000000..bb34f19f4f9c
--- /dev/null
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix
@@ -0,0 +1,19 @@
+{ lib
+, fetchFromGitHub
+, alsa-ucm-conf }:
+
+(alsa-ucm-conf.overrideAttrs (oldAttrs: rec {
+  version = "3";
+
+  src_asahi = fetchFromGitHub {
+    # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/alsa-ucm-conf-asahi/PKGBUILD
+    owner = "AsahiLinux";
+    repo = "alsa-ucm-conf-asahi";
+    rev = "v${version}";
+    hash = "sha256-TCCT0AJx0SdnTzzBaV94zuD2hrPqvk+9vTTuEQmpJjc=";
+  };
+  
+  postInstall = oldAttrs.postInstall or "" + ''
+    cp -r ${src_asahi}/ucm2 $out/share/alsa
+  '';
+}))
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix
index 5b0a2b83f66e..556beb571cb8 100755
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix
@@ -8,14 +8,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "asahi-fwextract";
-  version = "0.5.4";
+  version = "0.6.9";
 
   # tracking version: https://github.com/AsahiLinux/PKGBUILDs/blob/main/asahi-fwextract/PKGBUILD
   src = fetchFromGitHub {
     owner = "AsahiLinux";
     repo = "asahi-installer";
     rev = "v${version}";
-    hash = "sha256-jUEVuferUrJ+0T+rWUemE1dIUTo9puUDCmp/p5vIFtM=";
+    hash = "sha256-MkNi4EBgT4gfev/yWqYyw5HZxewj6XTfb8na+eI2iVo=";
   };
 
   postPatch = ''
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config
index 3c6df06adbda..37294fd976bc 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config
@@ -3,7 +3,7 @@
 
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 6.4.0 Kernel Configuration
+# Linux/arm64 6.5.0 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.1.0"
 CONFIG_CC_IS_GCC=y
@@ -257,6 +257,7 @@ CONFIG_KALLSYMS_BASE_RELATIVE=y
 CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
 CONFIG_KCMP=y
 CONFIG_RSEQ=y
+CONFIG_CACHESTAT_SYSCALL=y
 # CONFIG_DEBUG_RSEQ is not set
 # CONFIG_EMBEDDED is not set
 CONFIG_HAVE_PERF_EVENTS=y
@@ -273,8 +274,8 @@ CONFIG_PERF_EVENTS=y
 CONFIG_SYSTEM_DATA_VERIFICATION=y
 CONFIG_PROFILING=y
 CONFIG_RUST=y
-CONFIG_RUSTC_VERSION_TEXT="rustc 1.71.1 (eb26296b5 2023-08-03) (Arch Linux rust 1:1.71.1-1)"
-CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.66.1"
+CONFIG_RUSTC_VERSION_TEXT="rustc 1.72.1 (d5c2e9c34 2023-09-13) (Arch Linux rust 1:1.72.1-1)"
+CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.68.1"
 # end of General setup
 
 CONFIG_ARM64=y
@@ -326,6 +327,7 @@ CONFIG_ARCH_APPLE=y
 # CONFIG_ARCH_MESON is not set
 # CONFIG_ARCH_MVEBU is not set
 # CONFIG_ARCH_NXP is not set
+# CONFIG_ARCH_MA35 is not set
 # CONFIG_ARCH_NPCM is not set
 # CONFIG_ARCH_QCOM is not set
 # CONFIG_ARCH_REALTEK is not set
@@ -333,6 +335,7 @@ CONFIG_ARCH_APPLE=y
 # CONFIG_ARCH_ROCKCHIP is not set
 # CONFIG_ARCH_SEATTLE is not set
 # CONFIG_ARCH_INTEL_SOCFPGA is not set
+# CONFIG_ARCH_STM32 is not set
 # CONFIG_ARCH_SYNQUACER is not set
 # CONFIG_ARCH_TEGRA is not set
 # CONFIG_ARCH_SPRD is not set
@@ -352,6 +355,7 @@ CONFIG_ARCH_APPLE=y
 #
 # ARM errata workarounds via the alternatives framework
 #
+# CONFIG_AMPERE_ERRATUM_AC03_CPU_38 is not set
 # CONFIG_ARM64_ERRATUM_826319 is not set
 # CONFIG_ARM64_ERRATUM_827319 is not set
 # CONFIG_ARM64_ERRATUM_824069 is not set
@@ -493,7 +497,6 @@ CONFIG_ARM64_EPAN=y
 
 CONFIG_ARM64_SVE=y
 CONFIG_ARM64_SME=y
-CONFIG_ARM64_MODULE_PLTS=y
 # CONFIG_ARM64_PSEUDO_NMI is not set
 CONFIG_ARM64_MEMORY_MODEL_CONTROL=y
 CONFIG_RELOCATABLE=y
@@ -614,6 +617,8 @@ CONFIG_KVM=y
 CONFIG_CRASH_CORE=y
 CONFIG_KEXEC_CORE=y
 CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y
+CONFIG_HOTPLUG_CORE_SYNC=y
+CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
 CONFIG_KPROBES=y
 CONFIG_JUMP_LABEL=y
 # CONFIG_STATIC_KEYS_SELFTEST is not set
@@ -848,6 +853,7 @@ CONFIG_ZPOOL=y
 CONFIG_SWAP=y
 CONFIG_ZSWAP=y
 # CONFIG_ZSWAP_DEFAULT_ON is not set
+# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set
 # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
 CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y
 # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
@@ -868,7 +874,7 @@ CONFIG_ZSMALLOC_CHAIN_SIZE=8
 #
 # SLAB allocator options
 #
-# CONFIG_SLAB is not set
+# CONFIG_SLAB_DEPRECATED is not set
 CONFIG_SLUB=y
 # CONFIG_SLUB_TINY is not set
 CONFIG_SLAB_MERGE_DEFAULT=y
@@ -935,6 +941,8 @@ CONFIG_SECRETMEM=y
 # CONFIG_USERFAULTFD is not set
 # CONFIG_LRU_GEN is not set
 CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y
+CONFIG_PER_VMA_LOCK=y
+CONFIG_LOCK_MM_AND_FIND_VMA=y
 
 #
 # Data Access Monitoring
@@ -2749,6 +2757,11 @@ CONFIG_PPP_MPPE=m
 CONFIG_PPP_MULTILINK=y
 CONFIG_PPPOATM=m
 CONFIG_PPPOE=m
+# CONFIG_PPPOE_HASH_BITS_1 is not set
+# CONFIG_PPPOE_HASH_BITS_2 is not set
+CONFIG_PPPOE_HASH_BITS_4=y
+# CONFIG_PPPOE_HASH_BITS_8 is not set
+CONFIG_PPPOE_HASH_BITS=4
 CONFIG_PPTP=m
 CONFIG_PPPOL2TP=m
 CONFIG_PPP_ASYNC=m
@@ -3632,6 +3645,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_MAX31722 is not set
 # CONFIG_SENSORS_MAX31730 is not set
 # CONFIG_SENSORS_MAX31760 is not set
+# CONFIG_MAX31827 is not set
 # CONFIG_SENSORS_MAX6620 is not set
 # CONFIG_SENSORS_MAX6621 is not set
 # CONFIG_SENSORS_MAX6639 is not set
@@ -3736,6 +3750,7 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
+# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_BANG_BANG=y
@@ -3765,6 +3780,7 @@ CONFIG_WATCHDOG_OPEN_TIMEOUT=0
 CONFIG_SOFT_WATCHDOG=m
 # CONFIG_GPIO_WATCHDOG is not set
 # CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_XILINX_WINDOW_WATCHDOG is not set
 # CONFIG_ZIIRAVE_WATCHDOG is not set
 # CONFIG_ARM_SP805_WATCHDOG is not set
 # CONFIG_ARM_SBSA_WATCHDOG is not set
@@ -3810,7 +3826,7 @@ CONFIG_MFD_APPLE_SPMI_PMU=m
 # CONFIG_MFD_BD9571MWV is not set
 # CONFIG_MFD_AXP20X_I2C is not set
 # CONFIG_MFD_MADERA is not set
-# CONFIG_MFD_MAX597X is not set
+# CONFIG_MFD_MAX5970 is not set
 # CONFIG_PMIC_DA903X is not set
 # CONFIG_MFD_DA9052_SPI is not set
 # CONFIG_MFD_DA9052_I2C is not set
@@ -3834,6 +3850,7 @@ CONFIG_MFD_APPLE_SPMI_PMU=m
 # CONFIG_MFD_88PM805 is not set
 # CONFIG_MFD_88PM860X is not set
 # CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77541 is not set
 # CONFIG_MFD_MAX77620 is not set
 # CONFIG_MFD_MAX77650 is not set
 # CONFIG_MFD_MAX77686 is not set
@@ -3861,7 +3878,8 @@ CONFIG_MFD_APPLE_SPMI_PMU=m
 # CONFIG_MFD_RT5033 is not set
 # CONFIG_MFD_RT5120 is not set
 # CONFIG_MFD_RC5T583 is not set
-# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RK8XX_I2C is not set
+# CONFIG_MFD_RK8XX_SPI is not set
 # CONFIG_MFD_RN5T618 is not set
 # CONFIG_MFD_SEC_CORE is not set
 # CONFIG_MFD_SI476X_CORE is not set
@@ -3889,6 +3907,8 @@ CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TPS65910 is not set
 # CONFIG_MFD_TPS65912_I2C is not set
 # CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS6594_I2C is not set
+# CONFIG_MFD_TPS6594_SPI is not set
 # CONFIG_TWL4030_CORE is not set
 # CONFIG_TWL6040_CORE is not set
 # CONFIG_MFD_WL1273_CORE is not set
@@ -3964,6 +3984,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
 # CONFIG_REGULATOR_PWM is not set
 # CONFIG_REGULATOR_QCOM_SPMI is not set
 # CONFIG_REGULATOR_QCOM_USB_VBUS is not set
+# CONFIG_REGULATOR_RAA215300 is not set
 # CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
 # CONFIG_REGULATOR_RT4801 is not set
 # CONFIG_REGULATOR_RT4803 is not set
@@ -3983,6 +4004,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS6286X is not set
+# CONFIG_REGULATOR_TPS6287X is not set
 # CONFIG_REGULATOR_TPS65023 is not set
 # CONFIG_REGULATOR_TPS6507X is not set
 # CONFIG_REGULATOR_TPS65132 is not set
@@ -4169,7 +4191,6 @@ CONFIG_VIDEO_PVRUSB2=m
 CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160=m
 
 #
@@ -4293,6 +4314,11 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y
 #
 
 #
+# Apple media platform drivers
+#
+CONFIG_VIDEO_APPLE_ISP=m
+
+#
 # Aspeed media platform drivers
 #
 
@@ -4440,6 +4466,7 @@ CONFIG_VIDEO_MT9V011=m
 # CONFIG_VIDEO_MT9V032 is not set
 # CONFIG_VIDEO_MT9V111 is not set
 # CONFIG_VIDEO_OG01A1B is not set
+# CONFIG_VIDEO_OV01A10 is not set
 # CONFIG_VIDEO_OV02A10 is not set
 # CONFIG_VIDEO_OV08D10 is not set
 # CONFIG_VIDEO_OV08X40 is not set
@@ -4900,6 +4927,7 @@ CONFIG_DRM_PANEL_SIMPLE=m
 # CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
@@ -4995,15 +5023,14 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
 CONFIG_FB_NOTIFY=y
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
 CONFIG_FB_SYS_FILLRECT=y
 CONFIG_FB_SYS_COPYAREA=y
 CONFIG_FB_SYS_IMAGEBLIT=y
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_SYS_FOPS=y
 CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_SYS_HELPERS=y
+CONFIG_FB_SYS_HELPERS_DEFERRED=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
 
@@ -5141,10 +5168,12 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_SEQ_MIDI_EVENT=m
 CONFIG_SND_SEQ_MIDI=m
 CONFIG_SND_SEQ_VIRMIDI=m
+# CONFIG_SND_SEQ_UMP is not set
 CONFIG_SND_MPU401_UART=m
 CONFIG_SND_DRIVERS=y
 CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
+# CONFIG_SND_PCMTEST is not set
 CONFIG_SND_VIRMIDI=m
 CONFIG_SND_MTPAV=m
 CONFIG_SND_SERIAL_U16550=m
@@ -5161,6 +5190,7 @@ CONFIG_SND_HDA_PREALLOC_SIZE=4096
 # CONFIG_SND_SPI is not set
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set
 CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y
 CONFIG_SND_USB_UA101=m
 CONFIG_SND_USB_CAIAQ=m
@@ -5206,6 +5236,7 @@ CONFIG_SND_SOC_FSL_UTILS=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
 # end of SoC Audio for Freescale CPUs
 
+# CONFIG_SND_SOC_CHV3_I2S is not set
 # CONFIG_SND_I2S_HI6210_I2S is not set
 # CONFIG_SND_SOC_IMG is not set
 # CONFIG_SND_SOC_MTK_BTCVSD is not set
@@ -5249,6 +5280,7 @@ CONFIG_SND_SOC_WM_ADSP=m
 # CONFIG_SND_SOC_AW88395 is not set
 # CONFIG_SND_SOC_BD28623 is not set
 CONFIG_SND_SOC_BT_SCO=m
+# CONFIG_SND_SOC_CHV3_CODEC is not set
 CONFIG_SND_SOC_CS35L32=m
 CONFIG_SND_SOC_CS35L33=m
 CONFIG_SND_SOC_CS35L34=m
@@ -5306,6 +5338,7 @@ CONFIG_SND_SOC_CS53L30=m
 # CONFIG_SND_SOC_MAX98927 is not set
 # CONFIG_SND_SOC_MAX98520 is not set
 # CONFIG_SND_SOC_MAX98373_I2C is not set
+# CONFIG_SND_SOC_MAX98388 is not set
 # CONFIG_SND_SOC_MAX98390 is not set
 # CONFIG_SND_SOC_MAX98396 is not set
 # CONFIG_SND_SOC_MAX9860 is not set
@@ -5341,6 +5374,7 @@ CONFIG_SND_SOC_CS53L30=m
 # CONFIG_SND_SOC_SSM2518 is not set
 # CONFIG_SND_SOC_SSM2602_SPI is not set
 # CONFIG_SND_SOC_SSM2602_I2C is not set
+# CONFIG_SND_SOC_SSM3515 is not set
 # CONFIG_SND_SOC_SSM4567 is not set
 # CONFIG_SND_SOC_STA32X is not set
 # CONFIG_SND_SOC_STA350 is not set
@@ -5350,6 +5384,7 @@ CONFIG_SND_SOC_TAS2562=m
 CONFIG_SND_SOC_TAS2764=m
 CONFIG_SND_SOC_TAS2770=m
 CONFIG_SND_SOC_TAS2780=m
+# CONFIG_SND_SOC_TAS2781_I2C is not set
 CONFIG_SND_SOC_TAS5086=m
 CONFIG_SND_SOC_TAS571X=m
 CONFIG_SND_SOC_TAS5720=m
@@ -5505,6 +5540,7 @@ CONFIG_HID_NINTENDO=m
 CONFIG_NINTENDO_FF=y
 CONFIG_HID_NTI=m
 CONFIG_HID_NTRIG=m
+# CONFIG_HID_NVIDIA_SHIELD is not set
 CONFIG_HID_ORTEK=m
 CONFIG_HID_PANTHERLORD=m
 CONFIG_PANTHERLORD_FF=y
@@ -5945,6 +5981,7 @@ CONFIG_TYPEC_TPS6598X=m
 # CONFIG_TYPEC_MUX_FSA4480 is not set
 # CONFIG_TYPEC_MUX_GPIO_SBU is not set
 # CONFIG_TYPEC_MUX_PI3USB30532 is not set
+# CONFIG_TYPEC_MUX_NB7VPQ904M is not set
 # end of USB Type-C Multiplexer/DeMultiplexer Switch support
 
 #
@@ -5998,6 +6035,7 @@ CONFIG_LEDS_CLASS_FLASH=m
 # LED drivers
 #
 # CONFIG_LEDS_AN30259A is not set
+# CONFIG_LEDS_AW200XX is not set
 # CONFIG_LEDS_AW2013 is not set
 # CONFIG_LEDS_BCM6328 is not set
 # CONFIG_LEDS_BCM6358 is not set
@@ -6036,7 +6074,7 @@ CONFIG_LEDS_SYSCON=y
 # CONFIG_LEDS_MLXREG is not set
 CONFIG_LEDS_USER=m
 # CONFIG_LEDS_SPI_BYTE is not set
-# CONFIG_LEDS_TI_LMU_COMMON is not set
+# CONFIG_LEDS_LM3697 is not set
 
 #
 # Flash and Torch LED drivers
@@ -6270,14 +6308,31 @@ CONFIG_VFIO_CONTAINER=y
 CONFIG_VFIO_IOMMU_TYPE1=m
 # CONFIG_VFIO_NOIOMMU is not set
 CONFIG_VFIO_VIRQFD=y
+
+#
+# VFIO support for PCI devices
+#
 CONFIG_VFIO_PCI_CORE=m
 CONFIG_VFIO_PCI_MMAP=y
 CONFIG_VFIO_PCI_INTX=y
 CONFIG_VFIO_PCI=m
+# end of VFIO support for PCI devices
+
+#
+# VFIO support for platform devices
+#
+CONFIG_VFIO_PLATFORM_BASE=m
 CONFIG_VFIO_PLATFORM=m
 # CONFIG_VFIO_AMBA is not set
+
+#
+# VFIO platform reset drivers
+#
 # CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET is not set
 # CONFIG_VFIO_PLATFORM_AMDXGBE_RESET is not set
+# end of VFIO platform reset drivers
+# end of VFIO support for platform devices
+
 # CONFIG_VIRT_DRIVERS is not set
 CONFIG_VIRTIO_ANCHOR=y
 CONFIG_VIRTIO=y
@@ -6604,6 +6659,7 @@ CONFIG_ARM_PMUV3=y
 CONFIG_APPLE_M1_CPU_PMU=y
 # CONFIG_HISI_PCIE_PMU is not set
 # CONFIG_HNS3_PMU is not set
+# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set
 # end of Performance monitor support
 
 CONFIG_RAS=y
@@ -6740,7 +6796,6 @@ CONFIG_QUOTA_TREE=y
 # CONFIG_QFMT_V1 is not set
 CONFIG_QFMT_V2=y
 CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=y
 CONFIG_AUTOFS_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
@@ -7026,7 +7081,6 @@ CONFIG_SECURITYFS=y
 CONFIG_SECURITY_NETWORK=y
 CONFIG_SECURITY_NETWORK_XFRM=y
 CONFIG_SECURITY_PATH=y
-CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
 # CONFIG_HARDENED_USERCOPY is not set
 # CONFIG_FORTIFY_SOURCE is not set
 # CONFIG_STATIC_USERMODEHELPER is not set
@@ -7089,6 +7143,7 @@ CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_CRYPTO_AEAD=y
 CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_SIG2=y
 CONFIG_CRYPTO_SKCIPHER=y
 CONFIG_CRYPTO_SKCIPHER2=y
 CONFIG_CRYPTO_HASH=y
@@ -7182,6 +7237,7 @@ CONFIG_CRYPTO_AEGIS128=m
 CONFIG_CRYPTO_CHACHA20POLY1305=m
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_GENIV=y
 CONFIG_CRYPTO_SEQIV=y
 CONFIG_CRYPTO_ECHAINIV=m
 CONFIG_CRYPTO_ESSIV=m
@@ -7242,6 +7298,7 @@ CONFIG_CRYPTO_DRBG_HASH=y
 CONFIG_CRYPTO_DRBG_CTR=y
 CONFIG_CRYPTO_DRBG=y
 CONFIG_CRYPTO_JITTERENTROPY=y
+# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set
 CONFIG_CRYPTO_KDF800108_CTR=y
 # end of Random number generation
 
@@ -7438,6 +7495,7 @@ CONFIG_HAS_IOPORT=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=y
 CONFIG_DMA_OPS=y
+CONFIG_NEED_SG_DMA_FLAGS=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
@@ -7448,6 +7506,7 @@ CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y
 CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y
 CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y
 CONFIG_SWIOTLB=y
+CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
 # CONFIG_DMA_RESTRICTED_POOL is not set
 CONFIG_DMA_NONCOHERENT_MMAP=y
 CONFIG_DMA_COHERENT_POOL=y
@@ -7593,6 +7652,7 @@ CONFIG_PTDUMP_CORE=y
 # CONFIG_PTDUMP_DEBUGFS is not set
 CONFIG_HAVE_DEBUG_KMEMLEAK=y
 # CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_PER_VMA_LOCK_STATS is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SHRINKER_DEBUG is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
@@ -7622,10 +7682,13 @@ CONFIG_PANIC_TIMEOUT=0
 CONFIG_LOCKUP_DETECTOR=y
 CONFIG_SOFTLOCKUP_DETECTOR=y
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y
+# CONFIG_HARDLOCKUP_DETECTOR is not set
 CONFIG_DETECT_HUNG_TASK=y
 CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
 # CONFIG_WQ_WATCHDOG is not set
+# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set
 # CONFIG_TEST_LOCKUP is not set
 # end of Debug Oops, Lockups and Hangs
 
@@ -7698,6 +7761,7 @@ CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
 # CONFIG_DEBUG_CGROUP_REF is not set
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
@@ -7706,6 +7770,8 @@ CONFIG_HAVE_C_RECORDMCOUNT=y
 CONFIG_TRACING_SUPPORT=y
 # CONFIG_FTRACE is not set
 # CONFIG_SAMPLES is not set
+CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
+CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
 CONFIG_STRICT_DEVMEM=y
 # CONFIG_IO_STRICT_DEVMEM is not set
 
@@ -7740,3 +7806,12 @@ CONFIG_RUST_OVERFLOW_CHECKS=y
 # CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
 # end of Rust hacking
 # end of Kernel hacking
+
+# NixOS-specific config options
+# needed by systemd
+CONFIG_AUTOFS4_FS=y
+# needed for systemd initrd and TPM features
+CONFIG_ACPI=y
+CONFIG_TCG_TPM=y
+CONFIG_TCG_TIS=m
+CONFIG_TCG_CRB=m
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix
index abcd9963d02f..4696a6f1af69 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix
@@ -11,24 +11,41 @@
 }:
 
 let
-  # parse <OPT> (y|m|n) style configuration as found in a patch's extraConfig
+  i = builtins.elemAt;
+
+  # parse <OPT> [ymn]|foo style configuration as found in a patch's extraConfig
   # into a list of k, v tuples
   parseExtraConfig = config:
     let
       lines =
         builtins.filter (s: s != "") (lib.strings.splitString "\n" config);
-      parseLine = line:
-        let t = lib.strings.splitString " " line;
-        in assert (builtins.length t == 2); t;
+      parseLine = line: let
+        t = lib.strings.splitString " " line;
+        join = l: builtins.foldl' (a: b: "${a} ${b}")
+          (builtins.head l) (builtins.tail l);
+        v = if (builtins.length t) > 2 then join (builtins.tail t) else (i t 1);
+      in [ "CONFIG_${i t 0}" v ];
     in map parseLine lines;
 
-  # parse CONFIG_<OPT>=(y|m|n) style configuration as found in a config file
+  # parse <OPT>=lib.kernel.(yes|module|no)|lib.kernel.freeform "foo"
+  # style configuration as found in a patch's extraStructuredConfig into
+  # a list of k, v tuples
+  parseExtraStructuredConfig = config: lib.attrsets.mapAttrsToList
+    (k: v: [ "CONFIG_${k}" (v.tristate or v.freeform) ] ) config;
+
+  parsePatchConfig = { extraConfig ? "", extraStructuredConfig ? {}, ... }:
+    (parseExtraConfig extraConfig) ++
+    (parseExtraStructuredConfig extraStructuredConfig);
+
+  # parse CONFIG_<OPT>=[ymn]|"foo" style configuration as found in a config file
   # into a list of k, v tuples
   parseConfig = config:
     let
-      parseLine = builtins.match "(CONFIG_[[:upper:][:digit:]_]+)=(y|m|n)";
+      parseLine = builtins.match ''(CONFIG_[[:upper:][:digit:]_]+)=(([ymn])|"([^"]*)")'';
+      # get either the [ymn] option or the "foo" option; whichever matched
+      t = l: let v = (i l 2); in [ (i l 0) (if v != null then v else (i l 3)) ];
       lines = lib.strings.splitString "\n" config;
-    in builtins.filter (t: t != null) (map parseLine lines);
+    in map t (builtins.filter (l: l != null) (map parseLine lines));
 
   origConfigfile = ./config;
 
@@ -38,10 +55,13 @@ let
       origConfigText = builtins.readFile origConfigfile;
 
       # extraConfig from all patches in order
-      extraConfig = lib.fold (patch: ex: ex ++
-        (parseExtraConfig (patch.extraConfig or ""))) [] _kernelPatches;
+      extraConfig =
+        lib.fold (patch: ex: ex ++ (parsePatchConfig patch)) [] _kernelPatches;
       # config file text for above
-      extraConfigText = (map (t: "CONFIG_${builtins.elemAt t 0}=${builtins.elemAt t 1}") extraConfig);
+      extraConfigText = let
+        text = k: v: if (v == "y") || (v == "m") || (v == "n")
+          then "${k}=${v}" else ''${k}="${v}"'';
+      in (map (t: text (i t 0) (i t 1)) extraConfig);
 
       # final config as a text file path
       configfile = if extraConfig == [] then origConfigfile else
@@ -53,9 +73,9 @@ let
         '';
       # final config as an attrset
       config = let
-        makePair = t: lib.nameValuePair (builtins.elemAt t 0) (builtins.elemAt t 1);
+        makePair = t: lib.nameValuePair (i t 0) (i t 1);
         configList = (parseConfig origConfigText) ++ extraConfig;
-      in builtins.listToAttrs (map makePair configList);
+      in builtins.listToAttrs (map makePair (lib.lists.reverseList configList));
 
       # used to (ostensibly) keep compatibility for those running stable versions of nixos
       rustOlder = version: withRust && (lib.versionOlder rustc.version version);
@@ -68,15 +88,16 @@ let
     (linuxKernel.manualConfig rec {
       inherit stdenv lib;
 
-      version = "6.4.0-asahi";
+      version = "6.5.0-asahi";
       modDirVersion = version;
+      extraMeta.branch = "6.5";
 
       src = fetchFromGitHub {
         # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/linux-asahi/PKGBUILD
         owner = "AsahiLinux";
         repo = "linux";
-        rev = "asahi-6.4-10";
-        hash = "sha256-PUuQcqcQy7digMb0VwO5AVpAC8cA2WsTR6xDhGtL/pY=";
+        rev = "asahi-6.5-15";
+        hash = "sha256-Rruk/Nrw425XerZjgDJ4PJ3c63CCycch1qz7vFxHPCE=";
       };
 
       kernelPatches = [
@@ -98,23 +119,9 @@ let
         { name = "default-pagesize-16k";
           patch = ./default-pagesize-16k.patch;
         }
-      ] ++ lib.optionals (bindgenAtLeast "0.63.0") [
-        { name = "rust-bindgen";
-          patch = ./rust-bindgen-0.63-fix.patch;
-        }
-      ] ++ lib.optionals (bindgenAtLeast "0.65.0") [
-        { name = "rust-bindgen";
-          patch = ./rust-bindgen-0.65-fix.patch;
-        }
-      ] ++ lib.optionals (rustAtLeast "1.72.0") [
-        { name = "rustc-1.72.0";
-          patch = ./rustc-1.72.0-fix.patch;
-        }
       ] ++ _kernelPatches;
 
       inherit configfile config;
-
-      extraMeta.branch = "6.4";
     } // (args.argsOverride or {})).overrideAttrs (old: if withRust then {
       nativeBuildInputs = (old.nativeBuildInputs or []) ++ [
         rust-bindgen
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch
deleted file mode 100644
index 4b5e9a225d18..000000000000
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/rust/Makefile b/rust/Makefile
-index bfe16bcd9..2116b1b7e 100644
---- a/rust/Makefile
-+++ b/rust/Makefile
-@@ -333,8 +333,8 @@ $(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \
- # given it is `libclang`; but for consistency, future Clang changes and/or
- # a potential future GCC backend for `bindgen`, we disable it too.
- $(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_flags = \
--    --blacklist-type '.*' --whitelist-var '' \
--    --whitelist-function 'rust_helper_.*'
-+    --blocklist-type '.*' --allowlist-var '' \
-+    --allowlist-function 'rust_helper_.*'
- $(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_cflags = \
-     -I$(objtree)/$(obj) -Wno-missing-prototypes -Wno-missing-declarations
- $(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_extra = ; \
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch
deleted file mode 100644
index 75f10cc12156..000000000000
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/rust/Makefile b/rust/Makefile
-index aee0701..bc4bfbb 100644
---- a/rust/Makefile
-+++ b/rust/Makefile
-@@ -288,7 +288,7 @@ quiet_cmd_bindgen = BINDGEN $@
- 	$(BINDGEN) $< $(bindgen_target_flags) \
- 		--use-core --with-derive-default --ctypes-prefix core::ffi --no-layout-tests \
- 		--no-debug '.*' \
--		--size_t-is-usize -o $@ -- $(bindgen_c_flags_final) -DMODULE \
-+		-o $@ -- $(bindgen_c_flags_final) -DMODULE \
- 		$(bindgen_target_cflags) $(bindgen_target_extra)
- 
- $(obj)/bindings/bindings_generated.rs: private bindgen_target_flags = \
-
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch
deleted file mode 100644
index faba7ae9f11f..000000000000
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff --git a/rust/alloc/alloc.rs b/rust/alloc/alloc.rs
-index 74bf72412ad9..fe48094ac1f6 100644
---- a/rust/alloc/alloc.rs
-+++ b/rust/alloc/alloc.rs
-@@ -329,14 +329,15 @@ unsafe fn exchange_malloc(size: usize, align: usize) -> *mut u8 {
-     }
- }
- 
--#[cfg_attr(not(test), lang = "box_free")]
-+#[cfg(all(bootstrap, not(test)))]
-+#[lang = "box_free"]
- #[inline]
- // This signature has to be the same as `Box`, otherwise an ICE will happen.
- // When an additional parameter to `Box` is added (like `A: Allocator`), this has to be added here as
- // well.
- // For example if `Box` is changed to  `struct Box<T: ?Sized, A: Allocator>(Unique<T>, A)`,
- // this function has to be changed to `fn box_free<T: ?Sized, A: Allocator>(Unique<T>, A)` as well.
--pub(crate) unsafe fn box_free<T: ?Sized, A: Allocator>(
-+unsafe fn box_free<T: ?Sized, A: Allocator>(
-     ptr: Unique<T>,
-     alloc: A,
- ) {
-diff --git a/rust/alloc/boxed.rs b/rust/alloc/boxed.rs
-index 0c043c59c1a4..64da5bd482d1 100644
---- a/rust/alloc/boxed.rs
-+++ b/rust/alloc/boxed.rs
-@@ -1218,7 +1218,14 @@ pub fn into_pin(boxed: Self) -> Pin<Self>
- #[stable(feature = "rust1", since = "1.0.0")]
- unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Box<T, A> {
-     fn drop(&mut self) {
--        // FIXME: Do nothing, drop is currently performed by compiler.
-+        // the T in the Box is dropped by the compiler before the destructor is run
-+
-+        let ptr = self.0;
-+
-+        unsafe {
-+            let layout = Layout::for_value_raw(ptr.as_ptr());
-+            self.1.deallocate(From::from(ptr.cast()), layout)
-+        }
-     }
- }
- 
-diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
-index 3bb73b614fd1..a7521cec9e16 100644
---- a/rust/kernel/sync/arc.rs
-+++ b/rust/kernel/sync/arc.rs
-@@ -350,7 +350,7 @@ fn drop(&mut self) {
- 
-             // SAFETY: The pointer was initialised from the result of `Box::leak`, and
-             // a ManuallyDrop<T> is compatible. We already dropped the contents above.
--            unsafe { Box::from_raw(self.ptr.as_ptr() as *mut ManuallyDrop<ArcInner<T>>) };
-+            unsafe { drop(Box::from_raw(self.ptr.as_ptr() as *mut ManuallyDrop<ArcInner<T>>)) };
-         }
-     }
- }
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix
index abd6e1f1d77d..7955f47ab435 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix
@@ -25,14 +25,14 @@ let
   });
 in stdenv.mkDerivation rec {
   pname = "m1n1";
-  version = "1.3.6";
+  version = "1.4.2";
 
   src = fetchFromGitHub {
     # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/m1n1/PKGBUILD
     owner = "AsahiLinux";
     repo = "m1n1";
     rev = "v${version}";
-    hash = "sha256-OlNI7SKWiG7+I5TJhdQuPjCigkYr5C70U/7Go3aEAxc=";
+    hash = "sha256-zPHLlhXUIX6MV2pnDkuSg4Pz8gB4YOZiaa8MuLasgPY=";
     fetchSubmodules = true;
   };
 
@@ -62,6 +62,7 @@ in stdenv.mkDerivation rec {
 
     rm bootlogo_128.png
     convert bootlogo_256.png -resize 128x128 bootlogo_128.png
+    patchShebangs --build ./makelogo.sh
     ./makelogo.sh
     popd &>/dev/null
   '';
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix
index 635a41db7bd2..982d9081fcab 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix
@@ -4,5 +4,5 @@ final: prev: {
   uboot-asahi = final.callPackage ./uboot-asahi { };
   asahi-fwextract = final.callPackage ./asahi-fwextract { };
   mesa-asahi-edge = final.callPackage ./mesa-asahi-edge { inherit (prev) mesa; };
-  # TODO: package alsa-ucm-conf-asahi for headphone jack support
+  alsa-ucm-conf-asahi = final.callPackage ./alsa-ucm-conf-asahi { inherit (prev) alsa-ucm-conf; };
 }
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix
index bc84cafbd3f7..908aff32b1ae 100644
--- a/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix
+++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix
@@ -1,6 +1,5 @@
 { lib
 , fetchFromGitHub
-, fetchpatch
 , buildUBoot
 , m1n1
 }:
@@ -10,10 +9,10 @@
     # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/uboot-asahi/PKGBUILD
     owner = "AsahiLinux";
     repo = "u-boot";
-    rev = "asahi-v2023.04-1";
-    hash = "sha256-vGuZrT+siynhXWnvvR3b3v2f/imF5qapyO0EgMc+4ZQ=";
+    rev = "asahi-v2023.07.02-3";
+    hash = "sha256-a7iNawyq7K6jhiVzu5x8mllF3olTP+jQRXGGSsoKINI=";
   };
-  version = "2023.04.asahi2-1";
+  version = "2023.07.02.asahi3-1";
 
   defconfig = "apple_m1_defconfig";
   extraMeta.platforms = [ "aarch64-linux" ];
@@ -26,24 +25,11 @@
     CONFIG_VIDEO_FONT_4X6=n
     CONFIG_VIDEO_FONT_8X16=n
     CONFIG_VIDEO_FONT_SUN12X22=n
-    CONFIG_VIDEO_FONT_TER12X24=n
-    CONFIG_VIDEO_FONT_TER16X32=y
+    CONFIG_VIDEO_FONT_16X32=y
   '';
 }).overrideAttrs (o: {
   # nixos's downstream patches are not applicable
-  # however, we add in bigger u-boot fonts because the mac laptop screens are high-res
   patches = [ 
-    (fetchpatch {
-      url = "https://git.alpinelinux.org/aports/plain/testing/u-boot-asahi/apritzel-first5-video.patch?id=990110f35b50b74bdb4e902d94fa15b07a8eac9e";
-      sha256 = "sha256-QPvJYxIcQBHbwsj7l96qGUZSipk1sB3ZyniD1Io18dY=";
-      revert = false;
-    })
-
-    (fetchpatch {
-      url = "https://git.alpinelinux.org/aports/plain/testing/u-boot-asahi/mps-u-boot-ter12x24.patch?id=990110f35b50b74bdb4e902d94fa15b07a8eac9e";
-      sha256 = "sha256-wrQpIYiuNRi/p2p290KCGPmuRxFEOPlbICoFvd+E8p0=";
-      revert = false;
-    })
   ];
 
   # flag somehow breaks DTC compilation so we remove it