summary refs log tree commit diff
path: root/pkgs/games
diff options
context:
space:
mode:
authorAndrew Morsillo <andrew@peeramid.org>2014-07-23 22:41:30 -0400
committerAndrew Morsillo <andrew@peeramid.org>2014-07-23 22:41:30 -0400
commit7c84e3b785c2a512af1e2c185a5d830df56876b0 (patch)
tree5ea6902f85b75aa2cfc1b320512962ff3cb21a01 /pkgs/games
parenta1a2851409253c6152291791c55093f1794e6260 (diff)
downloadnixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.tar
nixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.tar.gz
nixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.tar.bz2
nixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.tar.lz
nixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.tar.xz
nixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.tar.zst
nixpkgs-7c84e3b785c2a512af1e2c185a5d830df56876b0.zip
Add dwarf fortress 2014 (unstable) version
Diffstat (limited to 'pkgs/games')
-rw-r--r--pkgs/games/dwarf-fortress/df2014.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/games/dwarf-fortress/df2014.nix b/pkgs/games/dwarf-fortress/df2014.nix
new file mode 100644
index 00000000000..aecdb0a44e1
--- /dev/null
+++ b/pkgs/games/dwarf-fortress/df2014.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchurl, SDL, SDL_image, SDL_ttf, gtk, glib, mesa, openal, glibc, libsndfile
+, copyDataDirectory ? false }:
+
+assert stdenv.system == "i686-linux";
+
+stdenv.mkDerivation rec {
+  name = "dwarf-fortress-0.40.04";
+
+  src = fetchurl {
+    url = "http://www.bay12games.com/dwarves/df_40_04_linux.tar.bz2";
+    sha256 = "0kzkq42mpih5lsv8bv98j8ls26a8sbb1amp8bnf04k63ai99b9zx";
+  };
+
+  phases = "unpackPhase patchPhase installPhase";
+
+  /* :TODO: Game options should be configurable by patching the default configuration files */
+
+  permission = ./df_permission;
+
+  installPhase = ''
+    set -x
+    mkdir -p $out/bin
+    mkdir -p $out/share/df_linux
+    cp -r * $out/share/df_linux
+    cp $permission $out/share/df_linux/nix_permission
+
+    patchelf --set-interpreter ${glibc}/lib/ld-linux.so.2 $out/share/df_linux/libs/Dwarf_Fortress
+    ln -s ${libsndfile}/lib/libsndfile.so $out/share/df_linux/libs/
+
+    cat > $out/bin/dwarf-fortress << EOF
+    #!${stdenv.shell}
+    export DF_DIR="\$HOME/.config/df_linux"
+    if [ -n "\$XDG_DATA_HOME" ]
+     then export DF_DIR="\$XDG_DATA_HOME/df_linux"
+    fi
+
+    # Recreate a directory structure reflecting the original
+    # distribution in the user directory (for modding support)
+    ${if copyDataDirectory then ''
+      if [ ! -d "\$DF_DIR" ];
+      then
+        mkdir -p \$DF_DIR
+        cp -r $out/share/df_linux/* \$DF_DIR/
+        chmod -R u+rw \$DF_DIR/
+      fi
+    '' else ''
+      # Link in the static stuff
+      mkdir -p \$DF_DIR
+      ln -sf $out/share/df_linux/libs \$DF_DIR/
+      ln -sf $out/share/df_linux/raw \$DF_DIR/
+      ln -sf $out/share/df_linux/df \$DF_DIR/
+
+      # Delete old data directory
+      rm -rf \$DF_DIR/data
+
+      # Link in the static data directory
+      mkdir \$DF_DIR/data
+      for i in $out/share/df_linux/data/*
+      do
+       ln -s \$i \$DF_DIR/data/
+      done
+
+      # link in persistant data
+      mkdir -p \$DF_DIR/save
+      ln -s \$DF_DIR/save \$DF_DIR/data/
+    ''}
+
+    # now run Dwarf Fortress!
+    export LD_LIBRARY_PATH=\$DF_DIR/df_linux/libs/:${SDL}/lib:${SDL_image}/lib/:${SDL_ttf}/lib/:${gtk}/lib/:${glib}/lib/:${mesa}/lib/:${openal}/lib/
+    \$DF_DIR/df "\$@"
+    EOF
+
+    chmod +x $out/bin/dwarf-fortress
+  '';
+
+  meta = {
+      description = "control a dwarven outpost or an adventurer in a randomly generated, persistent world";
+      homepage = http://www.bay12games.com/dwarves;
+      license = "unfree-redistributable";
+      maintainers = [stdenv.lib.maintainers.roconnor];
+  };
+}