diff --git a/hardware/amd/default.nix b/hardware/amd/default.nix index 625da2f..78b0ee0 100644 --- a/hardware/amd/default.nix +++ b/hardware/amd/default.nix @@ -27,7 +27,10 @@ in { config = mkIf cfg.enable { - aviallon.programs.nvtop.enable = true; + aviallon.programs.nvtop = { + enable = true; + backend = [ "amd" ]; + }; hardware.opengl = { enable = true; diff --git a/hardware/intel/default.nix b/hardware/intel/default.nix index 7ca1309..300e99f 100644 --- a/hardware/intel/default.nix +++ b/hardware/intel/default.nix @@ -17,7 +17,10 @@ in ]; config = mkIf cfg.enable { - aviallon.programs.nvtop.enable = true; + aviallon.programs.nvtop = { + enable = true; + backend = [ "intel" ]; + }; boot.initrd.kernelModules = [ "i915" ]; hardware.opengl = { diff --git a/hardware/nvidia/default.nix b/hardware/nvidia/default.nix index c9fc5f1..cdd62da 100644 --- a/hardware/nvidia/default.nix +++ b/hardware/nvidia/default.nix @@ -27,7 +27,9 @@ in { config = mkIf cfg.enable { hardware.opengl.driSupport32Bit = true; - aviallon.programs.nvtop.enable = true; + aviallon.programs.nvtop = { + enable = true; + }; aviallon.hardware.nvidia.useProprietary = mkForce ( cfg.variant == "proprietary" ); }; diff --git a/hardware/nvidia/proprietary.nix b/hardware/nvidia/proprietary.nix index 4800032..59c0c13 100644 --- a/hardware/nvidia/proprietary.nix +++ b/hardware/nvidia/proprietary.nix @@ -103,7 +103,7 @@ in { versionOlder hardwareCfg.nvidia.package.version "490.29.05" # https://www.nvidia.com/download/driverResults.aspx/181159/en-us/ ); - aviallon.programs.nvtop.nvidia = true; + aviallon.programs.nvtop.backend = [ "nvidia" ]; boot.extraModprobeConfig = '' options nvidia NVreg_RegistryDwords="${concatStringsSep ";" cfg.proprietary.registryDwords}" @@ -152,10 +152,6 @@ in { nvidia-vaapi-driver ]; - environment.systemPackages = with pkgs; [ - nvtop - ]; - # See documentation here: https://download.nvidia.com/XFree86/Linux-x86_64/510.60.02/README/openglenvvariables.html environment.variables = { "__GL_YIELD" = "USLEEP"; # use usleep(0) instead of sched_yield() -> better performance in most cases diff --git a/programs/nvtop.nix b/programs/nvtop.nix index 2330d66..09961c8 100644 --- a/programs/nvtop.nix +++ b/programs/nvtop.nix @@ -5,6 +5,12 @@ let in { options.aviallon.programs.nvtop = { enable = mkEnableOption "nvtop"; + backend = mkOption { + description = "Which backend to enable"; + type = with types; listOf (enum [ "nvidia" "amd" "intel" "panthor" "panfrost" "msm" ]); + default = [ "amd" ]; + }; + nvidia = mkEnableOption "Nvidia GPU with proprietary drivers is used"; package = mkOption { internal = true; @@ -16,7 +22,11 @@ in { config = mkIf cfg.enable { # If an Nvidia GPU is used, use the full nvtop package - aviallon.programs.nvtop.package = mkIf cfg.nvidia pkgs.nvtop; + aviallon.programs.nvtop.package = mkDefault ( + if (length cfg.backend > 1) then + pkgs.nvtopPackages.full + else pkgs.nvtopPackages.${elemAt cfg.backend 0} + ); environment.systemPackages = [ cfg.package