From 7082007e683509d1f92948a1fce17791aeb7dae1 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 17:19:10 +0200 Subject: [PATCH 1/7] urbanterror: add missing phase hooks --- pkgs/games/urbanterror/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index fbb633bb657b..8e8f01a2f2df 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -20,13 +20,19 @@ stdenv.mkDerivation rec { sourceRoot = "ioq3-for-UrbanTerror-4-release-${version}"; 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 = '' + runHook preInstall + destDir="$out/opt/urbanterror" mkdir -p "$destDir" mkdir -p "$out/bin" @@ -47,6 +53,8 @@ stdenv.mkDerivation rec { exec ./Quake3-UrT-Ded "\$@" EOF chmod +x "$out/bin/urbanterror-ded" + + runHook postInstall ''; postFixup = '' From 199ba07f336ea43bea0af94821ebc8b4b62d5092 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 17:41:11 +0200 Subject: [PATCH 2/7] urbanterror: add desktop item --- pkgs/games/urbanterror/default.nix | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index 8e8f01a2f2df..993d0f2752d7 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, unzip, SDL, libGLU, libGL, openal, curl, libXxf86vm }: +{ lib, stdenv, fetchurl, unzip, SDL, libGLU, libGL, openal, curl, libXxf86vm, libicns, copyDesktopItems, makeDesktopItem }: stdenv.mkDerivation rec { pname = "urbanterror"; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { }) ]; - nativeBuildInputs = [ unzip ]; + nativeBuildInputs = [ unzip copyDesktopItems libicns ]; buildInputs = [ SDL libGL libGLU openal curl libXxf86vm ]; sourceRoot = "ioq3-for-UrbanTerror-4-release-${version}"; @@ -54,6 +54,15 @@ stdenv.mkDerivation rec { EOF chmod +x "$out/bin/urbanterror-ded" + # Extract pngs from the Apple icon image and create + # the missing ones from the 1024x1024 image. + icns2png --extract ../UrbanTerror43/Quake3-UrT.app/Contents/Resources/quake3-urt.icns + ls -la . + for size in 16 32 128 256 512; do + mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps + install -Dm644 icon_"$size"x"$size"x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/urbanterror.png + done; + runHook postInstall ''; @@ -65,6 +74,17 @@ stdenv.mkDerivation rec { hardeningDisable = [ "format" ]; + 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 = with lib; { description = "A multiplayer tactical FPS on top of Quake 3 engine"; longDescription = '' From ea53c4bd1bc84972cc3017bc142971d074857324 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 19:04:54 +0200 Subject: [PATCH 3/7] urbanterror: add `drupol` as maintainer --- pkgs/games/urbanterror/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index 993d0f2752d7..d370d02a249e 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -96,7 +96,7 @@ stdenv.mkDerivation rec { ''; homepage = "http://www.urbanterror.info"; license = licenses.unfreeRedistributable; - maintainers = with maintainers; [ astsmtl ]; + maintainers = with maintainers; [ astsmtl drupol ]; platforms = platforms.linux; hydraPlatforms = []; }; From 52947c5a3e30a8d129400c69f1c3642b8214875c Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 19:05:13 +0200 Subject: [PATCH 4/7] urbanterror: add `meta.mainProgram` attribute --- pkgs/games/urbanterror/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index d370d02a249e..22f434bc4bc7 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -96,6 +96,7 @@ stdenv.mkDerivation rec { ''; homepage = "http://www.urbanterror.info"; license = licenses.unfreeRedistributable; + mainProgram = "urbanterror"; maintainers = with maintainers; [ astsmtl drupol ]; platforms = platforms.linux; hydraPlatforms = []; From 47db9561ffd26154813d4f9873dbadd608c7076f Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 19:09:10 +0200 Subject: [PATCH 5/7] urbanterror: update `meta.homepage` attribute, use `https` --- pkgs/games/urbanterror/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index 22f434bc4bc7..6f20d59d3297 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -94,7 +94,7 @@ 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"; + homepage = "https://www.urbanterror.info"; license = licenses.unfreeRedistributable; mainProgram = "urbanterror"; maintainers = with maintainers; [ astsmtl drupol ]; From 588e5ae83adc9bd6cb56afa9ebab51f04e00fa7c Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 18:50:59 +0200 Subject: [PATCH 6/7] urbanterror: refactor `installPhase` Get some inspiration from OpenArena derivation --- pkgs/games/urbanterror/default.nix | 113 +++++++++++++++-------------- 1 file changed, 59 insertions(+), 54 deletions(-) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index 6f20d59d3297..c10615d35e90 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -1,23 +1,46 @@ -{ lib, stdenv, fetchurl, unzip, SDL, libGLU, libGL, openal, curl, libXxf86vm, libicns, copyDesktopItems, makeDesktopItem }: +{ lib, stdenv, fetchzip, SDL, libGLU, libGL, openal, curl, libXxf86vm, libicns, copyDesktopItems, makeDesktopItem, makeBinaryWrapper, imagemagick }: -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 copyDesktopItems libicns ]; - 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 @@ -30,46 +53,28 @@ stdenv.mkDerivation rec { runHook postConfigure ''; - installPhase = '' - runHook preInstall + installTargets = [ "copyfiles" ]; + installFlags = [ "COPYDIR=$(out)/share/urbanterror" ]; - 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" - - # Extract pngs from the Apple icon image and create - # the missing ones from the 1024x1024 image. - icns2png --extract ../UrbanTerror43/Quake3-UrT.app/Contents/Resources/quake3-urt.icns - ls -la . - for size in 16 32 128 256 512; do - mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps - install -Dm644 icon_"$size"x"$size"x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/urbanterror.png - done; - - runHook postInstall + 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" ]; @@ -99,6 +104,6 @@ stdenv.mkDerivation rec { mainProgram = "urbanterror"; maintainers = with maintainers; [ astsmtl drupol ]; platforms = platforms.linux; - hydraPlatforms = []; + hydraPlatforms = [ ]; }; } From e632e42b65927a4a2b4d7301de6b18f61b17a9da Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sat, 19 Aug 2023 18:54:30 +0200 Subject: [PATCH 7/7] urbanterror: reformat nix file --- pkgs/games/urbanterror/default.nix | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix index c10615d35e90..6c54984eccbf 100644 --- a/pkgs/games/urbanterror/default.nix +++ b/pkgs/games/urbanterror/default.nix @@ -1,4 +1,18 @@ -{ lib, stdenv, fetchzip, SDL, libGLU, libGL, openal, curl, libXxf86vm, libicns, copyDesktopItems, makeDesktopItem, makeBinaryWrapper, imagemagick }: +{ lib +, fetchzip +, stdenv +, copyDesktopItems +, imagemagick +, libicns +, makeBinaryWrapper +, curl +, libGL +, libGLU +, openal +, libXxf86vm +, SDL +, makeDesktopItem +}: let version = "4.3.4"; @@ -90,8 +104,10 @@ stdenv.mkDerivation { }) ]; - meta = with lib; { + 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 @@ -99,11 +115,8 @@ stdenv.mkDerivation { tactical shooter; somewhat realism based, but the motto is "fun over realism". This results in a very unique, enjoyable and addictive game. ''; - homepage = "https://www.urbanterror.info"; - license = licenses.unfreeRedistributable; mainProgram = "urbanterror"; - maintainers = with maintainers; [ astsmtl drupol ]; - platforms = platforms.linux; - hydraPlatforms = [ ]; + maintainers = with lib.maintainers; [ astsmtl drupol ]; + platforms = lib.platforms.linux; }; }