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