1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 copyDesktopItems,
6 jdk,
7 makeDesktopItem,
8 makeWrapper,
9}:
10
11stdenv.mkDerivation rec {
12 pname = "graphwar";
13 version = "1.0.0";
14
15 src = fetchFromGitHub {
16 owner = "catabriga";
17 repo = "graphwar";
18 rev = version;
19 sha256 = "sha256-t3Y576dXWp2Mj6OSQN5cm9FuNBWNqKq6xxkVRbjIBgE=";
20 };
21
22 nativeBuildInputs = [
23 copyDesktopItems
24 makeWrapper
25 ];
26 buildInputs = [ jdk ];
27
28 buildPhase = ''
29 runHook preBuild
30
31 mkdir -p out/
32 javac -d out/ -sourcepath src/ -classpath out/ -encoding utf8 src/**/*.java
33
34 runHook postBuild
35 '';
36
37 installPhase = ''
38 runHook preInstall
39
40 mkdir -p $out/lib/
41 mv out $out/lib/graphwar
42 cp -r rsc $out/lib/graphwar/rsc
43
44 makeWrapper ${jdk}/bin/java $out/bin/graphwar \
45 --add-flags "-classpath $out/lib/graphwar Graphwar.Graphwar"
46 makeWrapper ${jdk}/bin/java $out/bin/graphwar-roomserver \
47 --add-flags "-classpath $out/lib/graphwar RoomServer.RoomServer"
48 makeWrapper ${jdk}/bin/java $out/bin/graphwar-globalserver \
49 --add-flags "-classpath $out/lib/graphwar GlobalServer.GlobalServer"
50
51 runHook postInstall
52 '';
53
54 desktopItems = [
55 (makeDesktopItem {
56 name = "graphwar";
57 exec = "graphwar";
58 desktopName = "Graphwar";
59 categories = [ "Game" ];
60 })
61 ];
62
63 meta = with lib; {
64 homepage = "https://www.graphwar.com/";
65 description = "Artillery game in which you must hit your enemies using mathematical functions";
66 license = licenses.gpl3Plus;
67 platforms = jdk.meta.platforms;
68 maintainers = with maintainers; [ yrd ];
69 };
70}