From 4ada74e293212434114ac87a679c1432650f4b40 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Thu, 12 Jul 2018 08:42:52 +0000 Subject: [PATCH 1/8] dwarf-fortress: Support multiple unfuck/dfhack/TWBT versions --- pkgs/games/dwarf-fortress/default.nix | 52 +++++++++++++------ pkgs/games/dwarf-fortress/dfhack/default.nix | 21 ++++++-- pkgs/games/dwarf-fortress/dfhack/dfhack.json | 38 ++++++++++++++ .../dwarf-therapist/dwarf-therapist.in | 26 ++++++++++ .../dwarf-therapist/wrapper.nix | 19 ++++--- pkgs/games/dwarf-fortress/game.nix | 3 -- pkgs/games/dwarf-fortress/lazy-pack.nix | 2 +- pkgs/games/dwarf-fortress/twbt/default.nix | 25 ++++++--- pkgs/games/dwarf-fortress/twbt/twbt.json | 32 ++++++++++++ pkgs/games/dwarf-fortress/unfuck.json | 26 ++++++++++ pkgs/games/dwarf-fortress/unfuck.nix | 32 ++++++------ pkgs/games/dwarf-fortress/wrapper/default.nix | 46 ++++++++-------- 12 files changed, 244 insertions(+), 78 deletions(-) create mode 100644 pkgs/games/dwarf-fortress/dfhack/dfhack.json create mode 100644 pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in create mode 100644 pkgs/games/dwarf-fortress/twbt/twbt.json create mode 100644 pkgs/games/dwarf-fortress/unfuck.json diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix index aa4ff210812b..87bcc44b8156 100644 --- a/pkgs/games/dwarf-fortress/default.nix +++ b/pkgs/games/dwarf-fortress/default.nix @@ -5,7 +5,8 @@ # This directory menaces with spikes of Nix code. It is terrifying. # # If this is your first time here, you should probably install the dwarf-fortress-full package, -# for instance with `environment.systempackages = [ pkgs.dwarf-fortress.dwarf-fortress-full ];`. +# for instance with: +# `environment.systemPackages = [ pkgs.dwarf-fortress-packages.dwarf-fortress-full ];` # # You can adjust its settings by using override, or compile your own package by # using the other packages here. Take a look at lazy-pack.nix to get an idea of @@ -24,11 +25,36 @@ let callPackage = pkgs.newScope self; df-games = lib.listToAttrs (map (dfVersion: { - name = "dwarf-fortress_${lib.replaceStrings ["."] ["_"] dfVersion}"; - value = callPackage ./wrapper { - inherit (self) themes; - dwarf-fortress = callPackage ./game.nix { inherit dfVersion; }; - }; + name = "dwarf-fortress_${lib.replaceStrings ["."] ["_"] 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 (pkgs.perlPackages) XMLLibXML XMLLibXSLT; + inherit dfVersion; + inherit twbt; + stdenv = gccStdenv; + }; + in + callPackage ./wrapper { + inherit (self) themes; + + dwarf-fortress = dwarf-fortress; + dwarf-fortress-unfuck = dwarf-fortress-unfuck; + twbt = twbt; + dfhack = dfhack; + }; }) (lib.attrNames self.df-hashes)); self = rec { @@ -37,17 +63,8 @@ let dwarf-fortress-full = callPackage ./lazy-pack.nix { }; - dfhack = callPackage ./dfhack { - inherit (pkgs.perlPackages) XMLLibXML XMLLibXSLT; - stdenv = gccStdenv; - }; - soundSense = callPackage ./soundsense.nix { }; - # unfuck is linux-only right now, we will only use it there. - dwarf-fortress-unfuck = if stdenv.isLinux then callPackage ./unfuck.nix { } - else null; - dwarf-therapist = callPackage ./dwarf-therapist/wrapper.nix { inherit (dwarf-fortress) dwarf-fortress; dwarf-therapist = pkgs.qt5.callPackage ./dwarf-therapist { @@ -59,8 +76,9 @@ let legends-browser = callPackage ./legends-browser {}; - twbt = callPackage ./twbt {}; - themes = recurseIntoAttrs (callPackage ./themes { }); + themes = recurseIntoAttrs (callPackage ./themes { + stdenv = stdenvNoCC; + }); # aliases phoebus-theme = themes.phoebus; diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix index 4a8c84cf92dc..1c88cab02193 100644 --- a/pkgs/games/dwarf-fortress/dfhack/default.nix +++ b/pkgs/games/dwarf-fortress/dfhack/default.nix @@ -3,14 +3,25 @@ , enableStoneSense ? false, allegro5, libGLU_combined , enableTWBT ? true, twbt , SDL +, dfVersion }: +with lib; + let - dfVersion = "0.44.12"; - version = "${dfVersion}-r1"; + dfhack-releases = builtins.fromJSON (builtins.readFile ./dfhack.json); + + release = if hasAttr dfVersion dfhack-releases + then getAttr dfVersion dfhack-releases + else throw "[DFHack] Unsupported Dwarf Fortress version: ${dfVersion}"; + + version = release.dfHackRelease; + + warning = if release.prerelease then builtins.trace "[DFHack] Version ${version} is a prerelease. Careful!" + else null; # revision of library/xml submodule - xmlRev = "23500e4e9bd1885365d0a2ef1746c321c1dd5094"; + xmlRev = release.xmlRev; arch = if stdenv.hostPlatform.system == "x86_64-linux" then "64" @@ -41,8 +52,8 @@ let src = fetchFromGitHub { owner = "DFHack"; repo = "dfhack"; - sha256 = "0j03lq6j6w378z6cvm7jspxc7hhrqm8jaszlq0mzfvap0k13fgyy"; - rev = version; + rev = release.dfHackRelease; + sha256 = release.sha256; fetchSubmodules = true; }; diff --git a/pkgs/games/dwarf-fortress/dfhack/dfhack.json b/pkgs/games/dwarf-fortress/dfhack/dfhack.json new file mode 100644 index 000000000000..d1907fb38afb --- /dev/null +++ b/pkgs/games/dwarf-fortress/dfhack/dfhack.json @@ -0,0 +1,38 @@ +{ + "0.43.05": { + "dfHackRelease": "0.43.05-r3.1", + "sha256": "1ds366i0qcfbn62w9qv98lsqcrm38npzgvcr35hf6ihqa6nc6xrl", + "xmlRev": "860a9041a75305609643d465123a4b598140dd7f", + "prerelease": false + }, + "0.44.05": { + "dfHackRelease": "0.44.05-r2", + "sha256": "1cwifdhi48a976xc472nf6q2k0ibwqffil5a4llcymcxdbgxdcc9", + "xmlRev": "2794f8a6d7405d4858bac486a0bb17b94740c142", + "prerelease": false + }, + "0.44.09": { + "dfHackRelease": "0.44.09-r1", + "sha256": "1nkfaa43pisbyik5inj5q2hja2vza5lwidg5z02jyh136jm64hwk", + "xmlRev": "3c0bf63674d5430deadaf7befaec42f0ec1e8bc5", + "prerelease": false + }, + "0.44.10": { + "dfHackRelease": "0.44.10-r2", + "sha256": "19bxsghxzw3bilhr8sm4axz7p7z8lrvbdsd1vdjf5zbg04rs866i", + "xmlRev": "321bd48b10c4c3f694cc801a7dee6be392c09b7b", + "prerelease": false + }, + "0.44.11": { + "dfHackRelease": "0.44.11-beta2.1", + "sha256": "1jgwcqg9m1ybv3szgnklp6zfpiw5mswla464dlj2gfi5v82zqbv2", + "xmlRev": "f27ebae6aa8fb12c46217adec5a812cd49a905c8", + "prerelease": true + }, + "0.44.12": { + "dfHackRelease": "0.44.12-r1", + "sha256": "0j03lq6j6w378z6cvm7jspxc7hhrqm8jaszlq0mzfvap0k13fgyy", + "xmlRev": "23500e4e9bd1885365d0a2ef1746c321c1dd5094", + "prerelease": false + } +} diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in b/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in new file mode 100644 index 000000000000..77936c430e2b --- /dev/null +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/dwarf-therapist.in @@ -0,0 +1,26 @@ +#!@stdenv_shell@ -e + +[ -z "$DT_DIR" ] && DT_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/dwarftherapist" + +install_dir="@install@" +therapist_dir="@therapist@" + +cat <&2 +Using $DT_DIR as Dwarf Therapist overlay directory. +EOF + +update_path() { + local path="$1" + + 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" + fi +} + +cd "$install_dir/share/dwarftherapist" +update_path memory_layouts + +QT_QPA_PLATFORM_PLUGIN_PATH="@qt_plugin_path@" \ + 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 322a21ec3ad9..f86ef4bea7ab 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix @@ -1,4 +1,4 @@ -{ stdenv, symlinkJoin, dwarf-therapist, dwarf-fortress, makeWrapper }: +{ pkgs, stdenv, symlinkJoin, lib, dwarf-therapist, dwarf-fortress, makeWrapper }: let platformSlug = if stdenv.targetPlatform.is32bit then @@ -7,6 +7,8 @@ let in symlinkJoin { name = "dwarf-therapist-${dwarf-therapist.version}"; + + wrapper = ./dwarf-therapist.in; paths = [ dwarf-therapist ]; @@ -14,13 +16,18 @@ in symlinkJoin { passthru = { inherit dwarf-fortress dwarf-therapist; }; - postBuild = '' - # DwarfTherapist assumes it's run in $out/share/dwarftherapist and - # therefore uses many relative paths. - wrapProgram $out/bin/dwarftherapist \ - --run "cd $out/share/dwarftherapist" + 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 + + # Fix up memory layouts rm -rf $out/share/dwarftherapist/memory_layouts/linux mkdir -p $out/share/dwarftherapist/memory_layouts/linux origmd5=$(cat "${dwarf-fortress}/hash.md5.orig" | cut -c1-8) diff --git a/pkgs/games/dwarf-fortress/game.nix b/pkgs/games/dwarf-fortress/game.nix index 2547bb83f3f5..b5c80a0a56dc 100644 --- a/pkgs/games/dwarf-fortress/game.nix +++ b/pkgs/games/dwarf-fortress/game.nix @@ -42,9 +42,6 @@ let in -assert dwarf-fortress-unfuck != null -> - dwarf-fortress-unfuck.dfVersion == dfVersion; - stdenv.mkDerivation { name = "dwarf-fortress-${dfVersion}"; diff --git a/pkgs/games/dwarf-fortress/lazy-pack.nix b/pkgs/games/dwarf-fortress/lazy-pack.nix index 3e0d3dcc6d73..ca7ae4024289 100644 --- a/pkgs/games/dwarf-fortress/lazy-pack.nix +++ b/pkgs/games/dwarf-fortress/lazy-pack.nix @@ -6,7 +6,7 @@ , enableDFHack ? stdenvNoCC.isLinux , enableTWBT ? enableDFHack , enableSoundSense ? true -, enableStoneSense ? false # StoneSense is currently broken. +, enableStoneSense ? true , enableDwarfTherapist ? true, dwarf-therapist , enableLegendsBrowser ? true, legends-browser , theme ? themes.phoebus diff --git a/pkgs/games/dwarf-fortress/twbt/default.nix b/pkgs/games/dwarf-fortress/twbt/default.nix index d90812f5d05e..1bdbddb56de4 100644 --- a/pkgs/games/dwarf-fortress/twbt/default.nix +++ b/pkgs/games/dwarf-fortress/twbt/default.nix @@ -1,14 +1,28 @@ -{ stdenvNoCC, fetchurl, unzip }: +{ stdenvNoCC, lib, fetchurl, unzip +, dfVersion +}: +with lib; + +let + twbt-releases = builtins.fromJSON (builtins.readFile ./twbt.json); + + release = if hasAttr dfVersion twbt-releases + then getAttr dfVersion twbt-releases + else throw "[TWBT] Unsupported Dwarf Fortress version: ${dfVersion}"; + + warning = if release.prerelease then builtins.trace "[TWBT] Version ${version} is a prerelease. Careful!" + else null; + +in stdenvNoCC.mkDerivation rec { name = "twbt-${version}"; - version = "6.54"; - dfVersion = "0.44.12"; + version = release.twbtRelease; src = fetchurl { url = "https://github.com/mifki/df-twbt/releases/download/v${version}/twbt-${version}-linux.zip"; - sha256 = "10gfd6vv0vk4v1r5hjbz7vf1zqys06dsad695gysc7fbcik2dakh"; + sha256 = release.sha256; }; sourceRoot = "."; @@ -24,10 +38,9 @@ stdenvNoCC.mkDerivation rec { cp -a *.png $art/data/art/ ''; - meta = with stdenvNoCC.lib; { description = "A plugin for Dwarf Fortress / DFHack that improves various aspects the game interface."; - maintainers = with maintainers; [ Baughn ]; + maintainers = with maintainers; [ Baughn numinit ]; license = licenses.mit; platforms = platforms.linux; homepage = https://github.com/mifki/df-twbt; diff --git a/pkgs/games/dwarf-fortress/twbt/twbt.json b/pkgs/games/dwarf-fortress/twbt/twbt.json new file mode 100644 index 000000000000..b455ff017fcd --- /dev/null +++ b/pkgs/games/dwarf-fortress/twbt/twbt.json @@ -0,0 +1,32 @@ +{ + "0.43.05": { + "twbtRelease": "6.22", + "sha256": "0di5d38f6jj9smsz0wjcs1zav4zba6hrk8cbn59kwpb1wamsh5c7", + "prerelease": false + }, + "0.44.05": { + "twbtRelease": "6.35", + "sha256": "0qjkgl7dsqzsd7pdq8a5bihhi1wplfkv1id7sj6dp3swjpsfxp8g", + "prerelease": false + }, + "0.44.09": { + "twbtRelease": "6.41", + "sha256": "0nsq15z05pbhqjvw2xqs1a9b1n2ma0aalhc3vh3mi4cd4k7lxh44", + "prerelease": false + }, + "0.44.10": { + "twbtRelease": "6.49", + "sha256": "1qjkc7k33qhxj2g18njzasccjqsis5y8zrw5vl90h4rs3i8ld9xz", + "prerelease": false + }, + "0.44.11": { + "twbtRelease": "6.51", + "sha256": "1yclqmarjd97ch054h425a12r8a5ailmflsd7b39cg4qhdr1nii5", + "prerelease": true + }, + "0.44.12": { + "twbtRelease": "6.53", + "sha256": "05qc9x4zm0pamwg7j12j0084dq2sj7825fhd3l0wxfinphzk3was", + "prerelease": false + } +} diff --git a/pkgs/games/dwarf-fortress/unfuck.json b/pkgs/games/dwarf-fortress/unfuck.json new file mode 100644 index 000000000000..f7a4974c575c --- /dev/null +++ b/pkgs/games/dwarf-fortress/unfuck.json @@ -0,0 +1,26 @@ +{ + "0.43.05": { + "unfuckRelease": "0.43.05", + "sha256": "173dyrbxlzqvjf1j3n7vpns4gfjkpyvk9z16430xnmd5m6nda8p2" + }, + "0.44.05": { + "unfuckRelease": "0.44.05", + "sha256": "00yj4l4gazxg4i6fj9rwri6vm17i6bviy2mpkx0z5c0mvsr7s14b" + }, + "0.44.09": { + "unfuckRelease": "0.44.09", + "sha256": "138p0v8z2x47f0fk9k6g75ikw5wb3vxldwv5ggbkf4hhvlw6lvzm" + }, + "0.44.10": { + "unfuckRelease": "0.44.10", + "sha256": "0vb19qx2ibc79j4bgbk9lskb883qfb0815zw1dfz9k7rqwal8mzj" + }, + "0.44.11": { + "unfuckRelease": "0.44.11.1", + "sha256": "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz" + }, + "0.44.12": { + "unfuckRelease": "0.44.12", + "sha256": "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz" + } +} diff --git a/pkgs/games/dwarf-fortress/unfuck.nix b/pkgs/games/dwarf-fortress/unfuck.nix index 0c5a81a52f0f..732003118713 100644 --- a/pkgs/games/dwarf-fortress/unfuck.nix +++ b/pkgs/games/dwarf-fortress/unfuck.nix @@ -1,18 +1,27 @@ -{ stdenv, fetchFromGitHub, cmake +{ stdenv, lib, fetchFromGitHub, cmake , libGL, libSM, SDL, SDL_image, SDL_ttf, glew, openalSoft , ncurses, glib, gtk2, libsndfile, zlib +, dfVersion }: -let dfVersion = "0.44.12"; in +with lib; + +let + unfuck-releases = builtins.fromJSON (builtins.readFile ./unfuck.json); + + release = if hasAttr dfVersion unfuck-releases + then getAttr dfVersion unfuck-releases + else throw "[unfuck] Unknown Dwarf Fortress version: ${dfVersion}"; +in stdenv.mkDerivation { - name = "dwarf_fortress_unfuck-${dfVersion}"; + name = "dwarf_fortress_unfuck-${release.unfuckRelease}"; src = fetchFromGitHub { owner = "svenstaro"; repo = "dwarf_fortress_unfuck"; - rev = dfVersion; - sha256 = "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz"; + rev = release.unfuckRelease; + sha256 = release.sha256; }; cmakeFlags = [ @@ -20,23 +29,12 @@ stdenv.mkDerivation { "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" ]; - makeFlags = [ - ''CFLAGS="-fkeep-inline-functions"'' - ''CXXFLAGS="-fkeep-inline-functions"'' - ]; - nativeBuildInputs = [ cmake ]; buildInputs = [ libSM SDL SDL_image SDL_ttf glew openalSoft ncurses gtk2 libsndfile zlib libGL ]; - postPatch = '' - substituteInPlace CMakeLists.txt --replace \ - 'set(CMAKE_BUILD_TYPE Release)' \ - 'set(CMAKE_BUILD_TYPE Debug)' - ''; - # Don't strip unused symbols; dfhack hooks into some of them. dontStrip = true; @@ -56,6 +54,6 @@ stdenv.mkDerivation { homepage = https://github.com/svenstaro/dwarf_fortress_unfuck; license = licenses.free; platforms = platforms.linux; - maintainers = with maintainers; [ abbradar ]; + maintainers = with maintainers; [ abbradar numinit ]; }; } diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix index 6efe004fa9e8..105143916d10 100644 --- a/pkgs/games/dwarf-fortress/wrapper/default.nix +++ b/pkgs/games/dwarf-fortress/wrapper/default.nix @@ -1,4 +1,5 @@ -{ stdenv, lib, buildEnv, dwarf-fortress, substituteAll +{ stdenv, lib, buildEnv, substituteAll +, dwarf-fortress, dwarf-fortress-unfuck , enableDFHack ? false, dfhack , enableSoundSense ? false, soundSense, jdk , enableStoneSense ? false @@ -37,34 +38,12 @@ let paths = themePkg ++ pkgs; pathsToLink = [ "/" "/hack" "/hack/scripts" ]; ignoreCollisions = true; - - postBuild = '' - # De-symlink init.txt - cp $out/data/init/init.txt init.txt - rm $out/data/init/init.txt - mv init.txt $out/data/init/init.txt - '' + lib.optionalString enableDFHack '' - rm $out/hack/symbols.xml - substitute ${dfhack_}/hack/symbols.xml $out/hack/symbols.xml \ - --replace $(cat ${dwarf-fortress}/hash.md5.orig) \ - $(cat ${dwarf-fortress}/hash.md5) - '' + lib.optionalString enableTWBT '' - substituteInPlace $out/data/init/init.txt \ - --replace '[PRINT_MODE:2D]' '[PRINT_MODE:TWBT]' - '' + '' - substituteInPlace $out/data/init/init.txt \ - --replace '[INTRO:YES]' '[INTRO:${unBool enableIntro}]' \ - --replace '[TRUETYPE:YES]' '[TRUETYPE:${unBool enableTruetype}]' \ - --replace '[FPS:NO]' '[FPS:${unBool enableFPS}]' - ''; }; in stdenv.mkDerivation rec { name = "dwarf-fortress-${dwarf-fortress.dfVersion}"; - compatible = lib.all (x: assert (x.dfVersion == dwarf-fortress.dfVersion); true) pkgs; - dfInit = substituteAll { name = "dwarf-fortress-init"; src = ./dwarf-fortress-init.in; @@ -99,5 +78,26 @@ stdenv.mkDerivation rec { chmod 755 $out/bin/soundsense ''; + postBuild = '' + # De-symlink init.txt + cp $out/data/init/init.txt init.txt + rm $out/data/init/init.txt + mv init.txt $out/data/init/init.txt + '' + lib.optionalString enableDFHack '' + rm $out/hack/symbols.xml + echo "[$out/hack/symbols.xml] $(cat ${dwarf-fortress}/hash.md5.orig) => $(cat ${dwarf-fortress}/hash.md5)" + substitute ${dfhack_}/hack/symbols.xml $out/hack/symbols.xml \ + --replace $(cat ${dwarf-fortress}/hash.md5.orig) \ + $(cat ${dwarf-fortress}/hash.md5) + '' + lib.optionalString enableTWBT '' + substituteInPlace $out/data/init/init.txt \ + --replace '[PRINT_MODE:2D]' '[PRINT_MODE:TWBT]' + '' + '' + substituteInPlace $out/data/init/init.txt \ + --replace '[INTRO:YES]' '[INTRO:${unBool enableIntro}]' \ + --replace '[TRUETYPE:YES]' '[TRUETYPE:${unBool enableTruetype}]' \ + --replace '[FPS:NO]' '[FPS:${unBool enableFPS}]' + ''; + preferLocalBuild = true; } From f14d3b4795c173f5ff353031b8d32afab7090ab9 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 15 Jul 2018 03:58:37 +0000 Subject: [PATCH 2/8] Fix dfhack's Dwarf Fortress MD5 in the correct environment --- .../dwarf-therapist/wrapper.nix | 18 ++++--- pkgs/games/dwarf-fortress/wrapper/default.nix | 54 +++++++++++-------- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix index f86ef4bea7ab..6e3a13692a72 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix @@ -30,11 +30,17 @@ in symlinkJoin { # Fix up memory layouts rm -rf $out/share/dwarftherapist/memory_layouts/linux mkdir -p $out/share/dwarftherapist/memory_layouts/linux - origmd5=$(cat "${dwarf-fortress}/hash.md5.orig" | cut -c1-8) - patchedmd5=$(cat "${dwarf-fortress}/hash.md5" | cut -c1-8) - substitute \ - ${dwarf-therapist}/share/dwarftherapist/memory_layouts/${inifile} \ - $out/share/dwarftherapist/memory_layouts/${inifile} \ - --replace "$origmd5" "$patchedmd5" + orig_md5=$(cat "${dwarf-fortress}/hash.md5.orig" | cut -c1-8) + patched_md5=$(cat "${dwarf-fortress}/hash.md5" | cut -c1-8) + input_file="${dwarf-therapist}/share/dwarftherapist/memory_layouts/${inifile}" + output_file="$out/share/dwarftherapist/memory_layouts/${inifile}" + + echo "[Dwarf Therapist Wrapper] Fixing Dwarf Fortress MD5 prefix:" + echo " Input: $input_file" + echo " Search: $orig_md5" + echo " Output: $output_file" + echo " Replace: $patched_md5" + + substitute "$input_file" "$output_file" --replace "$orig_md5" "$patched_md5" ''; } diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix index 105143916d10..33523270b19d 100644 --- a/pkgs/games/dwarf-fortress/wrapper/default.nix +++ b/pkgs/games/dwarf-fortress/wrapper/default.nix @@ -37,6 +37,39 @@ let paths = themePkg ++ pkgs; pathsToLink = [ "/" "/hack" "/hack/scripts" ]; + + postBuild = '' + # De-symlink init.txt + cp $out/data/init/init.txt init.txt + rm -f $out/data/init/init.txt + mv init.txt $out/data/init/init.txt + '' + lib.optionalString enableDFHack '' + # De-symlink symbols.xml + rm $out/hack/symbols.xml + + # Patch the MD5 + orig_md5=$(cat "${dwarf-fortress}/hash.md5.orig") + patched_md5=$(cat "${dwarf-fortress}/hash.md5") + input_file="${dfhack_}/hack/symbols.xml" + output_file="$out/hack/symbols.xml" + + echo "[DFHack Wrapper] Fixing Dwarf Fortress MD5:" + echo " Input: $input_file" + echo " Search: $orig_md5" + echo " Output: $output_file" + echo " Replace: $patched_md5" + + substitute "$input_file" "$output_file" --replace "$orig_md5" "$patched_md5" + '' + lib.optionalString enableTWBT '' + substituteInPlace $out/data/init/init.txt \ + --replace '[PRINT_MODE:2D]' '[PRINT_MODE:TWBT]' + '' + '' + substituteInPlace $out/data/init/init.txt \ + --replace '[INTRO:YES]' '[INTRO:${unBool enableIntro}]' \ + --replace '[TRUETYPE:YES]' '[TRUETYPE:${unBool enableTruetype}]' \ + --replace '[FPS:NO]' '[FPS:${unBool enableFPS}]' + ''; + ignoreCollisions = true; }; in @@ -78,26 +111,5 @@ stdenv.mkDerivation rec { chmod 755 $out/bin/soundsense ''; - postBuild = '' - # De-symlink init.txt - cp $out/data/init/init.txt init.txt - rm $out/data/init/init.txt - mv init.txt $out/data/init/init.txt - '' + lib.optionalString enableDFHack '' - rm $out/hack/symbols.xml - echo "[$out/hack/symbols.xml] $(cat ${dwarf-fortress}/hash.md5.orig) => $(cat ${dwarf-fortress}/hash.md5)" - substitute ${dfhack_}/hack/symbols.xml $out/hack/symbols.xml \ - --replace $(cat ${dwarf-fortress}/hash.md5.orig) \ - $(cat ${dwarf-fortress}/hash.md5) - '' + lib.optionalString enableTWBT '' - substituteInPlace $out/data/init/init.txt \ - --replace '[PRINT_MODE:2D]' '[PRINT_MODE:TWBT]' - '' + '' - substituteInPlace $out/data/init/init.txt \ - --replace '[INTRO:YES]' '[INTRO:${unBool enableIntro}]' \ - --replace '[TRUETYPE:YES]' '[TRUETYPE:${unBool enableTruetype}]' \ - --replace '[FPS:NO]' '[FPS:${unBool enableFPS}]' - ''; - preferLocalBuild = true; } From 7a5521537a1715ac7f7f5e420cef865304383b82 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 15 Jul 2018 05:38:30 +0000 Subject: [PATCH 3/8] Let the user override dfVersion in dwarf-fortress-full --- pkgs/games/dwarf-fortress/default.nix | 47 +++++++++++++++++++------ pkgs/games/dwarf-fortress/lazy-pack.nix | 17 ++++++--- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix index 87bcc44b8156..1ee33fb27f36 100644 --- a/pkgs/games/dwarf-fortress/default.nix +++ b/pkgs/games/dwarf-fortress/default.nix @@ -6,26 +6,48 @@ # # If this is your first time here, you should probably install the dwarf-fortress-full package, # for instance with: -# `environment.systemPackages = [ pkgs.dwarf-fortress-packages.dwarf-fortress-full ];` +# +# environment.systemPackages = [ pkgs.dwarf-fortress-packages.dwarf-fortress-full ]; # # You can adjust its settings by using override, or compile your own package by -# using the other packages here. Take a look at lazy-pack.nix to get an idea of -# how. +# using the other packages here. +# +# For example, you can enable the FPS indicator, disable the intro, pick a +# theme other than phoebus (the default for dwarf-fortress-full), _and_ use +# an older version with something like: +# +# environment.systemPackages = [ +# (pkgs.dwarf-fortress-packages.dwarf-fortress-full.override { +# dfVersion = "0.44.11"; +# theme = "cla"; +# enableIntro = false; +# enableFPS = true; +# }) +# ] +# +# Take a look at lazy-pack.nix to see all the other options. # # You will find the configuration files in ~/.local/share/df_linux/data/init. If # you un-symlink them and edit, then the scripts will avoid overwriting your # changes on later launches, but consider extending the wrapper with your # desired options instead. -# -# Although both dfhack and dwarf therapist are included in the lazy pack, you -# can only use one at a time. DFHack does have therapist-like features, so this -# may or may not be a problem. + +with lib; let callPackage = pkgs.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 + # this. + latestVersion = "0.44.12"; + + # Converts a version to a package name. + versionToName = version: "dwarf-fortress_${lib.replaceStrings ["."] ["_"] version}"; + + # A map of names to each Dwarf Fortress package we know about. df-games = lib.listToAttrs (map (dfVersion: { - name = "dwarf-fortress_${lib.replaceStrings ["."] ["_"] dfVersion}"; + name = versionToName dfVersion; value = let # I can't believe this syntax works. Spikes of Nix code indeed... @@ -59,9 +81,14 @@ let self = rec { df-hashes = builtins.fromJSON (builtins.readFile ./game.json); - dwarf-fortress = df-games.dwarf-fortress_0_44_12; + + dwarf-fortress = getAttr (versionToName latestVersion) df-games; - dwarf-fortress-full = callPackage ./lazy-pack.nix { }; + dwarf-fortress-full = callPackage ./lazy-pack.nix { + inherit versionToName; + inherit latestVersion; + inherit df-games; + }; soundSense = callPackage ./soundsense.nix { }; diff --git a/pkgs/games/dwarf-fortress/lazy-pack.nix b/pkgs/games/dwarf-fortress/lazy-pack.nix index ca7ae4024289..a05ea49ce814 100644 --- a/pkgs/games/dwarf-fortress/lazy-pack.nix +++ b/pkgs/games/dwarf-fortress/lazy-pack.nix @@ -1,8 +1,9 @@ -{ stdenvNoCC, lib, buildEnv -, dwarf-fortress, themes +{ stdenvNoCC, lib, buildEnv, callPackage +, 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 - # should contain every utility available. + # should contain every utility available unless you disable them. , enableDFHack ? stdenvNoCC.isLinux , enableTWBT ? enableDFHack , enableSoundSense ? true @@ -16,6 +17,14 @@ , enableFPS ? false }: +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}"; +in buildEnv { name = "dwarf-fortress-full"; paths = [ @@ -28,7 +37,7 @@ buildEnv { meta = with stdenvNoCC.lib; { description = "An opinionated wrapper for Dwarf Fortress"; - maintainers = with maintainers; [ Baughn ]; + maintainers = with maintainers; [ Baughn numinit ]; license = licenses.mit; platforms = platforms.all; homepage = https://github.com/NixOS/nixpkgs/; From fe847fcc929b824596aa049b08f06c8af9519a68 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 15 Jul 2018 06:41:27 +0000 Subject: [PATCH 4/8] Therapist needs to depend on the DF version, since it uses its MD5 --- pkgs/games/dwarf-fortress/default.nix | 36 +++++++++---------- pkgs/games/dwarf-fortress/lazy-pack.nix | 3 +- pkgs/games/dwarf-fortress/wrapper/default.nix | 3 +- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix index 1ee33fb27f36..88a6d72bc485 100644 --- a/pkgs/games/dwarf-fortress/default.nix +++ b/pkgs/games/dwarf-fortress/default.nix @@ -64,10 +64,18 @@ let dfhack = callPackage ./dfhack { inherit (pkgs.perlPackages) XMLLibXML XMLLibXSLT; - inherit dfVersion; - inherit twbt; + inherit dfVersion twbt; stdenv = gccStdenv; }; + + dwarf-therapist = callPackage ./dwarf-therapist/wrapper.nix { + inherit dwarf-fortress; + dwarf-therapist = pkgs.qt5.callPackage ./dwarf-therapist { + texlive = pkgs.texlive.combine { + inherit (pkgs.texlive) scheme-basic float caption wrapfig adjmulticol sidecap preprint enumitem; + }; + }; + }; in callPackage ./wrapper { inherit (self) themes; @@ -76,41 +84,33 @@ let dwarf-fortress-unfuck = dwarf-fortress-unfuck; twbt = twbt; dfhack = dfhack; + dwarf-therapist = dwarf-therapist; }; }) (lib.attrNames self.df-hashes)); self = rec { df-hashes = builtins.fromJSON (builtins.readFile ./game.json); - + + # Aliases for the latest Dwarf Fortress and the selected Therapist install dwarf-fortress = getAttr (versionToName latestVersion) df-games; + dwarf-therapist = dwarf-fortress.dwarf-therapist; + dwarf-fortress-original = dwarf-fortress.dwarf-fortress; dwarf-fortress-full = callPackage ./lazy-pack.nix { - inherit versionToName; - inherit latestVersion; - inherit df-games; + inherit df-games versionToName latestVersion; }; - + soundSense = callPackage ./soundsense.nix { }; - dwarf-therapist = callPackage ./dwarf-therapist/wrapper.nix { - inherit (dwarf-fortress) dwarf-fortress; - dwarf-therapist = pkgs.qt5.callPackage ./dwarf-therapist { - texlive = pkgs.texlive.combine { - inherit (pkgs.texlive) scheme-basic float caption wrapfig adjmulticol sidecap preprint enumitem; - }; - }; - }; - legends-browser = callPackage ./legends-browser {}; themes = recurseIntoAttrs (callPackage ./themes { stdenv = stdenvNoCC; }); - # aliases + # Theme aliases phoebus-theme = themes.phoebus; cla-theme = themes.cla; - dwarf-fortress-original = dwarf-fortress.dwarf-fortress; }; in self // df-games diff --git a/pkgs/games/dwarf-fortress/lazy-pack.nix b/pkgs/games/dwarf-fortress/lazy-pack.nix index a05ea49ce814..3a81dcc9c931 100644 --- a/pkgs/games/dwarf-fortress/lazy-pack.nix +++ b/pkgs/games/dwarf-fortress/lazy-pack.nix @@ -8,7 +8,7 @@ , enableTWBT ? enableDFHack , enableSoundSense ? true , enableStoneSense ? true -, enableDwarfTherapist ? true, dwarf-therapist +, enableDwarfTherapist ? true , enableLegendsBrowser ? true, legends-browser , theme ? themes.phoebus # General config options: @@ -24,6 +24,7 @@ let 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 { name = "dwarf-fortress-full"; diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix index 33523270b19d..8d9f06ffe143 100644 --- a/pkgs/games/dwarf-fortress/wrapper/default.nix +++ b/pkgs/games/dwarf-fortress/wrapper/default.nix @@ -1,5 +1,6 @@ { stdenv, lib, buildEnv, substituteAll , dwarf-fortress, dwarf-fortress-unfuck +, dwarf-therapist , enableDFHack ? false, dfhack , enableSoundSense ? false, soundSense, jdk , enableStoneSense ? false @@ -89,7 +90,7 @@ stdenv.mkDerivation rec { runDFHack = ./dfhack.in; runSoundSense = ./soundSense.in; - passthru = { inherit dwarf-fortress; }; + passthru = { inherit dwarf-fortress dwarf-therapist; }; buildCommand = '' mkdir -p $out/bin From 870f05c975d95e9f05e0e2de3b039e4eef08d6c5 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 15 Jul 2018 07:02:50 +0000 Subject: [PATCH 5/8] Fix dangling DFHack "Git:" version text --- pkgs/games/dwarf-fortress/dfhack/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix index 1c88cab02193..5dcdeda7ba28 100644 --- a/pkgs/games/dwarf-fortress/dfhack/default.nix +++ b/pkgs/games/dwarf-fortress/dfhack/default.nix @@ -32,6 +32,10 @@ let #! ${stdenv.shell} if [ "$*" = "describe --tags --long" ]; then echo "${version}-unknown" + elif [ "$*" = "describe --tags --abbrev=8 --long" ]; then + echo "${version}-unknown" + elif [ "$*" = "describe --tags --abbrev=8 --exact-match" ]; then + echo "${version}" elif [ "$*" = "rev-parse HEAD" ]; then if [ "$(dirname "$(pwd)")" = "xml" ]; then echo "${xmlRev}" From 5f1013d87576f89d391670e17725a897204a6cb9 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 15 Jul 2018 07:34:26 +0000 Subject: [PATCH 6/8] Use stdenv.mkDerivation for Therapist wrapper --- pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix index 6e3a13692a72..071ab2af0c5c 100644 --- a/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix +++ b/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix @@ -5,7 +5,9 @@ let "linux32" else "linux64"; inifile = "linux/v0.${dwarf-fortress.baseVersion}.${dwarf-fortress.patchVersion}_${platformSlug}.ini"; -in symlinkJoin { +in + +stdenv.mkDerivation rec { name = "dwarf-therapist-${dwarf-therapist.version}"; wrapper = ./dwarf-therapist.in; @@ -43,4 +45,6 @@ in symlinkJoin { substitute "$input_file" "$output_file" --replace "$orig_md5" "$patched_md5" ''; + + preferLocalBuild = true; } From 2cd2571edd0fef223e65d9039059871e3ab61d1c Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 9 Sep 2018 07:03:53 +0000 Subject: [PATCH 7/8] Update twbt to 6.54 --- pkgs/games/dwarf-fortress/twbt/twbt.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/games/dwarf-fortress/twbt/twbt.json b/pkgs/games/dwarf-fortress/twbt/twbt.json index b455ff017fcd..f7de1c14e6b6 100644 --- a/pkgs/games/dwarf-fortress/twbt/twbt.json +++ b/pkgs/games/dwarf-fortress/twbt/twbt.json @@ -25,8 +25,8 @@ "prerelease": true }, "0.44.12": { - "twbtRelease": "6.53", - "sha256": "05qc9x4zm0pamwg7j12j0084dq2sj7825fhd3l0wxfinphzk3was", + "twbtRelease": "6.54", + "sha256": "10gfd6vv0vk4v1r5hjbz7vf1zqys06dsad695gysc7fbcik2dakh", "prerelease": false } } From 213b5457fc0a343d71c9ee1a84ea3722b3b05388 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 9 Sep 2018 07:12:36 +0000 Subject: [PATCH 8/8] Inline JSON files --- pkgs/games/dwarf-fortress/dfhack/default.nix | 39 +++++++++++++++++++- pkgs/games/dwarf-fortress/dfhack/dfhack.json | 38 ------------------- pkgs/games/dwarf-fortress/themes/default.nix | 2 +- pkgs/games/dwarf-fortress/twbt/default.nix | 33 ++++++++++++++++- pkgs/games/dwarf-fortress/twbt/twbt.json | 32 ---------------- pkgs/games/dwarf-fortress/unfuck.json | 26 ------------- pkgs/games/dwarf-fortress/unfuck.nix | 27 +++++++++++++- 7 files changed, 97 insertions(+), 100 deletions(-) delete mode 100644 pkgs/games/dwarf-fortress/dfhack/dfhack.json delete mode 100644 pkgs/games/dwarf-fortress/twbt/twbt.json delete mode 100644 pkgs/games/dwarf-fortress/unfuck.json diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix index 5dcdeda7ba28..d65bdab84911 100644 --- a/pkgs/games/dwarf-fortress/dfhack/default.nix +++ b/pkgs/games/dwarf-fortress/dfhack/default.nix @@ -9,7 +9,44 @@ with lib; let - dfhack-releases = builtins.fromJSON (builtins.readFile ./dfhack.json); + dfhack-releases = { + "0.43.05" = { + dfHackRelease = "0.43.05-r3.1"; + sha256 = "1ds366i0qcfbn62w9qv98lsqcrm38npzgvcr35hf6ihqa6nc6xrl"; + xmlRev = "860a9041a75305609643d465123a4b598140dd7f"; + prerelease = false; + }; + "0.44.05" = { + dfHackRelease = "0.44.05-r2"; + sha256 = "1cwifdhi48a976xc472nf6q2k0ibwqffil5a4llcymcxdbgxdcc9"; + xmlRev = "2794f8a6d7405d4858bac486a0bb17b94740c142"; + prerelease = false; + }; + "0.44.09" = { + dfHackRelease = "0.44.09-r1"; + sha256 = "1nkfaa43pisbyik5inj5q2hja2vza5lwidg5z02jyh136jm64hwk"; + xmlRev = "3c0bf63674d5430deadaf7befaec42f0ec1e8bc5"; + prerelease = false; + }; + "0.44.10" = { + dfHackRelease = "0.44.10-r2"; + sha256 = "19bxsghxzw3bilhr8sm4axz7p7z8lrvbdsd1vdjf5zbg04rs866i"; + xmlRev = "321bd48b10c4c3f694cc801a7dee6be392c09b7b"; + prerelease = false; + }; + "0.44.11" = { + dfHackRelease = "0.44.11-beta2.1"; + sha256 = "1jgwcqg9m1ybv3szgnklp6zfpiw5mswla464dlj2gfi5v82zqbv2"; + xmlRev = "f27ebae6aa8fb12c46217adec5a812cd49a905c8"; + prerelease = true; + }; + "0.44.12" = { + dfHackRelease = "0.44.12-r1"; + sha256 = "0j03lq6j6w378z6cvm7jspxc7hhrqm8jaszlq0mzfvap0k13fgyy"; + xmlRev = "23500e4e9bd1885365d0a2ef1746c321c1dd5094"; + prerelease = false; + }; + }; release = if hasAttr dfVersion dfhack-releases then getAttr dfVersion dfhack-releases diff --git a/pkgs/games/dwarf-fortress/dfhack/dfhack.json b/pkgs/games/dwarf-fortress/dfhack/dfhack.json deleted file mode 100644 index d1907fb38afb..000000000000 --- a/pkgs/games/dwarf-fortress/dfhack/dfhack.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "0.43.05": { - "dfHackRelease": "0.43.05-r3.1", - "sha256": "1ds366i0qcfbn62w9qv98lsqcrm38npzgvcr35hf6ihqa6nc6xrl", - "xmlRev": "860a9041a75305609643d465123a4b598140dd7f", - "prerelease": false - }, - "0.44.05": { - "dfHackRelease": "0.44.05-r2", - "sha256": "1cwifdhi48a976xc472nf6q2k0ibwqffil5a4llcymcxdbgxdcc9", - "xmlRev": "2794f8a6d7405d4858bac486a0bb17b94740c142", - "prerelease": false - }, - "0.44.09": { - "dfHackRelease": "0.44.09-r1", - "sha256": "1nkfaa43pisbyik5inj5q2hja2vza5lwidg5z02jyh136jm64hwk", - "xmlRev": "3c0bf63674d5430deadaf7befaec42f0ec1e8bc5", - "prerelease": false - }, - "0.44.10": { - "dfHackRelease": "0.44.10-r2", - "sha256": "19bxsghxzw3bilhr8sm4axz7p7z8lrvbdsd1vdjf5zbg04rs866i", - "xmlRev": "321bd48b10c4c3f694cc801a7dee6be392c09b7b", - "prerelease": false - }, - "0.44.11": { - "dfHackRelease": "0.44.11-beta2.1", - "sha256": "1jgwcqg9m1ybv3szgnklp6zfpiw5mswla464dlj2gfi5v82zqbv2", - "xmlRev": "f27ebae6aa8fb12c46217adec5a812cd49a905c8", - "prerelease": true - }, - "0.44.12": { - "dfHackRelease": "0.44.12-r1", - "sha256": "0j03lq6j6w378z6cvm7jspxc7hhrqm8jaszlq0mzfvap0k13fgyy", - "xmlRev": "23500e4e9bd1885365d0a2ef1746c321c1dd5094", - "prerelease": false - } -} diff --git a/pkgs/games/dwarf-fortress/themes/default.nix b/pkgs/games/dwarf-fortress/themes/default.nix index 0b8eb23a7b9d..feb4782d7c32 100644 --- a/pkgs/games/dwarf-fortress/themes/default.nix +++ b/pkgs/games/dwarf-fortress/themes/default.nix @@ -1,4 +1,4 @@ -{lib, fetchFromGitHub}: +{lib, fetchFromGitHub, ...}: with builtins; diff --git a/pkgs/games/dwarf-fortress/twbt/default.nix b/pkgs/games/dwarf-fortress/twbt/default.nix index 1bdbddb56de4..7c80c1012462 100644 --- a/pkgs/games/dwarf-fortress/twbt/default.nix +++ b/pkgs/games/dwarf-fortress/twbt/default.nix @@ -5,7 +5,38 @@ with lib; let - twbt-releases = builtins.fromJSON (builtins.readFile ./twbt.json); + twbt-releases = { + "0.43.05" = { + twbtRelease = "6.22"; + sha256 = "0di5d38f6jj9smsz0wjcs1zav4zba6hrk8cbn59kwpb1wamsh5c7"; + prerelease = false; + }; + "0.44.05" = { + twbtRelease = "6.35"; + sha256 = "0qjkgl7dsqzsd7pdq8a5bihhi1wplfkv1id7sj6dp3swjpsfxp8g"; + prerelease = false; + }; + "0.44.09" = { + twbtRelease = "6.41"; + sha256 = "0nsq15z05pbhqjvw2xqs1a9b1n2ma0aalhc3vh3mi4cd4k7lxh44"; + prerelease = false; + }; + "0.44.10" = { + twbtRelease = "6.49"; + sha256 = "1qjkc7k33qhxj2g18njzasccjqsis5y8zrw5vl90h4rs3i8ld9xz"; + prerelease = false; + }; + "0.44.11" = { + twbtRelease = "6.51"; + sha256 = "1yclqmarjd97ch054h425a12r8a5ailmflsd7b39cg4qhdr1nii5"; + prerelease = true; + }; + "0.44.12" = { + twbtRelease = "6.54"; + sha256 = "10gfd6vv0vk4v1r5hjbz7vf1zqys06dsad695gysc7fbcik2dakh"; + prerelease = false; + }; + }; release = if hasAttr dfVersion twbt-releases then getAttr dfVersion twbt-releases diff --git a/pkgs/games/dwarf-fortress/twbt/twbt.json b/pkgs/games/dwarf-fortress/twbt/twbt.json deleted file mode 100644 index f7de1c14e6b6..000000000000 --- a/pkgs/games/dwarf-fortress/twbt/twbt.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "0.43.05": { - "twbtRelease": "6.22", - "sha256": "0di5d38f6jj9smsz0wjcs1zav4zba6hrk8cbn59kwpb1wamsh5c7", - "prerelease": false - }, - "0.44.05": { - "twbtRelease": "6.35", - "sha256": "0qjkgl7dsqzsd7pdq8a5bihhi1wplfkv1id7sj6dp3swjpsfxp8g", - "prerelease": false - }, - "0.44.09": { - "twbtRelease": "6.41", - "sha256": "0nsq15z05pbhqjvw2xqs1a9b1n2ma0aalhc3vh3mi4cd4k7lxh44", - "prerelease": false - }, - "0.44.10": { - "twbtRelease": "6.49", - "sha256": "1qjkc7k33qhxj2g18njzasccjqsis5y8zrw5vl90h4rs3i8ld9xz", - "prerelease": false - }, - "0.44.11": { - "twbtRelease": "6.51", - "sha256": "1yclqmarjd97ch054h425a12r8a5ailmflsd7b39cg4qhdr1nii5", - "prerelease": true - }, - "0.44.12": { - "twbtRelease": "6.54", - "sha256": "10gfd6vv0vk4v1r5hjbz7vf1zqys06dsad695gysc7fbcik2dakh", - "prerelease": false - } -} diff --git a/pkgs/games/dwarf-fortress/unfuck.json b/pkgs/games/dwarf-fortress/unfuck.json deleted file mode 100644 index f7a4974c575c..000000000000 --- a/pkgs/games/dwarf-fortress/unfuck.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "0.43.05": { - "unfuckRelease": "0.43.05", - "sha256": "173dyrbxlzqvjf1j3n7vpns4gfjkpyvk9z16430xnmd5m6nda8p2" - }, - "0.44.05": { - "unfuckRelease": "0.44.05", - "sha256": "00yj4l4gazxg4i6fj9rwri6vm17i6bviy2mpkx0z5c0mvsr7s14b" - }, - "0.44.09": { - "unfuckRelease": "0.44.09", - "sha256": "138p0v8z2x47f0fk9k6g75ikw5wb3vxldwv5ggbkf4hhvlw6lvzm" - }, - "0.44.10": { - "unfuckRelease": "0.44.10", - "sha256": "0vb19qx2ibc79j4bgbk9lskb883qfb0815zw1dfz9k7rqwal8mzj" - }, - "0.44.11": { - "unfuckRelease": "0.44.11.1", - "sha256": "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz" - }, - "0.44.12": { - "unfuckRelease": "0.44.12", - "sha256": "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz" - } -} diff --git a/pkgs/games/dwarf-fortress/unfuck.nix b/pkgs/games/dwarf-fortress/unfuck.nix index 732003118713..c4d01b3ff392 100644 --- a/pkgs/games/dwarf-fortress/unfuck.nix +++ b/pkgs/games/dwarf-fortress/unfuck.nix @@ -7,7 +7,32 @@ with lib; let - unfuck-releases = builtins.fromJSON (builtins.readFile ./unfuck.json); + unfuck-releases = { + "0.43.05" = { + unfuckRelease = "0.43.05"; + sha256 = "173dyrbxlzqvjf1j3n7vpns4gfjkpyvk9z16430xnmd5m6nda8p2"; + }; + "0.44.05" = { + unfuckRelease = "0.44.05"; + sha256 = "00yj4l4gazxg4i6fj9rwri6vm17i6bviy2mpkx0z5c0mvsr7s14b"; + }; + "0.44.09" = { + unfuckRelease = "0.44.09"; + sha256 = "138p0v8z2x47f0fk9k6g75ikw5wb3vxldwv5ggbkf4hhvlw6lvzm"; + }; + "0.44.10" = { + unfuckRelease = "0.44.10"; + sha256 = "0vb19qx2ibc79j4bgbk9lskb883qfb0815zw1dfz9k7rqwal8mzj"; + }; + "0.44.11" = { + unfuckRelease = "0.44.11.1"; + sha256 = "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz"; + }; + "0.44.12" = { + unfuckRelease = "0.44.12"; + sha256 = "1kszkb1d1vll8p04ja41nangsaxb5lv4p3xh2jhmsmipfixw7nvz"; + }; + }; release = if hasAttr dfVersion unfuck-releases then getAttr dfVersion unfuck-releases