summary refs log tree commit diff
path: root/pkgs/games/dwarf-fortress
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/dwarf-fortress')
-rw-r--r--pkgs/games/dwarf-fortress/default.nix3
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/default.nix14
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/fix-stonesense.patch23
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch10
-rw-r--r--pkgs/games/dwarf-fortress/dwarf-therapist/default.nix33
-rw-r--r--pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix2
-rw-r--r--pkgs/games/dwarf-fortress/soundsense.nix35
-rw-r--r--pkgs/games/dwarf-fortress/stonesense.nix15
-rw-r--r--pkgs/games/dwarf-fortress/wrapper/default.nix20
-rw-r--r--pkgs/games/dwarf-fortress/wrapper/dfhack.in2
-rw-r--r--pkgs/games/dwarf-fortress/wrapper/soundSense.in10
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