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