base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / system / nvtop / build-nvtop.nix
blobf1f855b25383d660d0f7e3a6e3b7a6225c6da198
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , cmake
5 , gtest
6 , cudatoolkit
7 , libdrm
8 , ncurses
9 , testers
10 , udev
11 , addDriverRunpath
12 , amd ? false
13 , intel ? false
14 , msm ? false
15 , nvidia ? false
16 , apple ? false
17 , panfrost ? false
18 , panthor ? false
19 , ascend ? false
22 let
23   drm-postFixup = ''
24     patchelf \
25       --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
26       --set-rpath "${lib.makeLibraryPath [ libdrm ncurses udev ]}" \
27       $out/bin/nvtop
28   '';
29   needDrm = (amd || msm || panfrost || panthor);
31 stdenv.mkDerivation (finalAttrs: {
32   pname = "nvtop";
33   version = "3.1.0";
35   src = fetchFromGitHub {
36     owner = "Syllo";
37     repo = "nvtop";
38     rev = finalAttrs.version;
39     hash = "sha256-MkkBY2PR6FZnmRMqv9MWqwPWRgixfkUQW5TWJtHEzwA=";
40   };
42   cmakeFlags = with lib.strings; [
43     (cmakeBool "BUILD_TESTING" true)
44     (cmakeBool "USE_LIBUDEV_OVER_LIBSYSTEMD" true)
45     (cmakeBool "AMDGPU_SUPPORT" amd)
46     (cmakeBool "NVIDIA_SUPPORT" nvidia)
47     (cmakeBool "INTEL_SUPPORT" intel)
48     (cmakeBool "APPLE_SUPPORT" apple)
49     (cmakeBool "MSM_SUPPORT" msm)
50     (cmakeBool "PANFROST_SUPPORT" panfrost)
51     (cmakeBool "PANTHOR_SUPPORT" panthor)
52     (cmakeBool "ASCEND_SUPPORT" ascend)
53   ];
54   nativeBuildInputs = [ cmake gtest ] ++ lib.optional nvidia addDriverRunpath;
56   buildInputs = [ ncurses udev ]
57     ++ lib.optional nvidia cudatoolkit
58     ++ lib.optional needDrm libdrm
59   ;
61   # this helps cmake to find <drm.h>
62   env.NIX_CFLAGS_COMPILE = lib.optionalString needDrm "-isystem ${lib.getDev libdrm}/include/libdrm";
64   # ordering of fixups is important
65   postFixup = (lib.optionalString needDrm drm-postFixup) + (lib.optionalString nvidia "addDriverRunpath $out/bin/nvtop");
67   doCheck = true;
69   passthru = {
70     tests.version = testers.testVersion {
71       inherit (finalAttrs) version;
72       package = finalAttrs.finalPackage;
73       command = "nvtop --version";
74     };
75   };
77   meta = with lib; {
78     description = "(h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs";
79     longDescription = ''
80       Nvtop stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs.
81       It can handle multiple GPUs and print information about them in a htop familiar way.
82     '';
83     homepage = "https://github.com/Syllo/nvtop";
84     changelog = "https://github.com/Syllo/nvtop/releases/tag/${finalAttrs.version}";
85     license = licenses.gpl3Only;
86     platforms = platforms.linux;
87     maintainers = with maintainers; [ willibutz gbtb anthonyroussel ];
88     mainProgram = "nvtop";
89   };