diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2025-07-23 08:29:48 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2025-07-23 08:29:48 -0400 |
commit | e4781a2c772c1bd6802e65847629f2248ba37336 (patch) | |
tree | d4d068c4dc5ce499b138daaf023e8310d8d8bffc /packages/freeciv | |
parent | 93280382da83e885d919d3b13f4383c2ac6102d3 (diff) | |
download | nix-config-e4781a2c772c1bd6802e65847629f2248ba37336.tar.gz nix-config-e4781a2c772c1bd6802e65847629f2248ba37336.tar.bz2 nix-config-e4781a2c772c1bd6802e65847629f2248ba37336.zip |
2025-07-23
Diffstat (limited to 'packages/freeciv')
-rw-r--r-- | packages/freeciv/default.nix | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/packages/freeciv/default.nix b/packages/freeciv/default.nix new file mode 100644 index 0000000..a49069f --- /dev/null +++ b/packages/freeciv/default.nix @@ -0,0 +1,138 @@ +{ + lib, + stdenv, + fetchFromGitHub, + autoreconfHook, + lua5_3, + pkg-config, + python3, + zlib, + bzip2, + curl, + xz, + gettext, + libiconv, + icu, + SDL2, + SDL2_mixer, + SDL2_image, + SDL2_ttf, + SDL2_gfx, + freetype, + fluidsynth, + sdl2Client ? false, + gtkClient ? false, + gtk3, + wrapGAppsHook3, + qtClient ? true, + qt5, + server ? true, + readline, + enableSqlite ? true, + sqlite, +}: + +stdenv.mkDerivation rec { + pname = "freeciv"; + version = "3.1.5"; + + src = fetchFromGitHub { + owner = "freeciv"; + repo = "freeciv"; + rev = "R${lib.replaceStrings [ "." ] [ "_" ] version}"; + hash = "sha256-+kAV9Jz0aQpzeVUFp3so+rYbWOn52NuxRwE8kP5hzM8="; + }; + + postPatch = '' + for f in {common,utility}/*.py; do + substituteInPlace $f \ + --replace '/usr/bin/env python3' ${python3.interpreter} + done + for f in bootstrap/*.sh; do + patchShebangs $f + done + ''; + + nativeBuildInputs = + [ + autoreconfHook + pkg-config + ] + ++ lib.optionals qtClient [ qt5.wrapQtAppsHook ] + ++ lib.optionals gtkClient [ wrapGAppsHook3 ]; + + buildInputs = + [ + lua5_3 + zlib + bzip2 + curl + xz + gettext + libiconv + icu + SDL2 + SDL2_mixer + SDL2_image + SDL2_ttf + SDL2_gfx + freetype + fluidsynth + ] + ++ lib.optionals gtkClient [ gtk3 ] + ++ lib.optionals qtClient [ qt5.qtbase ] + ++ lib.optional server readline + ++ lib.optional enableSqlite sqlite; + + dontWrapQtApps = true; + dontWrapGApps = true; + + # configure is not smart enough to look for SDL2 headers under + # .../SDL2, but thankfully $SDL2_PATH is almost exactly what we want + preConfigure = '' + export CPPFLAGS="$(echo $SDL2_PATH | sed 's#/nix/store/#-I/nix/store/#g')" + ''; + configureFlags = + [ "--enable-shared" ] + ++ lib.optionals sdl2Client [ + "--enable-client=sdl2" + "--enable-sdl-mixer=sdl2" + ] + ++ lib.optionals qtClient [ + "--enable-client=qt" + "--enable-sdl-mixer=sdl2" + "--with-qtver=qt5" + "--with-qt5-includes=${qt5.qtbase.dev}/include" + ] + ++ lib.optionals gtkClient [ "--enable-client=gtk3.22" ] + ++ lib.optional enableSqlite "--enable-fcdb=sqlite3" + ++ lib.optional (!gtkClient) "--enable-fcmp=cli" + ++ lib.optional (!server) "--disable-server"; + + postFixup = + lib.optionalString qtClient '' + wrapQtApp $out/bin/freeciv-qt + '' + + lib.optionalString gtkClient '' + wrapGApp $out/bin/freeciv-gtk3.22 + ''; + + enableParallelBuilding = true; + + meta = { + description = "Multiplayer (or single player), turn-based strategy game"; + longDescription = '' + Freeciv is a Free and Open Source empire-building strategy game + inspired by the history of human civilization. The game commences in + prehistory and your mission is to lead your tribe from the stone age + to the space age... + ''; + homepage = "http://www.freeciv.org"; # http only + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ pierron ]; + platforms = lib.platforms.unix; + hydraPlatforms = lib.platforms.linux; # sdl-config times out on darwin + broken = qtClient && stdenv.hostPlatform.isDarwin; # Missing Qt5 development files + }; +} + |