Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 120 lines 3.3 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 cmake, 6 gtest, 7 cudatoolkit, 8 libdrm, 9 ncurses, 10 testers, 11 udev, 12 apple-sdk_12, 13 addDriverRunpath, 14 amd ? false, 15 intel ? false, 16 msm ? false, 17 nvidia ? false, 18 apple ? false, 19 panfrost ? false, 20 panthor ? false, 21 ascend ? false, 22 v3d ? false, 23 tpu ? false, 24}: 25 26let 27 drm-postFixup = '' 28 patchelf \ 29 --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ 30 --set-rpath "${ 31 lib.makeLibraryPath [ 32 libdrm 33 ncurses 34 udev 35 ] 36 }" \ 37 $out/bin/nvtop 38 ''; 39 needDrm = (amd || msm || panfrost || panthor || intel); 40in 41stdenv.mkDerivation (finalAttrs: { 42 pname = "nvtop"; 43 version = "3.2.0"; 44 45 # between generation of multiple update PRs for each package flavor and manual updates I choose manual updates 46 # nixpkgs-update: no auto update 47 src = fetchFromGitHub { 48 owner = "Syllo"; 49 repo = "nvtop"; 50 rev = finalAttrs.version; 51 hash = "sha256-8iChT55L2NSnHg8tLIry0rgi/4966MffShE0ib+2ywc="; 52 }; 53 54 cmakeFlags = with lib.strings; [ 55 (cmakeBool "BUILD_TESTING" true) 56 (cmakeBool "USE_LIBUDEV_OVER_LIBSYSTEMD" true) 57 (cmakeBool "AMDGPU_SUPPORT" amd) 58 (cmakeBool "NVIDIA_SUPPORT" nvidia) 59 (cmakeBool "INTEL_SUPPORT" intel) 60 (cmakeBool "APPLE_SUPPORT" apple) 61 (cmakeBool "MSM_SUPPORT" msm) 62 (cmakeBool "PANFROST_SUPPORT" panfrost) 63 (cmakeBool "PANTHOR_SUPPORT" panthor) 64 (cmakeBool "ASCEND_SUPPORT" ascend) 65 (cmakeBool "V3D_SUPPORT" v3d) 66 (cmakeBool "TPU_SUPPORT" tpu) # requires libtpuinfo which is not packaged yet 67 ]; 68 nativeBuildInputs = [ 69 cmake 70 ] 71 ++ lib.optionals finalAttrs.doCheck [ 72 gtest 73 ] 74 ++ lib.optional nvidia addDriverRunpath; 75 76 buildInputs = [ 77 ncurses 78 ] 79 ++ lib.optional stdenv.hostPlatform.isLinux udev 80 ++ lib.optional stdenv.hostPlatform.isDarwin apple-sdk_12 81 ++ lib.optional nvidia cudatoolkit 82 ++ lib.optional needDrm libdrm; 83 84 # this helps cmake to find <drm.h> 85 env.NIX_CFLAGS_COMPILE = lib.optionalString needDrm "-isystem ${lib.getDev libdrm}/include/libdrm"; 86 87 # ordering of fixups is important 88 postFixup = 89 (lib.optionalString needDrm drm-postFixup) 90 + (lib.optionalString nvidia "addDriverRunpath $out/bin/nvtop"); 91 92 # https://github.com/Syllo/nvtop/commit/33ec008e26a00227a666ccb11321e9971a50daf8 93 doCheck = !stdenv.hostPlatform.isDarwin; 94 95 passthru = { 96 tests.version = testers.testVersion { 97 inherit (finalAttrs) version; 98 package = finalAttrs.finalPackage; 99 command = "nvtop --version"; 100 }; 101 }; 102 103 meta = with lib; { 104 description = "(h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs"; 105 longDescription = '' 106 Nvtop stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs. 107 It can handle multiple GPUs and print information about them in a htop familiar way. 108 ''; 109 homepage = "https://github.com/Syllo/nvtop"; 110 changelog = "https://github.com/Syllo/nvtop/releases/tag/${finalAttrs.version}"; 111 license = licenses.gpl3Only; 112 platforms = if apple then platforms.darwin else platforms.linux; 113 maintainers = with maintainers; [ 114 gbtb 115 anthonyroussel 116 moni 117 ]; 118 mainProgram = "nvtop"; 119 }; 120})