summary refs log tree commit diff
path: root/pkgs/games/crafty/default.nix
blob: 191baa7e59238281fdb1324467b5019d3b86701d (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
{ stdenv, fetchurl, unzip }:

stdenv.mkDerivation rec {
  pname = "crafty";
  version = "25.0.1";

  src = fetchurl {
    url = "http://www.craftychess.com/downloads/source/crafty-${version}.zip";
    sha256 = "0aqgj2q7kdlgbha01qs869cwyja13bc7q2lh4nfhlba2pklknsm8";
  };

  bookBin = fetchurl {
    url = "http://www.craftychess.com/downloads/book/book.bin";
    sha256 = "10rrgkr3hxm7pxdbc2jq8b5g74gfhzk4smahks3k8am1cmyq4p7r";
  };

  startPgn = fetchurl {
    url = "http://craftychess.com/downloads/book/start.pgn.gz";
    sha256 = "12g70mgfifwssfvndzq94pin34dizlixhsga75vgj7dakysi2p7f";
  };

  buildInputs = [ unzip ];

  unpackPhase = ''
    mkdir "craftysrc"
    unzip $src -d craftysrc
    gunzip -c $startPgn > "craftysrc/start.pgn"
  '';

  buildPhase = ''
    cd craftysrc
    make unix-gcc
  '';

  installPhase = ''
    BUILDDIR="$PWD"
    mkdir -p $out/bin
    cp -p ./crafty $out/bin

    mkdir -p $out/share/crafty
    cd $out/share/crafty

    $out/bin/crafty "books create $BUILDDIR/start.pgn 60"
    rm -f *.001

    cp -p ${bookBin} $out/share/crafty/book.bin

    mv $out/bin/crafty $out/bin/.crafty-wrapped

    cat - > $out/bin/crafty <<EOF
    #! ${stdenv.shell}
    #
    # The books are copied from share/crafty to ~/.crafty/books the first time
    # this script is run. You can restore them at any time just copying them
    # again.
    if [[ ! -d "\$HOME/.crafty/books" ]]; then
      mkdir "\$HOME/.crafty/books" -p
      cp "$out/share/crafty/"book*.bin "\$HOME/.crafty/books"
      chmod ug+w "\$HOME/.crafty/books/"*
    fi
    exec $out/bin/.crafty-wrapped bookpath=\$HOME/.crafty/books "\$@"
    EOF
    chmod +x $out/bin/crafty
  '';

  meta = {
    homepage = "http://www.craftychess.com/";
    description = "Chess program developed by Dr. Robert M. Hyatt";
    license = stdenv.lib.licenses.unfree;
    platforms = stdenv.lib.platforms.unix;
    maintainers = [ stdenv.lib.maintainers.jwiegley ];
  };
}