summary refs log tree commit diff
path: root/pkgs/games
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2018-10-08 22:21:09 +0200
committerlassulus <lassulus@lassul.us>2018-10-08 22:21:09 +0200
commit0d57159eca8f3bfc2d009da57a253298d127d0e4 (patch)
tree100df31ed00ee0b80db8f1e6921e6863d29461f8 /pkgs/games
parent21a215059ed558b444bdd16d45dd1dc955d4ef1d (diff)
downloadnixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.tar
nixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.tar.gz
nixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.tar.bz2
nixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.tar.lz
nixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.tar.xz
nixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.tar.zst
nixlib-0d57159eca8f3bfc2d009da57a253298d127d0e4.zip
dwarf-fortress: fix build error
Diffstat (limited to 'pkgs/games')
-rw-r--r--pkgs/games/dwarf-fortress/wrapper/default.nix65
1 files changed, 31 insertions, 34 deletions
diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix
index 8d9f06ffe143..058bb5f72ae6 100644
--- a/pkgs/games/dwarf-fortress/wrapper/default.nix
+++ b/pkgs/games/dwarf-fortress/wrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildEnv, substituteAll
+{ stdenv, lib, buildEnv, substituteAll, runCommand
 , dwarf-fortress, dwarf-fortress-unfuck
 , dwarf-therapist
 , enableDFHack ? false, dfhack
@@ -33,44 +33,41 @@ let
          ++ lib.optional enableTWBT twbt.art
          ++ [ dwarf-fortress ];
 
+  fixup = lib.singleton (runCommand "fixup" {} ''
+    mkdir -p $out/data/init
+    cp ${dwarf-fortress}/data/init/init.txt $out/data/init/init.txt
+  '' + lib.optionalString enableDFHack ''
+    mkdir -p $out/hack
+
+    # 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}]'
+  '');
+
   env = buildEnv {
     name = "dwarf-fortress-env-${dwarf-fortress.dfVersion}";
 
-    paths = themePkg ++ pkgs;
+    paths = fixup ++ 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