at v206 62 lines 2.0 kB view raw
1{ stdenv, fetchgit, dwarf_fortress, cmake, zlib, perl, XMLLibXML, XMLLibXSLT 2}: 3 4let 5 baseVersion = "40"; 6 patchVersion = "24-r3"; 7 src = fetchgit { 8 url = "https://github.com/DFHack/dfhack.git"; 9 rev = "0849099f2083e100cae6f64940b4eff4c28ce2eb"; 10 sha256 = "0lnqrayi8hwfivkrxb7fw8lb6v95i04pskny1px7084n7nzvyv8b"; 11 }; 12 13in 14 15assert stdenv.system == "i686-linux"; 16assert dwarf_fortress.name == "dwarf-fortress-0.40.24"; 17 18stdenv.mkDerivation rec { 19 name = "dfhack-0.${baseVersion}.${patchVersion}"; 20 21 inherit baseVersion patchVersion src; 22 23 buildInputs = [ cmake zlib perl XMLLibXML XMLLibXSLT ]; 24 25 preConfigure = '' 26 export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix/dfhack $cmakeFlags" 27 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/build/depends/protobuf 28 ''; 29 30 installPhase = '' 31 mkdir -p $out/dfhack 32 make install 33 cp ../package/linux/dfhack $out/dfhack/ 34 mkdir -p $out/bin 35 cat > $out/bin/dfhack_install_dir <<EOF 36 #!/bin/sh 37 test -z "\$1" && echo "This creates a Dwarf Fortress/DFHack game directory. Please specify a directory (preferably empty or non-existent) for this." && exit 1 38 39 set -e 40 mkdir -p "\$1" 41 cd "\$1" 42 cp -r ${dwarf_fortress}/share/df_linux/* . 43 cp -r $out/dfhack/* . 44 chmod -R u+w . 45 # use LD_LIBRARY_PATH setting from dwarf-fortress wrapper 46 sed -e 's%# Now run%`grep LD_LIBRARY_PATH ${dwarf_fortress}/bin/dwarf-fortress`%' $out/dfhack/dfhack > dfhack 47 # write md5sum of binary 48 sed -e s/c42f55948a448645d6609102ef6439e8/`md5sum ${dwarf_fortress}/share/df_linux/libs/Dwarf_Fortress | cut -f1 -d\ `/ $out/dfhack/hack/symbols.xml > hack/symbols.xml 49 50 echo "DFHack installed successfully in \$1. To play, run ./dfhack in it." 51 52 EOF 53 chmod +x $out/bin/dfhack_install_dir 54 ''; 55 56 meta = { 57 description = "A Dwarf Fortress memory access library"; 58 homepage = https://github.com/DFHack/dfhack; 59 license = stdenv.lib.licenses.bsd2; 60 maintainers = with stdenv.lib.maintainers; [ robbinch ]; 61 }; 62}