about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-12-15 19:32:38 +0100
committerAlyssa Ross <hi@alyssa.is>2023-12-15 19:32:38 +0100
commit6b8e2555ef013b579cda57025b17d662e0f1fe1f (patch)
tree5a83c673af26c9976acd5a5dfa20e09e06898047 /nixpkgs/pkgs/games
parent66ca7a150b5c051f0728f13134e6265cc46f370c (diff)
parent02357adddd0889782362d999628de9d309d202dc (diff)
downloadnixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.tar
nixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.tar.gz
nixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.tar.bz2
nixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.tar.lz
nixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.tar.xz
nixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.tar.zst
nixlib-6b8e2555ef013b579cda57025b17d662e0f1fe1f.zip
Merge branch 'nixos-unstable-small' of https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/games')
-rw-r--r--nixpkgs/pkgs/games/aaaaxy/default.nix96
-rw-r--r--nixpkgs/pkgs/games/alephone/apotheosis-x/default.nix20
-rw-r--r--nixpkgs/pkgs/games/alephone/default.nix102
-rw-r--r--nixpkgs/pkgs/games/alephone/durandal/default.nix25
-rw-r--r--nixpkgs/pkgs/games/alephone/eternal/default.nix21
-rw-r--r--nixpkgs/pkgs/games/alephone/evil/default.nix18
-rw-r--r--nixpkgs/pkgs/games/alephone/infinity/default.nix25
-rw-r--r--nixpkgs/pkgs/games/alephone/marathon/default.nix25
-rw-r--r--nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix19
-rw-r--r--nixpkgs/pkgs/games/alephone/pheonix/default.nix18
-rw-r--r--nixpkgs/pkgs/games/alephone/red/default.nix18
-rw-r--r--nixpkgs/pkgs/games/alephone/rubicon-x/default.nix23
-rw-r--r--nixpkgs/pkgs/games/alephone/yuge/default.nix18
-rw-r--r--nixpkgs/pkgs/games/anki/default.nix1
-rw-r--r--nixpkgs/pkgs/games/armagetronad/default.nix2
-rw-r--r--nixpkgs/pkgs/games/atlauncher/default.nix4
-rw-r--r--nixpkgs/pkgs/games/deliantra/0003-swap.patch14
-rw-r--r--nixpkgs/pkgs/games/deliantra/server.nix3
-rw-r--r--nixpkgs/pkgs/games/eboard/default.nix4
-rw-r--r--nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch15
-rw-r--r--nixpkgs/pkgs/games/heroic/default.nix9
-rw-r--r--nixpkgs/pkgs/games/heroic/fix-infinite-loop.patch23
-rw-r--r--nixpkgs/pkgs/games/maptool/default.nix36
-rw-r--r--nixpkgs/pkgs/games/mindustry/default.nix6
-rw-r--r--nixpkgs/pkgs/games/minetest/default.nix189
-rw-r--r--nixpkgs/pkgs/games/openclonk/default.nix23
-rw-r--r--nixpkgs/pkgs/games/path-of-building/default.nix4
-rw-r--r--nixpkgs/pkgs/games/rare/default.nix17
-rw-r--r--nixpkgs/pkgs/games/rare/legendary-gl-version.patch13
-rw-r--r--nixpkgs/pkgs/games/runelite/default.nix4
-rw-r--r--nixpkgs/pkgs/games/sgt-puzzles/default.nix4
-rw-r--r--nixpkgs/pkgs/games/shattered-pixel-dungeon/generic.nix3
-rw-r--r--nixpkgs/pkgs/games/shipwright/default.nix10
-rw-r--r--nixpkgs/pkgs/games/shipwright/lus-install-paths.patch146
-rw-r--r--nixpkgs/pkgs/games/shipwright/soh-misc-otr-patches.patch119
-rw-r--r--nixpkgs/pkgs/games/steam/fhsenv.nix24
-rw-r--r--nixpkgs/pkgs/games/stepmania/0001-fix-build-with-ffmpeg-4.patch136
-rw-r--r--nixpkgs/pkgs/games/stepmania/default.nix55
-rw-r--r--nixpkgs/pkgs/games/tennix/fix_FTBFS.patch288
-rw-r--r--nixpkgs/pkgs/games/unciv/default.nix4
-rw-r--r--nixpkgs/pkgs/games/warzone2100/default.nix9
41 files changed, 246 insertions, 1347 deletions
diff --git a/nixpkgs/pkgs/games/aaaaxy/default.nix b/nixpkgs/pkgs/games/aaaaxy/default.nix
deleted file mode 100644
index b6e5826be96a..000000000000
--- a/nixpkgs/pkgs/games/aaaaxy/default.nix
+++ /dev/null
@@ -1,96 +0,0 @@
-{ lib
-, fetchFromGitHub
-, buildGoModule
-, alsa-lib
-, libglvnd
-, libX11
-, libXcursor
-, libXext
-, libXi
-, libXinerama
-, libXrandr
-, libXxf86vm
-, go-licenses
-, pkg-config
-, zip
-, advancecomp
-, nixosTests
-}:
-
-buildGoModule rec {
-  pname = "aaaaxy";
-  version = "1.4.72";
-
-  src = fetchFromGitHub {
-    owner = "divVerent";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-wKnwyjgEV1M5CJR0uxs9vNbF3iJvDPWOqya0iLHXjGw=";
-    fetchSubmodules = true;
-  };
-
-  vendorHash = "sha256-hK5w3JhcYUW5bAUovv/ldHoYcY0oIh5q4LWxiGuP2NQ=";
-
-  buildInputs = [
-    alsa-lib
-    libglvnd
-    libX11 libXcursor libXext libXi libXinerama libXrandr
-    libXxf86vm
-  ];
-
-  nativeBuildInputs = [
-    go-licenses
-    pkg-config
-    zip
-    advancecomp
-  ];
-
-  outputs = [ "out" "testing_infra" ];
-
-  postPatch = ''
-    # Without patching, "go run" fails with the error message:
-    # package github.com/google/go-licenses: no Go files in /build/source/vendor/github.com/google/go-licenses
-    substituteInPlace scripts/build-licenses.sh --replace \
-      '$GO run ''${GO_FLAGS} github.com/google/go-licenses' 'go-licenses'
-
-    patchShebangs scripts/
-    substituteInPlace scripts/regression-test-demo.sh \
-      --replace 'sh scripts/run-timedemo.sh' "$testing_infra/scripts/run-timedemo.sh"
-  '';
-
-  makeFlags = [
-    "BUILDTYPE=release"
-  ];
-
-  buildPhase = ''
-    runHook preBuild
-    AAAAXY_BUILD_USE_VERSION_FILE=true make $makeFlags
-    runHook postBuild
-  '';
-
-  postInstall = ''
-    install -Dm755 'aaaaxy' -t "$out/bin/"
-    install -Dm444 'aaaaxy.svg' -t "$out/share/icons/hicolor/scalable/apps/"
-    install -Dm644 'aaaaxy.png' -t "$out/share/icons/hicolor/128x128/apps/"
-    install -Dm644 'aaaaxy.desktop' -t "$out/share/applications/"
-    install -Dm644 'io.github.divverent.aaaaxy.metainfo.xml' -t "$out/share/metainfo/"
-
-    install -Dm755 'scripts/run-timedemo.sh' -t "$testing_infra/scripts/"
-    install -Dm755 'scripts/regression-test-demo.sh' -t "$testing_infra/scripts/"
-    install -Dm644 'assets/demos/benchmark.dem' -t "$testing_infra/assets/demos/"
-  '';
-
-  passthru.tests = {
-    aaaaxy = nixosTests.aaaaxy;
-  };
-
-  strictDeps = true;
-
-  meta = with lib; {
-    description = "A nonlinear 2D puzzle platformer taking place in impossible spaces";
-    homepage = "https://divverent.github.io/aaaaxy/";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ Luflosi ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/games/alephone/apotheosis-x/default.nix b/nixpkgs/pkgs/games/alephone/apotheosis-x/default.nix
deleted file mode 100644
index 16bed9fad97e..000000000000
--- a/nixpkgs/pkgs/games/alephone/apotheosis-x/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ alephone, requireFile }:
-
-alephone.makeWrapper rec {
-  pname = "apotheosis-x";
-  version = "1.1";
-  desktopName = "Marathon-Apotheosis-X";
-
-  zip = requireFile {
-    name = "Apotheosis_X_1.1.zip";
-    url = "https://www.moddb.com/mods/apotheosis-x/downloads";
-    sha256 = "sha256-4Y/RQQeN4VTpig8ZyxUpVHwzN8W8ciTBCkSzND8SMbs=";
-  };
-
-  sourceRoot = "Apotheosis X 1.1";
-
-  meta = {
-    description = "Total conversion for Marathon Infinity running on the Aleph One engine";
-    homepage = "https://simplici7y.com/items/apotheosis-x-5";
-  };
-}
diff --git a/nixpkgs/pkgs/games/alephone/default.nix b/nixpkgs/pkgs/games/alephone/default.nix
deleted file mode 100644
index 1bf732e446bf..000000000000
--- a/nixpkgs/pkgs/games/alephone/default.nix
+++ /dev/null
@@ -1,102 +0,0 @@
-{ lib, stdenv, fetchurl, alsa-lib, boost, curl, ffmpeg_4, icoutils, libGLU
-, libmad, libogg, libpng, libsndfile, libvorbis, lua, miniupnpc, pkg-config
-, SDL2, SDL2_image, SDL2_net, SDL2_ttf, speex, zziplib, zlib, makeWrapper
-, makeDesktopItem, unzip, alephone }:
-
-let
-  self = stdenv.mkDerivation rec {
-    outputs = [ "out" "icons" ];
-    pname = "alephone";
-    version = "1.6.2";
-
-    src = fetchurl {
-      url = let date = "20230529";
-      in "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${date}/AlephOne-${date}.tar.bz2";
-      sha256 = "sha256-UqhZvOMOxU4W0eLRRTQvGXaqTpWD5KIdXULClHW7Iyc=";
-    };
-
-    nativeBuildInputs = [ pkg-config icoutils ];
-
-    buildInputs = [
-      alsa-lib
-      boost
-      curl
-      ffmpeg_4
-      libGLU
-      libmad
-      libsndfile
-      libogg
-      libpng
-      libvorbis
-      lua
-      miniupnpc
-      SDL2
-      SDL2_image
-      SDL2_net
-      SDL2_ttf
-      speex
-      zziplib
-      zlib
-    ];
-
-    configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ];
-    makeFlags = [ "AR:=$(AR)" ];
-
-    enableParallelBuilding = true;
-
-    postInstall = ''
-      mkdir $icons
-      icotool -x -i 5 -o $icons Resources/Windows/*.ico
-      pushd $icons
-      for x in *_5_48x48x32.png; do
-        mv $x ''${x%_5_48x48x32.png}.png
-      done
-      popd
-    '';
-
-    meta = with lib; {
-      description =
-        "Aleph One is the open source continuation of Bungie’s Marathon 2 game engine";
-      homepage = "https://alephone.lhowon.org/";
-      license = with licenses; [ gpl3 ];
-      maintainers = with maintainers; [ ehmry ];
-      platforms = platforms.linux;
-    };
-  };
-
-in self // {
-  makeWrapper = { pname, desktopName, version, zip, meta
-    , icon ? alephone.icons + "/alephone.png", ... }@extraArgs:
-    stdenv.mkDerivation ({
-      inherit pname version;
-
-      desktopItem = makeDesktopItem {
-        name = desktopName;
-        exec = pname;
-        genericName = pname;
-        categories = [ "Game" ];
-        comment = meta.description;
-        inherit desktopName icon;
-      };
-
-      src = zip;
-
-      nativeBuildInputs = [ makeWrapper unzip ];
-
-      dontConfigure = true;
-      dontBuild = true;
-
-      installPhase = ''
-        mkdir -p $out/bin $out/data/$pname $out/share/applications
-        cp -a * $out/data/$pname
-        cp $desktopItem/share/applications/* $out/share/applications
-        makeWrapper ${alephone}/bin/alephone $out/bin/$pname \
-          --add-flags $out/data/$pname
-      '';
-    } // extraArgs // {
-      meta = alephone.meta // {
-        license = lib.licenses.free;
-        hydraPlatforms = [ ];
-      } // meta;
-    });
-}
diff --git a/nixpkgs/pkgs/games/alephone/durandal/default.nix b/nixpkgs/pkgs/games/alephone/durandal/default.nix
deleted file mode 100644
index cd7927d69a14..000000000000
--- a/nixpkgs/pkgs/games/alephone/durandal/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "durandal";
-  desktopName = "Marathon-Durandal";
-  version = "20230119";
-  icon = alephone.icons + "/marathon2.png";
-
-  zip = fetchurl {
-    url =
-      "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/Marathon2-${version}-Data.zip";
-    sha256 = "sha256-Vbfk5wLgvNEZW2BohMY5mPXaRbNlHxJdWLYTsE8CSwI=";
-  };
-
-  meta = {
-    description = "Second chapter of the Marathon trilogy";
-    longDescription = ''
-      Fresh from your triumph on the starship Marathon, you are seized by the rogue computer Durandal to do his bidding in a distant part of the galaxy. Within the ruins of an ancient civilization, you must seek the remnants of a lost clan and uncover their long-buried secrets. Battle opponents ancient and terrible, with sophisticated weapons and devious strategies, all the while struggling to escape the alien nightmare…
-
-      This release of Marathon 2: Durandal includes the classic graphics, and revamped high-definition textures and monsters from the Xbox Live Arcade edition.
-    '';
-    homepage = "https://alephone.lhowon.org/games/marathon2.html";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/eternal/default.nix b/nixpkgs/pkgs/games/alephone/eternal/default.nix
deleted file mode 100644
index c21284150618..000000000000
--- a/nixpkgs/pkgs/games/alephone/eternal/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ alephone, fetchurl, unrar }:
-
-alephone.makeWrapper rec {
-  pname = "marathon-eternal";
-  version = "1.2.0";
-  desktopName = "Marathon-Eternal";
-
-  zip = fetchurl {
-    url = "http://eternal.bungie.org/files/_releases/EternalXv120.zip";
-    sha256 = "1qrvx0sp9xc8zbpp5yz8jdz458ajzmyv2si7hrppiyawc8dpcwck";
-  };
-
-  sourceRoot = "Eternal 1.2.0";
-
-  meta = {
-    description =
-      "Picking up from the end of the Marathon trilogy, you find yourself suddenly ninety-four years in the future, in the year 2905";
-    homepage = "http://eternal.bungie.org/";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/evil/default.nix b/nixpkgs/pkgs/games/alephone/evil/default.nix
deleted file mode 100644
index a0120348c14e..000000000000
--- a/nixpkgs/pkgs/games/alephone/evil/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ alephone, fetchurl, unrar }:
-
-alephone.makeWrapper rec {
-  pname = "marathon-evil";
-  version = "0";
-  desktopName = "Marathon-Evil";
-
-  zip = fetchurl {
-    url = "http://files3.bungie.org/trilogy/MarathonEvil.zip";
-    sha256 = "08nizbjp2rx10bpqrbhb76as0j2zynmy2c0qa5b482lz1szf9b95";
-  };
-
-  meta = {
-    description = "The first conversion for Marathon Infinity";
-    homepage = "https://alephone.lhowon.org/scenarios.html";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/infinity/default.nix b/nixpkgs/pkgs/games/alephone/infinity/default.nix
deleted file mode 100644
index c49f9a8d2ac7..000000000000
--- a/nixpkgs/pkgs/games/alephone/infinity/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "marathon-infinity";
-  desktopName = "Marathon-Infinity";
-  version = "20230119";
-  icon = alephone.icons + "/marathon-infinity.png";
-
-  zip = fetchurl {
-    url =
-      "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/MarathonInfinity-${version}-Data.zip";
-    sha256 = "sha256-0+xokhzWdXM+L4DBjWnfNVXZve4n1X/Aq6rxNGAFb3Q=";
-  };
-
-  meta = {
-    description = "Third chapter of the Marathon trilogy";
-    longDescription = ''
-      Marathon Infinity takes the closed universe of the Marathon series and blows it wide open. The solo/co-op campaign, “Blood Tides of Lh’owon,” is a 20-level scenario sporting new textures, weapons, and aliens. More than that, the scenario sheds a surprising new light on the story’s characters and the meaning of events. Having defeated the Pfhor and reawakened the ancient remnants of the S’pht, the player now faces a world where friends become enemies and all is not what it seems…
-
-      Marathon Infinity is the most popular Marathon game in online play, and is compatible with hundreds of community-made maps. This release includes the classic graphics, and revamped high-definition textures and weapons.
-    '';
-    homepage = "https://alephone.lhowon.org/games/infinity.html";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/marathon/default.nix b/nixpkgs/pkgs/games/alephone/marathon/default.nix
deleted file mode 100644
index ea295b7dcdce..000000000000
--- a/nixpkgs/pkgs/games/alephone/marathon/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "marathon";
-  desktopName = "Marathon";
-  version = "20230119";
-  icon = alephone.icons + "/marathon.png";
-
-  zip = fetchurl {
-    url =
-      "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/Marathon-${version}-Data.zip";
-    sha256 = "sha256-uz/1ZW9epd1HP/pzTNN3d2EEbOzjj0qpdMkrVoxb8Aw=";
-  };
-
-  meta = {
-    description = "First chapter of the Marathon trilogy";
-    longDescription = ''
-      Alien forces have boarded the interstellar colony ship Marathon. The situation is dire. As a security officer onboard, it is your duty to defend the ship and its crew.
-
-      Experience the start of Bungie’s iconic trilogy with Marathon. This release uses the original Marathon data files for the most authentic experience outside of a classic Mac or emulator.
-    '';
-    homepage = "https://alephone.lhowon.org/games/marathon.html";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix b/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix
deleted file mode 100644
index 6c6de4b88e8f..000000000000
--- a/nixpkgs/pkgs/games/alephone/pathways-into-darkness/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "pathways-into-darkness";
-  desktopName = "Pathways-Into-Darkness";
-  version = "1.1.1";
-
-  zip = fetchurl {
-    url = "http://simplici7y.com/version/file/1185/AOPID_v1.1.1.zip";
-    sha256 = "0x83xjcw5n5s7sw8z6rb6zzhihjkjgk7x7ynnqq917dcklr7bz4g";
-  };
-
-  meta = {
-    description = ''
-      Port of the 1993 mac game "Pathways Into Darkness" by Bungie to the Aleph One engine'';
-    homepage = "http://simplici7y.com/items/aleph-one-pathways-into-darkness";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/pheonix/default.nix b/nixpkgs/pkgs/games/alephone/pheonix/default.nix
deleted file mode 100644
index 90db1aa7c73d..000000000000
--- a/nixpkgs/pkgs/games/alephone/pheonix/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "marathon-pheonix";
-  desktopName = "Marathon-Pheonix";
-  version = "1.3";
-
-  zip = fetchurl {
-    url = "http://simplici7y.com/version/file/998/Marathon_Phoenix_1.3.zip";
-    sha256 = "1r06k0z8km7l9d3njinsrci4jhk8hrnjdcmjd8n5z2qxkqvhn9qj";
-  };
-
-  meta = {
-    description = "A 35-level single player major Marathon conversion";
-    homepage = "http://www.simplici7y.com/items/marathon-phoenix-2";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/red/default.nix b/nixpkgs/pkgs/games/alephone/red/default.nix
deleted file mode 100644
index f24c9010cd63..000000000000
--- a/nixpkgs/pkgs/games/alephone/red/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ alephone, fetchurl, unrar }:
-
-alephone.makeWrapper rec {
-  pname = "marathon-red";
-  version = "0";
-  desktopName = "Marathon-Red";
-
-  zip = fetchurl {
-    url = "http://files3.bungie.org/trilogy/MarathonRED.zip";
-    sha256 = "1p13snlrvn39znvfkxql67crhysn71db2bwsfrkhjkq58wzs6qgw";
-  };
-
-  meta = {
-    description = "Survival horror-esque Marathon conversion";
-    homepage = "https://alephone.lhowon.org/scenarios.html";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix b/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix
deleted file mode 100644
index b59fa4cfeb62..000000000000
--- a/nixpkgs/pkgs/games/alephone/rubicon-x/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "rubicon-x";
-  version = "20150620";
-  desktopName = "Marathon-Rubicon-X";
-
-  zip = fetchurl {
-    url = "http://files5.bungie.org/marathon/marathonRubiconX.zip";
-    sha256 = "095si89wap76pvkvk90zqw7djhrhwb1anjm2s8i503jbcn5n4ipm";
-  };
-
-  sourceRoot = "Rubicon X ƒ";
-
-  meta = {
-    description = "Unofficial forth chapter of the Marathon series";
-    longDescription = ''
-      Rubicon X is a free, cross platform, first person shooter that continues the story of Bungie’s Marathon trilogy. First released as Marathon:Rubicon in 2001, Rubicon X is a complete overhaul of the original. It features all new high-resolution artwork, new and updated maps, and enough surprises to feel like a whole new game.
-    '';
-    homepage = "http://www.marathonrubicon.com/";
-  };
-
-}
diff --git a/nixpkgs/pkgs/games/alephone/yuge/default.nix b/nixpkgs/pkgs/games/alephone/yuge/default.nix
deleted file mode 100644
index 6ae73f984a4f..000000000000
--- a/nixpkgs/pkgs/games/alephone/yuge/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ alephone, fetchurl }:
-
-alephone.makeWrapper rec {
-  pname = "yuge";
-  version = "0";
-  desktopName = "Marathon-Yuge";
-
-  zip = fetchurl {
-    url = "https://lochnits.com/marathon/yuge/files/Mararthon_Yuge.zip";
-    sha256 = "sha256-dZHInYThB/4igpAXbUadXwPvh2Fl3XGZ4ficg7IEnNc=";
-  };
-
-  meta = {
-    description =
-      "30 level Marathon scenario, plus 225 secret levels for many extra hours of gameplay";
-    homepage = "https://lochnits.com/marathon/yuge/";
-  };
-}
diff --git a/nixpkgs/pkgs/games/anki/default.nix b/nixpkgs/pkgs/games/anki/default.nix
index 90f2ee9e53bf..158531172bd8 100644
--- a/nixpkgs/pkgs/games/anki/default.nix
+++ b/nixpkgs/pkgs/games/anki/default.nix
@@ -150,6 +150,7 @@ python3.pkgs.buildPythonApplication {
 
   buildInputs = [
     qt6.qtbase
+    qt6.qtsvg
   ] ++ lib.optional stdenv.isLinux qt6.qtwayland;
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/games/armagetronad/default.nix b/nixpkgs/pkgs/games/armagetronad/default.nix
index 275b878d2619..fb0117f3e93e 100644
--- a/nixpkgs/pkgs/games/armagetronad/default.nix
+++ b/nixpkgs/pkgs/games/armagetronad/default.nix
@@ -82,7 +82,7 @@ let
   let
     # Split the version into the major and minor parts
     versionParts = lib.splitString "-" version;
-    splitVersion = lib.splitString "." (builtins.elemAt versionParts 0);
+    splitVersion = lib.splitVersion (builtins.elemAt versionParts 0);
     majorVersion = builtins.concatStringsSep "." (lib.lists.take 2 splitVersion);
 
     minorVersionPart =  parts: sep: expectedSize:
diff --git a/nixpkgs/pkgs/games/atlauncher/default.nix b/nixpkgs/pkgs/games/atlauncher/default.nix
index da98159cde9e..77fcdaaf8721 100644
--- a/nixpkgs/pkgs/games/atlauncher/default.nix
+++ b/nixpkgs/pkgs/games/atlauncher/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "atlauncher";
-  version = "3.4.34.2";
+  version = "3.4.35.3";
 
   src = fetchurl {
     url = "https://github.com/ATLauncher/ATLauncher/releases/download/v${finalAttrs.version}/ATLauncher-${finalAttrs.version}.jar";
-    hash = "sha256-l9OoHunK0xfY6xbNpjs9lfsVd3USM1GHgutTMMVq8S8=";
+    hash = "sha256-2080rVGBBM3YZmmBVBfMhnCErLzxuRDDi4zmCniJYFY=";
   };
 
   env.ICON = fetchurl {
diff --git a/nixpkgs/pkgs/games/deliantra/0003-swap.patch b/nixpkgs/pkgs/games/deliantra/0003-swap.patch
new file mode 100644
index 000000000000..fa4e2bdec425
--- /dev/null
+++ b/nixpkgs/pkgs/games/deliantra/0003-swap.patch
@@ -0,0 +1,14 @@
+--- a/include/util.h
++++ b/include/util.h
+@@ -449,6 +449,11 @@ struct slice_allocator
+   {
+     p->~Tp ();
+   }
++
++  bool operator ==(const slice_allocator &) const
++  {
++    return true;
++  }
+ };
+ 
+ // basically a memory area, but refcounted
diff --git a/nixpkgs/pkgs/games/deliantra/server.nix b/nixpkgs/pkgs/games/deliantra/server.nix
index 4185a46120e5..08889dd2302d 100644
--- a/nixpkgs/pkgs/games/deliantra/server.nix
+++ b/nixpkgs/pkgs/games/deliantra/server.nix
@@ -35,8 +35,11 @@ stdenv.mkDerivation rec {
   patches = [
     ./0001-abs.patch
     ./0002-datadir.patch
+    ./0003-swap.patch
   ];
 
+  env.CXXFLAGS = "-std=c++11";
+
   postFixup = ''
     wrapProgram $out/bin/cfutil --prefix PERL5LIB : $PERL5LIB
     wrapProgram $out/bin/deliantra-server --prefix PERL5LIB : $PERL5LIB
diff --git a/nixpkgs/pkgs/games/eboard/default.nix b/nixpkgs/pkgs/games/eboard/default.nix
index 49721fd2ce1e..0250208fd48a 100644
--- a/nixpkgs/pkgs/games/eboard/default.nix
+++ b/nixpkgs/pkgs/games/eboard/default.nix
@@ -16,10 +16,6 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  preConfigure = ''
-    patchShebangs ./configure
-  '';
-
   env.NIX_CFLAGS_COMPILE = "-fpermissive";
 
   meta = {
diff --git a/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch b/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch
deleted file mode 100644
index ea10ee4163b4..000000000000
--- a/nixpkgs/pkgs/games/gambatte/fix-scons-paths.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/libgambatte/SConstruct b/libgambatte/SConstruct
-index e882514..87e1eaa 100644
---- a/libgambatte/SConstruct
-+++ b/libgambatte/SConstruct
-@@ -5,7 +5,9 @@ vars = Variables()
- vars.Add('CC')
- vars.Add('CXX')
- 
--env = Environment(CPPPATH = ['src', 'include', '../common'],
-+import os
-+env = Environment(ENV = os.environ,
-+                  CPPPATH = ['src', 'include', '../common'],
-                   CFLAGS = global_cflags + global_defines,
-                   CXXFLAGS = global_cxxflags + global_defines,
-                   variables = vars)
diff --git a/nixpkgs/pkgs/games/heroic/default.nix b/nixpkgs/pkgs/games/heroic/default.nix
index 9aacc0856c4f..239d78f973c8 100644
--- a/nixpkgs/pkgs/games/heroic/default.nix
+++ b/nixpkgs/pkgs/games/heroic/default.nix
@@ -17,18 +17,18 @@
 let appName = "heroic";
 in stdenv.mkDerivation rec {
   pname = "heroic-unwrapped";
-  version = "2.10.0";
+  version = "2.11.0";
 
   src = fetchFromGitHub {
     owner = "Heroic-Games-Launcher";
     repo = "HeroicGamesLauncher";
     rev = "v${version}";
-    hash = "sha256-umPQIxwIahjbO4QbkKEoeSSeYT2UatsTGRPrLgw5KW8=";
+    hash = "sha256-N+9wNlDARE1zdXW/vka6whFNu5CF240zCJ00EDT1cM0=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    hash = "sha256-o5ztk4okH21Op1jqHZfranR12M8B1Y/K95aWb10tf5o=";
+    hash = "sha256-P7Mm9TMNjr2glLQppjJZRMeN9sYKyZWzRaerZIcY3Y8=";
   };
 
   nativeBuildInputs = [
@@ -45,9 +45,6 @@ in stdenv.mkDerivation rec {
     ./remove-drm-support.patch
     # Make Heroic create Steam shortcuts (to non-steam games) with the correct path to heroic.
     ./fix-non-steam-shortcuts.patch
-    # Fix reg add infinite loop
-    # Submitted upstream: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/pull/3210
-    ./fix-infinite-loop.patch
   ];
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/games/heroic/fix-infinite-loop.patch b/nixpkgs/pkgs/games/heroic/fix-infinite-loop.patch
deleted file mode 100644
index 99aae02c3a1a..000000000000
--- a/nixpkgs/pkgs/games/heroic/fix-infinite-loop.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From b698779053b7ba31bd8e69b230e86515e3019bf6 Mon Sep 17 00:00:00 2001
-From: K900 <me@0upti.me>
-Date: Sun, 5 Nov 2023 22:04:32 +0300
-Subject: [PATCH] Force add the registry entry
-
-Otherwise, newer Wine versions will prompt to overwrite it and loop there forever.
----
- src/backend/storeManagers/legendary/setup.ts | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/backend/storeManagers/legendary/setup.ts b/src/backend/storeManagers/legendary/setup.ts
-index 1837106621..b5c2432435 100644
---- a/src/backend/storeManagers/legendary/setup.ts
-+++ b/src/backend/storeManagers/legendary/setup.ts
-@@ -20,7 +20,7 @@ export const legendarySetup = async (appName: string) => {
- 
-   // Fixes games like Fallout New Vegas and Dishonored: Death of the Outsider
-   await runWineCommandOnGame(appName, {
--    commandParts: ['reg', 'add', 'HKEY_CLASSES_ROOT\\com.epicgames.launcher'],
-+    commandParts: ['reg', 'add', 'HKEY_CLASSES_ROOT\\com.epicgames.launcher', '/f'],
-     wait: true,
-     protonVerb: 'waitforexitandrun'
-   })
diff --git a/nixpkgs/pkgs/games/maptool/default.nix b/nixpkgs/pkgs/games/maptool/default.nix
index eed8bac656be..d5fcbc47529b 100644
--- a/nixpkgs/pkgs/games/maptool/default.nix
+++ b/nixpkgs/pkgs/games/maptool/default.nix
@@ -13,15 +13,10 @@
 let
   pname = "maptool";
   version = "1.13.2";
-  repoBase = "https://github.com/RPTools/${pname}";
+  repoBase = "https://github.com/RPTools/maptool";
   src = fetchurl {
-    url = "${repoBase}/releases/download/${version}/MapTool-${version}.jar";
-    hash = "sha256-14ULI1OAk0V4DqiL5IF7DK6pw0NRfmU+omrFP72PblA=";
-  };
-
-  icon = fetchurl {
-    url = "https://raw.githubusercontent.com/RPTools/${pname}/${version}/package/linux/MapTool.png";
-    hash = "sha256-xkVYjMprTanHu8r4b9PHORI8E1aJp+9KDSP5mqCE8ew=";
+    url = "${repoBase}/releases/download/${version}/maptool-${version}-x86_64.pkg.tar.zst";
+    hash = "sha256-Ntmro+t4qpP5BXW20t97ki0wt2NKaK5yQarsxDEKbb0=";
   };
 
   meta = with lib; {
@@ -33,17 +28,20 @@ let
     ];
     license = licenses.agpl3;
     maintainers = with maintainers; [ rhendric ];
+    platforms = [ "x86_64-linux" ];
   };
 
   javafxModules = [ "base" "controls" "media" "swing" "web" "fxml" "graphics" ];
 
+  appClasspath = "share/${pname}";
+
   classpath =
     lib.concatMap (mod: [
       "${openjfx}/modules_src/javafx.${mod}/module-info.java"
       "${openjfx}/modules/javafx.${mod}"
       "${openjfx}/modules_libs/javafx.${mod}"
     ]) javafxModules ++
-    [ src ];
+    [ "$out/${appClasspath}/*" ];
 
   jvmArgs = [
     "-cp" (lib.concatStringsSep ":" classpath)
@@ -76,6 +74,7 @@ stdenvNoCC.mkDerivation {
   inherit pname version src meta;
 
   dontUnpack = true;
+  dontConfigure = true;
   dontBuild = true;
   dontWrapGApps = true;
 
@@ -99,15 +98,20 @@ stdenvNoCC.mkDerivation {
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out/bin
-    makeWrapper ${jre}/bin/java $out/bin/${binName} \
-      "''${gappsWrapperArgs[@]}" \
-      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ ffmpeg ]} \
-      --add-flags '${lib.concatStringsSep " " jvmArgs} net.rptools.maptool.client.LaunchInstructions'
+    dest=$out/${appClasspath}
+    install -dm755 "$dest"
+    bsdtar -xf "$src" -C "$dest" --strip-components 4 opt/maptool/lib/app/{'*.jar',readme}
 
     dest=$out/share/icons/hicolor/256x256/apps
-    mkdir -p "$dest"
-    ln -s ${icon} "$dest/${rdnsName}.png"
+    install -dm755 "$dest"
+    bsdtar -xOf "$src" opt/maptool/lib/MapTool.png > "$dest"/${rdnsName}.png
+
+    dest=$out/bin
+    install -dm755 "$dest"
+    makeWrapper ${jre}/bin/java "$dest"/${binName} \
+      "''${gappsWrapperArgs[@]}" \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ ffmpeg ]} \
+      --add-flags "${lib.concatStringsSep " " jvmArgs} net.rptools.maptool.client.LaunchInstructions"
 
     runHook postInstall
   '';
diff --git a/nixpkgs/pkgs/games/mindustry/default.nix b/nixpkgs/pkgs/games/mindustry/default.nix
index 2bf239579e4a..d901fba57af7 100644
--- a/nixpkgs/pkgs/games/mindustry/default.nix
+++ b/nixpkgs/pkgs/games/mindustry/default.nix
@@ -40,6 +40,8 @@ let
   version = "146";
   buildVersion = makeBuildVersion version;
 
+  gradleWithJdk = gradle.override { java = jdk; };
+
   selectedGlew = if enableWayland then glew-egl else glew;
 
   Mindustry = fetchFromGitHub {
@@ -114,7 +116,7 @@ let
     inherit version unpackPhase patches;
     postPatch = cleanupMindustrySrc;
 
-    nativeBuildInputs = [ gradle perl ];
+    nativeBuildInputs = [ gradleWithJdk perl ];
     # Here we download dependencies for both the server and the client so
     # we only have to specify one hash for 'deps'. Deps can be garbage
     # collected after the build, so this is not really an issue.
@@ -149,7 +151,7 @@ stdenv.mkDerivation rec {
   ];
   nativeBuildInputs = [
     pkg-config
-    gradle
+    gradleWithJdk
     makeWrapper
     jdk
   ] ++ lib.optionals enableClient [
diff --git a/nixpkgs/pkgs/games/minetest/default.nix b/nixpkgs/pkgs/games/minetest/default.nix
index 550f088e8af0..fcea007ff598 100644
--- a/nixpkgs/pkgs/games/minetest/default.nix
+++ b/nixpkgs/pkgs/games/minetest/default.nix
@@ -38,106 +38,101 @@
 , Carbon
 , Cocoa
 , withTouchSupport ? false
+, buildClient ? true
+, buildServer ? true
 }:
 
-with lib;
+stdenv.mkDerivation (finalAttrs: {
+  pname = "minetest";
+  version = "5.8.0";
 
-let
-  boolToCMake = b: if b then "ON" else "OFF";
-
-  irrlichtmtInput = irrlichtmt.override { inherit withTouchSupport; };
-
-  generic = { version, rev ? version, sha256, dataRev ? version, dataSha256, buildClient ? true, buildServer ? false }: let
-    sources = {
-      src = fetchFromGitHub {
-        owner = "minetest";
-        repo = "minetest";
-        inherit rev sha256;
-      };
-      data = fetchFromGitHub {
-        owner = "minetest";
-        repo = "minetest_game";
-        rev = dataRev;
-        sha256 = dataSha256;
-      };
-    };
-  in stdenv.mkDerivation {
-    pname = "minetest";
-    inherit version;
-
-    src = sources.src;
-
-    cmakeFlags = [
-      "-G Ninja"
-      "-DBUILD_CLIENT=${boolToCMake buildClient}"
-      "-DBUILD_SERVER=${boolToCMake buildServer}"
-      "-DENABLE_GETTEXT=1"
-      "-DENABLE_SPATIAL=1"
-      "-DENABLE_SYSTEM_JSONCPP=1"
-
-      # Remove when https://github.com/NixOS/nixpkgs/issues/144170 is fixed
-      "-DCMAKE_INSTALL_BINDIR=bin"
-      "-DCMAKE_INSTALL_DATADIR=share"
-      "-DCMAKE_INSTALL_DOCDIR=share/doc"
-      "-DCMAKE_INSTALL_DOCDIR=share/doc"
-      "-DCMAKE_INSTALL_MANDIR=share/man"
-      "-DCMAKE_INSTALL_LOCALEDIR=share/locale"
-
-    ] ++ optionals buildServer [
-      "-DENABLE_PROMETHEUS=1"
-    ] ++ optionals withTouchSupport [
-      "-DENABLE_TOUCH=TRUE"
-    ];
-
-    env.NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
-
-    nativeBuildInputs = [ cmake doxygen graphviz ninja ];
-
-    buildInputs = [
-      irrlichtmtInput jsoncpp gettext freetype sqlite curl bzip2 ncurses
-      gmp libspatialindex
-    ] ++ [ (if lib.meta.availableOn stdenv.hostPlatform luajit then luajit else lua5_1) ] ++ [
-    ] ++ optionals stdenv.isDarwin [
-      libiconv OpenGL OpenAL Carbon Cocoa
-    ] ++ optionals buildClient [
-      libpng libjpeg libGLU openal libogg libvorbis xorg.libX11
-    ] ++ optionals buildServer [
-      leveldb postgresql hiredis prometheus-cpp
-    ];
-
-    postPatch = ''
-      substituteInPlace src/filesys.cpp --replace "/bin/rm" "${coreutils}/bin/rm"
-    '' + lib.optionalString stdenv.isDarwin ''
-      sed -i '/pagezero_size/d;/fixup_bundle/d' src/CMakeLists.txt
-    '';
-
-    postInstall = lib.optionalString stdenv.isLinux ''
-      mkdir -pv $out/share/minetest/games/minetest_game/
-      cp -rv ${sources.data}/* $out/share/minetest/games/minetest_game/
-      patchShebangs $out
-    '' + lib.optionalString stdenv.isDarwin ''
-      mkdir -p $out/Applications
-      mv $out/minetest.app $out/Applications
-    '';
-
-    meta = with lib; {
-      homepage = "http://minetest.net/";
-      description = "Infinite-world block sandbox game";
-      license = licenses.lgpl21Plus;
-      platforms = platforms.linux ++ platforms.darwin;
-      maintainers = with maintainers; [ pyrolagus fpletz fgaz ];
-    };
+  src = fetchFromGitHub {
+    owner = "minetest";
+    repo = "minetest";
+    rev = finalAttrs.version;
+    hash = "sha256-Oct8nQORSH8PjYs+gHU9QrKObMfapjAlGvycj+AJnOs=";
   };
 
-  v5 = {
-    version = "5.7.0";
-    sha256 = "sha256-9AL6gTmy05yTeYfCq3EMK4gqpBWdHwvJ5Flpzj8hFAE=";
-    dataSha256 = "sha256-wWgeO8513N5jQdWvZrq357fPpAU5ik06mgZraWCQawo=";
+  cmakeFlags = [
+    (lib.cmakeBool "BUILD_CLIENT" buildClient)
+    (lib.cmakeBool "BUILD_SERVER" buildServer)
+    (lib.cmakeBool "ENABLE_PROMETHEUS" buildServer)
+    (lib.cmakeBool "ENABLE_TOUCH" withTouchSupport)
+    # Ensure we use system libraries
+    (lib.cmakeBool "ENABLE_SYSTEM_GMP" true)
+    (lib.cmakeBool "ENABLE_SYSTEM_JSONCPP" true)
+    # Updates are handled by nix anyway
+    (lib.cmakeBool "ENABLE_UPDATE_CHECKER" false)
+    # ...but make it clear that this is a nix package
+    (lib.cmakeFeature "VERSION_EXTRA" "NixOS")
+
+    # Remove when https://github.com/NixOS/nixpkgs/issues/144170 is fixed
+    (lib.cmakeFeature "CMAKE_INSTALL_BINDIR" "bin")
+    (lib.cmakeFeature "CMAKE_INSTALL_DATADIR" "share")
+    (lib.cmakeFeature "CMAKE_INSTALL_DOCDIR" "share/doc/minetest")
+    (lib.cmakeFeature "CMAKE_INSTALL_MANDIR" "share/man")
+    (lib.cmakeFeature "CMAKE_INSTALL_LOCALEDIR" "share/locale")
+
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    doxygen
+    graphviz
+    ninja
+  ];
+
+  buildInputs = [
+    irrlichtmt
+    jsoncpp
+    gettext
+    freetype
+    sqlite
+    curl
+    bzip2
+    ncurses
+    gmp
+    libspatialindex
+  ] ++ lib.optional (lib.meta.availableOn stdenv.hostPlatform luajit) luajit
+    ++ lib.optionals stdenv.isDarwin [
+    libiconv
+    OpenGL
+    OpenAL
+    Carbon
+    Cocoa
+  ] ++ lib.optionals buildClient [
+    libpng
+    libjpeg
+    libGLU
+    openal
+    libogg
+    libvorbis
+    xorg.libX11
+  ] ++ lib.optionals buildServer [
+    leveldb
+    postgresql
+    hiredis
+    prometheus-cpp
+  ];
+
+  postPatch = ''
+    substituteInPlace src/filesys.cpp --replace "/bin/rm" "${coreutils}/bin/rm"
+  '' + lib.optionalString stdenv.isDarwin ''
+    sed -i '/pagezero_size/d;/fixup_bundle/d' src/CMakeLists.txt
+  '';
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    patchShebangs $out
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv $out/minetest.app $out/Applications
+  '';
+
+  meta = with lib; {
+    homepage = "https://minetest.net/";
+    description = "Infinite-world block sandbox game";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ pyrolagus fpletz fgaz ];
   };
-
-  mkClient = version: generic (version // { buildClient = true; buildServer = false; });
-  mkServer = version: generic (version // { buildClient = false; buildServer = true; });
-in {
-  minetestclient_5 = mkClient v5;
-  minetestserver_5 = mkServer v5;
-}
+})
diff --git a/nixpkgs/pkgs/games/openclonk/default.nix b/nixpkgs/pkgs/games/openclonk/default.nix
index 4b526975349b..2249ab213a22 100644
--- a/nixpkgs/pkgs/games/openclonk/default.nix
+++ b/nixpkgs/pkgs/games/openclonk/default.nix
@@ -1,6 +1,6 @@
-{ lib, stdenv, fetchurl, cmake, pkg-config
+{ lib, stdenv, fetchurl, fetchDebianPatch, fetchpatch, cmake, pkg-config
 , SDL2, libvorbis, libogg, libjpeg, libpng, freetype, glew, tinyxml, openal
-, freealut, readline, gcc-unwrapped
+, freealut, readline, libb2, gcc-unwrapped
 , enableSoundtrack ? false # Enable the "Open Clonk Soundtrack - Explorers Journey" by David Oerther
 }:
 
@@ -18,6 +18,21 @@ in stdenv.mkDerivation rec {
     sha256 = "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik";
   };
 
+  patches = [
+    (fetchDebianPatch {
+      pname = "openclonk";
+      version = "8.1";
+      debianRevision = "3";
+      patch = "system-libb2.patch";
+      hash = "sha256-zuH6zxSQXRhnt75092Xwb6XYv8UG391E5Arbnr7ApiI=";
+    })
+    (fetchpatch {
+      name = "fix-gcc-11-build.patch";
+      url = "https://github.com/openclonk/openclonk/commit/e304efde2c8643bbc0fc1ad5e85024982744b233.patch";
+      hash = "sha256-jfVCgeZuYo4x53zhljKcnMDMIBECTRsUSxkl6JaL6HA=";
+    })
+  ];
+
   postInstall = ''
     mv -v $out/games/openclonk $out/bin/
   '' + lib.optionalString enableSoundtrack ''
@@ -28,7 +43,7 @@ in stdenv.mkDerivation rec {
 
   buildInputs = [
     SDL2 libvorbis libogg libjpeg libpng freetype glew tinyxml openal freealut
-    readline
+    readline libb2
   ];
 
   cmakeFlags = [ "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar" "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib" ];
@@ -39,8 +54,8 @@ in stdenv.mkDerivation rec {
     description = "Free multiplayer action game in which you control clonks, small but witty and nimble humanoid beings";
     homepage = "https://www.openclonk.org";
     license = if enableSoundtrack then licenses.unfreeRedistributable else licenses.isc;
+    mainProgram = "openclonk";
     maintainers = with maintainers; [ lheckemann ];
     platforms = [ "x86_64-linux" "i686-linux" ];
-    broken = true;
   };
 }
diff --git a/nixpkgs/pkgs/games/path-of-building/default.nix b/nixpkgs/pkgs/games/path-of-building/default.nix
index 1fa07f92ccee..1d4c4a586cb7 100644
--- a/nixpkgs/pkgs/games/path-of-building/default.nix
+++ b/nixpkgs/pkgs/games/path-of-building/default.nix
@@ -2,13 +2,13 @@
 let
   data = stdenv.mkDerivation(finalAttrs: {
     pname = "path-of-building-data";
-    version = "2.34.1";
+    version = "2.37.0";
 
     src = fetchFromGitHub {
       owner = "PathOfBuildingCommunity";
       repo = "PathOfBuilding";
       rev = "v${finalAttrs.version}";
-      hash = "sha256-i6OCW5Vc9/LfNuiaEeelmXiqP7+WdIklRNRcgWb7L1w=";
+      hash = "sha256-XoDnTmlONloBP60WNY1c6Mfscu2bG5dFh5qUtgqrfrg=";
     };
 
     nativeBuildInputs = [ unzip ];
diff --git a/nixpkgs/pkgs/games/rare/default.nix b/nixpkgs/pkgs/games/rare/default.nix
index 5253d78be575..ac2970bd91e1 100644
--- a/nixpkgs/pkgs/games/rare/default.nix
+++ b/nixpkgs/pkgs/games/rare/default.nix
@@ -8,21 +8,24 @@
 , python
 , qtawesome
 , requests
+, setuptools
 , typing-extensions
 }:
 
 buildPythonApplication rec {
   pname = "rare";
-  version = "1.10.3";
+  version = "1.10.7";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = "Dummerle";
+    owner = "RareDevs";
     repo = "Rare";
     rev = "refs/tags/${version}";
-    hash = "sha256-7KER9gCpqjEKikQTVHsvwX6efCb9L0ut6OBjjLBW2tI=";
+    hash = "sha256-rV6B9tCdwWK9yvEtVyLnv4Lo1WP5xW0f4JcsNZ7iBGI=";
   };
 
   nativeBuildInputs = [
+    setuptools
     qt5.wrapQtAppsHook
   ];
 
@@ -35,11 +38,6 @@ buildPythonApplication rec {
     typing-extensions
   ];
 
-  patches = [
-    # Not able to run pythonRelaxDepsHook because of https://github.com/NixOS/nixpkgs/issues/198342
-    ./legendary-gl-version.patch
-  ];
-
   dontWrapQtApps = true;
 
   postInstall = ''
@@ -56,9 +54,10 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "GUI for Legendary, an Epic Games Launcher open source alternative";
-    homepage = "https://github.com/Dummerle/Rare";
+    homepage = "https://github.com/RareDevs/Rare";
     maintainers = with maintainers; [ wolfangaukang ];
     license = licenses.gpl3Only;
     platforms = platforms.linux;
+    mainProgram = "rare";
   };
 }
diff --git a/nixpkgs/pkgs/games/rare/legendary-gl-version.patch b/nixpkgs/pkgs/games/rare/legendary-gl-version.patch
deleted file mode 100644
index 1ed9659d2b25..000000000000
--- a/nixpkgs/pkgs/games/rare/legendary-gl-version.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/setup.py b/setup.py
-index 2416360..08de818 100644
---- a/setup.py
-+++ b/setup.py
-@@ -7,7 +7,7 @@ with open("README.md", "r") as fh:
- 
- requirements = [
-     "requests<3.0",
--    "legendary-gl==0.20.32",
-+    "legendary-gl~=0.20.32",
-     "setuptools",
-     "wheel",
-     "PyQt5",
diff --git a/nixpkgs/pkgs/games/runelite/default.nix b/nixpkgs/pkgs/games/runelite/default.nix
index 9d390292733f..88afc95d6085 100644
--- a/nixpkgs/pkgs/games/runelite/default.nix
+++ b/nixpkgs/pkgs/games/runelite/default.nix
@@ -11,13 +11,13 @@
 
 maven.buildMavenPackage rec {
   pname = "runelite";
-  version = "2.6.9";
+  version = "2.6.11";
 
   src = fetchFromGitHub {
     owner = "runelite";
     repo = "launcher";
     rev = version;
-    hash = "sha256-wU97uiotKZfui0ir7rmO1WLN3G6lTMxqF6vTyrlax1Q=";
+    hash = "sha256-tu3sEhmFZLMqPiBdPCiNYj5s08hMCo8mXpOCx/BP1EM=";
   };
   mvnHash = "sha256-iGnoAZcJvaVoACi9ozG/f+A8tjvDuwn22bMRyuUU5Jg=";
 
diff --git a/nixpkgs/pkgs/games/sgt-puzzles/default.nix b/nixpkgs/pkgs/games/sgt-puzzles/default.nix
index 35f92f1457b3..a6d0bb52fb39 100644
--- a/nixpkgs/pkgs/games/sgt-puzzles/default.nix
+++ b/nixpkgs/pkgs/games/sgt-puzzles/default.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "sgt-puzzles";
-  version = "20231025.35f7965";
+  version = "20231120.08365fb";
 
   src = fetchurl {
     url = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${version}.tar.gz";
-    hash = "sha256-c9D8lr5V/1BrKQjBsj931uGpnpR5p80CgP0Y/HNc40E=";
+    hash = "sha256-V4OHkF0i3dnvRXmo2UKItibr4Dr8vG1CX2L2/9mL7p4=";
   };
 
   sgt-puzzles-menu = fetchurl {
diff --git a/nixpkgs/pkgs/games/shattered-pixel-dungeon/generic.nix b/nixpkgs/pkgs/games/shattered-pixel-dungeon/generic.nix
index 92427674c18a..fdd87ba2bd19 100644
--- a/nixpkgs/pkgs/games/shattered-pixel-dungeon/generic.nix
+++ b/nixpkgs/pkgs/games/shattered-pixel-dungeon/generic.nix
@@ -13,6 +13,7 @@
 , gradle
 , perl
 , jre
+, libGL
 , libpulseaudio
 , makeDesktopItem
 , copyDesktopItems
@@ -104,7 +105,7 @@ in stdenv.mkDerivation (cleanAttrs // {
     install -Dm644 desktop/build/libs/desktop-*.jar $out/share/${pname}.jar
     mkdir $out/bin
     makeWrapper ${jre}/bin/java $out/bin/${pname} \
-      --prefix LD_LIBRARY_PATH : ${libpulseaudio}/lib \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libGL libpulseaudio ]} \
       --add-flags "-jar $out/share/${pname}.jar"
 
     for s in 16 32 48 64 128 256; do
diff --git a/nixpkgs/pkgs/games/shipwright/default.nix b/nixpkgs/pkgs/games/shipwright/default.nix
index 182e2cf654ae..47487e7f7024 100644
--- a/nixpkgs/pkgs/games/shipwright/default.nix
+++ b/nixpkgs/pkgs/games/shipwright/default.nix
@@ -95,13 +95,13 @@ assert (lib.assertMsg (oot.enable || ootMq.enable) "At least one of 'oot.enable'
 
 stdenv.mkDerivation rec {
   pname = "shipwright";
-  version = "7.0.2";
+  version = "7.1.1";
 
   src = fetchFromGitHub {
     owner = "harbourmasters";
     repo = "shipwright";
     rev = version;
-    hash = "sha256-2VCcczGWSvp6hk8FTA1/T1E1KkrrvWyOdkEw8eiYYnY=";
+    hash = "sha256-zgxJj65wKsQWvVxeCspyHG9YqoYqZxd6GrYptOA8Byk=";
     fetchSubmodules = true;
   };
 
@@ -137,12 +137,6 @@ stdenv.mkDerivation rec {
     libpng
   ];
 
-  patches = [
-    # These patches make soh look inside the nix store for data files (the controller database and the OTRs)
-    ./lus-install-paths.patch
-    ./soh-misc-otr-patches.patch
-  ];
-
   cmakeFlags = [
     "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/lib"
   ];
diff --git a/nixpkgs/pkgs/games/shipwright/lus-install-paths.patch b/nixpkgs/pkgs/games/shipwright/lus-install-paths.patch
deleted file mode 100644
index c14ecccfed0f..000000000000
--- a/nixpkgs/pkgs/games/shipwright/lus-install-paths.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-Submodule libultraship contains modified content
-diff --git a/libultraship/src/CMakeLists.txt b/libultraship/src/CMakeLists.txt
-index f95c3c9..5b967b9 100644
---- a/libultraship/src/CMakeLists.txt
-+++ b/libultraship/src/CMakeLists.txt
-@@ -74,7 +74,10 @@ target_sources(libultraship PRIVATE ${Source_Files__Controller})
- 
- #=================== Core ===================
- 
-+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/install_config.h.in ${CMAKE_BINARY_DIR}/install_config.h @ONLY)
-+
- set(Source_Files__Core
-+    ${CMAKE_BINARY_DIR}/install_config.h
-     ${CMAKE_CURRENT_SOURCE_DIR}/core/Window.h
-     ${CMAKE_CURRENT_SOURCE_DIR}/core/Window.cpp
-     ${CMAKE_CURRENT_SOURCE_DIR}/core/ConsoleVariable.h
-@@ -329,7 +332,7 @@ endif()
- #=================== Packages & Includes ===================
- 
- target_include_directories(libultraship
--    PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../extern
-+    PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../extern ${CMAKE_BINARY_DIR}
-     PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../extern/spdlog/include ${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb
- )
- 
-diff --git a/libultraship/src/core/Context.cpp b/libultraship/src/core/Context.cpp
-index 776333e..fa546e6 100644
---- a/libultraship/src/core/Context.cpp
-+++ b/libultraship/src/core/Context.cpp
-@@ -14,6 +14,7 @@
- #elif defined(__WIIU__)
- #include "port/wiiu/WiiUImpl.h"
- #endif
-+#include "install_config.h"
- 
- namespace LUS {
- std::weak_ptr<Context> Context::mContext;
-@@ -281,6 +282,18 @@ std::string Context::GetShortName() {
- }
- 
- std::string Context::GetAppBundlePath() {
-+#ifdef CMAKE_INSTALL_PREFIX
-+    static const std::string fpath = CMAKE_INSTALL_PREFIX;
-+    static int exists = -1;
-+
-+    if (exists == -1) {
-+        exists = fpath.size() > 0 && std::filesystem::is_directory(fpath);
-+    }
-+
-+    if (exists) {
-+        return fpath;
-+    }
-+#else
- #ifdef __APPLE__
-     FolderManager folderManager;
-     return folderManager.getMainBundlePath();
-@@ -291,6 +304,7 @@ std::string Context::GetAppBundlePath() {
-     if (fpath != NULL) {
-         return std::string(fpath);
-     }
-+#endif
- #endif
- 
-     return ".";
-@@ -304,6 +318,13 @@ std::string Context::GetAppDirectoryPath() {
-     }
- #endif
- 
-+    char *prefpath = SDL_GetPrefPath(NULL, "soh");
-+    if (prefpath != NULL) {
-+        std::string ret(prefpath);
-+        SDL_free(prefpath);
-+        return ret;
-+    }
-+
-     return ".";
- }
- 
-@@ -315,7 +336,24 @@ std::string Context::GetPathRelativeToAppDirectory(const char* path) {
-     return GetAppDirectoryPath() + "/" + path;
- }
- 
-+std::string Context::FindFileFromAllAppDirectories(const char* path) {
-+    std::string fpath;
-+
-+    // app configuration dir (eg. ~/.local/share)
-+    fpath = GetPathRelativeToAppDirectory(path);
-+    if (std::filesystem::exists(fpath)) {
-+        return fpath;
-+    }
-+    // app install dir (eg. /usr/)
-+    fpath = GetPathRelativeToAppBundle(path);
-+    if (std::filesystem::exists(fpath)) {
-+        return fpath;
-+    }
-+    // current dir
-+    return "./" + std::string(path);
-+}
-+
- bool Context::DoesOtrFileExist() {
-     return mOtrFileExists;
- }
--} // namespace LUS
-\ No newline at end of file
-+} // namespace LUS
-diff --git a/libultraship/src/core/Context.h b/libultraship/src/core/Context.h
-index c32f4dd..a9f1639 100644
---- a/libultraship/src/core/Context.h
-+++ b/libultraship/src/core/Context.h
-@@ -26,6 +26,7 @@ class Context {
-     static std::string GetAppDirectoryPath();
-     static std::string GetPathRelativeToAppDirectory(const char* path);
-     static std::string GetPathRelativeToAppBundle(const char* path);
-+    static std::string FindFileFromAllAppDirectories(const char* path);
- 
-     Context(std::string name, std::string shortName);
- 
-diff --git a/libultraship/src/core/libultra/os.cpp b/libultraship/src/core/libultra/os.cpp
-index 9058fe1..7d9387e 100644
---- a/libultraship/src/core/libultra/os.cpp
-+++ b/libultraship/src/core/libultra/os.cpp
-@@ -21,8 +21,8 @@ int32_t osContInit(OSMesgQueue* mq, uint8_t* controllerBits, OSContStatus* statu
-     }
- 
- #ifndef __SWITCH__
--    const char* controllerDb = "gamecontrollerdb.txt";
--    int mappingsAdded = SDL_GameControllerAddMappingsFromFile(controllerDb);
-+    std::string controllerDb = LUS::Context::GetPathRelativeToAppBundle("gamecontrollerdb.txt");
-+    int mappingsAdded = SDL_GameControllerAddMappingsFromFile(controllerDb.c_str());
-     if (mappingsAdded >= 0) {
-         SPDLOG_INFO("Added SDL game controllers from \"{}\" ({})", controllerDb, mappingsAdded);
-     } else {
-@@ -90,4 +90,4 @@ int32_t osRecvMesg(OSMesgQueue* mq, OSMesg* msg, int32_t flag) {
-     mq->validCount--;
-     return 0;
- }
--}
-\ No newline at end of file
-+}
-diff --git a/libultraship/src/install_config.h.in b/libultraship/src/install_config.h.in
-new file mode 100644
-index 0000000..029753c
---- /dev/null
-+++ b/libultraship/src/install_config.h.in
-@@ -0,0 +1 @@
-+#cmakedefine CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@"
diff --git a/nixpkgs/pkgs/games/shipwright/soh-misc-otr-patches.patch b/nixpkgs/pkgs/games/shipwright/soh-misc-otr-patches.patch
deleted file mode 100644
index 2be31092e285..000000000000
--- a/nixpkgs/pkgs/games/shipwright/soh-misc-otr-patches.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-diff --git a/soh/soh/Extractor/Extract.cpp b/soh/soh/Extractor/Extract.cpp
-index a9ddc4f4..f6d45fe2 100644
---- a/soh/soh/Extractor/Extract.cpp
-+++ b/soh/soh/Extractor/Extract.cpp
-@@ -490,28 +490,27 @@ const char* Extractor::GetZapdVerStr() const {
- 
- extern "C" int zapd_main(int argc, char** argv);
- 
--bool Extractor::CallZapd() {
-+bool Extractor::CallZapd(std::string &assetPath) {
-     constexpr int argc = 16;
--    char xmlPath[100];
--    char confPath[100];
-     std::array<const char*, argc> argv;
-     const char* version = GetZapdVerStr();
- 
--    snprintf(xmlPath, 100, "assets/extractor/xmls/%s", version);
--    snprintf(confPath, 100, "assets/extractor/Config_%s.xml", version);
-+    std::string xmlPath = assetPath + "/assets/extractor/xmls/" + version;
-+    std::string confPath = assetPath + "/assets/extractor/Config_" + version + ".xml";
-+    std::string fileListsPath = assetPath + "/assets/extractor/filelists";
- 
-     argv[0] = "ZAPD";
-     argv[1] = "ed";
-     argv[2] = "-i";
--    argv[3] = xmlPath;
-+    argv[3] = xmlPath.c_str();
-     argv[4] = "-b";
-     argv[5] = mCurrentRomPath.c_str();
-     argv[6] = "-fl";
--    argv[7] = "assets/extractor/filelists";
-+    argv[7] = fileListsPath.c_str();
-     argv[8] = "-gsf";
--    argv[9] = "1";
-+    argv[9] = "0";
-     argv[10] = "-rconf";
--    argv[11] = confPath;
-+    argv[11] = confPath.c_str();
-     argv[12] = "-se";
-     argv[13] = "OTR";
-     argv[14] = "--otrfile";
-diff --git a/soh/soh/Extractor/Extract.h b/soh/soh/Extractor/Extract.h
-index e4eb2e5b..3c95b025 100644
---- a/soh/soh/Extractor/Extract.h
-+++ b/soh/soh/Extractor/Extract.h
-@@ -57,7 +57,7 @@ class Extractor {
-     bool IsMasterQuest() const;
- 
-     bool Run(RomSearchMode searchMode = RomSearchMode::Both);
--    bool CallZapd();
-+    bool CallZapd(std::string& assetPath);
-     const char* GetZapdStr();
- };
- #endif
-diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp
-index d192de6a..cc516085 100644
---- a/soh/soh/OTRGlobals.cpp
-+++ b/soh/soh/OTRGlobals.cpp
-@@ -201,11 +201,11 @@ const char* constCameraStrings[] = {
- 
- OTRGlobals::OTRGlobals() {
-     std::vector<std::string> OTRFiles;
--    std::string mqPath = LUS::Context::GetPathRelativeToAppDirectory("oot-mq.otr");
-+    std::string mqPath = LUS::Context::FindFileFromAllAppDirectories("oot-mq.otr");
-     if (std::filesystem::exists(mqPath)) { 
-         OTRFiles.push_back(mqPath);
-     } 
--    std::string ootPath = LUS::Context::GetPathRelativeToAppDirectory("oot.otr");
-+    std::string ootPath = LUS::Context::FindFileFromAllAppDirectories("oot.otr");
-     if (std::filesystem::exists(ootPath)) {
-         OTRFiles.push_back(ootPath);
-     }
-@@ -213,7 +213,7 @@ OTRGlobals::OTRGlobals() {
-     if (std::filesystem::exists(sohOtrPath)) {
-         OTRFiles.push_back(sohOtrPath);
-     }
--    std::string patchesPath = LUS::Context::GetPathRelativeToAppDirectory("mods");
-+    std::string patchesPath = LUS::Context::FindFileFromAllAppDirectories("mods");
-     if (patchesPath.length() > 0 && std::filesystem::exists(patchesPath)) {
-         if (std::filesystem::is_directory(patchesPath)) {
-             for (const auto& p : std::filesystem::recursive_directory_iterator(patchesPath)) {
-@@ -709,8 +709,10 @@ extern "C" void OTRExtScanner() {
- 
- extern "C" void InitOTR() {
- #if not defined (__SWITCH__) && not defined(__WIIU__)
--    if (!std::filesystem::exists(LUS::Context::GetPathRelativeToAppDirectory("oot-mq.otr")) &&
--        !std::filesystem::exists(LUS::Context::GetPathRelativeToAppDirectory("oot.otr"))){
-+    if (!std::filesystem::exists(LUS::Context::FindFileFromAllAppDirectories("oot-mq.otr")) &&
-+        !std::filesystem::exists(LUS::Context::FindFileFromAllAppDirectories("oot.otr"))){
-+        std::string exporterAssetPath = LUS::Context::GetAppBundlePath();
-+
-         bool generatedOtrIsMQ = false;
-         if (Extractor::ShowYesNoBox("No OTR Files", "No OTR files found. Generate one now?") == IDYES) {
-             Extractor extract;
-@@ -718,7 +720,7 @@ extern "C" void InitOTR() {
-                 Extractor::ShowErrorBox("Error", "An error occured, no OTR file was generated. Exiting...");
-                 exit(1);
-             }
--            extract.CallZapd();
-+            extract.CallZapd(exporterAssetPath);
-             generatedOtrIsMQ = extract.IsMasterQuest();
-         } else {
-             exit(1);
-@@ -728,7 +730,7 @@ extern "C" void InitOTR() {
-             if (!extract.Run(generatedOtrIsMQ ? RomSearchMode::Vanilla : RomSearchMode::MQ)) {
-                 Extractor::ShowErrorBox("Error", "An error occured, an OTR file may have been generated by a different step. Continuing...");
-             } else {
--                extract.CallZapd();
-+                extract.CallZapd(exporterAssetPath);
-             }
-         }
-     }
-@@ -2018,4 +2020,4 @@ extern "C" void Gfx_RegisterBlendedTexture(const char* name, u8* mask, u8* repla
- 
- extern "C" void SaveManager_ThreadPoolWait() {
-     SaveManager::Instance->ThreadPoolWait();
--}
-\ No newline at end of file
-+}
diff --git a/nixpkgs/pkgs/games/steam/fhsenv.nix b/nixpkgs/pkgs/games/steam/fhsenv.nix
index 8ba5087ef7fe..7bcc7976f1f9 100644
--- a/nixpkgs/pkgs/games/steam/fhsenv.nix
+++ b/nixpkgs/pkgs/games/steam/fhsenv.nix
@@ -3,11 +3,12 @@
 , extraPkgs ? pkgs: [ ] # extra packages to add to targetPkgs
 , extraLibraries ? pkgs: [ ] # extra packages to add to multiPkgs
 , extraProfile ? "" # string to append to profile
-, extraBwrapArgs ? [ ] # extra arguments to pass to bubblewrap
+, extraPreBwrapCmds ? "" # extra commands to run before calling bubblewrap (real default is at usage site)
+, extraBwrapArgs ? [ ] # extra arguments to pass to bubblewrap (real default is at usage site)
 , extraArgs ? "" # arguments to always pass to steam
 , extraEnv ? { } # Environment variables to pass to Steam
 , withGameSpecificLibraries ? true # include game specific libraries
-}:
+}@args:
 
 let
   commonTargetPkgs = pkgs: with pkgs; [
@@ -16,6 +17,8 @@ let
     lsb-release
     # Errors in output without those
     pciutils
+    # run.sh wants ldconfig
+    glibc.bin
     # Games' dependencies
     xorg.xrandr
     which
@@ -57,7 +60,10 @@ let
     fi
   '';
 
-  envScript = lib.toShellVars extraEnv;
+  envScript = ''
+    # prevents various error messages
+    unset GIO_EXTRA_MODULES
+  '' + lib.toShellVars extraEnv;
 
 in buildFHSEnv rec {
   name = "steam";
@@ -279,7 +285,17 @@ in buildFHSEnv rec {
     exec steam ${extraArgs} "$@"
   '';
 
-  inherit extraBwrapArgs;
+  # steamwebhelper deletes unrelated electron programs' singleton cookies from /tmp on startup:
+  # https://github.com/ValveSoftware/steam-for-linux/issues/9121
+  privateTmp = true;
+
+  extraPreBwrapCmds = ''
+    install -m 1777 -d /tmp/dumps
+  '' + args.extraPreBwrapCmds or "";
+
+  extraBwrapArgs = [
+    "--bind-try /tmp/dumps /tmp/dumps"
+  ] ++ args.extraBwrapArgs or [];
 
   meta =
     if steam != null
diff --git a/nixpkgs/pkgs/games/stepmania/0001-fix-build-with-ffmpeg-4.patch b/nixpkgs/pkgs/games/stepmania/0001-fix-build-with-ffmpeg-4.patch
deleted file mode 100644
index 65686f5546c4..000000000000
--- a/nixpkgs/pkgs/games/stepmania/0001-fix-build-with-ffmpeg-4.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 33d928c54f4b35f8877cacd1e2c77b68b4dddc06 Mon Sep 17 00:00:00 2001
-From: Zane van Iperen <zane@zanevaniperen.com>
-Date: Sun, 7 Nov 2021 15:46:37 +1000
-Subject: [PATCH] fix build with ffmpeg 4
-
----
- src/arch/MovieTexture/MovieTexture_FFMpeg.cpp |  5 +----
- src/arch/MovieTexture/MovieTexture_FFMpeg.h   | 22 +++++++++----------
- 2 files changed, 12 insertions(+), 15 deletions(-)
-
-diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
-index bdf2356..f79fea2 100644
---- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
-+++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
-@@ -445,7 +445,7 @@ RString MovieDecoder_FFMpeg::Open( RString sFile )
- 		return "Couldn't find any video streams";
- 	m_pStream = m_fctx->streams[stream_idx];
- 
--	if( m_pStream->codec->codec_id == avcodec::CODEC_ID_NONE )
-+	if( m_pStream->codec->codec_id == avcodec::AV_CODEC_ID_NONE )
- 		return ssprintf( "Unsupported codec %08x", m_pStream->codec->codec_tag );
- 
- 	RString sError = OpenCodec();
-@@ -474,9 +474,6 @@ RString MovieDecoder_FFMpeg::OpenCodec()
- 	m_pStream->codec->idct_algo         = FF_IDCT_AUTO;
- 	m_pStream->codec->error_concealment = 3;
- 
--	if( pCodec->capabilities & CODEC_CAP_DR1 )
--		m_pStream->codec->flags |= CODEC_FLAG_EMU_EDGE;
--
- 	LOG->Trace("Opening codec %s", pCodec->name );
- 
- 	int ret = avcodec::avcodec_open2( m_pStream->codec, pCodec, NULL );
-diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.h b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
-index f4d25ef..32564e5 100644
---- a/src/arch/MovieTexture/MovieTexture_FFMpeg.h
-+++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
-@@ -64,7 +64,7 @@ private:
- 
- 	avcodec::AVStream *m_pStream;
- 	avcodec::AVFrame *m_Frame;
--	avcodec::PixelFormat m_AVTexfmt; /* PixelFormat of output surface */
-+	avcodec::AVPixelFormat m_AVTexfmt; /* PixelFormat of output surface */
- 	avcodec::SwsContext *m_swsctx;
- 
- 	avcodec::AVFormatContext *m_fctx;
-@@ -90,7 +90,7 @@ static struct AVPixelFormat_t
- {
- 	int bpp;
- 	uint32_t masks[4];
--	avcodec::PixelFormat pf;
-+	avcodec::AVPixelFormat pf;
- 	bool bHighColor;
- 	bool bByteSwapOnLittleEndian;
- 	MovieDecoderPixelFormatYCbCr YUV;
-@@ -101,7 +101,7 @@ static struct AVPixelFormat_t
- 		  0x00FF0000,
- 		  0x0000FF00,
- 		  0x000000FF },
--		avcodec::PIX_FMT_YUYV422,
-+		avcodec::AV_PIX_FMT_YUYV422,
- 		false, /* N/A */
- 		true,
- 		PixelFormatYCbCr_YUYV422,
-@@ -112,7 +112,7 @@ static struct AVPixelFormat_t
- 		  0x00FF0000,
- 		  0xFF000000,
- 		  0x000000FF },
--		avcodec::PIX_FMT_BGRA,
-+		avcodec::AV_PIX_FMT_BGRA,
- 		true,
- 		true,
- 		PixelFormatYCbCr_Invalid,
-@@ -123,7 +123,7 @@ static struct AVPixelFormat_t
- 		  0x0000FF00,
- 		  0x000000FF,
- 		  0xFF000000 },
--		avcodec::PIX_FMT_ARGB,
-+		avcodec::AV_PIX_FMT_ARGB,
- 		true,
- 		true,
- 		PixelFormatYCbCr_Invalid,
-@@ -135,7 +135,7 @@ static struct AVPixelFormat_t
- 		  0x0000FF00,
- 		  0x00FF0000,
- 		  0xFF000000 },
--		avcodec::PIX_FMT_ABGR,
-+		avcodec::AV_PIX_FMT_ABGR,
- 		true,
- 		true,
- 		PixelFormatYCbCr_Invalid,
-@@ -146,7 +146,7 @@ static struct AVPixelFormat_t
- 		  0x00FF0000,
- 		  0x0000FF00,
- 		  0x000000FF },
--		avcodec::PIX_FMT_RGBA,
-+		avcodec::AV_PIX_FMT_RGBA,
- 		true,
- 		true,
- 		PixelFormatYCbCr_Invalid,
-@@ -157,7 +157,7 @@ static struct AVPixelFormat_t
- 		  0x00FF00,
- 		  0x0000FF,
- 		  0x000000 },
--		avcodec::PIX_FMT_RGB24,
-+		avcodec::AV_PIX_FMT_RGB24,
- 		true,
- 		true,
- 		PixelFormatYCbCr_Invalid,
-@@ -168,7 +168,7 @@ static struct AVPixelFormat_t
- 		  0x00FF00,
- 		  0xFF0000,
- 		  0x000000 },
--		avcodec::PIX_FMT_BGR24,
-+		avcodec::AV_PIX_FMT_BGR24,
- 		true,
- 		true,
- 		PixelFormatYCbCr_Invalid,
-@@ -179,12 +179,12 @@ static struct AVPixelFormat_t
- 		  0x03E0,
- 		  0x001F,
- 		  0x0000 },
--		avcodec::PIX_FMT_RGB555,
-+		avcodec::AV_PIX_FMT_RGB555,
- 		false,
- 		false,
- 		PixelFormatYCbCr_Invalid,
- 	},
--	{ 0, { 0,0,0,0 }, avcodec::PIX_FMT_NB, true, false, PixelFormatYCbCr_Invalid }
-+	{ 0, { 0,0,0,0 }, avcodec::AV_PIX_FMT_NB, true, false, PixelFormatYCbCr_Invalid }
- };
- 
- #endif
--- 
-2.31.1
-
diff --git a/nixpkgs/pkgs/games/stepmania/default.nix b/nixpkgs/pkgs/games/stepmania/default.nix
index 65b9bfff189e..bfd871a2a1c1 100644
--- a/nixpkgs/pkgs/games/stepmania/default.nix
+++ b/nixpkgs/pkgs/games/stepmania/default.nix
@@ -1,21 +1,40 @@
-{ stdenv, lib, fetchFromGitHub, cmake, nasm
-, gtk2, glib, ffmpeg_4, alsa-lib, libmad, libogg, libvorbis
-, glew, libpulseaudio, udev
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, nasm
+, alsa-lib
+, ffmpeg_6
+, glew
+, glib
+, gtk2
+, libmad
+, libogg
+, libpulseaudio
+, libvorbis
+, udev
+, xorg
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "stepmania";
-  version = "5.1.0-b2";
+  version = "5.1.0-b2-unstable-2022-11-14";
 
   src = fetchFromGitHub {
     owner = "stepmania";
     repo  = "stepmania";
-    rev   = "v${version}";
-    sha256 = "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn";
+    rev   = "d55acb1ba26f1c5b5e3048d6d6c0bd116625216f";
+    hash = "sha256-49H2Q61R4l/G0fWsjCjiAUXeWwG3lcsDpV5XvR3l3QE=";
   };
 
   patches = [
-    ./0001-fix-build-with-ffmpeg-4.patch
+    # https://github.com/stepmania/stepmania/pull/2247
+    (fetchpatch {
+      name = "fix-building-with-ffmpeg6.patch";
+      url = "https://github.com/stepmania/stepmania/commit/3fef5ef60b7674d6431f4e1e4ba8c69b0c21c023.patch";
+      hash = "sha256-m+5sP+mIpcSjioRBdzChqja5zwNcwdSNAfvSJ2Lww+g=";
+    })
   ];
 
   postPatch = ''
@@ -25,8 +44,17 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake nasm ];
 
   buildInputs = [
-    gtk2 glib ffmpeg_4 alsa-lib libmad libogg libvorbis
-    glew libpulseaudio udev
+    alsa-lib
+    ffmpeg_6
+    glew
+    glib
+    gtk2
+    libmad
+    libogg
+    libpulseaudio
+    libvorbis
+    udev
+    xorg.libXtst
   ];
 
   cmakeFlags = [
@@ -38,6 +66,11 @@ stdenv.mkDerivation rec {
   postInstall = ''
     mkdir -p $out/bin
     ln -s $out/stepmania-5.1/stepmania $out/bin/stepmania
+
+    mkdir -p $out/share/
+    cp -r $src/icons $out/share/
+
+    install -Dm444 $src/stepmania.desktop -t $out/share/applications
   '';
 
   meta = with lib; {
@@ -45,7 +78,7 @@ stdenv.mkDerivation rec {
     description = "Free dance and rhythm game for Windows, Mac, and Linux";
     platforms = platforms.linux;
     license = licenses.mit; # expat version
-    maintainers = [ ];
+    maintainers = with maintainers; [ h7x4 ];
     # never built on aarch64-linux since first introduction in nixpkgs
     broken = stdenv.isLinux && stdenv.isAarch64;
     mainProgram = "stepmania";
diff --git a/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch b/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch
deleted file mode 100644
index d58aa3a8129f..000000000000
--- a/nixpkgs/pkgs/games/tennix/fix_FTBFS.patch
+++ /dev/null
@@ -1,288 +0,0 @@
-From: Thomas Perl <m@thp.io>
-Description: Fix FTBFS 
-Origin: upstream, https://repo.or.cz/w/tennix.git/commitdiff/6144cb7626dfdc0820a0036af83a531e8e68bae6
-Bug-Debian:  https://bugs.debian.org/664907
-
---- tennix-1.1.orig/archivetool.cc
-+++ tennix-1.1/archivetool.cc
-@@ -24,6 +24,7 @@
- #include <assert.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <libgen.h>
- #include <sys/stat.h>
- 
- #include "archive.hh"
---- tennix-1.1.orig/game.c
-+++ tennix-1.1/game.c
-@@ -388,6 +388,9 @@ void step(GameState* s) {
-                         s->ball.move_x = 4.0 + 3.0*PLAYER(s, p).power/PLAYER_POWER_MAX;
-                         s->ball.move_z = 1.1*PLAYER(s, p).power/PLAYER_POWER_MAX;
-                         break;
-+                    default:
-+                        assert(false);
-+                        break;
-                 }
-                 s->ball.move_y = get_move_y( s, p);
-                 s->sound_events ^= SOUND_EVENT_RACKET;
---- tennix-1.1.orig/network.h
-+++ tennix-1.1/network.h
-@@ -103,19 +103,19 @@ void
- net_serialize_ball(const Ball* src, NetworkBall* dest);
- 
- void
--net_unserialize_ball(const NetworkBall* src, Ball* dest);
-+net_unserialize_ball(NetworkBall* src, Ball* dest);
- 
- void
- net_serialize_player(const Player* src, NetworkPlayer* dest);
- 
- void
--net_unserialize_player(const NetworkPlayer* src, Player* dest);
-+net_unserialize_player(NetworkPlayer* src, Player* dest);
- 
- void
- net_serialize_gamestate(const GameState* src, NetworkGameState* dest);
- 
- void
--net_unserialize_gamestate(const NetworkGameState* src, GameState* dest);
-+net_unserialize_gamestate(NetworkGameState* src, GameState* dest);
- 
- #endif
- 
---- tennix-1.1.orig/locations.h
-+++ tennix-1.1/locations.h
-@@ -155,7 +155,7 @@ static Location locations[] = {
- #endif
- 
-     /* End marker */
--    { NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, false }
-+    { NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, false, false, 0, 0 }
- };
- 
- unsigned int location_count()
---- tennix-1.1.orig/tennix.cc
-+++ tennix-1.1/tennix.cc
-@@ -461,7 +461,7 @@ int main( int argc, char** argv) {
-                 start_fade();
-                 gameloop(current_game, connection);
-                 SDL_Delay(150);
--                while(SDL_PollEvent(&e));
-+                while (SDL_PollEvent(&e)) {};
- #ifdef ENABLE_FPS_LIMIT
-                 frames = 0;
-                 ft = SDL_GetTicks();
---- tennix-1.1.orig/SDL_rotozoom.c
-+++ tennix-1.1/SDL_rotozoom.c
-@@ -365,6 +365,9 @@ int zoomSurfaceRGBA(SDL_Surface * src, S
- 

- int zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst, int flipx, int flipy)

- {

-+    (void)flipx;

-+    (void)flipy;

-+

-     Uint32 x, y, sx, sy, *sax, *say, *csax, *csay, csx, csy;

-     Uint8 *sp, *dp, *csp;

-     int dgap;

-@@ -393,7 +396,7 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
-      */

-     csx = 0;

-     csax = sax;

--    for (x = 0; x < dst->w; x++) {

-+    for (x = 0; x < (Uint32)dst->w; x++) {

- 	csx += sx;

- 	*csax = (csx >> 16);

- 	csx &= 0xffff;

-@@ -401,7 +404,7 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
-     }

-     csy = 0;

-     csay = say;

--    for (y = 0; y < dst->h; y++) {

-+    for (y = 0; y < (Uint32)dst->h; y++) {

- 	csy += sy;

- 	*csay = (csy >> 16);

- 	csy &= 0xffff;

-@@ -410,13 +413,13 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
- 

-     csx = 0;

-     csax = sax;

--    for (x = 0; x < dst->w; x++) {

-+    for (x = 0; x < (Uint32)dst->w; x++) {

- 	csx += (*csax);

- 	csax++;

-     }

-     csy = 0;

-     csay = say;

--    for (y = 0; y < dst->h; y++) {

-+    for (y = 0; y < (Uint32)dst->h; y++) {

- 	csy += (*csay);

- 	csay++;

-     }

-@@ -432,10 +435,10 @@ int zoomSurfaceY(SDL_Surface * src, SDL_
-      * Draw 

-      */

-     csay = say;

--    for (y = 0; y < dst->h; y++) {

-+    for (y = 0; y < (Uint32)dst->h; y++) {

- 	csax = sax;

- 	sp = csp;

--	for (x = 0; x < dst->w; x++) {

-+	for (x = 0; x < (Uint32)dst->w; x++) {

- 	    /*

- 	     * Draw 

- 	     */

-@@ -801,6 +804,8 @@ SDL_Surface* rotateSurface90Degrees(SDL_
- void rotozoomSurfaceSizeTrig(int width, int height, double angle, double zoomx, double zoomy, int *dstwidth, int *dstheight, 

- 			     double *canglezoom, double *sanglezoom)

- {

-+    (void)zoomy;

-+

-     double x, y, cx, cy, sx, sy;

-     double radangle;

-     int dstwidthhalf, dstheighthalf;

---- tennix-1.1.orig/network.c
-+++ tennix-1.1/network.c
-@@ -183,7 +183,7 @@ net_serialize_ball(const Ball* src, Netw
- }
- 
- void
--net_unserialize_ball(const NetworkBall* src, Ball* dest)
-+net_unserialize_ball(NetworkBall* src, Ball* dest)
- {
-     assert(src != NULL && dest != NULL);
-     dest->x = unpack_float(SDLNet_Read32(&(src->x)), -WIDTH, WIDTH*2);
-@@ -213,7 +213,7 @@ net_serialize_player(const Player* src,
- }
- 
- void
--net_unserialize_player(const NetworkPlayer* src, Player* dest)
-+net_unserialize_player(NetworkPlayer* src, Player* dest)
- {
-     assert(src != NULL && dest != NULL);
-     dest->x = unpack_float(SDLNet_Read32(&(src->x)), 0, WIDTH*1.2);
-@@ -221,7 +221,7 @@ net_unserialize_player(const NetworkPlay
-     dest->power = unpack_float(SDLNet_Read32(&(src->power)), 0, 110);
-     dest->use_power = src->use_power;
-     dest->score = src->score;
--    dest->desire = src->desire;
-+    dest->desire = (PlayerDesire)src->desire;
-     dest->game = src->game;
-     memcpy(dest->sets, src->sets, sizeof(unsigned char)*(SETS_TO_WIN*2));
-     dest->accelerate = unpack_float(SDLNet_Read32(&(src->accelerate)), 0, 200);
-@@ -250,7 +250,7 @@ net_serialize_gamestate(const GameState*
- }
- 
- void
--net_unserialize_gamestate(const NetworkGameState* src, GameState* dest)
-+net_unserialize_gamestate(NetworkGameState* src, GameState* dest)
- {
-     int p;
- 
---- tennix-1.1.orig/makefile
-+++ tennix-1.1/makefile
-@@ -27,24 +27,23 @@ ifeq ($(MKCALLGRAPH),1)
-   LD        =  nccld
- endif
- 
--RELEASE   =  1.1
--
--UNAME = $(shell uname)
-+RELEASE = 1.1.1
- 
- PREFIX ?= /usr/local
- BINDIR ?= $(PREFIX)/bin
- DATAROOTDIR ?= $(PREFIX)/share
- DATADIR ?= $(DATAROOTDIR)/games
- 
--LIBS =
--CFLAGS += -W -Wall -ansi -pedantic -Wcast-qual -Wwrite-strings -DVERSION=\"$(RELEASE)\" -O2 -DPREFIX=\"$(PREFIX)\" -g
-+CFLAGS += -W -Wall -DVERSION=\"$(RELEASE)\" -O2 -DPREFIX=\"$(PREFIX)\"
- CXXFLAGS += $(CFLAGS)
- 
- USE_PYTHON ?= 1
- 
- ifeq ($(USE_PYTHON),1)
--  CFLAGS += `python-config --includes` -DTENNIX_PYTHON
--  LIBS += `python-config --libs`
-+  PYTHON_INCLUDES := $(shell python-config --includes)
-+  PYTHON_LIBS := $(shell python-config --libs)
-+  CFLAGS += $(PYTHON_INCLUDES) -DTENNIX_PYTHON
-+  LIBS += $(PYTHON_LIBS)
- endif
- 
- ifeq ($(NONFREE_LOCATIONS),1)
-@@ -67,17 +66,14 @@ ifeq ($(MAEMO),1)
-   CFLAGS += -DMAEMO
- endif
- 
--ifeq ($(UNAME),Darwin)
--  SDLLIBS=$$(sdl-config --prefix)/lib
--  LIBS += $$(sdl-config --static-libs) $(SDLLIBS)/libSDL_mixer.a $(SDLLIBS)/libSDL_image.a $(SDLLIBS)/libSDL_ttf.a $(SDLLIBS)/libSDL_net.a $$(freetype-config --prefix)/lib/libfreetype.a
--  CFLAGS += $$(sdl-config --cflags) -lz
--else
--  LIBS += $$(sdl-config --libs) -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_net
--  CFLAGS += $$(sdl-config --cflags)
--endif
-+SDL_LIBS := $(shell sdl-config --libs)
-+SDL_CFLAGS := $(shell sdl-config --cflags)
-+
-+LIBS += $(SDL_LIBS) -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_net
-+CFLAGS += $(SDL_CFLAGS)
- 
--SRC = tennix.cc game.c graphics.cc input.c util.c sound.cc animation.c network.c
- OBJ = tennix.o game.o graphics.o input.o util.o sound.o animation.o archive.o SDL_rotozoom.o network.o
-+
- ifeq ($(MSYSTEM),MINGW32)
-   OBJ += tennixres.o
- endif
---- tennix-1.1.orig/game.h
-+++ tennix-1.1/game.h
-@@ -98,6 +98,13 @@ typedef struct {
-     bool inhibit_gravity;
- } Ball;
- 
-+enum PlayerDesire {
-+    DESIRE_NORMAL,
-+    DESIRE_TOPSPIN,
-+    DESIRE_SMASH,
-+    DESIRE_MAX
-+};
-+
- typedef struct {
-     InputDevice* input;
-     char input_device_index;
-@@ -106,9 +113,9 @@ typedef struct {
-     float power;
-     bool use_power;
-     unsigned char score;
--    unsigned char desire;
-+    PlayerDesire desire;
-     bool type; /* is this player ai-controlled or human? */
--    char game; /* score for the current game */
-+    int game; /* score for the current game */
-     unsigned char sets[SETS_TO_WIN*2]; /* score for each set */
-     float accelerate; /* a value [0..1] how fast the user accelerates */
- } Player;
-@@ -118,13 +125,6 @@ enum {
-     PLAYER_TYPE_AI
- };
- 
--enum {
--    DESIRE_NORMAL,
--    DESIRE_TOPSPIN,
--    DESIRE_SMASH,
--    DESIRE_MAX
--};
--
- /* wait 2 seconds before we score the game */
- #define SCORING_DELAY 1000
- 
-@@ -161,7 +161,7 @@ enum {
- 
- typedef struct {
-     const Location* location;
--    char current_location; /* index of loc. in global location table */
-+    int current_location; /* index of loc. in global location table */
-     Ball ball;
-     Player players[MAXPLAYERS];
-     unsigned char serving_player;
diff --git a/nixpkgs/pkgs/games/unciv/default.nix b/nixpkgs/pkgs/games/unciv/default.nix
index 70971fb1ad37..5a5d61137190 100644
--- a/nixpkgs/pkgs/games/unciv/default.nix
+++ b/nixpkgs/pkgs/games/unciv/default.nix
@@ -25,11 +25,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "unciv";
-  version = "4.8.13";
+  version = "4.9.6";
 
   src = fetchurl {
     url = "https://github.com/yairm210/Unciv/releases/download/${version}/Unciv.jar";
-    hash = "sha256-16TpsKNLcm6lbi4exYxDZWfmRsvfAhT1ktP36zC9Psg=";
+    hash = "sha256-YF8lnICqTyPJWD0BqJ7GUu+ywGhPOhNUUzTPIq4QpPM=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/games/warzone2100/default.nix b/nixpkgs/pkgs/games/warzone2100/default.nix
index 9979d16247c0..be2525c98716 100644
--- a/nixpkgs/pkgs/games/warzone2100/default.nix
+++ b/nixpkgs/pkgs/games/warzone2100/default.nix
@@ -46,11 +46,11 @@ in
 
 stdenv.mkDerivation rec {
   inherit pname;
-  version  = "4.4.0";
+  version  = "4.4.2";
 
   src = fetchurl {
-    url = "mirror://sourceforge/${pname}/releases/${version}/${pname}_src.tar.xz";
-    hash = "sha256-Ul77OihJWIH9H6FUpibGDjqX1BY4DWDQ3bR4lRDY9+U=";
+    url = "mirror://sourceforge/project/warzone2100/releases/${version}/warzone2100_src.tar.xz";
+    hash = "sha256-O5Yqxqp1vKYr8uvAZ1SdsI/kocOzg0KRCirCqqvLrN4=";
   };
 
   buildInputs = [
@@ -88,9 +88,6 @@ stdenv.mkDerivation rec {
                       --replace '"which "' '"${which}/bin/which "'
     substituteInPlace lib/exceptionhandler/exceptionhandler.cpp \
                       --replace "which %s" "${which}/bin/which %s"
-    # https://github.com/Warzone2100/warzone2100/pull/3353
-    substituteInPlace lib/ivis_opengl/gfx_api_vk.cpp \
-      --replace vk::throwResultException vk::detail::throwResultException
   '';
 
   cmakeFlags = [