diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 81daad099a8..08dd57704e7 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -164,6 +164,7 @@ ./services/hardware/bluetooth.nix ./services/hardware/brltty.nix ./services/hardware/freefall.nix + ./services/hardware/irqbalance.nix ./services/hardware/nvidia-optimus.nix ./services/hardware/pcscd.nix ./services/hardware/pommed.nix diff --git a/nixos/modules/services/hardware/irqbalance.nix b/nixos/modules/services/hardware/irqbalance.nix new file mode 100644 index 00000000000..b139154432c --- /dev/null +++ b/nixos/modules/services/hardware/irqbalance.nix @@ -0,0 +1,30 @@ +# +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.irqbalance; + +in +{ + options.services.irqbalance.enable = mkEnableOption "irqbalance daemon"; + + config = mkIf cfg.enable { + + systemd.services = { + irqbalance = { + description = "irqbalance daemon"; + path = [ pkgs.irqbalance ]; + serviceConfig = + { ExecStart = "${pkgs.irqbalance}/bin/irqbalance --foreground"; }; + wantedBy = [ "multi-user.target" ]; + }; + }; + + environment.systemPackages = [ pkgs.irqbalance ]; + + }; + +} diff --git a/pkgs/os-specific/linux/irqbalance/default.nix b/pkgs/os-specific/linux/irqbalance/default.nix new file mode 100644 index 00000000000..7c394753902 --- /dev/null +++ b/pkgs/os-specific/linux/irqbalance/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, autoconf, automake, libtool, pkgconfig}: + +stdenv.mkDerivation rec { + name = "irqbalance-1.1.0"; + + src = fetchFromGitHub { + owner = "irqbalance"; + repo = "irqbalance"; + rev = "a23de3c455b88060620d102f6946b1d8be9e2680"; + sha256 = "06yq5k5v9wiwajqcjkbkk46g212qx78x323bygnyqshc5s25mp2x"; + }; + + nativeBuildInputs = [ autoconf automake libtool pkgconfig ]; + + preConfigure = '' + ./autogen.sh + ''; + + meta = { + homepage = https://github.com/Irqbalance/irqbalance; + description = "A daemon to help balance the cpu load generated by interrupts across all of a systems cpus"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5601fb7ca7e..84a92875399 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9919,6 +9919,8 @@ let ipset = callPackage ../os-specific/linux/ipset { }; + irqbalance = callPackage ../os-specific/linux/irqbalance { }; + iw = callPackage ../os-specific/linux/iw { }; jfbview = callPackage ../os-specific/linux/jfbview { };