diff options
author | Artturin <Artturin@artturin.com> | 2021-06-29 05:42:37 +0300 |
---|---|---|
committer | Jonathan Ringer <jonringer@users.noreply.github.com> | 2021-06-30 00:10:57 -0700 |
commit | cd3ed54f6ea1c13d45c6772b4752ae6d2ff35997 (patch) | |
tree | 45682c2ed94ab6955665bcceefd27c66065c0681 /pkgs/games/dwarf-fortress | |
parent | 4e75706a468a795c2bc67102211b43d41a449df7 (diff) |
dwarf-fortress: refactor
Diffstat (limited to 'pkgs/games/dwarf-fortress')
-rw-r--r-- | pkgs/games/dwarf-fortress/default.nix | 92 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/default.nix | 32 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dwarf-therapist/default.nix | 20 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in | 11 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix | 31 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/game.nix | 41 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/lazy-pack.nix | 30 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/soundsense.nix | 7 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/themes/default.nix | 32 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/twbt/default.nix | 12 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/unfuck.nix | 42 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/default.nix | 42 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in | 17 |
13 files changed, 255 insertions, 154 deletions
diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix index 2a4df9bf7cf7..3e96351acbbb 100644 --- a/pkgs/games/dwarf-fortress/default.nix +++ b/pkgs/games/dwarf-fortress/default.nix @@ -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 diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix index 2e27d9493bd1..4bfb69355a7e 100644 --- a/pkgs/games/dwarf-fortress/dfhack/default.nix +++ b/pkgs/games/dwarf-fortress/dfhack/default.nix @@ -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. diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix index 243db1e1c398..ec765e71158e 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix @@ -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; diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in b/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in index 77936c430e2b..5ae0a35b5e20 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in @@ -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" "$@" diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix index 7db79012ec65..93f51df1819d 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix @@ -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 + + install -Dm755 $wrapper $out/bin/dwarftherapist 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 + 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 diff --git a/pkgs/games/dwarf-fortress/game.nix b/pkgs/games/dwarf-fortress/game.nix index 9200d01aa985..d73b111919e1 100644 --- a/pkgs/games/dwarf-fortress/game.nix +++ b/pkgs/games/dwarf-fortress/game.nix @@ -1,10 +1,16 @@ -{ stdenv, lib, fetchurl -, SDL, dwarf-fortress-unfuck - -# Our own "unfuck" libs for macOS -, ncurses, fmodex, gcc - -, dfVersion, df-hashes +{ stdenv +, lib +, fetchurl +, SDL +, dwarf-fortress-unfuck + + # Our own "unfuck" libs for macOS +, ncurses +, fmodex +, gcc + +, 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 diff --git a/pkgs/games/dwarf-fortress/lazy-pack.nix b/pkgs/games/dwarf-fortress/lazy-pack.nix index 41620dd66f1c..b34dbd3c74b8 100644 --- a/pkgs/games/dwarf-fortress/lazy-pack.nix +++ b/pkgs/games/dwarf-fortress/lazy-pack.nix @@ -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"; diff --git a/pkgs/games/dwarf-fortress/soundsense.nix b/pkgs/games/dwarf-fortress/soundsense.nix index a59c87306903..5202c13b5b8a 100644 --- a/pkgs/games/dwarf-fortress/soundsense.nix +++ b/pkgs/games/dwarf-fortress/soundsense.nix @@ -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"; diff --git a/pkgs/games/dwarf-fortress/themes/default.nix b/pkgs/games/dwarf-fortress/themes/default.nix index 6241df7590d9..c6987a1d16bd 100644 --- a/pkgs/games/dwarf-fortress/themes/default.nix +++ b/pkgs/games/dwarf-fortress/themes/default.nix @@ -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))) diff --git a/pkgs/games/dwarf-fortress/twbt/default.nix b/pkgs/games/dwarf-fortress/twbt/default.nix index bee2c28e5308..e6c82e32f0db 100644 --- a/pkgs/games/dwarf-fortress/twbt/default.nix +++ b/pkgs/games/dwarf-fortress/twbt/default.nix @@ -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 { diff --git a/pkgs/games/dwarf-fortress/unfuck.nix b/pkgs/games/dwarf-fortress/unfuck.nix index 0fb08aa7e87f..7e96b284044d 100644 --- a/pkgs/games/dwarf-fortress/unfuck.nix +++ b/pkgs/games/dwarf-fortress/unfuck.nix @@ -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. diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix index 73288ab659f3..ce989b98ffbd 100644 --- a/pkgs/games/dwarf-fortress/wrapper/default.nix +++ b/pkgs/games/dwarf-fortress/wrapper/default.nix @@ -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; diff --git a/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in b/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in index b041067d89e4..27639e57f212 100644 --- a/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.in +++ b/pkgs/games/dwarf-fortress/wrapper/dwarf-fortress-init.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. |