diff --git a/overlays/linux-cachyos/default.nix b/overlays/linux-cachyos/default.nix index 4beb01b..43a78fd 100644 --- a/overlays/linux-cachyos/default.nix +++ b/overlays/linux-cachyos/default.nix @@ -50,6 +50,8 @@ in linuxPackages_cachyos-lts = cachyosPackages.cachyos-lts; # Steamdeck linuxPackages_cachyos-deckify = cachyosPackages.cachyos-deckify; + # Asahi (Apple Silicon) + linuxPackages_cachyos-asahi = cachyosPackages.cachyos-asahi; # Clang Kernels # Latest @@ -73,5 +75,7 @@ in linuxPackages_cachyos-rc-lto-znver4 = cachyosPackages.cachyos-rc-lto-znver4; # Steamdeck linuxPackages_cachyos-deckify-lto = cachyosPackages.cachyos-deckify-lto; + # Asahi (Apple Silicon) + linuxPackages_cachyos-asahi-lto = cachyosPackages.cachyos-asahi-lto; }; } diff --git a/packages/linux-cachyos/default.nix b/packages/linux-cachyos/default.nix index 7989cbe..8cd86d5 100644 --- a/packages/linux-cachyos/default.nix +++ b/packages/linux-cachyos/default.nix @@ -52,6 +52,7 @@ let ltsVersions = mkVersions (selectVariant versionSpec "lts" null); rcVersions = mkVersions (selectVariant versionSpec "rc" null); hardenedVersions = mkVersions (selectVariant versionSpec "hardened" null); + asahiVersions = mkVersions (selectVariant versionSpec "asahi" null); # ###################################################### # Base LTO Config # @@ -217,6 +218,31 @@ let withNTSync = false; withHDR = false; }; + + # ###################################################### + # Base Asahi Config # + # ###################################################### + + asahiAttrs = { + versions = asahiVersions; + + # Asahi tracks the 6.18 series; use the LTS config base + taste = "linux-cachyos-asahi"; + + # Apple Silicon is aarch64-only; no x86 march tuning + mArch = null; + + # NTSync and HDR are x86/display-stack features, not applicable here + withNTSync = false; + withHDR = false; + + # Disable module building extras that don't apply to aarch64 targets + packagesExtend = + _kernel: _final: prev: + prev // { recurseForDerivations = false; }; + + description = "Linux EEVDF-BORE scheduler Kernel by CachyOS with Asahi Linux patches for Apple Silicon"; + }; in { inherit @@ -277,6 +303,16 @@ in } ); + # Asahi GCC + cachyos-asahi = mkCachyKernel ( + gccKernelAttrs + // asahiAttrs + // { + pname = "cachyos-asahi"; + configPath = ./config-nix/${arch}-linux/cachyos-lts.${arch}-linux.nix; + } + ); + # Deckify GCC cachyos-deckify = mkCachyKernel ( gccKernelAttrs @@ -346,6 +382,16 @@ in } ); + # Asahi LTO + cachyos-asahi-lto = mkCachyKernel ( + ltoKernelAttrs + // asahiAttrs + // { + pname = "cachyos-asahi-lto"; + configPath = ./config-nix/${arch}-linux/cachyos-lts-lto.${arch}-linux.nix; + } + ); + # RC LTO cachyos-rc-lto = mkCachyKernel ( ltoKernelAttrs diff --git a/packages/linux-cachyos/prepare.nix b/packages/linux-cachyos/prepare.nix index 83aee5e..bbc444f 100644 --- a/packages/linux-cachyos/prepare.nix +++ b/packages/linux-cachyos/prepare.nix @@ -9,7 +9,13 @@ commonMakeFlags, }: let - version = if stdenv.isAarch64 then "6.12.47" else cachyConfig.versions.linux.version; + version = + if cachyConfig.taste == "linux-cachyos-asahi" then + cachyConfig.versions.linux.version + else if stdenv.isAarch64 then + "6.12.47" + else + cachyConfig.versions.linux.version; majorMinor = lib.versions.majorMinor version; @@ -26,7 +32,14 @@ let }; src = - if stdenv.isAarch64 then + if cachyConfig.taste == "linux-cachyos-asahi" then + fetchFromGitHub { + owner = cachyConfig.versions.linux.owner; + repo = cachyConfig.versions.linux.repo; + rev = cachyConfig.versions.linux.rev; + inherit (cachyConfig.versions.linux) hash; + } + else if stdenv.isAarch64 then let tag = "stable_20250916"; hash = "sha256-Rjn+eWl5cLcc9wgjS3HYVaWM5eKMN3pPfPbsu+QGR/M="; @@ -432,6 +445,10 @@ let "-d LATENCYTOP" "-d DEBUG_PREEMPT" ]; + # Asahi uses the LTS config base since it tracks the same 6.18 kernel series + configTaste = + if cachyConfig.taste == "linux-cachyos-asahi" then "linux-cachyos-lts" else cachyConfig.taste; + in stdenv.mkDerivation (finalAttrs: { inherit src patches; @@ -461,7 +478,7 @@ stdenv.mkDerivation (finalAttrs: { runHook preBuild echo ${cachyConfig.taste} - cp "${config-src}/${cachyConfig.taste}/config" ".config" + cp "${config-src}/${configTaste}/config" ".config" make $makeFlags olddefconfig patchShebangs scripts/config scripts/config ${lib.concatStringsSep " " pkgbuildConfig} diff --git a/packages/linux-cachyos/version.json b/packages/linux-cachyos/version.json index 08e1a87..f0dee37 100644 --- a/packages/linux-cachyos/version.json +++ b/packages/linux-cachyos/version.json @@ -31,6 +31,18 @@ } }, "variants": { + "asahi": { + "sources": { + "linux": { + "fetcher": "github", + "owner": "AsahiLinux", + "repo": "linux", + "version": "6.18.15", + "rev": "asahi-6.18.15-1", + "hash": "sha256-A+/tpsog/ku+ujqMSLB+AkrKoUWxYDpoPzC4ESkeqvA=" + } + } + }, "lts": { "sources": { "linux": {