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)