diff options
Diffstat (limited to 'nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix')
-rw-r--r-- | nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix b/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix new file mode 100644 index 000000000000..dad59953533b --- /dev/null +++ b/nixpkgs/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix @@ -0,0 +1,60 @@ +{ stdenv, dwarf-therapist, dwarf-fortress, substituteAll, coreutils, wrapQtAppsHook }: + +let + platformSlug = + if stdenv.targetPlatform.is32bit then + "linux32" else "linux64"; + inifile = "linux/v0.${dwarf-fortress.baseVersion}.${dwarf-fortress.patchVersion}_${platformSlug}.ini"; + +in + +stdenv.mkDerivation { + pname = "dwarf-therapist"; + inherit (dwarf-therapist) version meta; + + 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 = [ 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 + + 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 + mkdir -p $out/share/dwarftherapist/memory_layouts/linux + 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" + ''; + + preferLocalBuild = true; +} |