1{
2 lib,
3 stdenv,
4 fetchurl,
5 autoPatchelfHook,
6 addDriverRunpath,
7 makeWrapper,
8 ocl-icd,
9 vulkan-loader,
10}:
11
12let
13 inherit (stdenv.hostPlatform.uname) processor;
14 version = "6.4.0";
15 sources = {
16 "x86_64-linux" = {
17 url = "https://cdn.geekbench.com/Geekbench-${version}-Linux.tar.gz";
18 hash = "sha256-Q4MwU3dIFheKKSMxzCBZI8XoForaN41BuRGVMhJaUKw=";
19 };
20 "aarch64-linux" = {
21 url = "https://cdn.geekbench.com/Geekbench-${version}-LinuxARMPreview.tar.gz";
22 hash = "sha256-PZ95w2X4sqTLZGZ5wygt7WjSK4Gfgtdh/UCPo+8Ysc8=";
23 };
24 };
25 geekbench_avx2 = lib.optionalString stdenv.hostPlatform.isx86_64 "geekbench_avx2";
26in
27stdenv.mkDerivation {
28 inherit version;
29 pname = "geekbench";
30
31 src = fetchurl (
32 sources.${stdenv.system} or (throw "unsupported system ${stdenv.hostPlatform.system}")
33 );
34
35 dontConfigure = true;
36 dontBuild = true;
37
38 nativeBuildInputs = [
39 autoPatchelfHook
40 makeWrapper
41 ];
42
43 buildInputs = [ (lib.getLib stdenv.cc.cc) ];
44
45 installPhase = ''
46 runHook preInstall
47
48 mkdir -p $out/bin
49 cp -r geekbench.plar geekbench-workload.plar geekbench6 geekbench_${processor} ${geekbench_avx2} $out/bin
50
51 for f in geekbench6 geekbench_${processor} ${geekbench_avx2} ; do
52 wrapProgram $out/bin/$f \
53 --prefix LD_LIBRARY_PATH : "${
54 lib.makeLibraryPath [
55 addDriverRunpath.driverLink
56 ocl-icd
57 vulkan-loader
58 ]
59 }"
60 done
61
62 runHook postInstall
63 '';
64
65 meta = {
66 description = "Cross-platform benchmark";
67 homepage = "https://geekbench.com/";
68 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
69 license = lib.licenses.unfree;
70 maintainers = with lib.maintainers; [
71 michalrus
72 asininemonkey
73 ];
74 platforms = builtins.attrNames sources;
75 mainProgram = "geekbench6";
76 };
77}