Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 61 lines 1.7 kB view raw
1{ 2 lib, 3 buildLinux, 4 fetchurl, 5 kernelPatches ? [ ], 6 structuredExtraConfig ? { }, 7 extraMeta ? { }, 8 argsOverride ? { }, 9 ... 10}@args: 11 12let 13 version = "5.10.237-rt131"; # updated by ./update-rt.sh 14 branch = lib.versions.majorMinor version; 15 kversion = builtins.elemAt (lib.splitString "-" version) 0; 16in 17buildLinux ( 18 args 19 // { 20 inherit version; 21 pname = "linux-rt"; 22 23 # modDirVersion needs a patch number, change X.Y-rtZ to X.Y.0-rtZ. 24 modDirVersion = lib.versions.pad 3 version; 25 26 src = fetchurl { 27 url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz"; 28 sha256 = "098gvqfaahabqqz64m5fwri57drwiz3006pr805sxw74w0vjgj0z"; 29 }; 30 31 kernelPatches = 32 let 33 rt-patch = { 34 name = "rt"; 35 patch = fetchurl { 36 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz"; 37 sha256 = "15f4dylrwm9q0dl3jhcy57611w5kzz74rf9aqfvh7cqxi5q4g8fs"; 38 }; 39 }; 40 in 41 [ rt-patch ] ++ kernelPatches; 42 43 structuredExtraConfig = 44 with lib.kernel; 45 { 46 PREEMPT_RT = yes; 47 # Fix error: unused option: PREEMPT_RT. 48 EXPERT = yes; # PREEMPT_RT depends on it (in kernel/Kconfig.preempt) 49 # Fix error: option not set correctly: PREEMPT_VOLUNTARY (wanted 'y', got 'n'). 50 PREEMPT_VOLUNTARY = lib.mkForce no; # PREEMPT_RT deselects it. 51 # Fix error: unused option: RT_GROUP_SCHED. 52 RT_GROUP_SCHED = lib.mkForce (option no); # Removed by sched-disable-rt-group-sched-on-rt.patch. 53 } 54 // structuredExtraConfig; 55 56 extraMeta = extraMeta // { 57 inherit branch; 58 }; 59 } 60 // argsOverride 61)