{ lib, callPackage, linuxPackagesFor, _kernelPatches ? [ ], }: let linux-asahi-pkg = { stdenv, lib, fetchFromGitHub, buildLinux, ... }: buildLinux rec { inherit stdenv lib; pname = "linux-asahi"; version = "6.17.11"; modDirVersion = version; extraMeta.branch = "6.17"; src = fetchFromGitHub { owner = "AsahiLinux"; repo = "linux"; tag = "asahi-6.17.11-1"; hash = "sha256-bTptFNR7ehMdW3M05c0S6GZ4H19GCYvplso8zOkEnmQ="; }; kernelPatches = [ { name = "Asahi config"; patch = null; structuredExtraConfig = with lib.kernel; { # Needed for GPU ARM64_16K_PAGES = yes; ARM64_MEMORY_MODEL_CONTROL = yes; ARM64_ACTLR_STATE = yes; # Might lead to the machine rebooting if not loaded soon enough APPLE_WATCHDOG = yes; # Can not be built as a module, defaults to no APPLE_M1_CPU_PMU = yes; # Defaults to 'y', but we want to allow the user to set options in modprobe.d HID_APPLE = module; APPLE_PMGR_MISC = yes; APPLE_PMGR_PWRSTATE = yes; }; features.rust = true; } ] ++ _kernelPatches; }; linux-asahi = callPackage linux-asahi-pkg { }; in lib.recurseIntoAttrs (linuxPackagesFor linux-asahi)