lol
1{
2 lib,
3 rustPlatform,
4 llvmPackages,
5 pkg-config,
6 elfutils,
7 zlib,
8 zstd,
9 scx-common,
10 protobuf,
11 libseccomp,
12}:
13rustPlatform.buildRustPackage {
14 pname = "scx_rustscheds";
15 inherit (scx-common) version src;
16
17 inherit (scx-common.versionInfo.scx) cargoHash;
18
19 nativeBuildInputs = [
20 pkg-config
21 rustPlatform.bindgenHook
22 protobuf
23 ];
24 buildInputs = [
25 elfutils
26 zlib
27 zstd
28 libseccomp
29 ];
30
31 env = {
32 BPF_CLANG = lib.getExe llvmPackages.clang;
33 RUSTFLAGS = lib.concatStringsSep " " [
34 "-C relocation-model=pic"
35 "-C link-args=-lelf"
36 "-C link-args=-lz"
37 "-C link-args=-lzstd"
38 ];
39 };
40
41 hardeningDisable = [
42 "stackprotector"
43 "zerocallusedregs"
44 ];
45
46 doCheck = true;
47 checkFlags = [
48 "--skip=compat::tests::test_ksym_exists"
49 "--skip=compat::tests::test_read_enum"
50 "--skip=compat::tests::test_struct_has_field"
51 "--skip=cpumask"
52 "--skip=topology"
53 "--skip=proc_data::tests::test_thread_operations"
54 ];
55
56 meta = scx-common.meta // {
57 description = "Sched-ext Rust userspace schedulers";
58 longDescription = ''
59 This includes Rust based schedulers such as
60 scx_rustland, scx_bpfland, scx_lavd, scx_layered, scx_rlfifo.
61
62 ::: {.note}
63 Sched-ext schedulers are only available on kernels version 6.12 or later.
64 It is recommended to use the latest kernel for the best compatibility.
65 :::
66 '';
67 };
68}