diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/system/nvtop/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/system/nvtop/default.nix | 91 |
1 files changed, 13 insertions, 78 deletions
diff --git a/nixpkgs/pkgs/tools/system/nvtop/default.nix b/nixpkgs/pkgs/tools/system/nvtop/default.nix index e47291207f08..f6e679b6ffef 100644 --- a/nixpkgs/pkgs/tools/system/nvtop/default.nix +++ b/nixpkgs/pkgs/tools/system/nvtop/default.nix @@ -1,83 +1,18 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, gtest -, cudatoolkit -, libdrm -, ncurses -, nvtop -, testers -, udev -, addOpenGLRunpath -, amd ? true -, intel ? true -, msm ? true -, nvidia ? true -}: - +{ callPackage }: let - nvidia-postFixup = "addOpenGLRunpath $out/bin/nvtop"; - libPath = lib.makeLibraryPath [ libdrm ncurses udev ]; - drm-postFixup = '' - patchelf \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${libPath}" \ - $out/bin/nvtop - ''; + # this GPU families are supported "by-default" upstream (see https://github.com/Syllo/nvtop/blob/3a69c2d060298cd6f92cb09db944eded98be1c23/CMakeLists.txt#L81) + # coincidentally, these families are also easy to build in nixpkgs at the moment + defaultGPUFamilies = [ "amd" "intel" "msm" "nvidia" "panfrost" "panthor" ]; + # these GPU families are partially supported upstream, they are also tricky to build in nixpkgs + # volunteers with specific hardware needed to build and test these package variants + additionalGPUFamilies = [ "apple" "ascend" ]; + defaultSupport = builtins.listToAttrs (builtins.map (gpu: { name = gpu; value = true; }) defaultGPUFamilies); in -stdenv.mkDerivation rec { - pname = "nvtop"; - version = "3.0.2"; - - src = fetchFromGitHub { - owner = "Syllo"; - repo = "nvtop"; - rev = version; - hash = "sha256-SHKdjzbc3ZZfOW2p8RLFRKKBfLnO+Z8/bKVxcdLLqxw="; - }; - - cmakeFlags = with lib; [ - "-DBUILD_TESTING=ON" - "-DUSE_LIBUDEV_OVER_LIBSYSTEMD=ON" - ] ++ optional nvidia "-DNVML_INCLUDE_DIRS=${cudatoolkit}/include" - ++ optional nvidia "-DNVML_LIBRARIES=${cudatoolkit}/targets/x86_64-linux/lib/stubs/libnvidia-ml.so" - ++ optional (!amd) "-DAMDGPU_SUPPORT=OFF" - ++ optional (!intel) "-DINTEL_SUPPORT=OFF" - ++ optional (!msm) "-DMSM_SUPPORT=OFF" - ++ optional (!nvidia) "-DNVIDIA_SUPPORT=OFF" - ++ optional (amd || msm) "-DLibdrm_INCLUDE_DIRS=${libdrm}/lib/stubs/libdrm.so.2" - ; - nativeBuildInputs = [ cmake gtest ] ++ lib.optional nvidia addOpenGLRunpath; - buildInputs = with lib; [ ncurses udev ] - ++ optional nvidia cudatoolkit - ++ optional (amd || msm) libdrm - ; - - # ordering of fixups is important - postFixup = (lib.optionalString (amd || msm) drm-postFixup) + (lib.optionalString nvidia nvidia-postFixup); +{ + full = callPackage ./build-nvtop.nix defaultSupport; #this package supports all default GPU families +} +# additional packages with only one specific GPU family support +// builtins.listToAttrs (builtins.map (gpu: { name = gpu; value = (callPackage ./build-nvtop.nix { "${gpu}" = true; }); }) defaultGPUFamilies) - doCheck = true; - passthru = { - tests.version = testers.testVersion { - inherit version; - package = nvtop; - command = "nvtop --version"; - }; - }; - meta = with lib; { - description = "A (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs"; - longDescription = '' - Nvtop stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs. - It can handle multiple GPUs and print information about them in a htop familiar way. - ''; - homepage = "https://github.com/Syllo/nvtop"; - changelog = "https://github.com/Syllo/nvtop/releases/tag/${version}"; - license = licenses.gpl3Only; - platforms = platforms.linux; - maintainers = with maintainers; [ willibutz gbtb anthonyroussel ]; - mainProgram = "nvtop"; - }; -} |