nixpkgs/pkgs/games/crafty/default.nix

74 lines
1.9 KiB
Nix

{ lib, 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";
};
nativeBuildInputs = [ 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 = lib.licenses.unfree;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.jwiegley ];
};
}