nixpkgs/pkgs/by-name/fu/furmark/package.nix
2024-06-19 16:46:56 +02:00

115 lines
2.7 KiB
Nix

{
autoPatchelfHook,
copyDesktopItems,
fetchurl,
fetchzip,
lib,
libGL,
libGLU,
libxcrypt-legacy,
makeDesktopItem,
makeWrapper,
stdenv,
testers,
vulkan-loader,
}:
let
description = "OpenGL and Vulkan Benchmark and Stress Test";
versions = {
"x86_64-linux" = "2.3.0.0";
"aarch64-linux" = "2.3.0.0";
"i686-linux" = "2.0.16";
};
sources = {
"x86_64-linux" = {
url = "https://gpumagick.com/downloads/files/2024/furmark2/FurMark_${versions.x86_64-linux}_linux64.zip";
hash = "sha256-9xwnOo8gh6XlX2uTwvEorXsx9FafaeCyCPPPJLJGeuE=";
};
"aarch64-linux" = {
url = "https://gpumagick.com/downloads/files/2024/furmark2/FurMark_${versions.x86_64-linux}_rpi64.zip";
hash = "sha256-az4prQbg9I+6rt2y1OTy3t21/VHyZS++57r4Ahe3fcQ=";
};
"i686-linux" = {
url = "https://gpumagick.com/downloads/files/2024/furmark2/FurMark_${versions.i686-linux}_linux32.zip";
hash = "sha256-yXd90FgL3WbTga5x0mXT40BonA2NQtqLzRVzn4s4lLc=";
};
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "furmark";
version =
versions.${stdenv.hostPlatform.system}
or (throw "Furmark is not available on ${stdenv.hostPlatform.system}");
src = fetchzip sources.${stdenv.hostPlatform.system};
nativeBuildInputs = [
autoPatchelfHook
copyDesktopItems
makeWrapper
];
buildInputs = [
libGL
libGLU
] ++ lib.optionals stdenv.isAarch64 [ libxcrypt-legacy ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/furmark
cp -rp * $out/share/furmark
mkdir -p $out/bin
for i in $(find $out/share/furmark -maxdepth 1 -type f -executable); do
ln -s "$i" "$out/bin/$(basename "$i")"
done
runHook postInstall
'';
appendRunpaths = [ (lib.makeLibraryPath [ vulkan-loader ]) ];
desktopItems = [
(makeDesktopItem rec {
name = "FurMark";
exec = "FurMark_GUI";
comment = description;
desktopName = name;
genericName = name;
icon = fetchurl {
url = "https://www.geeks3d.com/furmark/i/20240220-furmark-logo-02.png";
hash = "sha256-EqhWQgTEmF/2AcqDxgGtr2m5SMYup28hPEhI6ssFw7g=";
};
categories = [
"System"
"Monitor"
];
})
];
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "furmark --version";
};
};
meta = {
homepage = "https://www.geeks3d.com/furmark/v2/";
license = lib.licenses.unfree;
mainProgram = "FurMark_GUI";
maintainers = with lib.maintainers; [ surfaceflinger ];
platforms = [
"aarch64-linux"
"i686-linux"
"x86_64-linux"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
inherit description;
};
})