1{
2 lib,
3 buildLinux,
4 fetchurl,
5 kernelPatches ? [ ],
6 structuredExtraConfig ? { },
7 extraMeta ? { },
8 argsOverride ? { },
9 ...
10}@args:
11
12let
13 version = "5.4.296-rt100"; # 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 src = fetchurl {
24 url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz";
25 sha256 = "0fm73yqzbzclh2achcj8arpg428d412k2wgmlfmyy6xzb1762qrx";
26 };
27
28 kernelPatches =
29 let
30 rt-patch = {
31 name = "rt";
32 patch = fetchurl {
33 url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
34 sha256 = "0ggmgkhmnvx4xxb3smfdcafqr9m3qdyc40xp3h7586p4n3wwpw9d";
35 };
36 };
37 in
38 [ rt-patch ] ++ kernelPatches;
39
40 structuredExtraConfig =
41 with lib.kernel;
42 {
43 PREEMPT_RT = yes;
44 # Fix error: unused option: PREEMPT_RT.
45 EXPERT = yes; # PREEMPT_RT depends on it (in kernel/Kconfig.preempt)
46 # Fix error: option not set correctly: PREEMPT_VOLUNTARY (wanted 'y', got 'n').
47 PREEMPT_VOLUNTARY = lib.mkForce no; # PREEMPT_RT deselects it.
48 # Fix error: unused option: RT_GROUP_SCHED.
49 RT_GROUP_SCHED = lib.mkForce (option no); # Removed by sched-disable-rt-group-sched-on-rt.patch.
50 }
51 // structuredExtraConfig;
52
53 isLTS = true;
54
55 extraMeta = extraMeta // {
56 inherit branch;
57 };
58 }
59 // argsOverride
60)