1{
2 lib,
3 buildLinux,
4 fetchurl,
5 kernelPatches ? [ ],
6 structuredExtraConfig ? { },
7 extraMeta ? { },
8 argsOverride ? { },
9 ...
10}@args:
11
12let
13 version = "5.4.293-rt98"; # 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 = "0b9p8l6ndm75751f7s03rnxg7yg9c4pj9rb537lhsv6pqx096n1l";
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 = "0vsb893cmc1rqrb2jqpc748748py2dc8nz8p5x3rh35ky8p3shss";
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 extraMeta = extraMeta // {
54 inherit branch;
55 };
56 }
57 // argsOverride
58)