diff options
Diffstat (limited to 'pkgs/games/dwarf-fortress')
-rw-r--r-- | pkgs/games/dwarf-fortress/default.nix | 3 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/default.nix | 14 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch | 23 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch | 10 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dwarf-therapist/default.nix | 33 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix | 2 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/soundsense.nix | 35 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/stonesense.nix | 15 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/default.nix | 20 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/dfhack.in | 2 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/soundSense.in | 10 |
11 files changed, 132 insertions, 35 deletions
diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix index d26258081fcb..bdd55b5aeda7 100644 --- a/pkgs/games/dwarf-fortress/default.nix +++ b/pkgs/games/dwarf-fortress/default.nix @@ -11,6 +11,9 @@ let inherit (pkgs.perlPackages) XMLLibXML XMLLibXSLT; }; + soundSense = callPackage ./soundsense.nix { }; + stoneSense = callPackage ./stonesense.nix { }; + dwarf-fortress-unfuck = callPackage ./unfuck.nix { }; dwarf-fortress = callPackage ./wrapper { diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix index 0df91bb8df05..dbb3e7c32e25 100644 --- a/pkgs/games/dwarf-fortress/dfhack/default.nix +++ b/pkgs/games/dwarf-fortress/dfhack/default.nix @@ -1,6 +1,6 @@ -{ stdenv, fetchgit, cmake, writeScriptBin -, perl, XMLLibXML, XMLLibXSLT -, zlib +{ stdenv, lib, fetchgit, cmake, writeScriptBin, callPackage +, perl, XMLLibXML, XMLLibXSLT, zlib +, enableStoneSense ? false, allegro5, mesa }: let @@ -43,11 +43,12 @@ in stdenv.mkDerivation rec { inherit rev sha256; }; - patches = [ ./skip-ruby.patch ]; + patches = [ ./fix-stonesense.patch ]; nativeBuildInputs = [ cmake perl XMLLibXML XMLLibXSLT fakegit ]; # We don't use system libraries because dfhack needs old C++ ABI. - buildInputs = [ zlib ]; + buildInputs = [ zlib ] + ++ lib.optionals enableStoneSense [ allegro5 mesa ]; preConfigure = '' # Trick build system into believing we have .git @@ -59,7 +60,8 @@ in stdenv.mkDerivation rec { export LD_LIBRARY_PATH="$PWD/depends/protobuf:$LD_LIBRARY_PATH" ''; - cmakeFlags = [ "-DDFHACK_BUILD_ARCH=${arch}" ]; + cmakeFlags = [ "-DDFHACK_BUILD_ARCH=${arch}" "-DDOWNLOAD_RUBY=OFF" ] + ++ lib.optionals enableStoneSense [ "-DBUILD_STONESENSE=ON" "-DSTONESENSE_INTERNAL_SO=OFF" ]; enableParallelBuilding = true; diff --git a/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch b/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch new file mode 100644 index 000000000000..da860cd55624 --- /dev/null +++ b/pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch @@ -0,0 +1,23 @@ +From f5be6fe5fb192f01ae4551ed9217e97fd7f6a0ae Mon Sep 17 00:00:00 2001 +From: Herwig Hochleitner <hhochleitner@gmail.com> +Date: Sun, 1 Oct 2017 18:01:43 +0200 +Subject: [PATCH] include <GL/glext.h> + +this fixes `GLhandleARB` not being defined +--- + plugins/stonesense/common.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/plugins/stonesense/common.h b/plugins/stonesense/common.h +index eb36691..ef45389 100644 +--- a/plugins/stonesense/common.h ++++ b/plugins/stonesense/common.h +@@ -31,6 +31,8 @@ using namespace df::enums; + #include <allegro5/allegro_opengl.h> + #include <allegro5/utf8.h> + ++#include <GL/glext.h> ++ + // allegro leaks X headers, undef some of it here: + #undef TileShape + #undef None \ No newline at end of file diff --git a/pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch b/pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch deleted file mode 100644 index 877f6c3d215a..000000000000 --- a/pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/plugins/ruby/CMakeLists.txt b/plugins/ruby/CMakeLists.txt -index f1ef12ac..0976e18a 100644 ---- a/plugins/ruby/CMakeLists.txt -+++ b/plugins/ruby/CMakeLists.txt -@@ -1,5 +1,5 @@ - # Allow build system to turn off downloading of libruby.so. --OPTION(DOWNLOAD_RUBY "Download prebuilt libruby.so for ruby plugin." ON) -+OPTION(DOWNLOAD_RUBY "Download prebuilt libruby.so for ruby plugin." OFF) - - IF (DOWNLOAD_RUBY) diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix index bfdedcdd133f..e7ef9a02eb70 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix @@ -1,29 +1,34 @@ -{ stdenv, fetchFromGitHub, coreutils, qtbase, qtdeclarative, qmake, texlive }: +{ stdenv, fetchFromGitHub, coreutils, qtbase, qtdeclarative, cmake, texlive, ninja }: stdenv.mkDerivation rec { name = "dwarf-therapist-original-${version}"; - version = "37.0.0"; + version = "37.0.0-Hello71"; src = fetchFromGitHub { - owner = "splintermind"; + ## We use `Hello71`'s fork for 43.05 support + # owner = "splintermind"; + owner = "Hello71"; repo = "Dwarf-Therapist"; - rev = "v${version}"; - sha256 = "0dw86b4x5hjhb7h4ynvwjgcinpqywfc5l48ljb5sahz08rfnx63d"; + rev = "42ccaa71f6077ebdd41543255a360c3470812b97"; + sha256 = "0f6mlfck7q31jl5cb6d6blf5sb7cigvvs2rn31k16xc93hsdgxaz"; }; outputs = [ "out" "layouts" ]; buildInputs = [ qtbase qtdeclarative ]; - nativeBuildInputs = [ texlive qmake ]; + nativeBuildInputs = [ texlive cmake ninja ]; - enableParallelBuilding = false; + configurePhase = '' + cmake -GNinja + ''; + + buildPhase = '' + ninja -j$NIX_BUILD_CORES + ''; - # Move layout files so they cannot be found by Therapist - postInstall = '' - mkdir -p $layouts - mv $out/share/dwarftherapist/memory_layouts/* $layouts - rmdir $out/share/dwarftherapist/memory_layouts - # Useless symlink - rm $out/bin/dwarftherapist + installPhase = '' + mkdir -p $out/bin + cp ./DwarfTherapist $out/bin/DwarfTherapist + cp -r ./share/memory_layouts $layouts ''; meta = with stdenv.lib; { diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix index cbc8d31e6750..3a1a52d44cdb 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix @@ -3,7 +3,7 @@ let df = dwarf-fortress-original; dt = dwarf-therapist-original; - inifile = "linux/v0${df.baseVersion}.${df.patchVersion}.ini"; + inifile = "linux/v0.${df.baseVersion}.${df.patchVersion}.ini"; dfHashFile = "${df}/hash.md5"; in symlinkJoin { diff --git a/pkgs/games/dwarf-fortress/soundsense.nix b/pkgs/games/dwarf-fortress/soundsense.nix new file mode 100644 index 000000000000..c87f42d58c0f --- /dev/null +++ b/pkgs/games/dwarf-fortress/soundsense.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchzip, dos2unix +, soundPack ? stdenv.mkDerivation { + name = "soundsense-soundpack"; + src = fetchzip { + url = "http://df.zweistein.cz/soundsense/soundpack.zip"; + sha256 = "0qz0mjkp7wp0gxk3ws2x760awv8c9lkacj2fn9bz3gqqnq262ffa"; + }; + installPhase = '' + cp -r . $out + ''; +}}: + +stdenv.mkDerivation rec { + version = "2016-1_196"; + dfVersion = "0.43.05"; + inherit soundPack; + name = "soundsense-${version}"; + src = fetchzip { + url = "http://df.zweistein.cz/soundsense/soundSense_${version}.zip"; + sha256 = "1gkrs69l3xsh858yjp204ddp29m668j630akm7arssc9359wxqkk"; + }; + phases = [ "unpackPhase" "buildPhase" "installPhase" ]; + nativeBuildInputs = [ dos2unix ]; + buildPhase = '' + dos2unix soundSense.sh + chmod +x soundSense.sh + ''; + installPhase = '' + mkdir $out + cp -R . $out/soundsense + ln -s $out/soundsense/dfhack $out/hack + ln -s $soundPack $out/soundsense/packs + ''; + passthru = { inherit version dfVersion; }; +} diff --git a/pkgs/games/dwarf-fortress/stonesense.nix b/pkgs/games/dwarf-fortress/stonesense.nix new file mode 100644 index 000000000000..52de513ac8fd --- /dev/null +++ b/pkgs/games/dwarf-fortress/stonesense.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchFromGitHub, cmake }: + +stdenv.mkDerivation rec { + name = "stonesense"; + src = fetchFromGitHub { + owner = "DFHack"; + repo = "stonesense"; + rev = "be793a080e66db1ff79ac284070632ec1a896708"; + sha256 = "1kibqblxp16z75zm48kk59w483933rkg4w339f28fcrbpg4sn92s"; + }; + + nativeBuildInputs = [ cmake ]; + + cmakeFlags = [ "-DDFHACK_BUILD_ARCH=64" ]; +} diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix index 15b51631b33b..05e851db6f85 100644 --- a/pkgs/games/dwarf-fortress/wrapper/default.nix +++ b/pkgs/games/dwarf-fortress/wrapper/default.nix @@ -1,10 +1,16 @@ { stdenv, lib, buildEnv, dwarf-fortress-original, substituteAll , enableDFHack ? false, dfhack +, enableSoundSense ? false, soundSense, jdk +, enableStoneSense ? false , themes ? {} , theme ? null }: let + dfhack_ = dfhack.override { + inherit enableStoneSense; + }; + ptheme = if builtins.isString theme then builtins.getAttr theme themes @@ -12,19 +18,20 @@ let # These are in inverse order for first packages to override the next ones. pkgs = lib.optional (theme != null) ptheme - ++ lib.optional enableDFHack dfhack + ++ lib.optional enableDFHack dfhack_ + ++ lib.optional enableSoundSense soundSense ++ [ dwarf-fortress-original ]; env = buildEnv { name = "dwarf-fortress-env-${dwarf-fortress-original.dfVersion}"; paths = pkgs; - pathsToLink = [ "/" "/hack" ]; + pathsToLink = [ "/" "/hack" "/hack/scripts" ]; ignoreCollisions = true; postBuild = lib.optionalString enableDFHack '' rm $out/hack/symbols.xml - substitute ${dfhack}/hack/symbols.xml $out/hack/symbols.xml \ + substitute ${dfhack_}/hack/symbols.xml $out/hack/symbols.xml \ --replace $(cat ${dwarf-fortress-original}/hash.md5.orig) \ $(cat ${dwarf-fortress-original}/hash.md5) ''; @@ -44,6 +51,7 @@ stdenv.mkDerivation rec { runDF = ./dwarf-fortress.in; runDFHack = ./dfhack.in; + runSoundSense = ./soundSense.in; buildCommand = '' mkdir -p $out/bin @@ -57,6 +65,12 @@ stdenv.mkDerivation rec { --subst-var-by stdenv_shell ${stdenv.shell} \ --subst-var dfInit chmod 755 $out/bin/dfhack + '' + lib.optionalString enableSoundSense '' + substitute $runSoundSense $out/bin/soundsense \ + --subst-var-by stdenv_shell ${stdenv.shell} \ + --subst-var-by jre ${jdk.jre} \ + --subst-var dfInit + chmod 755 $out/bin/soundsense ''; preferLocalBuild = true; diff --git a/pkgs/games/dwarf-fortress/wrapper/dfhack.in b/pkgs/games/dwarf-fortress/wrapper/dfhack.in index c8d8d287403b..4cf884ebed2c 100644 --- a/pkgs/games/dwarf-fortress/wrapper/dfhack.in +++ b/pkgs/games/dwarf-fortress/wrapper/dfhack.in @@ -2,7 +2,7 @@ source @dfInit@ -for i in dfhack.init-example dfhack-config/default hack/*; do +for i in dfhack.init-example dfhack-config/default hack/* stonesense/*; do update_path "$i" done diff --git a/pkgs/games/dwarf-fortress/wrapper/soundSense.in b/pkgs/games/dwarf-fortress/wrapper/soundSense.in new file mode 100644 index 000000000000..28357ed7579f --- /dev/null +++ b/pkgs/games/dwarf-fortress/wrapper/soundSense.in @@ -0,0 +1,10 @@ +#!@stdenv_shell@ -e + +source @dfInit@ + +for p in soundsense/*; do + update_path "$p" +done + +cd "$DF_DIR" +PATH=@jre@/bin exec $DF_DIR/soundsense/soundSense.sh |