diff options
author | Pol Dellaiera <pol.dellaiera@protonmail.com> | 2023-08-18 09:58:31 +0200 |
---|---|---|
committer | Pol Dellaiera <pol.dellaiera@protonmail.com> | 2023-08-19 07:25:46 +0200 |
commit | 758b6fa94ba056a54b9cf0fd574232d987b93439 (patch) | |
tree | 38ad7ca48cdf56c0ec5f48e01d2fc564bf92f81a /pkgs/games/openarena | |
parent | 30683ca1d46999b588bb9f2b46f88bdbd511abb0 (diff) | |
download | nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.tar nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.tar.gz nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.tar.bz2 nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.tar.lz nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.tar.xz nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.tar.zst nixpkgs-758b6fa94ba056a54b9cf0fd574232d987b93439.zip |
openarena: compile from sources
- Add desktop item - Use `finalAttrs` pattern - Sort attributes and parameters naturally - Update license - Add `meta.mainProgram` attribute - Add `drupol` as maintainer
Diffstat (limited to 'pkgs/games/openarena')
-rw-r--r-- | pkgs/games/openarena/default.nix | 147 |
1 files changed, 113 insertions, 34 deletions
diff --git a/pkgs/games/openarena/default.nix b/pkgs/games/openarena/default.nix index 7b1f793895e..a90a6752ac8 100644 --- a/pkgs/games/openarena/default.nix +++ b/pkgs/games/openarena/default.nix @@ -1,43 +1,122 @@ -{ lib, fetchurl, makeWrapper, patchelf, pkgs, stdenv, SDL, libglvnd, libogg, libvorbis, curl, openal }: +{ lib +, fetchzip +, fetchFromGitHub +, stdenv +, fetchpatch +, copyDesktopItems +, curl +, makeBinaryWrapper +, pkg-config +, which +, freetype +, libglvnd +, libogg +, libvorbis +, libxmp +, openal +, SDL2 +, speex +, makeDesktopItem +}: -stdenv.mkDerivation { - pname = "openarena"; - version = "0.8.8"; +let + openarena-maps = fetchzip { + name = "openarena-maps"; + url = "https://download.tuxfamily.org/openarena/rel/088/openarena-0.8.8.zip"; + hash = "sha256-Rup1n14k9sKcyVFYzFqPYV+BEBCnUNwpnFsnyGrhl20="; + }; - src = fetchurl { - name = "openarena.zip"; - url = "http://openarena.ws/request.php?4"; - sha256 = "0jmc1cmdz1rcvqc9ilzib1kilpwap6v0d331l6q53wsibdzsz3ss"; + openarena-source = fetchFromGitHub { + name = "openarena-source"; + owner = "OpenArena"; + repo = "engine"; + rev = "075cb860a4d2bc43e75e5f506eba7da877708aba"; + hash = "sha256-ofQKQyS3ti5TSN+zqwPFYuJiB9kvdER6zTWn8yrOpQU="; }; +in +stdenv.mkDerivation (finalAttrs: { + pname = "openarena"; + version = "unstable-2023-03-02"; + + srcs = [ + openarena-source + openarena-maps + ]; + + sourceRoot = "openarena-source"; + + patches = [ + # Fix Makefile `copyFiles` target + # Related upstream issue: https://github.com/OpenArena/engine/issues/83 + (fetchpatch { + url = "https://github.com/OpenArena/engine/commit/f2b424bd332e90a1e2592edd21c62bdb8cd05214.patch"; + hash = "sha256-legiXLtZAeG2t1esiBa37qkAgxPJVM7JLhjpxGUmWCo="; + }) + ]; + + nativeBuildInputs = [ + copyDesktopItems + curl + makeBinaryWrapper + pkg-config + which + ]; + + buildInputs = [ + freetype + libglvnd + libogg + libvorbis + libxmp + openal + SDL2 + speex + ]; - nativeBuildInputs = [ pkgs.unzip patchelf makeWrapper]; - - installPhase = let - gameDir = "$out/openarena-$version"; - interpreter = "$(< \"$NIX_CC/nix-support/dynamic-linker\")"; - libPath = lib.makeLibraryPath [ SDL libglvnd libogg libvorbis curl openal ]; - arch = { - "x86_64-linux" = "x86_64"; - "i386-linux" = "i386"; - }.${stdenv.hostPlatform.system}; - in '' - mkdir -pv $out/bin - cd $out - unzip $src - - patchelf --set-interpreter "${interpreter}" "${gameDir}/openarena.${arch}" - patchelf --set-interpreter "${interpreter}" "${gameDir}/oa_ded.${arch}" - - makeWrapper "${gameDir}/openarena.${arch}" "$out/bin/openarena" \ - --prefix LD_LIBRARY_PATH : "${libPath}" - makeWrapper "${gameDir}/oa_ded.${arch}" "$out/bin/oa_ded" + enableParallelBuilding = true; + + makeFlags = [ + "USE_INTERNAL_LIBS=0" + "USE_FREETYPE=1" + "USE_OPENAL_DLOPEN=0" + "USE_CURL_DLOPEN=0" + "ARCH=${stdenv.hostPlatform.linuxArch}" + ]; + + installTargets = [ "copyfiles" ]; + installFlags = [ "COPYDIR=$(out)/share/openarena" ]; + + preInstall = '' + mkdir -p $out/share/openarena + ''; + + postInstall = '' + install -Dm644 misc/quake3.svg $out/share/icons/hicolor/scalable/apps/openarena.svg + + makeWrapper $out/share/openarena/openarena.* $out/bin/openarena + makeWrapper $out/share/openarena/oa_ded.* $out/bin/oa_ded + + ln -s ${openarena-maps}/baseoa $out/share/openarena/baseoa + ln -s ${openarena-maps}/missionpack $out/share/openarena/missionpack ''; + desktopItems = [ + (makeDesktopItem { + name = "OpenArena"; + exec = "openarena"; + icon = "openarena"; + comment = "A fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena"; + desktopName = "openarena"; + categories = [ "Game" "ActionGame" ]; + }) + ]; + meta = { - description = "Crossplatform openarena client"; + description = "A fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena"; homepage = "http://openarena.ws/"; - maintainers = [ lib.maintainers.wyvie ]; - platforms = [ "i386-linux" "x86_64-linux" ]; - license = lib.licenses.gpl2; + license = lib.licenses.gpl2Plus; + mainProgram = "openarena"; + maintainers = with lib.maintainers; [ drupol wyvie ]; + platforms = lib.platforms.linux; }; -} +}) |