btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / ke / keyspersecond / package.nix
blobc88dfa984610dddbe8d8d7722de687ae14010c3f
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   gradle_7,
6   copyDesktopItems,
7   makeDesktopItem,
8   makeWrapper,
9   jre,
10   libGL,
11   libX11,
12   libXtst,
13   libxkbcommon,
14   libxcb,
15   libXt,
16   libXinerama,
19 let
20   gradle = gradle_7;
22   libPath = lib.makeLibraryPath [
23     # used by the Java2D OpenGL backend
24     libGL
25     # jnativehook dependencies
26     libX11
27     libXtst
28     libxkbcommon
29     libxcb
30     libXt
31     libXinerama
32   ];
34 stdenv.mkDerivation (finalAttrs: {
35   pname = "keyspersecond";
36   version = "8.9";
38   src = fetchFromGitHub {
39     owner = "RoanH";
40     repo = "KeysPerSecond";
41     rev = "v${finalAttrs.version}";
42     hash = "sha256-DGpXbCInq+RS56Ae5Y6xzyWqwXAm26c0vOYrFqDvl+8=";
43   };
45   sourceRoot = "${finalAttrs.src.name}/KeysPerSecond";
47   nativeBuildInputs = [
48     gradle
49     copyDesktopItems
50     makeWrapper
51   ];
53   mitmCache = gradle.fetchDeps {
54     inherit (finalAttrs) pname;
55     data = ./deps.json;
56   };
58   # this is required for using mitm-cache on Darwin
59   __darwinAllowLocalNetworking = true;
61   gradleFlags = "-PrefName=v${finalAttrs.version}";
63   installPhase = ''
64     runHook preInstall
66     install -Dm644 resources/kps.png $out/share/icons/hicolor/64x64/apps/keyspersecond.png
67     install -Dm644 build/libs/KeysPerSecond-v*.jar $out/share/keyspersecond/KeysPerSecond.jar
69     # Note: we need to enable the Java2D OpenGL backend for proper transparency support
70     makeWrapper ${jre}/bin/java $out/bin/KeysPerSecond \
71         --prefix LD_LIBRARY_PATH : ${libPath} \
72         --add-flags "-Dsun.java2d.opengl=True" \
73         --add-flags "-jar $out/share/keyspersecond/KeysPerSecond.jar"
75     runHook postInstall
76   '';
78   desktopItems = [
79     (makeDesktopItem {
80       name = "keyspersecond";
81       desktopName = "KeysPerSecond";
82       exec = "KeysPerSecond";
83       icon = "keyspersecond";
84       comment = finalAttrs.meta.description;
85       categories = [ "Utility" ];
86     })
87   ];
89   meta = {
90     changelog = "https://github.com/RoanH/KeysPerSecond/blob/${finalAttrs.src.rev}/CHANGELOG.md";
91     description = "Keys-per-second meter and counter for rhythm games";
92     homepage = "https://github.com/RoanH/KeysPerSecond";
93     license = lib.licenses.gpl3Only;
94     mainProgram = "KeysPerSecond";
95     maintainers = with lib.maintainers; [ tomasajt ];
96     platforms = jre.meta.platforms;
97     sourceProvenance = with lib.sourceTypes; [
98       fromSource
99       binaryBytecode # deps
100       binaryNativeCode # jnativehook shared library
101     ];
102   };