Merge pull request #250216 from NixOS/urbanterror/cleanup
urbanterror: refactor, simplify, cleanup
This commit is contained in:
commit
2e86fdebc6
@ -1,64 +1,113 @@
|
||||
{ lib, stdenv, fetchurl, unzip, SDL, libGLU, libGL, openal, curl, libXxf86vm }:
|
||||
{ lib
|
||||
, fetchzip
|
||||
, stdenv
|
||||
, copyDesktopItems
|
||||
, imagemagick
|
||||
, libicns
|
||||
, makeBinaryWrapper
|
||||
, curl
|
||||
, libGL
|
||||
, libGLU
|
||||
, openal
|
||||
, libXxf86vm
|
||||
, SDL
|
||||
, makeDesktopItem
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "urbanterror";
|
||||
let
|
||||
version = "4.3.4";
|
||||
|
||||
srcs =
|
||||
[ (fetchurl {
|
||||
url = "http://cdn.urbanterror.info/urt/43/releases/zips/UrbanTerror434_full.zip";
|
||||
sha256 = "1rx4nnndsk88nvd7k4p35cw6znclkkzm2bl5j6vn6mjjdk66jrki";
|
||||
})
|
||||
(fetchurl {
|
||||
url = "https://github.com/FrozenSand/ioq3-for-UrbanTerror-4/archive/release-${version}.zip";
|
||||
sha256 = "1s9pmw7rbnzwzl1llcs0kr2krf4daf8hhnz1j89qk4bq9a9qfp71";
|
||||
})
|
||||
];
|
||||
urbanterror-maps = fetchzip {
|
||||
name = "urbanterror-maps";
|
||||
url = "http://cdn.urbanterror.info/urt/43/releases/zips/UrbanTerror${builtins.replaceStrings ["."] [""] version}_full.zip";
|
||||
hash = "sha256-C6Gb5PPECAOjQhmkrzkV6dpY/zHVtUj9oq3507o2PUI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
buildInputs = [ SDL libGL libGLU openal curl libXxf86vm ];
|
||||
sourceRoot = "ioq3-for-UrbanTerror-4-release-${version}";
|
||||
urbanterror-source = fetchzip {
|
||||
name = "urbanterror-source";
|
||||
url = "https://github.com/FrozenSand/ioq3-for-UrbanTerror-4/archive/release-${version}.zip";
|
||||
hash = "sha256-zF6Tkaj5WYkFU66VwpBFr1P18OJGrGgxnc/jvcvt8hA=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "urbanterror";
|
||||
inherit version;
|
||||
|
||||
srcs = [
|
||||
urbanterror-maps
|
||||
urbanterror-source
|
||||
];
|
||||
|
||||
sourceRoot = "urbanterror-source";
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
imagemagick
|
||||
libicns
|
||||
makeBinaryWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
curl
|
||||
libGL
|
||||
libGLU
|
||||
openal
|
||||
libXxf86vm
|
||||
SDL
|
||||
];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
echo "USE_OPENAL = 1" > Makefile.local
|
||||
echo "USE_OPENAL_DLOPEN = 0" >> Makefile.local
|
||||
echo "USE_CURL = 1" >> Makefile.local
|
||||
echo "USE_CURL_DLOPEN = 0" >> Makefile.local
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
destDir="$out/opt/urbanterror"
|
||||
mkdir -p "$destDir"
|
||||
mkdir -p "$out/bin"
|
||||
cp -v build/release-linux-*/Quake3-UrT.* \
|
||||
"$destDir/Quake3-UrT"
|
||||
cp -v build/release-linux-*/Quake3-UrT-Ded.* \
|
||||
"$destDir/Quake3-UrT-Ded"
|
||||
cp -rv ../UrbanTerror43/q3ut4 "$destDir"
|
||||
cat << EOF > "$out/bin/urbanterror"
|
||||
#! ${stdenv.shell}
|
||||
cd "$destDir"
|
||||
exec ./Quake3-UrT "\$@"
|
||||
EOF
|
||||
chmod +x "$out/bin/urbanterror"
|
||||
cat << EOF > "$out/bin/urbanterror-ded"
|
||||
#! ${stdenv.shell}
|
||||
cd "$destDir"
|
||||
exec ./Quake3-UrT-Ded "\$@"
|
||||
EOF
|
||||
chmod +x "$out/bin/urbanterror-ded"
|
||||
installTargets = [ "copyfiles" ];
|
||||
installFlags = [ "COPYDIR=$(out)/share/urbanterror" ];
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/share/urbanterror
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
p=$out/opt/urbanterror/Quake3-UrT
|
||||
cur_rpath=$(patchelf --print-rpath $p)
|
||||
patchelf --set-rpath $cur_rpath:${libGL}/lib:${libGLU}/lib $p
|
||||
postInstall = ''
|
||||
icns2png --extract ${urbanterror-maps}/Quake3-UrT.app/Contents/Resources/quake3-urt.icns
|
||||
|
||||
for size in 16 24 32 48 64 128 256 512 1024; do
|
||||
mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps
|
||||
if [ ! -e quake3-urt_"$size"x"$size"x32.png ] ; then
|
||||
convert -resize "$size"x"$size" quake3-urt_512x512x32.png quake3-urt_"$size"x"$size"x32.png
|
||||
fi
|
||||
install -Dm644 quake3-urt_"$size"x"$size"x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/urbanterror.png
|
||||
done;
|
||||
|
||||
makeWrapper $out/share/urbanterror/Quake3-UrT.* $out/bin/urbanterror
|
||||
makeWrapper $out/share/urbanterror/Quake3-UrT-Ded.* $out/bin/urbanterror-ded
|
||||
|
||||
ln -s ${urbanterror-maps}/q3ut4 $out/share/urbanterror/
|
||||
'';
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
meta = with lib; {
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "urbanterror";
|
||||
exec = "urbanterror";
|
||||
icon = "urbanterror";
|
||||
comment = "A multiplayer tactical FPS on top of Quake 3 engine";
|
||||
desktopName = "Urban Terror";
|
||||
categories = [ "Game" "ActionGame" ];
|
||||
})
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "A multiplayer tactical FPS on top of Quake 3 engine";
|
||||
homepage = "https://www.urbanterror.info";
|
||||
license = lib.licenses.unfreeRedistributable;
|
||||
longDescription = ''
|
||||
Urban Terror is a free multiplayer first person shooter developed by
|
||||
FrozenSand, that (thanks to the ioquake3-code) does not require
|
||||
@ -66,10 +115,8 @@ stdenv.mkDerivation rec {
|
||||
tactical shooter; somewhat realism based, but the motto is "fun over
|
||||
realism". This results in a very unique, enjoyable and addictive game.
|
||||
'';
|
||||
homepage = "http://www.urbanterror.info";
|
||||
license = licenses.unfreeRedistributable;
|
||||
maintainers = with maintainers; [ astsmtl ];
|
||||
platforms = platforms.linux;
|
||||
hydraPlatforms = [];
|
||||
mainProgram = "urbanterror";
|
||||
maintainers = with lib.maintainers; [ astsmtl drupol ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user