pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / games / openarena / default.nix
blob211dbcd2510677609e15b18f0dd3df821f40b037
1 { lib
2 , fetchzip
3 , fetchFromGitHub
4 , stdenv
5 , fetchpatch
6 , copyDesktopItems
7 , curl
8 , makeBinaryWrapper
9 , pkg-config
10 , which
11 , freetype
12 , libglvnd
13 , libjpeg
14 , libogg
15 , libvorbis
16 , libxmp
17 , openal
18 , SDL2
19 , speex
20 , makeDesktopItem
21 , nixosTests
24 let
25   openarena-maps = fetchzip {
26     name = "openarena-maps";
27     url = "https://download.tuxfamily.org/openarena/rel/088/openarena-0.8.8.zip";
28     hash = "sha256-Rup1n14k9sKcyVFYzFqPYV+BEBCnUNwpnFsnyGrhl20=";
29   };
31 stdenv.mkDerivation (finalAttrs: {
32   pname = "openarena";
33   version = "unstable-2023-03-02";
35   src = fetchFromGitHub {
36     name = "openarena-source";
37     owner = "OpenArena";
38     repo = "engine";
39     rev = "075cb860a4d2bc43e75e5f506eba7da877708aba";
40     hash = "sha256-ofQKQyS3ti5TSN+zqwPFYuJiB9kvdER6zTWn8yrOpQU=";
41   };
43   patches = [
44     # Fix Makefile `copyFiles` target
45     # Related upstream issue: https://github.com/OpenArena/engine/issues/83
46     (fetchpatch {
47       url = "https://github.com/OpenArena/engine/commit/f2b424bd332e90a1e2592edd21c62bdb8cd05214.patch";
48       hash = "sha256-legiXLtZAeG2t1esiBa37qkAgxPJVM7JLhjpxGUmWCo=";
49     })
50   ];
52   nativeBuildInputs = [
53     copyDesktopItems
54     curl
55     makeBinaryWrapper
56     pkg-config
57     which
58   ];
60   buildInputs = [
61     freetype
62     libglvnd
63     libjpeg
64     libogg
65     libvorbis
66     libxmp
67     openal
68     SDL2
69     speex
70   ];
72   enableParallelBuilding = true;
74   preConfigure = ''
75     cp ${./Makefile.local} ./Makefile.local
76   '';
78   installTargets = [ "copyfiles" ];
79   installFlags = [ "COPYDIR=$(out)/share/openarena" ];
81   preInstall = ''
82     mkdir -p $out/share/openarena
83   '';
85   postInstall = ''
86     install -Dm644 misc/quake3.svg $out/share/icons/hicolor/scalable/apps/openarena.svg
88     makeWrapper $out/share/openarena/openarena.* $out/bin/openarena
89     makeWrapper $out/share/openarena/oa_ded.* $out/bin/oa_ded
91     ln -s ${openarena-maps}/baseoa $out/share/openarena/baseoa
92     ln -s ${openarena-maps}/missionpack $out/share/openarena/missionpack
93   '';
95   desktopItems = [
96     (makeDesktopItem {
97       name = "OpenArena";
98       exec = "openarena";
99       icon = "openarena";
100       comment = "A fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena";
101       desktopName = "OpenArena";
102       categories = [ "Game" "ActionGame" ];
103     })
104   ];
106   passthru.tests = { inherit (nixosTests) openarena; };
108   meta = {
109     description = "Fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena";
110     homepage = "http://openarena.ws/";
111     license = lib.licenses.gpl2Plus;
112     mainProgram = "openarena";
113     maintainers = with lib.maintainers; [ drupol wyvie ];
114     platforms = lib.platforms.linux;
115   };