ps3-disc-dumper: 3.2.3 -> 4.2.5, .NET 6 -> 9 (#361506)
[NixPkgs.git] / pkgs / games / super-tux-kart / default.nix
blob5e87d415a31891a20c9b178c875a734e5a685781
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   fetchsvn,
6   cmake,
7   pkg-config,
8   makeWrapper,
9   SDL2,
10   glew,
11   openal,
12   OpenAL,
13   libvorbis,
14   libogg,
15   curl,
16   freetype,
17   libjpeg,
18   libpng,
19   harfbuzz,
20   mcpp,
21   wiiuse,
22   angelscript,
23   libopenglrecorder,
24   sqlite,
25   Cocoa,
26   IOKit,
27   IOBluetooth,
28   libsamplerate,
29   shaderc,
31 let
32   assets = fetchsvn {
33     url = "https://svn.code.sf.net/p/supertuxkart/code/stk-assets";
34     rev = "18464";
35     sha256 = "1a84j3psl4cxzkn5ynakpjill7i2f9ki2p729bpmbrvg8fki95aa";
36     name = "stk-assets";
37   };
39   # List of bundled libraries in stk-code/lib to keep
40   # Those are the libraries that cannot be replaced
41   # with system packages.
42   bundledLibraries = [
43     # Bullet 2.87 is incompatible (bullet 2.79 needed whereas 2.87 is packaged)
44     # The api changed in a lot of classes, too much work to adapt
45     "bullet"
46     # Upstream Libenet doesn't yet support IPv6,
47     # So we will use the bundled libenet which
48     # has been fixed to support it.
49     "enet"
50     # Internal library of STK, nothing to do about it
51     "graphics_engine"
52     # Internal library of STK, nothing to do about it
53     "graphics_utils"
54     # Internal library.
55     "simd_wrapper"
56     # This irrlicht is bundled with cmake
57     # whereas upstream irrlicht still uses
58     # archaic Makefiles, too complicated to switch to.
59     "irrlicht"
60     # Not packaged to this date
61     "libsquish"
62     # Not packaged to this date
63     "sheenbidi"
64     # Not packaged to this date
65     "tinygettext"
66     # Not packaged to this date (needed on Darwin)
67     "mojoal"
68   ];
70 stdenv.mkDerivation rec {
72   pname = "supertuxkart";
73   version = "1.4";
75   src = fetchFromGitHub {
76     owner = "supertuxkart";
77     repo = "stk-code";
78     rev = version;
79     hash = "sha256-gqdaVvgNfCN40ZO/9y8+vTeIJPSq6udKxYZ/MAi4ZMM=";
80   };
82   postPatch = ''
83     # Deletes all bundled libs in stk-code/lib except those
84     # That couldn't be replaced with system packages
85     find lib -maxdepth 1 -type d | egrep -v "^lib$|${(lib.concatStringsSep "|" bundledLibraries)}" | xargs -n1 -L1 -r -I{} rm -rf {}
87     # Allow building with system-installed wiiuse on Darwin
88     substituteInPlace CMakeLists.txt \
89       --replace 'NOT (APPLE OR HAIKU)) AND USE_SYSTEM_WIIUSE' 'NOT (HAIKU)) AND USE_SYSTEM_WIIUSE'
90   '';
92   nativeBuildInputs = [
93     cmake
94     pkg-config
95     makeWrapper
96   ];
98   buildInputs =
99     [
100       shaderc
101       SDL2
102       glew
103       libvorbis
104       libogg
105       freetype
106       curl
107       libjpeg
108       libpng
109       harfbuzz
110       mcpp
111       wiiuse
112       angelscript
113       sqlite
114     ]
115     ++ lib.optional (stdenv.hostPlatform.isWindows || stdenv.hostPlatform.isLinux) libopenglrecorder
116     ++ lib.optional stdenv.hostPlatform.isLinux openal
117     ++ lib.optionals stdenv.hostPlatform.isDarwin [
118       OpenAL
119       IOKit
120       Cocoa
121       IOBluetooth
122       libsamplerate
123     ];
125   cmakeFlags = [
126     "-DBUILD_RECORDER=${
127       if (stdenv.hostPlatform.isWindows || stdenv.hostPlatform.isLinux) then "ON" else "OFF"
128     }"
129     "-DUSE_SYSTEM_ANGELSCRIPT=ON"
130     "-DCHECK_ASSETS=OFF"
131     "-DUSE_SYSTEM_WIIUSE=ON"
132     "-DOpenGL_GL_PREFERENCE=GLVND"
133   ];
135   CXXFLAGS = [
136     # GCC 13: error: 'snprintf' was not declared in this scope
137     "-include cstdio"
138     # GCC 13: error: 'runtime_error' is not a member of 'std'
139     "-include stdexcept"
140   ];
142   # Extract binary from built app bundle
143   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
144     mkdir $out/bin
145     mv $out/{supertuxkart.app/Contents/MacOS,bin}/supertuxkart
146     rm -rf $out/supertuxkart.app
147   '';
149   # Obtain the assets directly from the fetched store path, to avoid duplicating assets across multiple engine builds
150   preFixup = ''
151     wrapProgram $out/bin/supertuxkart \
152       --set-default SUPERTUXKART_ASSETS_DIR "${assets}" \
153       --set-default SUPERTUXKART_DATADIR "$out/share/supertuxkart" \
154   '';
156   meta = with lib; {
157     description = "Free 3D kart racing game";
158     mainProgram = "supertuxkart";
159     longDescription = ''
160       SuperTuxKart is a Free 3D kart racing game, with many tracks,
161       characters and items for you to try, similar in spirit to Mario
162       Kart.
163     '';
164     homepage = "https://supertuxkart.net/";
165     license = licenses.gpl2Plus;
166     maintainers = with maintainers; [
167       pyrolagus
168       peterhoeg
169     ];
170     platforms = with platforms; unix;
171     changelog = "https://github.com/supertuxkart/stk-code/blob/${version}/CHANGELOG.md";
172   };