summary refs log tree commit diff
path: root/pkgs/games/dwarf-fortress/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/dwarf-fortress/default.nix')
-rw-r--r--pkgs/games/dwarf-fortress/default.nix229
1 files changed, 22 insertions, 207 deletions
diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix
index 97c793b8a39..d91c110c34c 100644
--- a/pkgs/games/dwarf-fortress/default.nix
+++ b/pkgs/games/dwarf-fortress/default.nix
@@ -1,218 +1,33 @@
-{ stdenv, fetchgit, fetchurl, cmake, glew, ncurses
-, SDL, SDL_image, SDL_ttf, gtk2, glib
-, mesa, openal, pango, atk, gdk_pixbuf, glibc, libsndfile
-# begin dfhack-only parameters
-, XMLLibXML
-, XMLLibXSLT
-, perl
-, zlib
-# end dfhack-only parameters
-, enableDFHack ? false
-}:
+{ pkgs, pkgsi686Linux }:
 
 let
-  baseVersion = "40";
-  patchVersion = "24";
-  srcs = {
-    df_unfuck = fetchgit {
-      url = "https://github.com/svenstaro/dwarf_fortress_unfuck";
-      rev = "39742d64d2886fb594d79e7cc4b98fb917f26811";
-      sha256 = "19vwx6kpv1sf93bx5v8x47f7x2cgxsqk82v6j1a72sa3q7m5cpc7";
-    };
+  callPackage = pkgs.newScope self;
+  callPackage_i686 = pkgsi686Linux.newScope self;
 
-    dfhack = fetchgit {
-      url = "https://github.com/DFHack/dfhack.git";
-      rev = "0849099f2083e100cae6f64940b4eff4c28ce2eb";
-      sha256 = "0lnqrayi8hwfivkrxb7fw8lb6v95i04pskny1px7084n7nzvyv8b";
-    };
+  self = rec {
+    dwarf-fortress-original = callPackage_i686 ./game.nix { };
 
-    df = fetchurl {
-      url = "http://www.bay12games.com/dwarves/df_${baseVersion}_${patchVersion}_linux.tar.bz2";
-      sha256 = "0d4jrs45qj89vq9mjg7fxxhis7zivvb0vzjpmkk274b778kccdys";
+    dfhack = callPackage_i686 ./dfhack {
+      inherit (pkgsi686Linux.perlPackages) XMLLibXML XMLLibXSLT;
     };
-  };
-
-  dfHackWorksWithCurrentVersion = true;
-  dfHackEnabled = dfHackWorksWithCurrentVersion && enableDFHack;
-
-in
-
-assert stdenv.system == "i686-linux";
-
-stdenv.mkDerivation rec {
-  name = "dwarf-fortress-0.${baseVersion}.${patchVersion}";
-
-  inherit baseVersion patchVersion;
-
-  buildInputs = [
-    SDL
-    SDL_image
-    SDL_ttf
-    gtk2
-    glib
-    glew
-    mesa
-    ncurses
-    openal
-    glibc
-    libsndfile
-    pango
-    atk
-    cmake
-    gdk_pixbuf
-    XMLLibXML
-    XMLLibXSLT
-    perl
-    zlib
-  ];
-  src = "${srcs.df_unfuck} ${srcs.df}" + stdenv.lib.optionalString dfHackEnabled " ${srcs.dfhack}";
-
-  sourceRoot = srcs.df_unfuck.name;
-  dfHackSourceRoot = srcs.dfhack.name;
-
-  cmakeFlags = [
-    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
-    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
-  ];
-
-  permission = ./df_permission;
-  dfHackTemplate = ./dwarf-fortress-hacked.in;
-  dfHackRunTemplate = ./dfhack-run.in;
-  dwarfFortressTemplate = ./dwarf-fortress.in;
-  installDfDataToHome = ./install-df-data-to-home.sh;
-  installDfhackDataToHome = ./install-dfhack-data-to-home.sh;
-  installDfDataContentToHome = ./install-df-data-content-to-home.sh;
-  exportLibsTemplate = ./export-libs.sh.in;
-  exportWorkaround = ./export-workaround.sh;
-
-  postUnpack = stdenv.lib.optionalString dfHackEnabled ''
-    if [ "$dontMakeSourcesWritable" != 1 ]; then
-      chmod -R u+w "$dfHackSourceRoot"
-    fi
-  '';
-
-  preConfigure = stdenv.lib.optionalString dfHackEnabled ''
-    export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$out/share/df_linux $cmakeFlags"
-    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/build/depends/protobuf
-  '';
-
-  postConfigure = stdenv.lib.optionalString dfHackEnabled ''
-    if [ -z "$originalSourceRoot" ]; then
-
-      originalSourceRoot=$sourceRoot
-      export sourceRoot=$dfHackSourceRoot
-
-      pushd ../../$sourceRoot
-
-      eval "''${configurePhase:-configurePhase}"
-
-      popd
-
-      export sourceRoot=$originalSourceRoot
-      unset originalSourceRoot
-    fi
-  '';
-
-  # outputs TODO: probably wrong path-substitutions below
-  installPhase = ''
-    set -x
-    mkdir -p $out/bin
-    mkdir -p $out/share/df_linux
-    pushd ../../
-    cp -r ./df_linux/* $out/share/df_linux
-    rm $out/share/df_linux/libs/lib*
 
-    # Store the original hash
-    orig_hash=$(md5sum $out/share/df_linux/libs/Dwarf_Fortress | awk '{ print $1 }')
-    echo $orig_hash | cut -c1-8 > $out/share/df_linux/hash.md5.orig  # for dwarf-therapist
-    echo $orig_hash > $out/share/df_linux/full-hash-orig.md5  # for dfhack
+    dwarf-fortress-unfuck = callPackage_i686 ./unfuck.nix { };
 
-    cp -f ./${srcs.df_unfuck.name}/build/libgraphics.so $out/share/df_linux/libs/libgraphics.so
-
-    cp $permission $out/share/df_linux/nix_permission
-
-    # Placeholder files for hashes of patched binary
-    touch $out/share/df_linux/hash.md5.patched
-    touch $out/share/df_linux/full-hash-patched.md5
-
-    mkdir -p $out/share/df_linux/shell
-    cp $installDfDataToHome $out/share/df_linux/shell/install-df-data-to-home.sh
-    cp $installDfhackDataToHome $out/share/df_linux/shell/install-dfhack-data-to-home.sh
-    cp $installDfDataContentToHome $out/share/df_linux/shell/install-df-data-content-to-home.sh
-    cp $exportWorkaround $out/share/df_linux/shell/export-workaround.sh
-    substitute $exportLibsTemplate $out/share/df_linux/shell/export-libs.sh \
-        --subst-var-by stdenv_cc ${stdenv.cc} \
-        --subst-var-by SDL ${SDL} \
-        --subst-var-by SDL_image ${SDL_image} \
-        --subst-var-by SDL_ttf ${SDL_ttf} \
-        --subst-var-by gtk2 ${gtk2} \
-        --subst-var-by glib ${glib} \
-        --subst-var-by libsndfile ${libsndfile} \
-        --subst-var-by mesa ${mesa} \
-        --subst-var-by openal ${openal} \
-        --subst-var-by zlib ${zlib} \
-
-    substitute $dwarfFortressTemplate $out/bin/dwarf-fortress \
-        --subst-var-by stdenv_shell ${stdenv.shell} \
-        --subst-var prefix
-
-    chmod 755 $out/bin/dwarf-fortress
-
-    popd
-  '' + stdenv.lib.optionalString dfHackEnabled ''
-
-    originalSourceRoot=$sourceRoot
-    export sourceRoot=$dfHackSourceRoot
-
-    pushd ../../$sourceRoot/build
-
-    mkdir -p $out/dfhack
-
-    make install
-
-    cp ../package/linux/dfhack $out/dfhack/
-
-    mkdir -p $out/bin
-
-    substitute $dfHackTemplate $out/bin/dfhack \
-        --subst-var-by stdenv_shell ${stdenv.shell} \
-        --subst-var prefix
-    chmod 755 $out/bin/dfhack
-
-    substitute $dfHackRunTemplate $out/bin/dfhack-run \
-        --subst-var-by stdenv_shell ${stdenv.shell} \
-        --subst-var prefix
-    chmod 755 $out/bin/dfhack-run
-
-    popd
-
-    export sourceRoot=$originalSourceRoot
-    unset originalSourceRoot
-  '';
-
-  fixupPhase = ''
-    # Fix rpath
-    patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc stdenv.glibc ]}:$out/share/df_linux/libs" $out/share/df_linux/libs/Dwarf_Fortress
-
-    patchelf --set-interpreter ${glibc.out}/lib/ld-linux.so.2 $out/share/df_linux/libs/Dwarf_Fortress
+    dwarf-fortress = callPackage ./wrapper {
+      themes = {
+        "phoebus" = phoebus-theme;
+      };
+    };
 
-    # Store new hash
-    patched_hash=$(md5sum $out/share/df_linux/libs/Dwarf_Fortress | awk '{ print $1 }')
-    echo $patched_hash | cut -c1-8 > $out/share/df_linux/hash.md5.patched  # for dwarf-therapist
-    echo $patched_hash > $out/share/df_linux/full-hash-patched.md5  # for dfhack
-  '' + stdenv.lib.optionalString dfHackEnabled ''
-    find $out/share/df_linux/hack \( \
-        \( -type f -a -name "*.so*" \) -o \
-        \( -type f -a -perm +0100 \) \
-        \) -print -exec patchelf --shrink-rpath {} \;
+    dwarf-therapist-original = callPackage ./dwarf-therapist {
+      texlive = pkgs.texlive.combine {
+        inherit (pkgs.texlive) scheme-basic float caption wrapfig adjmulticol sidecap preprint enumitem;
+      };
+    };
 
-    sed -i "s/$(cat $out/share/df_linux/full-hash-orig.md5)/$(cat $out/share/df_linux/full-hash-patched.md5)/" $out/share/df_linux/hack/symbols.xml
-  '';
+    dwarf-therapist = callPackage ./dwarf-therapist/wrapper.nix { };
 
-  meta = {
-    description = "A single-player fantasy game with a randomly generated adventure world";
-    homepage = http://www.bay12games.com/dwarves;
-    license = stdenv.lib.licenses.unfreeRedistributable;
-    maintainers = with stdenv.lib.maintainers; [ a1russell robbinch roconnor the-kenny ];
+    phoebus-theme = callPackage ./themes/phoebus.nix { };
   };
-}
+
+in self