dwarf-fortress: refactor
This commit is contained in:
parent
4e75706a46
commit
cd3ed54f6e
@ -1,4 +1,4 @@
|
||||
{ pkgs, stdenv, stdenvNoCC, gccStdenv, lib, recurseIntoAttrs }:
|
||||
{ stdenv, stdenvNoCC, gccStdenv, lib, recurseIntoAttrs, libsForQt5, newScope, texlive, perlPackages, jdk8, jre8 }:
|
||||
|
||||
# To whomever it may concern:
|
||||
#
|
||||
@ -35,7 +35,7 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
callPackage = pkgs.newScope self;
|
||||
callPackage = newScope self;
|
||||
|
||||
# The latest Dwarf Fortress version. Maintainers: when a new version comes
|
||||
# out, ensure that (unfuck|dfhack|twbt) are all up to date before changing
|
||||
@ -45,51 +45,54 @@ let
|
||||
# Converts a version to a package name.
|
||||
versionToName = version: "dwarf-fortress_${lib.replaceStrings ["."] ["_"] version}";
|
||||
|
||||
dwarf-therapist-original = pkgs.qt5.callPackage ./dwarf-therapist {
|
||||
texlive = pkgs.texlive.combine {
|
||||
inherit (pkgs.texlive) scheme-basic float caption wrapfig adjmulticol sidecap preprint enumitem;
|
||||
dwarf-therapist-original = libsForQt5.callPackage ./dwarf-therapist {
|
||||
texlive = texlive.combine {
|
||||
inherit (texlive) scheme-basic float caption wrapfig adjmulticol sidecap preprint enumitem;
|
||||
};
|
||||
};
|
||||
|
||||
# A map of names to each Dwarf Fortress package we know about.
|
||||
df-games = lib.listToAttrs (map (dfVersion: {
|
||||
name = versionToName dfVersion;
|
||||
value =
|
||||
let
|
||||
# I can't believe this syntax works. Spikes of Nix code indeed...
|
||||
dwarf-fortress = callPackage ./game.nix {
|
||||
inherit dfVersion;
|
||||
inherit dwarf-fortress-unfuck;
|
||||
df-games = lib.listToAttrs (map
|
||||
(dfVersion: {
|
||||
name = versionToName dfVersion;
|
||||
value =
|
||||
let
|
||||
# I can't believe this syntax works. Spikes of Nix code indeed...
|
||||
dwarf-fortress = callPackage ./game.nix {
|
||||
inherit dfVersion;
|
||||
inherit dwarf-fortress-unfuck;
|
||||
};
|
||||
|
||||
# unfuck is linux-only right now, we will only use it there.
|
||||
dwarf-fortress-unfuck =
|
||||
if stdenv.isLinux then callPackage ./unfuck.nix { inherit dfVersion; }
|
||||
else null;
|
||||
|
||||
twbt = callPackage ./twbt { inherit dfVersion; };
|
||||
|
||||
dfhack = callPackage ./dfhack {
|
||||
inherit (perlPackages) XMLLibXML XMLLibXSLT;
|
||||
inherit dfVersion twbt;
|
||||
stdenv = gccStdenv;
|
||||
};
|
||||
|
||||
dwarf-therapist = libsForQt5.callPackage ./dwarf-therapist/wrapper.nix {
|
||||
inherit dwarf-fortress;
|
||||
dwarf-therapist = dwarf-therapist-original;
|
||||
};
|
||||
in
|
||||
callPackage ./wrapper {
|
||||
inherit (self) themes;
|
||||
|
||||
dwarf-fortress = dwarf-fortress;
|
||||
twbt = twbt;
|
||||
dfhack = dfhack;
|
||||
dwarf-therapist = dwarf-therapist;
|
||||
|
||||
jdk = jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||
};
|
||||
|
||||
# unfuck is linux-only right now, we will only use it there.
|
||||
dwarf-fortress-unfuck = if stdenv.isLinux then callPackage ./unfuck.nix { inherit dfVersion; }
|
||||
else null;
|
||||
|
||||
twbt = callPackage ./twbt { inherit dfVersion; };
|
||||
|
||||
dfhack = callPackage ./dfhack {
|
||||
inherit (pkgs.perlPackages) XMLLibXML XMLLibXSLT;
|
||||
inherit dfVersion twbt;
|
||||
stdenv = gccStdenv;
|
||||
};
|
||||
|
||||
dwarf-therapist = callPackage ./dwarf-therapist/wrapper.nix {
|
||||
inherit dwarf-fortress;
|
||||
dwarf-therapist = dwarf-therapist-original;
|
||||
};
|
||||
in
|
||||
callPackage ./wrapper {
|
||||
inherit (self) themes;
|
||||
|
||||
dwarf-fortress = dwarf-fortress;
|
||||
twbt = twbt;
|
||||
dfhack = dfhack;
|
||||
dwarf-therapist = dwarf-therapist;
|
||||
|
||||
jdk = pkgs.jdk8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||
};
|
||||
}) (lib.attrNames self.df-hashes));
|
||||
})
|
||||
(lib.attrNames self.df-hashes));
|
||||
|
||||
self = rec {
|
||||
df-hashes = builtins.fromJSON (builtins.readFile ./game.json);
|
||||
@ -107,7 +110,7 @@ let
|
||||
soundSense = callPackage ./soundsense.nix { };
|
||||
|
||||
legends-browser = callPackage ./legends-browser {
|
||||
jre = pkgs.jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||
jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||
};
|
||||
|
||||
themes = recurseIntoAttrs (callPackage ./themes {
|
||||
@ -119,4 +122,5 @@ let
|
||||
cla-theme = themes.cla;
|
||||
};
|
||||
|
||||
in self // df-games
|
||||
in
|
||||
self // df-games
|
||||
|
@ -1,7 +1,20 @@
|
||||
{ stdenv, buildEnv, lib, fetchFromGitHub, cmake, writeScriptBin
|
||||
, perl, XMLLibXML, XMLLibXSLT, zlib, ruby
|
||||
, enableStoneSense ? false, allegro5, libGLU, libGL
|
||||
, enableTWBT ? true, twbt
|
||||
{ stdenv
|
||||
, buildEnv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, writeScriptBin
|
||||
, perl
|
||||
, XMLLibXML
|
||||
, XMLLibXSLT
|
||||
, zlib
|
||||
, ruby
|
||||
, enableStoneSense ? false
|
||||
, allegro5
|
||||
, libGLU
|
||||
, libGL
|
||||
, enableTWBT ? true
|
||||
, twbt
|
||||
, SDL
|
||||
, dfVersion
|
||||
}:
|
||||
@ -60,9 +73,10 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
release = if hasAttr dfVersion dfhack-releases
|
||||
then getAttr dfVersion dfhack-releases
|
||||
else throw "[DFHack] Unsupported Dwarf Fortress version: ${dfVersion}";
|
||||
release =
|
||||
if hasAttr dfVersion dfhack-releases
|
||||
then getAttr dfVersion dfhack-releases
|
||||
else throw "[DFHack] Unsupported Dwarf Fortress version: ${dfVersion}";
|
||||
|
||||
version = release.dfHackRelease;
|
||||
|
||||
@ -125,7 +139,7 @@ let
|
||||
nativeBuildInputs = [ cmake perl XMLLibXML XMLLibXSLT fakegit ];
|
||||
# We don't use system libraries because dfhack needs old C++ ABI.
|
||||
buildInputs = [ zlib SDL ]
|
||||
++ lib.optionals enableStoneSense [ allegro5 libGLU libGL ];
|
||||
++ lib.optionals enableStoneSense [ allegro5 libGLU libGL ];
|
||||
|
||||
preConfigure = ''
|
||||
# Trick build system into believing we have .git
|
||||
@ -138,7 +152,7 @@ let
|
||||
'';
|
||||
|
||||
cmakeFlags = [ "-DDFHACK_BUILD_ARCH=${arch}" "-DDOWNLOAD_RUBY=OFF" ]
|
||||
++ lib.optionals enableStoneSense [ "-DBUILD_STONESENSE=ON" "-DSTONESENSE_INTERNAL_SO=OFF" ];
|
||||
++ lib.optionals enableStoneSense [ "-DBUILD_STONESENSE=ON" "-DSTONESENSE_INTERNAL_SO=OFF" ];
|
||||
|
||||
# dfhack expects an unversioned libruby.so to be present in the hack
|
||||
# subdirectory for ruby plugins to function.
|
||||
|
@ -1,5 +1,12 @@
|
||||
{ lib, stdenv, fetchFromGitHub, qtbase
|
||||
, qtdeclarative, cmake, texlive, ninja }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, qtbase
|
||||
, qtdeclarative
|
||||
, cmake
|
||||
, texlive
|
||||
, ninja
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dwarf-therapist";
|
||||
@ -15,10 +22,11 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ texlive cmake ninja ];
|
||||
buildInputs = [ qtbase qtdeclarative ];
|
||||
|
||||
installPhase = if stdenv.isDarwin then ''
|
||||
mkdir -p $out/Applications
|
||||
cp -r DwarfTherapist.app $out/Applications
|
||||
'' else null;
|
||||
installPhase =
|
||||
if stdenv.isDarwin then ''
|
||||
mkdir -p $out/Applications
|
||||
cp -r DwarfTherapist.app $out/Applications
|
||||
'' else null;
|
||||
|
||||
dontWrapQtApps = true;
|
||||
|
||||
|
@ -5,22 +5,21 @@
|
||||
install_dir="@install@"
|
||||
therapist_dir="@therapist@"
|
||||
|
||||
cat <<EOF >&2
|
||||
@cat@ <<EOF >&2
|
||||
Using $DT_DIR as Dwarf Therapist overlay directory.
|
||||
EOF
|
||||
|
||||
update_path() {
|
||||
local path="$1"
|
||||
|
||||
mkdir -p "$DT_DIR/$(dirname "$path")"
|
||||
@mkdir@ -p "$DT_DIR/$(@dirname@ "$path")"
|
||||
if [ ! -e "$DT_DIR/$path" ] || [ -L "$DT_DIR/$path" ]; then
|
||||
rm -f "$DT_DIR/$path"
|
||||
ln -s "$install_dir/share/dwarftherapist/$path" "$DT_DIR/$path"
|
||||
@rm@ -f "$DT_DIR/$path"
|
||||
@ln@ -s "$install_dir/share/dwarftherapist/$path" "$DT_DIR/$path"
|
||||
fi
|
||||
}
|
||||
|
||||
cd "$install_dir/share/dwarftherapist"
|
||||
update_path memory_layouts
|
||||
|
||||
QT_QPA_PLATFORM_PLUGIN_PATH="@qt_plugin_path@" \
|
||||
exec "$therapist_dir/bin/dwarftherapist" "$@"
|
||||
exec "$therapist_dir/bin/dwarftherapist" "$@"
|
||||
|
@ -1,8 +1,9 @@
|
||||
{ pkgs, stdenv, dwarf-therapist, dwarf-fortress, makeWrapper }:
|
||||
{ stdenv, dwarf-therapist, dwarf-fortress, substituteAll, coreutils, wrapQtAppsHook }:
|
||||
|
||||
let
|
||||
platformSlug = if stdenv.targetPlatform.is32bit then
|
||||
"linux32" else "linux64";
|
||||
platformSlug =
|
||||
if stdenv.targetPlatform.is32bit then
|
||||
"linux32" else "linux64";
|
||||
inifile = "linux/v0.${dwarf-fortress.baseVersion}.${dwarf-fortress.patchVersion}_${platformSlug}.ini";
|
||||
|
||||
in
|
||||
@ -10,24 +11,32 @@ in
|
||||
stdenv.mkDerivation {
|
||||
name = "dwarf-therapist-${dwarf-therapist.version}";
|
||||
|
||||
wrapper = ./dwarf-therapist.in;
|
||||
wrapper = substituteAll {
|
||||
src = ./dwarf-therapist.in;
|
||||
stdenv_shell = "${stdenv.shell}";
|
||||
rm = "${coreutils}/bin/rm";
|
||||
ln = "${coreutils}/bin/ln";
|
||||
cat = "${coreutils}/bin/cat";
|
||||
mkdir = "${coreutils}/bin/mkdir";
|
||||
dirname = "${coreutils}/bin/dirname";
|
||||
therapist = "${dwarf-therapist}";
|
||||
};
|
||||
|
||||
paths = [ dwarf-therapist ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
|
||||
passthru = { inherit dwarf-fortress dwarf-therapist; };
|
||||
|
||||
buildCommand = ''
|
||||
mkdir -p $out/bin
|
||||
ln -s $out/bin/dwarftherapist $out/bin/DwarfTherapist
|
||||
substitute $wrapper $out/bin/dwarftherapist \
|
||||
--subst-var-by stdenv_shell ${stdenv.shell} \
|
||||
--subst-var-by install $out \
|
||||
--subst-var-by therapist ${dwarf-therapist} \
|
||||
--subst-var-by qt_plugin_path "${pkgs.qt5.qtbase}/lib/qt-${pkgs.qt5.qtbase.qtCompatVersion}/plugins/platforms"
|
||||
|
||||
chmod 755 $out/bin/dwarftherapist
|
||||
install -Dm755 $wrapper $out/bin/dwarftherapist
|
||||
ln -s $out/bin/dwarftherapist $out/bin/DwarfTherapist
|
||||
|
||||
substituteInPlace $out/bin/dwarftherapist \
|
||||
--subst-var-by install $out
|
||||
wrapQtApp $out/bin/dwarftherapist
|
||||
|
||||
# Fix up memory layouts
|
||||
rm -rf $out/share/dwarftherapist/memory_layouts/linux
|
||||
|
@ -1,10 +1,16 @@
|
||||
{ stdenv, lib, fetchurl
|
||||
, SDL, dwarf-fortress-unfuck
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, SDL
|
||||
, dwarf-fortress-unfuck
|
||||
|
||||
# Our own "unfuck" libs for macOS
|
||||
, ncurses, fmodex, gcc
|
||||
# Our own "unfuck" libs for macOS
|
||||
, ncurses
|
||||
, fmodex
|
||||
, gcc
|
||||
|
||||
, dfVersion, df-hashes
|
||||
, dfVersion
|
||||
, df-hashes
|
||||
}:
|
||||
|
||||
with lib;
|
||||
@ -30,15 +36,18 @@ let
|
||||
baseVersion = elemAt dfVersionTriple 1;
|
||||
patchVersion = elemAt dfVersionTriple 2;
|
||||
|
||||
game = if hasAttr dfVersion df-hashes
|
||||
then getAttr dfVersion df-hashes
|
||||
else throw "Unknown Dwarf Fortress version: ${dfVersion}";
|
||||
dfPlatform = if hasAttr stdenv.hostPlatform.system platforms
|
||||
then getAttr stdenv.hostPlatform.system platforms
|
||||
else throw "Unsupported system: ${stdenv.hostPlatform.system}";
|
||||
sha256 = if hasAttr dfPlatform game
|
||||
then getAttr dfPlatform game
|
||||
else throw "Unsupported dfPlatform: ${dfPlatform}";
|
||||
game =
|
||||
if hasAttr dfVersion df-hashes
|
||||
then getAttr dfVersion df-hashes
|
||||
else throw "Unknown Dwarf Fortress version: ${dfVersion}";
|
||||
dfPlatform =
|
||||
if hasAttr stdenv.hostPlatform.system platforms
|
||||
then getAttr stdenv.hostPlatform.system platforms
|
||||
else throw "Unsupported system: ${stdenv.hostPlatform.system}";
|
||||
sha256 =
|
||||
if hasAttr dfPlatform game
|
||||
then getAttr dfPlatform game
|
||||
else throw "Unsupported dfPlatform: ${dfPlatform}";
|
||||
|
||||
in
|
||||
|
||||
|
@ -1,5 +1,10 @@
|
||||
{ stdenvNoCC, lib, buildEnv
|
||||
, df-games, themes, latestVersion, versionToName
|
||||
{ stdenvNoCC
|
||||
, lib
|
||||
, buildEnv
|
||||
, df-games
|
||||
, themes
|
||||
, latestVersion
|
||||
, versionToName
|
||||
, dfVersion ? latestVersion
|
||||
# This package should, at any given time, provide an opinionated "optimal"
|
||||
# DF experience. It's the equivalent of the Lazy Newbie Pack, that is, and
|
||||
@ -9,9 +14,10 @@
|
||||
, enableSoundSense ? true
|
||||
, enableStoneSense ? true
|
||||
, enableDwarfTherapist ? true
|
||||
, enableLegendsBrowser ? true, legends-browser
|
||||
, enableLegendsBrowser ? true
|
||||
, legends-browser
|
||||
, theme ? themes.phoebus
|
||||
# General config options:
|
||||
# General config options:
|
||||
, enableIntro ? true
|
||||
, enableTruetype ? true
|
||||
, enableFPS ? false
|
||||
@ -23,9 +29,10 @@ with lib;
|
||||
|
||||
let
|
||||
dfGame = versionToName dfVersion;
|
||||
dwarf-fortress = if hasAttr dfGame df-games
|
||||
then getAttr dfGame df-games
|
||||
else throw "Unknown Dwarf Fortress version: ${dfVersion}";
|
||||
dwarf-fortress =
|
||||
if hasAttr dfGame df-games
|
||||
then getAttr dfGame df-games
|
||||
else throw "Unknown Dwarf Fortress version: ${dfVersion}";
|
||||
dwarf-therapist = dwarf-fortress.dwarf-therapist;
|
||||
in
|
||||
buildEnv {
|
||||
@ -33,10 +40,11 @@ buildEnv {
|
||||
paths = [
|
||||
(dwarf-fortress.override {
|
||||
inherit enableDFHack enableTWBT enableSoundSense enableStoneSense theme
|
||||
enableIntro enableTruetype enableFPS enableTextMode enableSound;
|
||||
})]
|
||||
++ lib.optional enableDwarfTherapist dwarf-therapist
|
||||
++ lib.optional enableLegendsBrowser legends-browser;
|
||||
enableIntro enableTruetype enableFPS enableTextMode enableSound;
|
||||
})
|
||||
]
|
||||
++ lib.optional enableDwarfTherapist dwarf-therapist
|
||||
++ lib.optional enableLegendsBrowser legends-browser;
|
||||
|
||||
meta = with lib; {
|
||||
description = "An opinionated wrapper for Dwarf Fortress";
|
||||
|
@ -1,4 +1,6 @@
|
||||
{ stdenv, fetchzip, dos2unix
|
||||
{ stdenv
|
||||
, fetchzip
|
||||
, dos2unix
|
||||
, soundPack ? stdenv.mkDerivation {
|
||||
name = "soundsense-soundpack";
|
||||
src = fetchzip {
|
||||
@ -8,7 +10,8 @@
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
'';
|
||||
}}:
|
||||
}
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2016-1_196";
|
||||
|
@ -1,19 +1,21 @@
|
||||
{lib, fetchFromGitHub, ...}:
|
||||
{ lib, fetchFromGitHub, ... }:
|
||||
|
||||
with builtins;
|
||||
|
||||
listToAttrs (map (v: {
|
||||
inherit (v) name;
|
||||
value = fetchFromGitHub {
|
||||
name = "${v.name}-${v.version}";
|
||||
owner = "DFgraphics";
|
||||
repo = v.name;
|
||||
rev = v.version;
|
||||
sha256 = v.sha256;
|
||||
meta = with lib; {
|
||||
platforms = platforms.all;
|
||||
maintainers = [ maintainers.matthewbauer maintainers.shazow ];
|
||||
license = licenses.free;
|
||||
listToAttrs (map
|
||||
(v: {
|
||||
inherit (v) name;
|
||||
value = fetchFromGitHub {
|
||||
name = "${v.name}-${v.version}";
|
||||
owner = "DFgraphics";
|
||||
repo = v.name;
|
||||
rev = v.version;
|
||||
sha256 = v.sha256;
|
||||
meta = with lib; {
|
||||
platforms = platforms.all;
|
||||
maintainers = [ maintainers.matthewbauer maintainers.shazow ];
|
||||
license = licenses.free;
|
||||
};
|
||||
};
|
||||
};
|
||||
}) (fromJSON (readFile ./themes.json)))
|
||||
})
|
||||
(fromJSON (readFile ./themes.json)))
|
||||
|
@ -1,4 +1,7 @@
|
||||
{ stdenvNoCC, lib, fetchurl, unzip
|
||||
{ stdenvNoCC
|
||||
, lib
|
||||
, fetchurl
|
||||
, unzip
|
||||
, dfVersion
|
||||
}:
|
||||
|
||||
@ -49,9 +52,10 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
release = if hasAttr dfVersion twbt-releases
|
||||
then getAttr dfVersion twbt-releases
|
||||
else throw "[TWBT] Unsupported Dwarf Fortress version: ${dfVersion}";
|
||||
release =
|
||||
if hasAttr dfVersion twbt-releases
|
||||
then getAttr dfVersion twbt-releases
|
||||
else throw "[TWBT] Unsupported Dwarf Fortress version: ${dfVersion}";
|
||||
in
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
|
@ -1,7 +1,21 @@
|
||||
{ stdenv, lib, fetchFromGitHub, cmake
|
||||
, libGL, libSM, SDL, SDL_image, SDL_ttf, glew, openalSoft
|
||||
, ncurses, glib, gtk2, libsndfile, zlib
|
||||
, dfVersion, pkg-config
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, libGL
|
||||
, libSM
|
||||
, SDL
|
||||
, SDL_image
|
||||
, SDL_ttf
|
||||
, glew
|
||||
, openalSoft
|
||||
, ncurses
|
||||
, glib
|
||||
, gtk2
|
||||
, libsndfile
|
||||
, zlib
|
||||
, dfVersion
|
||||
, pkg-config
|
||||
}:
|
||||
|
||||
with lib;
|
||||
@ -46,9 +60,10 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
release = if hasAttr dfVersion unfuck-releases
|
||||
then getAttr dfVersion unfuck-releases
|
||||
else throw "[unfuck] Unknown Dwarf Fortress version: ${dfVersion}";
|
||||
release =
|
||||
if hasAttr dfVersion unfuck-releases
|
||||
then getAttr dfVersion unfuck-releases
|
||||
else throw "[unfuck] Unknown Dwarf Fortress version: ${dfVersion}";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
@ -68,8 +83,17 @@ stdenv.mkDerivation {
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
buildInputs = [
|
||||
libSM SDL SDL_image SDL_ttf glew openalSoft
|
||||
ncurses gtk2 libsndfile zlib libGL
|
||||
libSM
|
||||
SDL
|
||||
SDL_image
|
||||
SDL_ttf
|
||||
glew
|
||||
openalSoft
|
||||
ncurses
|
||||
gtk2
|
||||
libsndfile
|
||||
zlib
|
||||
libGL
|
||||
];
|
||||
|
||||
# Don't strip unused symbols; dfhack hooks into some of them.
|
||||
|
@ -1,13 +1,22 @@
|
||||
{ stdenv, lib, buildEnv, substituteAll, runCommand
|
||||
{ stdenv
|
||||
, lib
|
||||
, buildEnv
|
||||
, substituteAll
|
||||
, runCommand
|
||||
, coreutils
|
||||
, dwarf-fortress
|
||||
, dwarf-therapist
|
||||
, enableDFHack ? false, dfhack
|
||||
, enableSoundSense ? false, soundSense, jdk
|
||||
, enableDFHack ? false
|
||||
, dfhack
|
||||
, enableSoundSense ? false
|
||||
, soundSense
|
||||
, jdk
|
||||
, enableStoneSense ? false
|
||||
, enableTWBT ? false, twbt
|
||||
, themes ? {}
|
||||
, enableTWBT ? false
|
||||
, twbt
|
||||
, themes ? { }
|
||||
, theme ? null
|
||||
# General config options:
|
||||
# General config options:
|
||||
, enableIntro ? true
|
||||
, enableTruetype ? true
|
||||
, enableFPS ? false
|
||||
@ -31,11 +40,11 @@ let
|
||||
# These are in inverse order for first packages to override the next ones.
|
||||
themePkg = lib.optional (theme != null) ptheme;
|
||||
pkgs = lib.optional enableDFHack dfhack_
|
||||
++ lib.optional enableSoundSense soundSense
|
||||
++ lib.optional enableTWBT twbt.art
|
||||
++ [ dwarf-fortress ];
|
||||
++ lib.optional enableSoundSense soundSense
|
||||
++ lib.optional enableTWBT twbt.art
|
||||
++ [ dwarf-fortress ];
|
||||
|
||||
fixup = lib.singleton (runCommand "fixup" {} (''
|
||||
fixup = lib.singleton (runCommand "fixup" { } (''
|
||||
mkdir -p $out/data/init
|
||||
'' + (if (theme != null) then ''
|
||||
cp ${lib.head themePkg}/data/init/init.txt $out/data/init/init.txt
|
||||
@ -61,7 +70,7 @@ let
|
||||
substituteInPlace $out/data/init/init.txt \
|
||||
--replace '[PRINT_MODE:2D]' '[PRINT_MODE:TWBT]'
|
||||
'' +
|
||||
lib.optionalString enableTextMode ''
|
||||
lib.optionalString enableTextMode ''
|
||||
substituteInPlace $out/data/init/init.txt \
|
||||
--replace '[PRINT_MODE:2D]' '[PRINT_MODE:TEXT]'
|
||||
'' + ''
|
||||
@ -89,8 +98,15 @@ stdenv.mkDerivation {
|
||||
name = "dwarf-fortress-init";
|
||||
src = ./dwarf-fortress-init.in;
|
||||
inherit env;
|
||||
exe = if stdenv.isLinux then "libs/Dwarf_Fortress"
|
||||
else "dwarfort.exe";
|
||||
exe =
|
||||
if stdenv.isLinux then "libs/Dwarf_Fortress"
|
||||
else "dwarfort.exe";
|
||||
stdenv_shell = "${stdenv.shell}";
|
||||
cp = "${coreutils}/bin/cp";
|
||||
rm = "${coreutils}/bin/rm";
|
||||
ln = "${coreutils}/bin/ln";
|
||||
cat = "${coreutils}/bin/cat";
|
||||
mkdir = "${coreutils}/bin/mkdir";
|
||||
};
|
||||
|
||||
runDF = ./dwarf-fortress.in;
|
||||
|
@ -1,3 +1,4 @@
|
||||
#!@stdenv_shell@ -e
|
||||
shopt -s extglob
|
||||
|
||||
[ -z "$DF_DIR" ] && export DF_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/df_linux"
|
||||
@ -7,25 +8,25 @@ exe="$env_dir/@exe@"
|
||||
update_path() {
|
||||
local path="$1"
|
||||
|
||||
mkdir -p "$DF_DIR/$(dirname "$path")"
|
||||
@mkdir@ -p "$DF_DIR/$(dirname "$path")"
|
||||
# If user has replaced these data directories, let them stay.
|
||||
if [ ! -e "$DF_DIR/$path" ] || [ -L "$DF_DIR/$path" ]; then
|
||||
rm -f "$DF_DIR/$path"
|
||||
ln -s "$env_dir/$path" "$DF_DIR/$path"
|
||||
@rm@ -f "$DF_DIR/$path"
|
||||
@ln@ -s "$env_dir/$path" "$DF_DIR/$path"
|
||||
fi
|
||||
}
|
||||
|
||||
forcecopy_path() {
|
||||
local path="$1"
|
||||
|
||||
mkdir -p "$DF_DIR/$(dirname "$path")"
|
||||
rm -rf "$DF_DIR/$path"
|
||||
cp -rL --no-preserve=all "$env_dir/$path" "$DF_DIR/$path"
|
||||
@mkdir@ -p "$DF_DIR/$(dirname "$path")"
|
||||
@rm@ -rf "$DF_DIR/$path"
|
||||
@cp@ -rL --no-preserve=all "$env_dir/$path" "$DF_DIR/$path"
|
||||
}
|
||||
|
||||
mkdir -p "$DF_DIR"
|
||||
@mkdir@ -p "$DF_DIR"
|
||||
|
||||
cat <<EOF >&2
|
||||
@cat@ <<EOF >&2
|
||||
Using $DF_DIR as Dwarf Fortress overlay directory.
|
||||
If you do any changes in it, don't forget to clean it when updating the game version!
|
||||
We try to detect changes based on data directories being symbolic links -- keep this in mind.
|
||||
|
Loading…
Reference in New Issue
Block a user