1{
2 lib,
3 callPackage,
4 fetchFromGitHub,
5}:
6let
7 scx-common = rec {
8 versionInfo = lib.importJSON ./version.json;
9
10 inherit (versionInfo.scx) version;
11
12 src = fetchFromGitHub {
13 owner = "sched-ext";
14 repo = "scx";
15 tag = "v${versionInfo.scx.version}";
16 inherit (versionInfo.scx) hash;
17 };
18
19 meta = {
20 homepage = "https://github.com/sched-ext/scx";
21 changelog = "https://github.com/sched-ext/scx/releases/tag/v${versionInfo.scx.version}";
22 license = lib.licenses.gpl2Only;
23 platforms = lib.platforms.linux;
24 badPlatforms = [ "aarch64-linux" ];
25 maintainers = with lib.maintainers; [
26 johnrtitor
27 Gliczy
28 ];
29 };
30 };
31
32 schedulers = lib.mergeAttrsList [
33 { cscheds = import ./scx_cscheds.nix; }
34 { rustscheds = import ./scx_rustscheds.nix; }
35 { full = import ./scx_full.nix; }
36 ];
37in
38(lib.mapAttrs (name: scheduler: callPackage scheduler { inherit scx-common; }) schedulers)
39// {
40 inherit scx-common;
41}