nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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}