2410.nix (2475B)
1 { 2 fetchFromGitHub, 3 pkgsBuildBuild, 4 lib, 5 }: 6 let 7 src = fetchFromGitHub { 8 name = "openwrt-source"; 9 repo = "openwrt"; 10 owner = "openwrt"; 11 rev = "refs/tags/v24.10.0-rc4"; 12 hash = "sha256-7edkUCTfGnZeMWr/aXoQrP4I47iXhMi/gUxO2SR+Ylc="; 13 }; 14 kernelVersion = "6.6.67"; 15 kernelSeries = lib.versions.majorMinor kernelVersion; 16 doPatch = family: '' 17 cp -av --no-preserve=mode,ownership ${src}/target/linux/generic/files/* . 18 cp -av --no-preserve=mode,ownership ${src}/target/linux/${family}/files/* . 19 test -d ${src}/target/linux/${family}/files-${kernelSeries}/ && \ 20 cp -av --no-preserve=mode,ownership ${src}/target/linux/${family}/files-${kernelSeries}/* . 21 patches() { 22 for i in $* ; do patch --batch --forward -p1 < $i ;done 23 } 24 patches ${src}/target/linux/generic/backport-${kernelSeries}/*.patch 25 patches ${src}/target/linux/generic/pending-${kernelSeries}/*.patch 26 patches ${src}/target/linux/generic/hack-${kernelSeries}/*.patch 27 patches ${src}/target/linux/${family}/patches-${kernelSeries}/*.patch 28 patches \ 29 ${./make-mtdsplit-jffs2-endian-agnostic.patch} \ 30 ${./fix-mtk-wed-bm-desc-ptr.patch} 31 ''; 32 in 33 { 34 inherit src; 35 36 # The kernel sources typically used with this version of openwrt 37 # You can find this in `include/kernel-5.15` or similar in the 38 # openwrt sources 39 kernelSrc = pkgsBuildBuild.fetchurl { 40 name = "linux.tar.gz"; 41 url = "https://cdn.kernel.org/pub/linux/kernel/v${lib.versions.major kernelVersion}.x/linux-${kernelVersion}.tar.gz"; 42 hash = "sha256-Vj6O6oa83xzAF3FPl6asQK2Zrl7PaBCVjcUDq93caL4="; 43 }; 44 inherit kernelVersion; 45 46 applyPatches.ath79 = doPatch "ath79"; 47 applyPatches.ramips = doPatch "ramips"; 48 applyPatches.mediatek = doPatch "mediatek"; # aarch64 49 applyPatches.mvebu = doPatch "mvebu"; # arm 50 51 applyPatches.rt2x00 = '' 52 PATH=${pkgsBuildBuild.patchutils}/bin:$PATH 53 for i in ${src}/package/kernel/mac80211/patches/rt2x00/6*.patch ; do 54 fixed=$(basename $i).fixed 55 sed '/depends on m/d' < $i | sed 's/CPTCFG_/CONFIG_/g' | recountdiff | filterdiff -x '*/local-symbols' > $fixed 56 case $fixed in 57 606-*) 58 ;; 59 611-*) 60 filterdiff -x '*/rt2x00.h' < $fixed | patch --forward -p1 61 ;; 62 601-*|607-*) 63 filterdiff -x '*/rt2x00_platform.h' < $fixed | patch --forward -p1 64 ;; 65 *) 66 cat $fixed | patch --forward -p1 67 ;; 68 esac 69 done 70 ''; 71 }