about summary refs log tree commit diff
path: root/pkgs/games/gogui/default.nix
blob: 43e1f3397b8fbb7d49b21160827def5ca7ef689a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{ ant
, docbook-xsl-ns
, docbook_xml_dtd_42
, fetchFromGitHub
, imagemagick
, lib
, libxslt
, makeWrapper
, openjdk
, stdenv
}:

let
  version = "1.5.4a";
in stdenv.mkDerivation {
  pname = "gogui";
  inherit version;

  src = fetchFromGitHub {
    owner = "Remi-Coulom";
    repo = "gogui";
    rev = "v${version}";
    hash = "sha256-UFhOk2mAnTtxfwEOHquN64YDCRq7nNUqZAPQf77MEEw=";
  };

  nativeBuildInputs = [
    makeWrapper
    ant
  ];

  buildInputs = [
    docbook-xsl-ns
    imagemagick
    libxslt
    openjdk
  ];

  buildPhase = ''
    runHook preBuild

    substituteInPlace doc/manual/xml/book.xml \
      --replace http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd \
      ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd
    substituteInPlace doc/manual/xml/manpages.xml \
      --replace http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd \
      ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd

    # generate required gui images from svg
    # see https://github.com/Remi-Coulom/gogui/issues/36
    sizes=( 16x16 24x24 32x32 48x48 64x64 )
    for i in src/net/sf/gogui/images/*.svg; do
      for j in ''${sizes[@]}; do
        convert $i -resize $j src/net/sf/gogui/images/$(basename $i .svg)-''${j}.png
      done
    done

    for i in src/net/sf/gogui/images/gogui-{black,white,setup}.svg; do
      convert $i -resize 8x8 src/net/sf/gogui/images/$(basename $i .svg)-8x8.png
    done

    ant -Ddocbook-xsl.dir=${docbook-xsl-ns}/xml/xsl/docbook

    runHook postBuild
  '';

  installPhase = ''
    runHook preInstall

    # copy documentation
    mkdir -p $out/share/doc
    mv -vi doc $out/share/doc/gogui

    # make man pages available
    mkdir -p $out/share/man/
    ln -s $out/share/doc/gogui/manual/man $out/share/man/man1

    # copy programs
    mv -vi {bin,lib} $out/

    # wrap programs
    for x in $out/bin/*; do
      wrapProgram $x --prefix PATH ":" ${openjdk}/bin --set GOGUI_JAVA_HOME ${openjdk}
    done

    runHook postInstall
  '';

  meta = {
    maintainers = [ lib.maintainers.cleverca22 lib.maintainers.omnipotententity];
    description = "A graphical user interface to programs that play the board game Go and support the Go Text Protocol such as GNU Go";
    homepage = "https://github.com/Remi-Coulom/gogui";
    platforms = lib.platforms.unix;
    license = lib.licenses.gpl3;
  };
}