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