Loading nixos/modules/services/scheduling/scx.nix +2 −25 Original line number Diff line number Diff line Loading @@ -37,31 +37,7 @@ in }; scheduler = lib.mkOption { type = lib.types.enum [ "scx_beerland" "scx_bpfland" "scx_chaos" "scx_cosmos" "scx_central" "scx_flash" "scx_flatcg" "scx_lavd" "scx_layered" "scx_mitosis" "scx_nest" "scx_p2dq" "scx_pair" "scx_prev" "scx_qmap" "scx_rlfifo" "scx_rustland" "scx_rusty" "scx_sdt" "scx_simple" "scx_tickless" "scx_userland" "scx_wd40" ]; type = lib.types.enum cfg.package.schedulers; default = "scx_rustland"; example = "scx_bpfland"; description = '' Loading Loading @@ -126,5 +102,6 @@ in meta = { inherit (pkgs.scx.full.meta) maintainers; buildDocsInSandbox = false; }; } pkgs/os-specific/linux/scx/scx_cscheds.nix +41 −7 Original line number Diff line number Diff line { fetchFromGitHub, llvmPackages, libbpf, pkg-config, Loading @@ -10,9 +11,16 @@ libseccomp, }: llvmPackages.stdenv.mkDerivation { llvmPackages.stdenv.mkDerivation (finalAttrs: { pname = "scx_cscheds"; inherit (scx.rustscheds) version src; version = "0-unstable-2026-01-13"; src = fetchFromGitHub { owner = "sched-ext"; repo = "scx-c-examples"; rev = "82c692afe32ed4e79fd047a93d3ff316bf399287"; hash = "sha256-buXwId/4TwDfo/5mApMAEWHri92bW9x3jLEE5rawS3w="; }; postPatch = '' substituteInPlace ./scheds/c/Makefile \ Loading Loading @@ -40,17 +48,43 @@ llvmPackages.stdenv.mkDerivation { "zerocallusedregs" ]; doCheck = true; __structuredAttrs = true; EXPECTED_SCHEDULERS = finalAttrs.passthru.schedulers; doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck cd $out/bin found=(scx_*) if [[ "''${found[@]}" != "''${EXPECTED_SCHEDULERS[@]}" ]]; then echo "List of available schedulers changed, expected: ''${EXPECTED_SCHEDULERS[@]}, found: ''${found[@]}" exit 1 fi runHook postInstallCheck ''; passthru = { inherit (scx.rustscheds.passthru) tests; schedulers = [ "scx_central" "scx_flatcg" "scx_nest" "scx_pair" "scx_prev" "scx_qmap" "scx_simple" "scx_userland" ]; }; meta = scx.rustscheds.meta // { description = "Sched-ext C userspace schedulers"; description = "Sched-ext C example schedulers"; longDescription = '' This includes C based schedulers such as scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland. This includes C based example schedulers such as scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland. These are examples, and generally not recommended for end users. ::: {.note} Sched-ext schedulers are only available on kernels version 6.12 or later. Loading @@ -59,4 +93,4 @@ llvmPackages.stdenv.mkDerivation { ''; homepage = "https://github.com/sched-ext/scx/tree/main/scheds/c"; }; } }) pkgs/os-specific/linux/scx/scx_full.nix +12 −7 Original line number Diff line number Diff line { lib, buildEnv, scx, }: scx.cscheds.overrideAttrs (oldAttrs: { buildEnv { pname = "scx_full"; postInstall = (oldAttrs.postInstall or "") + '' cp ${lib.getBin scx.rustscheds}/bin/* ${placeholder "out"}/bin/ ''; inherit (scx.rustscheds) version; paths = [ scx.cscheds scx.rustscheds ]; passthru.schedulers = scx.cscheds.schedulers ++ scx.rustscheds.schedulers; meta = oldAttrs.meta // { meta = { description = "Sched-ext C and Rust userspace schedulers"; longDescription = '' This includes C based schedulers such as scx_central, scx_flatcg, Loading @@ -22,4 +27,4 @@ scx.cscheds.overrideAttrs (oldAttrs: { ''; homepage = "https://github.com/sched-ext/scx"; }; }) } pkgs/os-specific/linux/scx/scx_rustscheds.nix +46 −14 Original line number Diff line number Diff line Loading @@ -14,16 +14,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "scx_rustscheds"; version = "1.0.20"; version = "1.1.0"; src = fetchFromGitHub { owner = "sched-ext"; repo = "scx"; tag = "v${finalAttrs.version}"; hash = "sha256-MUWbNsxmbCRCOWB2dHpi5dEY2rNRrINxJSyl5SNSO9Y="; hash = "sha256-kPOAiy2siIKZ6/zz43qPW7bp27T98MOhwmZMxpVpito="; }; cargoHash = "sha256-H58wschck+l41fQh9W5SNVb5g9lAnw90SOSd/RtGXyw="; cargoHash = "sha256-nXiprz5ryGJeTy9nnKaLSKE0FSl17YE88xFt9bUTTL8="; nativeBuildInputs = [ pkg-config Loading Loading @@ -51,20 +51,52 @@ rustPlatform.buildRustPackage (finalAttrs: { "zerocallusedregs" ]; doCheck = true; checkFlags = [ "--skip=compat::tests::test_ksym_exists" "--skip=compat::tests::test_read_enum" "--skip=compat::tests::test_struct_has_field" "--skip=cpumask" "--skip=topology" "--skip=proc_data::tests::test_thread_operations" "--skip=json::tests::test_with_resources" "--skip=json::tests::test_with_dir" ]; # most of the tests rely on system CPU topology info, # which is not available in the sandbox doCheck = false; # we don't need these postInstall = '' rm $out/bin/{scx_arena_selftests,vmlinux_docify,xtask} ''; __structuredAttrs = true; EXPECTED_SCHEDULERS = finalAttrs.passthru.schedulers; doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck cd $out/bin found=(scx_*) if [[ "''${found[@]}" != "''${EXPECTED_SCHEDULERS[@]}" ]]; then echo "List of available schedulers changed, expected: ''${EXPECTED_SCHEDULERS[@]}, found: ''${found[@]}" exit 1 fi runHook postInstallCheck ''; passthru.tests.basic = nixosTests.scx; passthru.updateScript = nix-update-script { }; passthru.schedulers = [ "scx_beerland" "scx_bpfland" "scx_cake" "scx_chaos" "scx_cosmos" "scx_flash" "scx_lavd" "scx_layered" "scx_mitosis" "scx_p2dq" "scx_pandemonium" "scx_rlfifo" "scx_rustland" "scx_rusty" "scx_tickless" "scx_wd40" ]; meta = { description = "Sched-ext Rust userspace schedulers"; Loading Loading
nixos/modules/services/scheduling/scx.nix +2 −25 Original line number Diff line number Diff line Loading @@ -37,31 +37,7 @@ in }; scheduler = lib.mkOption { type = lib.types.enum [ "scx_beerland" "scx_bpfland" "scx_chaos" "scx_cosmos" "scx_central" "scx_flash" "scx_flatcg" "scx_lavd" "scx_layered" "scx_mitosis" "scx_nest" "scx_p2dq" "scx_pair" "scx_prev" "scx_qmap" "scx_rlfifo" "scx_rustland" "scx_rusty" "scx_sdt" "scx_simple" "scx_tickless" "scx_userland" "scx_wd40" ]; type = lib.types.enum cfg.package.schedulers; default = "scx_rustland"; example = "scx_bpfland"; description = '' Loading Loading @@ -126,5 +102,6 @@ in meta = { inherit (pkgs.scx.full.meta) maintainers; buildDocsInSandbox = false; }; }
pkgs/os-specific/linux/scx/scx_cscheds.nix +41 −7 Original line number Diff line number Diff line { fetchFromGitHub, llvmPackages, libbpf, pkg-config, Loading @@ -10,9 +11,16 @@ libseccomp, }: llvmPackages.stdenv.mkDerivation { llvmPackages.stdenv.mkDerivation (finalAttrs: { pname = "scx_cscheds"; inherit (scx.rustscheds) version src; version = "0-unstable-2026-01-13"; src = fetchFromGitHub { owner = "sched-ext"; repo = "scx-c-examples"; rev = "82c692afe32ed4e79fd047a93d3ff316bf399287"; hash = "sha256-buXwId/4TwDfo/5mApMAEWHri92bW9x3jLEE5rawS3w="; }; postPatch = '' substituteInPlace ./scheds/c/Makefile \ Loading Loading @@ -40,17 +48,43 @@ llvmPackages.stdenv.mkDerivation { "zerocallusedregs" ]; doCheck = true; __structuredAttrs = true; EXPECTED_SCHEDULERS = finalAttrs.passthru.schedulers; doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck cd $out/bin found=(scx_*) if [[ "''${found[@]}" != "''${EXPECTED_SCHEDULERS[@]}" ]]; then echo "List of available schedulers changed, expected: ''${EXPECTED_SCHEDULERS[@]}, found: ''${found[@]}" exit 1 fi runHook postInstallCheck ''; passthru = { inherit (scx.rustscheds.passthru) tests; schedulers = [ "scx_central" "scx_flatcg" "scx_nest" "scx_pair" "scx_prev" "scx_qmap" "scx_simple" "scx_userland" ]; }; meta = scx.rustscheds.meta // { description = "Sched-ext C userspace schedulers"; description = "Sched-ext C example schedulers"; longDescription = '' This includes C based schedulers such as scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland. This includes C based example schedulers such as scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland. These are examples, and generally not recommended for end users. ::: {.note} Sched-ext schedulers are only available on kernels version 6.12 or later. Loading @@ -59,4 +93,4 @@ llvmPackages.stdenv.mkDerivation { ''; homepage = "https://github.com/sched-ext/scx/tree/main/scheds/c"; }; } })
pkgs/os-specific/linux/scx/scx_full.nix +12 −7 Original line number Diff line number Diff line { lib, buildEnv, scx, }: scx.cscheds.overrideAttrs (oldAttrs: { buildEnv { pname = "scx_full"; postInstall = (oldAttrs.postInstall or "") + '' cp ${lib.getBin scx.rustscheds}/bin/* ${placeholder "out"}/bin/ ''; inherit (scx.rustscheds) version; paths = [ scx.cscheds scx.rustscheds ]; passthru.schedulers = scx.cscheds.schedulers ++ scx.rustscheds.schedulers; meta = oldAttrs.meta // { meta = { description = "Sched-ext C and Rust userspace schedulers"; longDescription = '' This includes C based schedulers such as scx_central, scx_flatcg, Loading @@ -22,4 +27,4 @@ scx.cscheds.overrideAttrs (oldAttrs: { ''; homepage = "https://github.com/sched-ext/scx"; }; }) }
pkgs/os-specific/linux/scx/scx_rustscheds.nix +46 −14 Original line number Diff line number Diff line Loading @@ -14,16 +14,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "scx_rustscheds"; version = "1.0.20"; version = "1.1.0"; src = fetchFromGitHub { owner = "sched-ext"; repo = "scx"; tag = "v${finalAttrs.version}"; hash = "sha256-MUWbNsxmbCRCOWB2dHpi5dEY2rNRrINxJSyl5SNSO9Y="; hash = "sha256-kPOAiy2siIKZ6/zz43qPW7bp27T98MOhwmZMxpVpito="; }; cargoHash = "sha256-H58wschck+l41fQh9W5SNVb5g9lAnw90SOSd/RtGXyw="; cargoHash = "sha256-nXiprz5ryGJeTy9nnKaLSKE0FSl17YE88xFt9bUTTL8="; nativeBuildInputs = [ pkg-config Loading Loading @@ -51,20 +51,52 @@ rustPlatform.buildRustPackage (finalAttrs: { "zerocallusedregs" ]; doCheck = true; checkFlags = [ "--skip=compat::tests::test_ksym_exists" "--skip=compat::tests::test_read_enum" "--skip=compat::tests::test_struct_has_field" "--skip=cpumask" "--skip=topology" "--skip=proc_data::tests::test_thread_operations" "--skip=json::tests::test_with_resources" "--skip=json::tests::test_with_dir" ]; # most of the tests rely on system CPU topology info, # which is not available in the sandbox doCheck = false; # we don't need these postInstall = '' rm $out/bin/{scx_arena_selftests,vmlinux_docify,xtask} ''; __structuredAttrs = true; EXPECTED_SCHEDULERS = finalAttrs.passthru.schedulers; doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck cd $out/bin found=(scx_*) if [[ "''${found[@]}" != "''${EXPECTED_SCHEDULERS[@]}" ]]; then echo "List of available schedulers changed, expected: ''${EXPECTED_SCHEDULERS[@]}, found: ''${found[@]}" exit 1 fi runHook postInstallCheck ''; passthru.tests.basic = nixosTests.scx; passthru.updateScript = nix-update-script { }; passthru.schedulers = [ "scx_beerland" "scx_bpfland" "scx_cake" "scx_chaos" "scx_cosmos" "scx_flash" "scx_lavd" "scx_layered" "scx_mitosis" "scx_p2dq" "scx_pandemonium" "scx_rlfifo" "scx_rustland" "scx_rusty" "scx_tickless" "scx_wd40" ]; meta = { description = "Sched-ext Rust userspace schedulers"; Loading