From 1f0f8ba399cf3665e81e8a9bdb89f824f86e46fc Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Sat, 6 May 2023 20:17:28 +0200 Subject: [PATCH] [Programs] Add nvtop config, with special handling for Nvidia GPUs --- hardware/amd/default.nix | 2 ++ hardware/default.nix | 7 ------- hardware/intel/default.nix | 2 ++ hardware/nvidia/default.nix | 2 ++ hardware/nvidia/proprietary.nix | 2 ++ programs/default.nix | 1 + programs/nvtop.nix | 25 +++++++++++++++++++++++++ 7 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 programs/nvtop.nix diff --git a/hardware/amd/default.nix b/hardware/amd/default.nix index 952314a..625da2f 100644 --- a/hardware/amd/default.nix +++ b/hardware/amd/default.nix @@ -27,6 +27,8 @@ in { config = mkIf cfg.enable { + aviallon.programs.nvtop.enable = true; + hardware.opengl = { enable = true; }; diff --git a/hardware/default.nix b/hardware/default.nix index 49f4dfb..5bd6de4 100644 --- a/hardware/default.nix +++ b/hardware/default.nix @@ -16,13 +16,6 @@ in ]; config = { - - environment.systemPackages = [] - ++ optional (cfg.amd.enable && cfg.nvidia.enable) pkgs.nvtop - ++ optional cfg.amd.enable pkgs.nvtop-amd - ++ optional cfg.nvidia.enable pkgs.nvtop-nvidia - ; - boot.kernel.sysctl = { # Why: https://www.phoronix.com/news/Ryzen-Segv-Response diff --git a/hardware/intel/default.nix b/hardware/intel/default.nix index 4e33d69..7ca1309 100644 --- a/hardware/intel/default.nix +++ b/hardware/intel/default.nix @@ -17,6 +17,8 @@ in ]; config = mkIf cfg.enable { + aviallon.programs.nvtop.enable = true; + boot.initrd.kernelModules = [ "i915" ]; hardware.opengl = { enable = true; diff --git a/hardware/nvidia/default.nix b/hardware/nvidia/default.nix index 4a75ef2..c22766d 100644 --- a/hardware/nvidia/default.nix +++ b/hardware/nvidia/default.nix @@ -18,6 +18,8 @@ in { config = mkIf cfg.enable { hardware.opengl.driSupport32Bit = true; + + aviallon.programs.nvtop.enable = true; }; } diff --git a/hardware/nvidia/proprietary.nix b/hardware/nvidia/proprietary.nix index d061a2b..9246a0b 100644 --- a/hardware/nvidia/proprietary.nix +++ b/hardware/nvidia/proprietary.nix @@ -56,6 +56,8 @@ in { nvidiaSettings = true; }; + aviallon.programs.nvtop.nvidia = true; + aviallon.boot.cmdline = {} // { "nvidia-drm.modeset" = 1; diff --git a/programs/default.nix b/programs/default.nix index f5c1765..8a2a90b 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -5,5 +5,6 @@ ./bash.nix ./git.nix ./nano.nix + ./nvtop.nix ]; } diff --git a/programs/nvtop.nix b/programs/nvtop.nix new file mode 100644 index 0000000..655fa72 --- /dev/null +++ b/programs/nvtop.nix @@ -0,0 +1,25 @@ +{ config, pkgs, lib, myLib, ... }: +with lib; +let + cfg = config.aviallon.programs.nvtop; +in { + options.aviallon.programs.nvtop = { + enable = mkEnableOption "nvtop"; + nvidia = mkEnableOption "Nvidia GPU with proprietary drivers is used"; + package = mkOption { + internal = true; + description = "Which nvtop package to use"; + default = pkgs.nvtop-amd; + type = myLib.types.package'; + }; + }; + + config = mkIf cfg.enable { + # If an Nvidia GPU is used, use the full nvtop package + aviallon.programs.nvtop.package = mkIf cfg.nvidia pkgs.nvtop; + + environment.systemPackages = [ + cfg.package + ]; + }; +}