[Programs/Nvtop] refactor to intelligently enable the required backends

This commit is contained in:
Antoine Viallon 2024-06-01 17:34:39 +02:00
parent 5fa9147e02
commit d9ea216ea8
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
5 changed files with 23 additions and 9 deletions

View file

@ -27,7 +27,10 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
aviallon.programs.nvtop.enable = true; aviallon.programs.nvtop = {
enable = true;
backend = [ "amd" ];
};
hardware.opengl = { hardware.opengl = {
enable = true; enable = true;

View file

@ -17,7 +17,10 @@ in
]; ];
config = mkIf cfg.enable { config = mkIf cfg.enable {
aviallon.programs.nvtop.enable = true; aviallon.programs.nvtop = {
enable = true;
backend = [ "intel" ];
};
boot.initrd.kernelModules = [ "i915" ]; boot.initrd.kernelModules = [ "i915" ];
hardware.opengl = { hardware.opengl = {

View file

@ -27,7 +27,9 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
hardware.opengl.driSupport32Bit = true; hardware.opengl.driSupport32Bit = true;
aviallon.programs.nvtop.enable = true; aviallon.programs.nvtop = {
enable = true;
};
aviallon.hardware.nvidia.useProprietary = mkForce ( cfg.variant == "proprietary" ); aviallon.hardware.nvidia.useProprietary = mkForce ( cfg.variant == "proprietary" );
}; };

View file

@ -103,7 +103,7 @@ in {
versionOlder hardwareCfg.nvidia.package.version "490.29.05" # https://www.nvidia.com/download/driverResults.aspx/181159/en-us/ 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 = '' boot.extraModprobeConfig = ''
options nvidia NVreg_RegistryDwords="${concatStringsSep ";" cfg.proprietary.registryDwords}" options nvidia NVreg_RegistryDwords="${concatStringsSep ";" cfg.proprietary.registryDwords}"
@ -152,10 +152,6 @@ in {
nvidia-vaapi-driver 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 # See documentation here: https://download.nvidia.com/XFree86/Linux-x86_64/510.60.02/README/openglenvvariables.html
environment.variables = { environment.variables = {
"__GL_YIELD" = "USLEEP"; # use usleep(0) instead of sched_yield() -> better performance in most cases "__GL_YIELD" = "USLEEP"; # use usleep(0) instead of sched_yield() -> better performance in most cases

View file

@ -5,6 +5,12 @@ let
in { in {
options.aviallon.programs.nvtop = { options.aviallon.programs.nvtop = {
enable = mkEnableOption "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"; nvidia = mkEnableOption "Nvidia GPU with proprietary drivers is used";
package = mkOption { package = mkOption {
internal = true; internal = true;
@ -16,7 +22,11 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
# If an Nvidia GPU is used, use the full nvtop package # 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 = [ environment.systemPackages = [
cfg.package cfg.package