diff --git a/pkgs/applications/graphics/unigine-superposition/default.nix b/pkgs/applications/graphics/unigine-superposition/default.nix new file mode 100644 index 00000000000..768089d1a0c --- /dev/null +++ b/pkgs/applications/graphics/unigine-superposition/default.nix @@ -0,0 +1,146 @@ +{ lib +, glib +, stdenv +, dbus +, freetype +, fontconfig +, zlib +, qtquickcontrols2 +, libXinerama +, libxcb +, libSM +, libXi +, libglvnd +, libXext +, libXrandr +, mailspring +, libX11 +, libICE +, libXrender +, autoPatchelfHook +, makeWrapper +, mkDerivation +, xkeyboard_config +, fetchurl +, buildFHSUserEnv +, openal +, makeDesktopItem +}: + +let + + superposition = stdenv.mkDerivation rec{ + pname = "unigine-superposition"; + version = "1.1"; + + src = fetchurl { + url = "https://assets.unigine.com/d/Unigine_Superposition-${version}.run"; + sha256 = "12hzlz792pf8pvxf13fww3qhahqzwzkxq9q3mq20hbhvaphbg7nd"; + }; + + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ + glib + stdenv.cc.cc + dbus + freetype + fontconfig + zlib + qtquickcontrols2 + libXinerama + libxcb + libSM + libXi + libglvnd + libXext + libXrandr + mailspring + libX11 + libICE + libXrender + ]; + + installPhase = '' + bash $src --target $name --noexec + mkdir -p $out/bin $out/lib/unigine/superposition/ + cp -r $name/* $out/lib/unigine/superposition/ + echo "exec $out/lib/unigine/superposition/Superposition" >> $out/bin/superposition + chmod +x $out/bin/superposition + wrapProgram $out/lib/unigine/superposition/Superposition \ + --set QT_XKB_CONFIG_ROOT ${xkeyboard_config} \ + --run "cd $out/lib/unigine/superposition/" + ''; + + dontUnpack = true; + dontWrapQtApps = true; + + postPatchMkspecs = '' + cp -f $name/bin/superposition $out/lib/unigine/superposition/bin/superposition + ''; + }; + + desktopItem = makeDesktopItem { + name = "Superposition"; + exec = "Superposition"; + genericName = "A GPU Stress test tool from the UNIGINE"; + icon = "Superposition"; + desktopName = "Superposition Benchmark"; + }; + +in + +# We can patch the "/bin/superposition", but "/bin/launcher" checks it for changes. +# For that we need use a buildFHSUserEnv. + +buildFHSUserEnv { + name = "Superposition"; + + targetPkgs = pkgs: [ + superposition + glib + stdenv.cc.cc + dbus + freetype + fontconfig + zlib + qtquickcontrols2 + libXinerama + libxcb + libSM + libXi + libglvnd + libXext + libXrandr + mailspring + libX11 + libICE + libXrender + openal + ]; + runScript = "superposition"; + + extraInstallCommands = '' + # create directories + mkdir -p $out/share/icons/hicolor $out/share/applications + # create .desktop file + ln -s ${desktopItem}/share/applications/* $out/share/applications + # install Superposition.desktop and icon + cp ${superposition}/lib/unigine/superposition/Superposition.png $out/share/icons/ + for RES in 16 24 32 48 64 128 256; do + mkdir -p $out/share/icons/hicolor/"$RES"x"$RES"/apps + cp ${superposition}/lib/unigine/superposition/icons/superposition_icon_$RES.png $out/share/icons/hicolor/"$RES"x"$RES"/apps/Superposition.png + done + ''; + + meta = { + description = "The Unigine Superposition GPU benchmarking tool"; + homepage = "https://benchmark.unigine.com/superposition"; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.BarinovMaxim ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bcdfca5711e..bf6c81cc455 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -29698,6 +29698,8 @@ with pkgs; unigine-heaven = callPackage ../applications/graphics/unigine-heaven { }; + unigine-superposition = libsForQt5.callPackage ../applications/graphics/unigine-superposition { }; + unipicker = callPackage ../applications/misc/unipicker { }; unison = callPackage ../applications/networking/sync/unison {