nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 150 lines 3.4 kB view raw
1{ 2 lib, 3 glib, 4 stdenv, 5 dbus, 6 freetype, 7 fontconfig, 8 zlib, 9 qtquickcontrols2, 10 libXinerama, 11 libxcb, 12 libSM, 13 libXi, 14 libglvnd, 15 libXext, 16 libXrandr, 17 mailspring, 18 libX11, 19 libICE, 20 libXrender, 21 autoPatchelfHook, 22 makeWrapper, 23 mkDerivation, 24 xkeyboard_config, 25 fetchurl, 26 buildFHSEnv, 27 openal, 28 makeDesktopItem, 29}: 30 31let 32 pname = "unigine-superposition"; 33 version = "1.1"; 34 35 superposition = stdenv.mkDerivation rec { 36 inherit pname version; 37 38 src = fetchurl { 39 url = "https://assets.unigine.com/d/Unigine_Superposition-${version}.run"; 40 sha256 = "12hzlz792pf8pvxf13fww3qhahqzwzkxq9q3mq20hbhvaphbg7nd"; 41 }; 42 43 nativeBuildInputs = [ 44 autoPatchelfHook 45 makeWrapper 46 ]; 47 48 buildInputs = [ 49 glib 50 stdenv.cc.cc 51 dbus 52 freetype 53 fontconfig 54 zlib 55 qtquickcontrols2 56 libXinerama 57 libxcb 58 libSM 59 libXi 60 libglvnd 61 libXext 62 libXrandr 63 mailspring 64 libX11 65 libICE 66 libXrender 67 ]; 68 69 installPhase = '' 70 bash $src --target $name --noexec 71 mkdir -p $out/bin $out/lib/unigine/superposition/ 72 cp -r $name/* $out/lib/unigine/superposition/ 73 echo "exec $out/lib/unigine/superposition/Superposition" >> $out/bin/superposition 74 chmod +x $out/bin/superposition 75 wrapProgram $out/lib/unigine/superposition/Superposition \ 76 --set QT_XKB_CONFIG_ROOT ${xkeyboard_config} \ 77 --run "cd $out/lib/unigine/superposition/" 78 ''; 79 80 dontUnpack = true; 81 dontWrapQtApps = true; 82 83 postPatchMkspecs = '' 84 cp -f $name/bin/superposition $out/lib/unigine/superposition/bin/superposition 85 ''; 86 }; 87 88 desktopItem = makeDesktopItem { 89 name = "Superposition"; 90 exec = "unigine-superposition"; 91 genericName = "A GPU Stress test tool from the UNIGINE"; 92 icon = "Superposition"; 93 desktopName = "Superposition Benchmark"; 94 }; 95 96in 97 98# We can patch the "/bin/superposition", but "/bin/launcher" checks it for changes. 99# For that we need use a buildFHSEnv. 100 101buildFHSEnv { 102 inherit pname version; 103 104 targetPkgs = pkgs: [ 105 superposition 106 glib 107 stdenv.cc.cc 108 dbus 109 freetype 110 fontconfig 111 zlib 112 qtquickcontrols2 113 libXinerama 114 libxcb 115 libSM 116 libXi 117 libglvnd 118 libXext 119 libXrandr 120 mailspring 121 libX11 122 libICE 123 libXrender 124 openal 125 ]; 126 runScript = "superposition"; 127 128 extraInstallCommands = '' 129 # create directories 130 mkdir -p $out/share/icons/hicolor $out/share/applications 131 # create .desktop file 132 ln -s ${desktopItem}/share/applications/* $out/share/applications 133 # install Superposition.desktop and icon 134 cp ${superposition}/lib/unigine/superposition/Superposition.png $out/share/icons/ 135 for RES in 16 24 32 48 64 128 256; do 136 mkdir -p $out/share/icons/hicolor/"$RES"x"$RES"/apps 137 cp ${superposition}/lib/unigine/superposition/icons/superposition_icon_$RES.png $out/share/icons/hicolor/"$RES"x"$RES"/apps/Superposition.png 138 done 139 ''; 140 141 meta = { 142 description = "Unigine Superposition GPU benchmarking tool"; 143 homepage = "https://benchmark.unigine.com/superposition"; 144 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; 145 license = lib.licenses.unfree; 146 maintainers = [ lib.maintainers.BarinovMaxim ]; 147 platforms = [ "x86_64-linux" ]; 148 mainProgram = "unigine-superposition"; 149 }; 150}