97 lines
2.6 KiB
Nix
97 lines
2.6 KiB
Nix
{
|
|
stdenv,
|
|
lib,
|
|
fetchFromGitHub,
|
|
makeDesktopItem,
|
|
makeWrapper,
|
|
mono,
|
|
iconv,
|
|
imagemagick,
|
|
msbuild,
|
|
alsa-lib,
|
|
libGL,
|
|
gtk2,
|
|
xorg,
|
|
}:
|
|
|
|
let
|
|
desktopItem = makeDesktopItem {
|
|
name = "ultimate-doom-builder";
|
|
|
|
desktopName = "Ultimate Doom Builder";
|
|
genericName = "Map editor";
|
|
categories = [ "Development" "Game" ];
|
|
icon = "ultimate-doom-builder";
|
|
exec = "ultimate-doom-builder";
|
|
|
|
startupNotify = true;
|
|
startupWMClass = "ultimate-doom-builder";
|
|
};
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "UltimateDoomBuilder";
|
|
version = "4190-unstable-2024-08-04";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "UltimateDoomBuilder";
|
|
repo = "UltimateDoomBuilder";
|
|
|
|
# Have to use later commit because of missing DLLs
|
|
# See https://github.com/UltimateDoomBuilder/UltimateDoomBuilder/commit/6a66d1ada4b47c1331413ea8c5755e275c594df2
|
|
rev = "66f7204f6c9265744f96ee9410f22bfa97e0b7fb";
|
|
hash = "sha256-PzgkG+RD9zMX3aWTwNzrxiIC6fmU9psa/MeBQbQQ+Gg==";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
iconv
|
|
imagemagick
|
|
msbuild
|
|
libGL
|
|
] ++ (with xorg; [ libX11 libXfixes ]);
|
|
|
|
# Some files contain wronly encoded files
|
|
# Try to convert to UTF-8 to fix them
|
|
# See https://github.com/UltimateDoomBuilder/UltimateDoomBuilder/issues/1092
|
|
patchPhase = ''
|
|
runHook prePatch
|
|
|
|
fixEncoding() {
|
|
cp "$1" temp
|
|
iconv -f WINDOWS-1252 -t UTF8 temp -o "$1"
|
|
rm temp
|
|
}
|
|
|
|
fixEncoding Source/Core/Controls/MultiSelectTreeview.cs
|
|
fixEncoding Source/Core/Geometry/Vector2D.cs
|
|
fixEncoding Source/Plugins/BuilderModes/ClassicModes/CurveLinedefsMode.cs
|
|
|
|
runHook postPatch
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/opt/ultimate-doom-builder
|
|
cp -r Build/* $out/opt/ultimate-doom-builder
|
|
rm -f $out/opt/ultimate-doom-builder/Builder.sh
|
|
|
|
convert "Source/Core/Resources/UDB2.ico[3]" icon.png
|
|
|
|
install -Dm644 icon.png $out/share/pixmaps/ultimate-doom-builder.png
|
|
install -Dm644 ${desktopItem}/share/applications/ultimate-doom-builder.desktop $out/share/applications/ultimate-doom-builder.desktop
|
|
|
|
makeWrapper ${lib.getExe' mono "mono"} $out/bin/ultimate-doom-builder \
|
|
--add-flags $out/opt/ultimate-doom-builder/Builder.exe \
|
|
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ alsa-lib libGL gtk2 ]}
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "Comprehensive map editor for Doom, Heretic, Hexen and Strife based games";
|
|
homepage = "https://github.com/UltimateDoomBuilder/UltimateDoomBuilder";
|
|
downloadPage = "https://ultimatedoombuilder.github.io";
|
|
license = lib.licenses.gpl3;
|
|
};
|
|
}
|