pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / games / widelands / default.nix
blobe34e23ab6035468f7555c7340234b2eecb4dcd22
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , pkg-config # needed to find minizip
5 , SDL2
6 , SDL2_image
7 , SDL2_mixer
8 , SDL2_net
9 , SDL2_ttf
10 , cmake
11 , curl
12 , doxygen
13 , gettext
14 , glew
15 , graphviz
16 , icu
17 , installShellFiles
18 , libpng
19 , lua
20 , python3
21 , zlib
22 , minizip
23 , asio
24 , libSM
25 , libICE
26 , libXext
27 , darwin
30 stdenv.mkDerivation rec {
31   pname = "widelands";
32   version = "1.2";
34   src = fetchFromGitHub {
35     owner = "widelands";
36     repo = "widelands";
37     rev = "v${version}";
38     sha256 = "sha256-V7eappIMEQMNbf9EGQhv71Fwz0wH679ifi/qAHWwMNU=";
39   };
41   postPatch = ''
42     substituteInPlace xdg/org.widelands.Widelands.desktop \
43       --replace 'Exec=widelands' "Exec=$out/bin/widelands"
44   '';
46   cmakeFlags = [
47     "-Wno-dev" # dev warnings are only needed for upstream development
48     "-DWL_INSTALL_BASEDIR=${placeholder "out"}/share/widelands" # for COPYING, Changelog, etc.
49     "-DWL_INSTALL_DATADIR=${placeholder "out"}/share/widelands" # for game data
50     "-DWL_INSTALL_BINDIR=${placeholder "out"}/bin"
51   ];
53   nativeBuildInputs = [ cmake doxygen gettext graphviz installShellFiles pkg-config ];
55   enableParallelBuilding = true;
57   buildInputs = [
58     SDL2
59     SDL2_image
60     SDL2_mixer
61     SDL2_net
62     SDL2_ttf
63     curl
64     glew
65     icu
66     libpng
67     lua
68     python3
69     zlib
70     minizip
71     asio
72     libSM  # XXX: these should be propagated by SDL2?
73     libICE
74   ]
75   ++ lib.optional stdenv.hostPlatform.isLinux libXext
76   ++ lib.optionals stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [
77     Cocoa
78   ]);
80   postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
81     install -Dm444 -t $out/share/applications ../xdg/org.widelands.Widelands.desktop
83     for s in 16 32 48 64 128; do
84       install -Dm444 ../data/images/logos/wl-ico-''${s}.png $out/share/icons/hicolor/''${s}x''${s}/org.widelands.Widelands.png
85     done
86   '' + ''
87     installManPage ../xdg/widelands.6
88   '';
90   meta = with lib; {
91     description = "RTS with multiple-goods economy";
92     homepage = "https://widelands.org/";
93     longDescription = ''
94       Widelands is a real time strategy game based on "The Settlers" and "The
95       Settlers II". It has a single player campaign mode, as well as a networked
96       multiplayer mode.
97     '';
98     changelog = "https://github.com/widelands/widelands/releases/tag/v${version}";
99     mainProgram = "widelands";
100     license = licenses.gpl2Plus;
101     maintainers = with maintainers; [ raskin jcumming ];
102     platforms = platforms.linux ++ platforms.darwin;
103     hydraPlatforms = [ ];
104   };