about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-08-23 10:09:14 +0000
committerAlyssa Ross <hi@alyssa.is>2023-08-26 09:07:03 +0000
commit63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f (patch)
treed58934cb48f9c953b19a0d0d5cffc0d0c5561471 /nixpkgs/pkgs/games
parentc4eef3dacb2a3d359561f30917d9e3cc4e041be9 (diff)
parent91a22f76cd1716f9d0149e8a5c68424bb691de15 (diff)
downloadnixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.gz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.bz2
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.lz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.xz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.zst
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
Diffstat (limited to 'nixpkgs/pkgs/games')
-rw-r--r--nixpkgs/pkgs/games/aaaaxy/default.nix6
-rw-r--r--nixpkgs/pkgs/games/anki/bin.nix2
-rw-r--r--nixpkgs/pkgs/games/anki/default.nix1
-rw-r--r--nixpkgs/pkgs/games/atlauncher/default.nix6
-rw-r--r--nixpkgs/pkgs/games/blackshades/default.nix4
-rw-r--r--nixpkgs/pkgs/games/blobby/default.nix6
-rw-r--r--nixpkgs/pkgs/games/cdogs-sdl/default.nix4
-rw-r--r--nixpkgs/pkgs/games/cutechess/default.nix45
-rw-r--r--nixpkgs/pkgs/games/ddnet/default.nix6
-rw-r--r--nixpkgs/pkgs/games/etlegacy/default.nix264
-rw-r--r--nixpkgs/pkgs/games/ferium/default.nix6
-rw-r--r--nixpkgs/pkgs/games/forge-mtg/default.nix6
-rw-r--r--nixpkgs/pkgs/games/fteqw/default.nix2
-rw-r--r--nixpkgs/pkgs/games/fteqw/generic.nix15
-rw-r--r--nixpkgs/pkgs/games/gogdl/default.nix14
-rw-r--r--nixpkgs/pkgs/games/gscrabble/default.nix4
-rw-r--r--nixpkgs/pkgs/games/gshogi/default.nix3
-rw-r--r--nixpkgs/pkgs/games/heroic/default.nix23
-rw-r--r--nixpkgs/pkgs/games/heroic/fix-non-steam-shortcuts.patch13
-rw-r--r--nixpkgs/pkgs/games/heroic/remove-drm-support.patch24
-rw-r--r--nixpkgs/pkgs/games/jumpnbump/default.nix4
-rw-r--r--nixpkgs/pkgs/games/keeperrl/default.nix18
-rw-r--r--nixpkgs/pkgs/games/klavaro/default.nix10
-rw-r--r--nixpkgs/pkgs/games/legendary-gl/default.nix10
-rw-r--r--nixpkgs/pkgs/games/lgames/lbreakout2/default.nix12
-rw-r--r--nixpkgs/pkgs/games/mindustry/default.nix2
-rwxr-xr-xnixpkgs/pkgs/games/minecraft-servers/update.py7
-rw-r--r--nixpkgs/pkgs/games/minecraft-servers/versions.json12
-rw-r--r--nixpkgs/pkgs/games/minecraft/default.nix3
-rw-r--r--nixpkgs/pkgs/games/minesweep-rs/default.nix6
-rw-r--r--nixpkgs/pkgs/games/nile/default.nix84
-rw-r--r--nixpkgs/pkgs/games/oh-my-git/default.nix18
-rw-r--r--nixpkgs/pkgs/games/openarena/default.nix147
-rw-r--r--nixpkgs/pkgs/games/openra_2019/common.nix2
-rw-r--r--nixpkgs/pkgs/games/openttd/default.nix26
-rw-r--r--nixpkgs/pkgs/games/openttd/jgrpp.nix10
-rw-r--r--nixpkgs/pkgs/games/openxcom/default.nix48
-rw-r--r--nixpkgs/pkgs/games/osu-lazer/bin.nix8
-rw-r--r--nixpkgs/pkgs/games/osu-lazer/default.nix4
-rw-r--r--nixpkgs/pkgs/games/osu-lazer/deps.nix8
-rw-r--r--nixpkgs/pkgs/games/path-of-building/default.nix77
-rw-r--r--nixpkgs/pkgs/games/prismlauncher/wrapper.nix17
-rw-r--r--nixpkgs/pkgs/games/quake3/ioquake/default.nix58
-rw-r--r--nixpkgs/pkgs/games/qzdl/default.nix65
-rw-r--r--nixpkgs/pkgs/games/qzdl/non-bundled-inih.patch36
-rw-r--r--nixpkgs/pkgs/games/steam/default.nix9
-rw-r--r--nixpkgs/pkgs/games/unciv/default.nix4
-rw-r--r--nixpkgs/pkgs/games/urbanterror/default.nix143
-rw-r--r--nixpkgs/pkgs/games/vintagestory/default.nix40
-rw-r--r--nixpkgs/pkgs/games/wesnoth/default.nix13
50 files changed, 930 insertions, 425 deletions
diff --git a/nixpkgs/pkgs/games/aaaaxy/default.nix b/nixpkgs/pkgs/games/aaaaxy/default.nix
index 1db4f31e79a7..64f9de8c92b8 100644
--- a/nixpkgs/pkgs/games/aaaaxy/default.nix
+++ b/nixpkgs/pkgs/games/aaaaxy/default.nix
@@ -19,17 +19,17 @@
 
 buildGoModule rec {
   pname = "aaaaxy";
-  version = "1.4.39";
+  version = "1.4.42";
 
   src = fetchFromGitHub {
     owner = "divVerent";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-eawsTvPJwWKDSZd/2XBneitoydSRxEAU5RAPZgE6NSo=";
+    hash = "sha256-GD7SgxGZRivVbgrzAe7U0EgkTmrXFvSGzzZUOE7CwbY=";
     fetchSubmodules = true;
   };
 
-  vendorHash = "sha256-uHTYp8PBXdQ2w+kjxLVvUOzOvDfXF53lcBriK8sif7A=";
+  vendorHash = "sha256-1w+/tmF73hN5y5vj++JCX+T5RQ/PF747wmAbN9i7Bgs=";
 
   buildInputs = [
     alsa-lib
diff --git a/nixpkgs/pkgs/games/anki/bin.nix b/nixpkgs/pkgs/games/anki/bin.nix
index 2e97bb91d65f..9a66de369266 100644
--- a/nixpkgs/pkgs/games/anki/bin.nix
+++ b/nixpkgs/pkgs/games/anki/bin.nix
@@ -58,7 +58,7 @@ let
     targetPkgs = pkgs: (with pkgs; [ xorg.libxkbfile xcb-util-cursor-HEAD krb5 ]);
 
     runScript = writeShellScript "anki-wrapper.sh" ''
-      exec ${unpacked}/bin/anki ${ lib.strings.escapeShellArgs commandLineArgs }
+      exec ${unpacked}/bin/anki ${ lib.strings.escapeShellArgs commandLineArgs } "$@"
     '';
 
     extraInstallCommands = ''
diff --git a/nixpkgs/pkgs/games/anki/default.nix b/nixpkgs/pkgs/games/anki/default.nix
index 299897afda49..fd8d29ee1b39 100644
--- a/nixpkgs/pkgs/games/anki/default.nix
+++ b/nixpkgs/pkgs/games/anki/default.nix
@@ -46,7 +46,6 @@ let
   };
 
   anki-build-python = python3.withPackages (ps: with ps; [
-    pip
     mypy-protobuf
   ]);
 
diff --git a/nixpkgs/pkgs/games/atlauncher/default.nix b/nixpkgs/pkgs/games/atlauncher/default.nix
index 913b4faffb8f..4f45477ecec9 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.28.1";
+  version = "3.4.30.0";
 
   src = fetchurl {
     url = "https://github.com/ATLauncher/ATLauncher/releases/download/v${finalAttrs.version}/ATLauncher-${finalAttrs.version}.jar";
-    hash = "sha256-IIwDMazxUMQ7nGQk/4VEZicgCmCR4oR8UYtO36pCEq4=";
+    hash = "sha256-eSb+qH/ZoPpeOyIuoJsEpecG7uUyh0vkqZzNuxriRuI=";
   };
 
   dontUnpack = true;
@@ -36,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
   desktopItems = [
     (makeDesktopItem {
       name = finalAttrs.pname;
-      exec = finalAttrs.pname;
+      exec = "${finalAttrs.pname} --no-launcher-update true";
       icon = fetchurl {
         url = "https://avatars.githubusercontent.com/u/7068667";
         hash = "sha256-YmEkxf4rZxN3jhiib0UtdUDDcn9lw7IMbiEucBL7b9o=";
diff --git a/nixpkgs/pkgs/games/blackshades/default.nix b/nixpkgs/pkgs/games/blackshades/default.nix
index c107b068816c..80fc72341501 100644
--- a/nixpkgs/pkgs/games/blackshades/default.nix
+++ b/nixpkgs/pkgs/games/blackshades/default.nix
@@ -6,7 +6,7 @@
 , libGLU
 , libsndfile
 , openal
-, zigHook
+, zig_0_9
 }:
 
 stdenv.mkDerivation (finalAttrs: {
@@ -21,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-Hg+VcWI28GzY/CPm1lUftP0RGztOnzizrKJQVTmeJ9I=";
   };
 
-  nativeBuildInputs = [ zigHook ];
+  nativeBuildInputs = [ zig_0_9.hook ];
 
   buildInputs = [
     glfw
diff --git a/nixpkgs/pkgs/games/blobby/default.nix b/nixpkgs/pkgs/games/blobby/default.nix
index c5c6ed01ecc5..27371b905417 100644
--- a/nixpkgs/pkgs/games/blobby/default.nix
+++ b/nixpkgs/pkgs/games/blobby/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "blobby-volley";
-  version = "1.1";
+  version = "1.1.1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/blobby/Blobby%20Volley%202%20%28Linux%29/1.1/blobby2-linux-1.1.tar.gz";
-    sha256 = "sha256-1WJ59Fhb1opXjOci+nAx/F2w5TnBaRhxQuPKgmmLfvQ=";
+    url = "mirror://sourceforge/blobby/Blobby%20Volley%202%20%28Linux%29/1.1.1/blobby2-linux-1.1.1.tar.gz";
+    sha256 = "sha256-NX7lE+adO1D2f8Bj1Ky3lZpf6Il3gX8KqxTMxw2yFLo=";
   };
 
   nativeBuildInputs = [ cmake pkg-config zip ];
diff --git a/nixpkgs/pkgs/games/cdogs-sdl/default.nix b/nixpkgs/pkgs/games/cdogs-sdl/default.nix
index 3db387990ebb..5c74b10ef32a 100644
--- a/nixpkgs/pkgs/games/cdogs-sdl/default.nix
+++ b/nixpkgs/pkgs/games/cdogs-sdl/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "cdogs-sdl";
-  version = "1.4.2";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     repo = pname;
     owner = "cxong";
     rev = version;
-    sha256 = "sha256-KRHwcDUAQ6GzJ20pCINq8t+P4G4cWjbIayDsYM4VBaY=";
+    sha256 = "sha256-XSq0TK3ZuLOa8JJnp/Qxt16Ru3p35tq5FOo4+tv+c60=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/games/cutechess/default.nix b/nixpkgs/pkgs/games/cutechess/default.nix
new file mode 100644
index 000000000000..5e374afa1bca
--- /dev/null
+++ b/nixpkgs/pkgs/games/cutechess/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapQtAppsHook
+, qtbase
+, lib
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "cutechess";
+  version = "1.3.1";
+
+  src = fetchFromGitHub {
+    owner = "cutechess";
+    repo = "cutechess";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-P44Twbw2MGz+oTzPwMFCe73zPxAex6uYjSTtaUypfHw=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapQtAppsHook
+  ];
+  buildInputs = [
+    qtbase
+  ];
+
+  postInstall = ''
+    install -Dm555 cutechess{,-cli} -t $out/bin/
+    install -Dm444 libcutechess.a -t $out/lib/
+    install -Dm444 $src/docs/cutechess-cli.6 -t $out/share/man/man6/
+    install -Dm444 $src/docs/cutechess-engines.json.5 -t $out/share/man/man5/
+  '';
+
+  meta = with lib; {
+    description = "GUI, CLI, and library for playing chess";
+    homepage = "https://cutechess.com/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ eclairevoyant ];
+    platforms = with platforms; (linux ++ windows);
+    mainProgram = "cutechess";
+  };
+})
diff --git a/nixpkgs/pkgs/games/ddnet/default.nix b/nixpkgs/pkgs/games/ddnet/default.nix
index d07c3ab6b919..b08d4baf2a46 100644
--- a/nixpkgs/pkgs/games/ddnet/default.nix
+++ b/nixpkgs/pkgs/games/ddnet/default.nix
@@ -34,19 +34,19 @@
 
 stdenv.mkDerivation rec {
   pname = "ddnet";
-  version = "17.1.1";
+  version = "17.2.1";
 
   src = fetchFromGitHub {
     owner = "ddnet";
     repo = pname;
     rev = version;
-    hash = "sha256-igvEo80wFYso7I4aaCWgOebsKbGLgBaY4PQy142+Yiw=";
+    hash = "sha256-FJnwabNEEGZDM9wNWMGclFv2IMlXg4Ob3PEbGiGQKKc=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     name = "${pname}-${version}";
     inherit src;
-    hash = "sha256-ykTeVggLUTY1PPFrGMQDJh8FNQwBlBU7LxbHbMdjD4I=";
+    hash = "sha256-hUrsumBiKovSD7xT1PgH2Q+7HYgyxnFnz33YJPdd5+c=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/games/etlegacy/default.nix b/nixpkgs/pkgs/games/etlegacy/default.nix
index deb10bf3842e..ee5d31874c68 100644
--- a/nixpkgs/pkgs/games/etlegacy/default.nix
+++ b/nixpkgs/pkgs/games/etlegacy/default.nix
@@ -1,138 +1,142 @@
-{
-  stdenv,
-  lib,
-  makeWrapper,
-  writeScriptBin,
-  fetchFromGitHub,
-  fetchurl,
-  runCommand,
-  cmake,
-  git,
-  glew,
-  SDL2,
-  zlib,
-  minizip,
-  libjpeg,
-  curl,
-  lua,
-  libogg,
-  libtheora,
-  freetype,
-  libpng,
-  sqlite,
-  openal,
-  unzip,
-  cjson,
-}: let
+{ lib
+, stdenv
+, fetchurl
+, writeShellApplication
+, fetchFromGitHub
+, cjson
+, cmake
+, git
+, makeWrapper
+, unzip
+, curl
+, freetype
+, glew
+, libjpeg
+, libogg
+, libpng
+, libtheora
+, lua
+, minizip
+, openal
+, SDL2
+, sqlite
+, zlib
+}:
+let
   version = "2.81.1";
-  pkgname = "etlegacy";
-  mirror = "https://mirror.etlegacy.com";
-  fetchAsset = {
-    asset,
-    sha256,
-  }:
-    fetchurl
-    {
-      url = mirror + "/etmain/" + asset;
-      inherit sha256;
-    };
-  pak0 =
-    fetchAsset
-    {
-      asset = "pak0.pk3";
-      sha256 = "712966b20e06523fe81419516500e499c86b2b4fec823856ddbd333fcb3d26e5";
-    };
-  pak1 =
-    fetchAsset
-    {
-      asset = "pak1.pk3";
-      sha256 = "5610fd749024405b4425a7ce6397e58187b941d22092ef11d4844b427df53e5d";
-    };
-  pak2 =
-    fetchAsset
-    {
-      asset = "pak2.pk3";
-      sha256 = "a48ab749a1a12ab4d9137286b1f23d642c29da59845b2bafc8f64e052cf06f3e";
-    };
-  fakeGit = writeScriptBin "git" ''
-    #! ${stdenv.shell} -e
-    if [ "$1" = "describe" ]; then
-      echo "${version}"
-    fi
-  '';
-  mainProgram =
-    if stdenv.hostPlatform.system == "i686-linux"
-    then "etl.i386"
-    else "etl.x86_64";
-in
-  stdenv.mkDerivation rec {
-    pname = pkgname;
-    inherit version;
 
-    src = fetchFromGitHub {
-      owner = "etlegacy";
-      repo = "etlegacy";
-      rev = "refs/tags/v" + version;
-      sha256 = "sha256-CGXtc51vaId/SHbD34ZeT0gPsrl7p2DEw/Kp+GBZIaA="; # 2.81.1
-    };
+  fetchAsset = { asset, hash }: fetchurl {
+    url = "https://mirror.etlegacy.com/etmain/${asset}";
+    inherit hash;
+  };
 
-    nativeBuildInputs = [cmake fakeGit git makeWrapper unzip cjson];
-    buildInputs = [
-      glew
-      SDL2
-      zlib
-      minizip
-      libjpeg
-      curl
-      lua
-      libogg
-      libtheora
-      freetype
-      libpng
-      sqlite
-      openal
-    ];
+  pak0 = fetchAsset {
+    asset = "pak0.pk3";
+    hash = "sha256-cSlmsg4GUj/oFBlRZQDkmchrK0/sgjhW3b0zP8s9JuU=";
+  };
 
-    preBuild = ''
-      # Required for build time to not be in 1980
-      export SOURCE_DATE_EPOCH=$(date +%s)
-      # This indicates the build was by a CI pipeline and prevents the resource
-      # files from being flagged as 'dirty' due to potentially being custom built.
-      export CI="true"
-    '';
+  pak1 = fetchAsset {
+    asset = "pak1.pk3";
+    hash = "sha256-VhD9dJAkQFtEJafOY5flgYe5QdIgku8R1IRLQn31Pl0=";
+  };
+
+  pak2 = fetchAsset {
+    asset = "pak2.pk3";
+    hash = "sha256-pIq3SaGhKrTZE3KGsfI9ZCwp2lmEWyuvyPZOBSzwbz4=";
+  };
 
-    cmakeFlags = [
-      "-DCMAKE_BUILD_TYPE=Release"
-      "-DCROSS_COMPILE32=0"
-      "-DBUILD_SERVER=0"
-      "-DBUILD_CLIENT=1"
-      "-DBUNDLED_JPEG=0"
-      "-DBUNDLED_LIBS=0"
-      "-DINSTALL_EXTRA=0"
-      "-DINSTALL_OMNIBOT=0"
-      "-DINSTALL_GEOIP=0"
-      "-DINSTALL_WOLFADMIN=0"
-      "-DFEATURE_AUTOUPDATE=0"
-      "-DINSTALL_DEFAULT_BASEDIR=."
-      "-DINSTALL_DEFAULT_BINDIR=."
-      "-DINSTALL_DEFAULT_MODDIR=."
-    ];
+  fakeGit = writeShellApplication {
+    name = "git";
 
-    postInstall = ''
-      ETMAIN=$out/etmain
-      mkdir -p $ETMAIN
-      ln -s ${pak0} $ETMAIN/pak0.pk3
-      ln -s ${pak1} $ETMAIN/pak1.pk3
-      ln -s ${pak2} $ETMAIN/pak2.pk3
-      makeWrapper $out/${mainProgram} $out/bin/${mainProgram} --chdir $out
+    text = ''
+      if [ "$1" = "describe" ]; then
+        echo "${version}"
+      fi
     '';
+  };
+in
+stdenv.mkDerivation {
+  pname = "etlegacy";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "etlegacy";
+    repo = "etlegacy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CGXtc51vaId/SHbD34ZeT0gPsrl7p2DEw/Kp+GBZIaA="; # 2.81.1
+  };
+
+  nativeBuildInputs = [
+    cjson
+    cmake
+    fakeGit
+    git
+    makeWrapper
+    unzip
+  ];
+
+  buildInputs = [
+    curl
+    freetype
+    glew
+    libjpeg
+    libogg
+    libpng
+    libtheora
+    lua
+    minizip
+    openal
+    SDL2
+    sqlite
+    zlib
+  ];
 
-    meta = with lib; {
-      description = "ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license";
-      homepage = "https://etlegacy.com";
-      platforms = ["i686-linux" "x86_64-linux"];
-      license = [licenses.gpl3 licenses.cc-by-nc-sa-30];
-      inherit mainProgram;
-      maintainers = with maintainers; [ashleyghooper];
-    };
-  }
+  preBuild = ''
+    # Required for build time to not be in 1980
+    export SOURCE_DATE_EPOCH=$(date +%s)
+    # This indicates the build was by a CI pipeline and prevents the resource
+    # files from being flagged as 'dirty' due to potentially being custom built.
+    export CI="true"
+  '';
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DCROSS_COMPILE32=0"
+    "-DBUILD_SERVER=1"
+    "-DBUILD_CLIENT=1"
+    "-DBUNDLED_JPEG=0"
+    "-DBUNDLED_LIBS=0"
+    "-DINSTALL_EXTRA=0"
+    "-DINSTALL_OMNIBOT=0"
+    "-DINSTALL_GEOIP=0"
+    "-DINSTALL_WOLFADMIN=0"
+    "-DFEATURE_AUTOUPDATE=0"
+    "-DINSTALL_DEFAULT_BASEDIR=${placeholder "out"}/lib/etlegacy"
+    "-DINSTALL_DEFAULT_BINDIR=${placeholder "out"}/bin"
+  ];
+
+  postInstall = ''
+    ln -s ${pak0} $out/lib/etlegacy/etmain/pak0.pk3
+    ln -s ${pak1} $out/lib/etlegacy/etmain/pak1.pk3
+    ln -s ${pak2} $out/lib/etlegacy/etmain/pak2.pk3
+
+    makeWrapper $out/bin/etl.* $out/bin/etl
+    makeWrapper $out/bin/etlded.* $out/bin/etlded
+  '';
+
+  hardeningDisable = [ "fortify" ];
+
+  meta = {
+    description = "ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license";
+    homepage = "https://etlegacy.com";
+    license = with lib.licenses; [ gpl3 cc-by-nc-sa-30 ];
+    longDescription = ''
+      ET: Legacy, an open source project fully compatible client and server
+      for the popular online FPS game Wolfenstein: Enemy Territory - whose
+      gameplay is still considered unmatched by many, despite its great age.
+    '';
+    mainProgram = "etl";
+    maintainers = with lib.maintainers; [ ashleyghooper drupol ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/games/ferium/default.nix b/nixpkgs/pkgs/games/ferium/default.nix
index 5a8859e95e2f..2cc48b6d8fbe 100644
--- a/nixpkgs/pkgs/games/ferium/default.nix
+++ b/nixpkgs/pkgs/games/ferium/default.nix
@@ -2,18 +2,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ferium";
-  version = "4.4.0";
+  version = "4.4.1";
 
   src = fetchFromGitHub {
     owner = "gorilla-devs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-eaYXWOoeqCtdpxIFQxu3wJfYg8ZkuGB32/b2yzVW/Mc=";
+    sha256 = "sha256-3ILDR6CmR/CTzZfUEPD10TQZRSDKSqHmwxU3GPHIyK8=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
-  cargoHash = "sha256-5frotS85hwa24WRK6cVx1fmnolscKjRPkWoY6cnkbO8=";
+  cargoHash = "sha256-00rzn8eWcxRfPvIT2+EVQLd6e8gnMWx78QrwURpxstg=";
 
   # Disable the GUI file picker so that GTK/XDG dependencies aren't used
   buildNoDefaultFeatures = true;
diff --git a/nixpkgs/pkgs/games/forge-mtg/default.nix b/nixpkgs/pkgs/games/forge-mtg/default.nix
index fbcc652d80d3..cc5c56977bb9 100644
--- a/nixpkgs/pkgs/games/forge-mtg/default.nix
+++ b/nixpkgs/pkgs/games/forge-mtg/default.nix
@@ -8,13 +8,13 @@
 }:
 
 let
-  version = "1.6.56";
+  version = "1.6.57";
 
   src = fetchFromGitHub {
     owner = "Card-Forge";
     repo = "forge";
     rev = "forge-${version}";
-    hash = "sha256-VB/ToTq1XwHPEUNmbocwUoCP4DfyAFdlRAwxrx4tNJU=";
+    hash = "sha256-pxnnqLfyblbIgIRZZrx8Y8K43zUv9mu7PzZ7zltpEUQ=";
   };
 
   # launch4j downloads and runs a native binary during the package phase.
@@ -27,7 +27,7 @@ maven.buildMavenPackage {
 
   # Tests need a running Xorg.
   mvnParameters = "-DskipTests";
-  mvnHash = "sha256-ajrHnaiJS7ZnR9BjLaXK2bnAKCp5UWQqYpjWbz3z6bw=";
+  mvnHash = "sha256-QK9g0tG75lIhEtf4jW03N32YbD9Fe5iI0JTuqmCTtnE=";
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/nixpkgs/pkgs/games/fteqw/default.nix b/nixpkgs/pkgs/games/fteqw/default.nix
index 984c558180fe..c4129d3974d6 100644
--- a/nixpkgs/pkgs/games/fteqw/default.nix
+++ b/nixpkgs/pkgs/games/fteqw/default.nix
@@ -1,6 +1,6 @@
 { lib
 , stdenv
-, fetchsvn
+, fetchFromGitHub
 , gzip
 , libvorbis
 , libmad
diff --git a/nixpkgs/pkgs/games/fteqw/generic.nix b/nixpkgs/pkgs/games/fteqw/generic.nix
index a420657ea578..a525cf5a6c44 100644
--- a/nixpkgs/pkgs/games/fteqw/generic.nix
+++ b/nixpkgs/pkgs/games/fteqw/generic.nix
@@ -1,5 +1,5 @@
 { lib
-, fetchsvn
+, fetchFromGitHub
 , stdenv
 , libopus
 , xorg
@@ -14,12 +14,13 @@
 
 stdenv.mkDerivation {
   inherit pname buildFlags buildInputs nativeBuildInputs postFixup;
-  version = "unstable-2022-08-09";
+  version = "unstable-2023-08-03";
 
-  src = fetchsvn {
-    url = "https://svn.code.sf.net/p/fteqw/code/trunk";
-    rev = "6303";
-    sha256 = "sha256-tSTFX59iVUvndPRdREayKpkQ+YCYKCMQe2PXZfnTgPQ=";
+  src = fetchFromGitHub {
+    owner = "fte-team";
+    repo = "fteqw";
+    rev = "3adec5d0a53ba9ae32a92fc0a805cf6d5ec107fb";
+    hash = "sha256-p/U02hwKI+YqlVXIS/7+gujknNDLr5L53unjvG5qLJU=";
   };
 
   makeFlags = [
@@ -45,7 +46,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     inherit description;
-    homepage = "https://fte.triptohell.info";
+    homepage = "https://fteqw.org";
     longDescription = ''
       FTE is a game engine baed on QuakeWorld able to
       play games such as Quake 1, 2, 3, and Hexen 2.
diff --git a/nixpkgs/pkgs/games/gogdl/default.nix b/nixpkgs/pkgs/games/gogdl/default.nix
index 346d5f81459a..a6b41e7bd645 100644
--- a/nixpkgs/pkgs/games/gogdl/default.nix
+++ b/nixpkgs/pkgs/games/gogdl/default.nix
@@ -1,4 +1,5 @@
 { lib
+, fetchpatch
 , writeScript
 , buildPythonApplication
 , fetchFromGitHub
@@ -10,14 +11,14 @@
 
 buildPythonApplication rec {
   pname = "gogdl";
-  version = "0.7.2";
+  version = "0.7.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Heroic-Games-Launcher";
     repo = "heroic-gogdl";
-    rev = "d7f29dfef5818e8b323d04761e18a9abb750f93e";
-    hash = "sha256-9dAenawt9h/sz5paVYoqk+nmzPrInlqyh1EgshI25CE=";
+    rev = "d2fa34bfba7beb2ecc0e3fc70a657f2c612c8a10";
+    hash = "sha256-YCqtfY49lDg6sLrF/INOZVD9cMCwvejhySzUWrxHKAw=";
   };
 
   disabled = pythonOlder "3.8";
@@ -27,6 +28,13 @@ buildPythonApplication rec {
     requests
   ];
 
+  patches = [
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/Heroic-Games-Launcher/heroic-gogdl/pull/37.patch";
+      hash = "sha256-oZLetPoWzsEDrL0Bh89HB4hTn70FTh8aXj9mKGr4Dqw=";
+    })
+  ];
+
   pythonImportsCheck = [ "gogdl" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/games/gscrabble/default.nix b/nixpkgs/pkgs/games/gscrabble/default.nix
index b21cdadac1e0..28e2a58b0d00 100644
--- a/nixpkgs/pkgs/games/gscrabble/default.nix
+++ b/nixpkgs/pkgs/games/gscrabble/default.nix
@@ -15,11 +15,11 @@ buildPythonApplication {
 
   doCheck = false;
 
-  nativeBuildInputs = [ wrapGAppsHook ];
+  nativeBuildInputs = [ wrapGAppsHook gobject-introspection ];
 
   buildInputs = with gst_all_1; [
     gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
-    gnome.adwaita-icon-theme gtk3 gobject-introspection
+    gnome.adwaita-icon-theme gtk3
   ];
 
   propagatedBuildInputs = with python3Packages; [ gst-python pygobject3 ];
diff --git a/nixpkgs/pkgs/games/gshogi/default.nix b/nixpkgs/pkgs/games/gshogi/default.nix
index 4b674ac129df..77eab7918b91 100644
--- a/nixpkgs/pkgs/games/gshogi/default.nix
+++ b/nixpkgs/pkgs/games/gshogi/default.nix
@@ -21,10 +21,9 @@ python3.pkgs.buildPythonApplication rec {
 
   buildInputs = [
     gtk3
-    gobject-introspection
   ];
 
-  nativeBuildInputs = [ wrapGAppsHook ];
+  nativeBuildInputs = [ wrapGAppsHook gobject-introspection ];
 
   propagatedBuildInputs = with python3.pkgs; [
     pygobject3
diff --git a/nixpkgs/pkgs/games/heroic/default.nix b/nixpkgs/pkgs/games/heroic/default.nix
index 1baf9cbf8163..05455ae7c7d6 100644
--- a/nixpkgs/pkgs/games/heroic/default.nix
+++ b/nixpkgs/pkgs/games/heroic/default.nix
@@ -10,23 +10,24 @@
 , electron
 , gogdl
 , legendary-gl
+, nile
 }:
 
 let appName = "heroic";
 in stdenv.mkDerivation rec {
   pname = "heroic-unwrapped";
-  version = "2.8.0";
+  version = "2.9.1";
 
   src = fetchFromGitHub {
     owner = "Heroic-Games-Launcher";
     repo = "HeroicGamesLauncher";
     rev = "v${version}";
-    hash = "sha256-AZwJRBkWuzBPT+ADVHabiK2KRXe6clZFa0IO99BO2Wk=";
+    hash = "sha256-1FtAcp6cG2qRfWrAgCOQ87DzMvszqqhObfSzepezBGc=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    hash = "sha256-xiLK0D9+oL2UMD7b/9htOQJEpYCNayKW+KJ/vNVCgsw=";
+    hash = "sha256-KEzTjtoBcHNJxC/7W/Bft75JZuZUSHieOOAwhbr5d3s=";
   };
 
   nativeBuildInputs = [
@@ -37,6 +38,14 @@ in stdenv.mkDerivation rec {
     makeWrapper
   ];
 
+  patches = [
+    # Reverts part of upstream PR 2761 so that we don't have to use a non-free Electron fork.
+    # https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/pull/2761
+    ./remove-drm-support.patch
+    # Make Heroic create Steam shortcuts (to non-steam games) with the correct path to heroic.
+    ./fix-non-steam-shortcuts.patch
+  ];
+
   configurePhase = ''
     runHook preConfigure
 
@@ -74,7 +83,11 @@ in stdenv.mkDerivation rec {
     chmod -R u+w "$out/share/${appName}/public/bin" "$out/share/${appName}/build/bin"
     rm -rf "$out/share/${appName}/public/bin" "$out/share/${appName}/build/bin"
     mkdir -p "$out/share/${appName}/build/bin/${binPlatform}"
-    ln -s "${gogdl}/bin/gogdl" "${legendary-gl}/bin/legendary" "$out/share/${appName}/build/bin/${binPlatform}"
+    ln -s \
+      "${gogdl}/bin/gogdl" \
+      "${legendary-gl}/bin/legendary" \
+      "${nile}"/bin/nile \
+      "$out/share/${appName}/build/bin/${binPlatform}"
 
     makeWrapper "${electron}/bin/electron" "$out/bin/heroic" \
       --inherit-argv0 \
@@ -92,7 +105,7 @@ in stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Native GOG and Epic Games Launcher for Linux, Windows and Mac";
+    description = "A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac";
     homepage = "https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher";
     changelog = "https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/releases";
     license = licenses.gpl3Only;
diff --git a/nixpkgs/pkgs/games/heroic/fix-non-steam-shortcuts.patch b/nixpkgs/pkgs/games/heroic/fix-non-steam-shortcuts.patch
new file mode 100644
index 000000000000..7b46473245f7
--- /dev/null
+++ b/nixpkgs/pkgs/games/heroic/fix-non-steam-shortcuts.patch
@@ -0,0 +1,13 @@
+diff --git a/src/backend/shortcuts/nonesteamgame/nonesteamgame.ts b/src/backend/shortcuts/nonesteamgame/nonesteamgame.ts
+index ebef6aa4..c8bd853d 100644
+--- a/src/backend/shortcuts/nonesteamgame/nonesteamgame.ts
++++ b/src/backend/shortcuts/nonesteamgame/nonesteamgame.ts
+@@ -252,7 +252,7 @@ async function addNonSteamGame(props: {
+     // add new Entry
+     const newEntry = {} as ShortcutEntry
+     newEntry.AppName = props.gameInfo.title
+-    newEntry.Exe = `"${app.getPath('exe')}"`
++    newEntry.Exe = `"heroic"`
+     newEntry.StartDir = `"${process.cwd()}"`
+ 
+     if (isFlatpak) {
diff --git a/nixpkgs/pkgs/games/heroic/remove-drm-support.patch b/nixpkgs/pkgs/games/heroic/remove-drm-support.patch
new file mode 100644
index 000000000000..f3cd80f003f3
--- /dev/null
+++ b/nixpkgs/pkgs/games/heroic/remove-drm-support.patch
@@ -0,0 +1,24 @@
+diff --git a/src/backend/main.ts b/src/backend/main.ts
+index 2cd1a28f..a60e04d0 100644
+--- a/src/backend/main.ts
++++ b/src/backend/main.ts
+@@ -19,8 +19,7 @@ import {
+   powerSaveBlocker,
+   protocol,
+   screen,
+-  clipboard,
+-  components
++  clipboard
+ } from 'electron'
+ import 'backend/updater'
+ import { autoUpdater } from 'electron-updater'
+@@ -286,8 +285,7 @@ if (!gotTheLock) {
+     initImagesCache()
+ 
+     if (!process.env.CI) {
+-      await components.whenReady()
+-      logInfo(['DRM module staus', components.status()])
++      logInfo('DRM modules disabled for nixpkgs')
+     }
+ 
+     // try to fix notification app name on windows
diff --git a/nixpkgs/pkgs/games/jumpnbump/default.nix b/nixpkgs/pkgs/games/jumpnbump/default.nix
index b502b4f1396d..193d4dc0b585 100644
--- a/nixpkgs/pkgs/games/jumpnbump/default.nix
+++ b/nixpkgs/pkgs/games/jumpnbump/default.nix
@@ -27,8 +27,8 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook ];
-  buildInputs = [ SDL2 SDL2_mixer SDL2_net gtk3 gobject-introspection ];
+  nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook gobject-introspection ];
+  buildInputs = [ SDL2 SDL2_mixer SDL2_net gtk3 ];
 
   postInstall = ''
     make -C menu PREFIX=$out all install
diff --git a/nixpkgs/pkgs/games/keeperrl/default.nix b/nixpkgs/pkgs/games/keeperrl/default.nix
index 8fb6d563329b..c66ffdee920d 100644
--- a/nixpkgs/pkgs/games/keeperrl/default.nix
+++ b/nixpkgs/pkgs/games/keeperrl/default.nix
@@ -13,18 +13,18 @@
 , libtheora
 , unfree_assets ? false }:
 
-stdenv.mkDerivation rec {
+let
   pname = "keeperrl";
   version = "alpha34";
 
-  free-src = fetchFromGitHub {
+  free_src = fetchFromGitHub {
     owner = "miki151";
-    repo = "keeperrl";
+    repo = pname;
     rev = version;
     sha256 = "sha256-0sww+ppctXvxMouclG3OdXpcNgrrOZJw9z8s2GhJ+IE=";
   };
 
-  assets = if unfree_assets then requireFile rec {
+  assets = requireFile rec {
     name = "keeperrl_data_${version}.tar.gz";
     message = ''
       This nix expression requires that the KeeperRL art assets are already
@@ -39,11 +39,15 @@ stdenv.mkDerivation rec {
       "nix-prefetch-url file://\$PWD/${name}".
     '';
     sha256 = "0115pxdzdyma2vicxgr0j21pp82gxdyrlj090s8ihp0b50f0nlll";
-  } else null;
+  };
+in
+
+stdenv.mkDerivation {
+  inherit pname version;
 
-  sourceRoot = free-src.name;
+  srcs = [ free_src ] ++ lib.optional unfree_assets assets;
 
-  srcs = [ free-src ] ++ lib.optional unfree_assets assets;
+  sourceRoot = free_src.name;
 
   postUnpack = lib.optionalString unfree_assets ''
     mv data $sourceRoot
diff --git a/nixpkgs/pkgs/games/klavaro/default.nix b/nixpkgs/pkgs/games/klavaro/default.nix
index 6ea029176482..79585e74a095 100644
--- a/nixpkgs/pkgs/games/klavaro/default.nix
+++ b/nixpkgs/pkgs/games/klavaro/default.nix
@@ -39,8 +39,14 @@ stdenv.mkDerivation rec {
       --replace "/usr/bin/file" "${file}/bin/file"
   '';
 
-  # Hack to avoid TMPDIR in RPATHs.
-  preFixup = ''rm -rf "$(pwd)" '';
+  # remove forbidden references to $TMPDIR
+  preFixup = lib.optionalString stdenv.isLinux ''
+    for f in "$out"/bin/*; do
+      if isELF "$f"; then
+        patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$f"
+      fi
+    done
+  '';
 
   meta = with lib; {
     description = "Free touch typing tutor program";
diff --git a/nixpkgs/pkgs/games/legendary-gl/default.nix b/nixpkgs/pkgs/games/legendary-gl/default.nix
index a863b1d1cee7..569148f2cf50 100644
--- a/nixpkgs/pkgs/games/legendary-gl/default.nix
+++ b/nixpkgs/pkgs/games/legendary-gl/default.nix
@@ -4,20 +4,24 @@
 , buildPythonApplication
 , pythonOlder
 , requests
+, filelock
 }:
 
 buildPythonApplication rec {
   pname = "legendary-gl"; # Name in pypi
-  version = "0.20.32";
+  version = "0.20.33";
 
   src = fetchFromGitHub {
     owner = "derrod";
     repo = "legendary";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-MsvhVS3lqhgBJ+S/cjXFP70I3rM5WBYT7TyVlRWhNWw=";
+    sha256 = "sha256-fEQUChkxrKV2IkFGORUolZE2qTzA10Xxogjl5Va4TcE=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+    filelock
+  ];
 
   disabled = pythonOlder "3.8";
 
diff --git a/nixpkgs/pkgs/games/lgames/lbreakout2/default.nix b/nixpkgs/pkgs/games/lgames/lbreakout2/default.nix
index 4645baf06244..f554a1683eee 100644
--- a/nixpkgs/pkgs/games/lgames/lbreakout2/default.nix
+++ b/nixpkgs/pkgs/games/lgames/lbreakout2/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchurl
+, fetchpatch
 , SDL
 , SDL_mixer
 , libintl
@@ -17,6 +18,12 @@ stdenv.mkDerivation rec {
     sha256 = "0vwdlyvh7c4y80q5vp7fyfpzbqk9lq3w8pvavi139njkalbxc14i";
   };
 
+  # Can't exit from pause without this patch
+  patches = [(fetchpatch {
+    url = "https://sources.debian.org/data/main/l/lbreakout2/2.6.5-2/debian/patches/sdl_fix_pauses.patch";
+    hash = "sha256-ycsuxfokpOblLky42MwtJowdEp7v5dZRMFIR4id4ZBI=";
+  })];
+
   buildInputs = [
     SDL
     SDL_mixer
@@ -25,6 +32,11 @@ stdenv.mkDerivation rec {
     zlib
   ];
 
+  # With fortify it crashes at runtime:
+  #   *** buffer overflow detected ***: terminated
+  #   Aborted (core dumped)
+  hardeningDisable = [ "fortify" ];
+
   meta = with lib; {
     homepage = "http://lgames.sourceforge.net/LBreakout2/";
     description = "Breakout clone from the LGames series";
diff --git a/nixpkgs/pkgs/games/mindustry/default.nix b/nixpkgs/pkgs/games/mindustry/default.nix
index 0f1a609f4e4d..fdfad0cab2e7 100644
--- a/nixpkgs/pkgs/games/mindustry/default.nix
+++ b/nixpkgs/pkgs/games/mindustry/default.nix
@@ -243,7 +243,7 @@ stdenv.mkDerivation rec {
     ];
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ chkno fgaz thekostins ];
-    platforms = platforms.x86_64;
+    platforms = if enableClient then platforms.x86_64 else platforms.linux;
     # Hash mismatch on darwin:
     # https://github.com/NixOS/nixpkgs/pull/105590#issuecomment-737120293
     broken = stdenv.isDarwin;
diff --git a/nixpkgs/pkgs/games/minecraft-servers/update.py b/nixpkgs/pkgs/games/minecraft-servers/update.py
index 0e7f10a8c932..f272c8b71a84 100755
--- a/nixpkgs/pkgs/games/minecraft-servers/update.py
+++ b/nixpkgs/pkgs/games/minecraft-servers/update.py
@@ -117,8 +117,11 @@ def get_latest_major_releases(releases: List[Version]) -> Dict[str, Version]:
     Version object for 1.16.5.
     """
     return {
-        major_release: sorted(releases, key=lambda x: x.id, reverse=True)[0]
-        for major_release, releases in group_major_releases(releases).items()
+        major_release: max(
+            (release for release in releases if get_major_release(release.id) == major_release),
+            key=lambda x: tuple(map(int, x.id.split('.'))),
+        )
+        for major_release in group_major_releases(releases)
     }
 
 
diff --git a/nixpkgs/pkgs/games/minecraft-servers/versions.json b/nixpkgs/pkgs/games/minecraft-servers/versions.json
index 8c751bf70074..142ef4e51c5d 100644
--- a/nixpkgs/pkgs/games/minecraft-servers/versions.json
+++ b/nixpkgs/pkgs/games/minecraft-servers/versions.json
@@ -1,8 +1,8 @@
 {
   "1.20": {
-    "url": "https://piston-data.mojang.com/v1/objects/15c777e2cfe0556eef19aab534b186c0c6f277e1/server.jar",
-    "sha1": "15c777e2cfe0556eef19aab534b186c0c6f277e1",
-    "version": "1.20",
+    "url": "https://piston-data.mojang.com/v1/objects/84194a2f286ef7c14ed7ce0090dba59902951553/server.jar",
+    "sha1": "84194a2f286ef7c14ed7ce0090dba59902951553",
+    "version": "1.20.1",
     "javaVersion": 17
   },
   "1.19": {
@@ -78,9 +78,9 @@
     "javaVersion": 8
   },
   "1.7": {
-    "url": "https://launcher.mojang.com/v1/objects/4cec86a928ec171fdc0c6b40de2de102f21601b5/server.jar",
-    "sha1": "4cec86a928ec171fdc0c6b40de2de102f21601b5",
-    "version": "1.7.9",
+    "url": "https://launcher.mojang.com/v1/objects/952438ac4e01b4d115c5fc38f891710c4941df29/server.jar",
+    "sha1": "952438ac4e01b4d115c5fc38f891710c4941df29",
+    "version": "1.7.10",
     "javaVersion": 8
   },
   "1.6": {
diff --git a/nixpkgs/pkgs/games/minecraft/default.nix b/nixpkgs/pkgs/games/minecraft/default.nix
index a8e883acae37..3009eb0b9a08 100644
--- a/nixpkgs/pkgs/games/minecraft/default.nix
+++ b/nixpkgs/pkgs/games/minecraft/default.nix
@@ -100,8 +100,7 @@ stdenv.mkDerivation rec {
     sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
   };
 
-  nativeBuildInputs = [ makeWrapper wrapGAppsHook copyDesktopItems ];
-  buildInputs = [ gobject-introspection ];
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook copyDesktopItems gobject-introspection ];
 
   sourceRoot = ".";
 
diff --git a/nixpkgs/pkgs/games/minesweep-rs/default.nix b/nixpkgs/pkgs/games/minesweep-rs/default.nix
index 4d09d7715ac3..b6746fbe4ca2 100644
--- a/nixpkgs/pkgs/games/minesweep-rs/default.nix
+++ b/nixpkgs/pkgs/games/minesweep-rs/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "minesweep-rs";
-  version = "6.0.19";
+  version = "6.0.27";
 
   src = fetchFromGitHub {
     owner = "cpcloud";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-dFY+t6MVRdbp0z5mbnREd/t6v1D+7g/vD+K8mcJvn9E=";
+    hash = "sha256-z94mKAboLs6fi+RKfwijm2RDpO729uJoSlxSzBdrkRI=";
   };
 
-  cargoHash = "sha256-mLRD5Z/ZzfT1BFFSyYmJkY98vMY/Elt3Gy0SboCpzec=";
+  cargoHash = "sha256-IRWPjOUV3ElXPNYCRvQQAw74YBtEnTHtrWDYHO/eDNE=";
 
   meta = with lib; {
     description = "Sweep some mines for fun, and probably not for profit";
diff --git a/nixpkgs/pkgs/games/nile/default.nix b/nixpkgs/pkgs/games/nile/default.nix
new file mode 100644
index 000000000000..beb444ae11ec
--- /dev/null
+++ b/nixpkgs/pkgs/games/nile/default.nix
@@ -0,0 +1,84 @@
+{ lib
+, writeScript
+, buildPythonApplication
+, fetchFromGitHub
+, pythonOlder
+, setuptools
+, requests
+, protobuf
+, pycryptodome
+, zstandard
+, json5
+, platformdirs
+, cacert
+}:
+
+buildPythonApplication rec {
+  pname = "nile";
+  version = "1.0.0";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "imLinguin";
+    repo = "nile";
+    rev = "f5f3b96f6483c59cfc646afbda6e97cb0bd94778";
+    hash = "sha256-HibY3U9/MibEDwHY+YiErW/pz6qwtps8wwjhznTISgA=";
+  };
+
+  disabled = pythonOlder "3.8";
+
+  propagatedBuildInputs = [
+    setuptools
+    requests
+    protobuf
+    pycryptodome
+    zstandard
+    json5
+    platformdirs
+  ];
+
+  pyprojectAppendix = ''
+    [tool.setuptools.packages.find]
+    include = ["nile*"]
+  '';
+
+  postPatch = ''
+    echo "$pyprojectAppendix" >> pyproject.toml
+  '';
+
+  pythonImportsCheck = [ "nile" ];
+
+  meta = with lib; {
+    description = "Unofficial Amazon Games client";
+    homepage = "https://github.com/imLinguin/nile";
+    license = with licenses; [ gpl3 ];
+    maintainers = with maintainers; [ aidalgol ];
+  };
+
+  # Upstream does not create git tags when bumping the version, so we have to
+  # extract it from the source code on the main branch.
+  passthru.updateScript = writeScript "gogdl-update-script" ''
+    #!/usr/bin/env nix-shell
+    #!nix-shell -i bash -p curl gnused jq common-updater-scripts
+    set -eou pipefail;
+
+    owner=imLinguin
+    repo=nile
+    path='nile/__init__.py'
+
+    version=$(
+      curl --cacert "${cacert}/etc/ssl/certs/ca-bundle.crt" \
+      https://raw.githubusercontent.com/$owner/$repo/main/$path |
+      sed -n 's/^\s*version\s*=\s*"\([0-9]\.[0-9]\.[0-9]\)"\s*$/\1/p')
+
+    commit=$(curl --cacert "${cacert}/etc/ssl/certs/ca-bundle.crt" \
+      https://api.github.com/repos/$owner/$repo/commits?path=$path |
+      jq -r '.[0].sha')
+
+    update-source-version \
+      ${pname} \
+      "$version" \
+      --file=./pkgs/games/nile/default.nix \
+      --rev=$commit
+  '';
+}
diff --git a/nixpkgs/pkgs/games/oh-my-git/default.nix b/nixpkgs/pkgs/games/oh-my-git/default.nix
index cd4fd216eaa6..f2ac8b4289c6 100644
--- a/nixpkgs/pkgs/games/oh-my-git/default.nix
+++ b/nixpkgs/pkgs/games/oh-my-git/default.nix
@@ -1,4 +1,5 @@
 { lib
+, autoPatchelfHook
 , copyDesktopItems
 , fetchFromGitHub
 , makeDesktopItem
@@ -6,8 +7,8 @@
 , alsa-lib
 , gcc-unwrapped
 , git
-, godot-export-templates
-, godot-headless
+, godot3-export-templates
+, godot3-headless
 , libGLU
 , libX11
 , libXcursor
@@ -36,8 +37,9 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
+    autoPatchelfHook
     copyDesktopItems
-    godot-headless
+    godot3-headless
   ];
 
   buildInputs = [
@@ -89,10 +91,10 @@ stdenv.mkDerivation rec {
     # expects the template-file at .../templates/3.2.3.stable/linux_x11_64_release
     # with 3.2.3 being the version of godot.
     mkdir -p $HOME/.local/share/godot
-    ln -s ${godot-export-templates}/share/godot/templates $HOME/.local/share/godot
+    ln -s ${godot3-export-templates}/share/godot/templates $HOME/.local/share/godot
 
     mkdir -p $out/share/oh-my-git
-    godot-headless --export "Linux" $out/share/oh-my-git/oh-my-git
+    godot3-headless --export "Linux" $out/share/oh-my-git/oh-my-git
 
     runHook postBuild
   '';
@@ -116,6 +118,12 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
+  runtimeDependencies = map lib.getLib [
+    alsa-lib
+    libpulseaudio
+    udev
+  ];
+
   meta = with lib; {
     homepage = "https://ohmygit.org/";
     description = "An interactive Git learning game";
diff --git a/nixpkgs/pkgs/games/openarena/default.nix b/nixpkgs/pkgs/games/openarena/default.nix
index 7b1f793895ed..30f221902f77 100644
--- a/nixpkgs/pkgs/games/openarena/default.nix
+++ b/nixpkgs/pkgs/games/openarena/default.nix
@@ -1,43 +1,122 @@
-{ lib, fetchurl, makeWrapper, patchelf, pkgs, stdenv, SDL, libglvnd, libogg, libvorbis, curl, openal }:
+{ lib
+, fetchzip
+, fetchFromGitHub
+, stdenv
+, fetchpatch
+, copyDesktopItems
+, curl
+, makeBinaryWrapper
+, pkg-config
+, which
+, freetype
+, libglvnd
+, libogg
+, libvorbis
+, libxmp
+, openal
+, SDL2
+, speex
+, makeDesktopItem
+}:
 
-stdenv.mkDerivation {
-  pname = "openarena";
-  version = "0.8.8";
+let
+  openarena-maps = fetchzip {
+    name = "openarena-maps";
+    url = "https://download.tuxfamily.org/openarena/rel/088/openarena-0.8.8.zip";
+    hash = "sha256-Rup1n14k9sKcyVFYzFqPYV+BEBCnUNwpnFsnyGrhl20=";
+  };
 
-  src = fetchurl {
-    name = "openarena.zip";
-    url = "http://openarena.ws/request.php?4";
-    sha256 = "0jmc1cmdz1rcvqc9ilzib1kilpwap6v0d331l6q53wsibdzsz3ss";
+  openarena-source = fetchFromGitHub {
+    name = "openarena-source";
+    owner = "OpenArena";
+    repo = "engine";
+    rev = "075cb860a4d2bc43e75e5f506eba7da877708aba";
+    hash = "sha256-ofQKQyS3ti5TSN+zqwPFYuJiB9kvdER6zTWn8yrOpQU=";
   };
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "openarena";
+  version = "unstable-2023-03-02";
+
+  srcs = [
+    openarena-source
+    openarena-maps
+  ];
+
+  sourceRoot = "openarena-source";
+
+  patches = [
+    # Fix Makefile `copyFiles` target
+    # Related upstream issue: https://github.com/OpenArena/engine/issues/83
+    (fetchpatch {
+      url = "https://github.com/OpenArena/engine/commit/f2b424bd332e90a1e2592edd21c62bdb8cd05214.patch";
+      hash = "sha256-legiXLtZAeG2t1esiBa37qkAgxPJVM7JLhjpxGUmWCo=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    copyDesktopItems
+    curl
+    makeBinaryWrapper
+    pkg-config
+    which
+  ];
+
+  buildInputs = [
+    freetype
+    libglvnd
+    libogg
+    libvorbis
+    libxmp
+    openal
+    SDL2
+    speex
+  ];
 
-  nativeBuildInputs = [ pkgs.unzip patchelf makeWrapper];
-
-  installPhase = let
-    gameDir = "$out/openarena-$version";
-    interpreter = "$(< \"$NIX_CC/nix-support/dynamic-linker\")";
-    libPath = lib.makeLibraryPath [ SDL libglvnd libogg libvorbis curl openal ];
-    arch = {
-      "x86_64-linux" = "x86_64";
-      "i386-linux" = "i386";
-    }.${stdenv.hostPlatform.system};
-  in ''
-    mkdir -pv $out/bin
-    cd $out
-    unzip $src
-
-    patchelf --set-interpreter "${interpreter}" "${gameDir}/openarena.${arch}"
-    patchelf --set-interpreter "${interpreter}" "${gameDir}/oa_ded.${arch}"
-
-    makeWrapper "${gameDir}/openarena.${arch}" "$out/bin/openarena" \
-      --prefix LD_LIBRARY_PATH : "${libPath}"
-    makeWrapper "${gameDir}/oa_ded.${arch}" "$out/bin/oa_ded"
+  enableParallelBuilding = true;
+
+  makeFlags = [
+    "USE_INTERNAL_LIBS=0"
+    "USE_FREETYPE=1"
+    "USE_OPENAL_DLOPEN=0"
+    "USE_CURL_DLOPEN=0"
+    "ARCH=${stdenv.hostPlatform.linuxArch}"
+  ];
+
+  installTargets = [ "copyfiles" ];
+  installFlags = [ "COPYDIR=$(out)/share/openarena" ];
+
+  preInstall = ''
+    mkdir -p $out/share/openarena
+  '';
+
+  postInstall = ''
+    install -Dm644 misc/quake3.svg $out/share/icons/hicolor/scalable/apps/openarena.svg
+
+    makeWrapper $out/share/openarena/openarena.* $out/bin/openarena
+    makeWrapper $out/share/openarena/oa_ded.* $out/bin/oa_ded
+
+    ln -s ${openarena-maps}/baseoa $out/share/openarena/baseoa
+    ln -s ${openarena-maps}/missionpack $out/share/openarena/missionpack
   '';
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = "OpenArena";
+      exec = "openarena";
+      icon = "openarena";
+      comment = "A fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena";
+      desktopName = "OpenArena";
+      categories = [ "Game" "ActionGame" ];
+    })
+  ];
+
   meta = {
-    description = "Crossplatform openarena client";
+    description = "A fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena";
     homepage = "http://openarena.ws/";
-    maintainers = [ lib.maintainers.wyvie ];
-    platforms = [ "i386-linux" "x86_64-linux" ];
-    license = lib.licenses.gpl2;
+    license = lib.licenses.gpl2Plus;
+    mainProgram = "openarena";
+    maintainers = with lib.maintainers; [ drupol wyvie ];
+    platforms = lib.platforms.linux;
   };
-}
+})
diff --git a/nixpkgs/pkgs/games/openra_2019/common.nix b/nixpkgs/pkgs/games/openra_2019/common.nix
index 4445cc53ba6a..5932eeb6e6d0 100644
--- a/nixpkgs/pkgs/games/openra_2019/common.nix
+++ b/nixpkgs/pkgs/games/openra_2019/common.nix
@@ -61,7 +61,7 @@ in {
     dontStrip = true;
 
     meta = {
-      maintainers = with maintainers; [ fusion809 msteen rardiol ];
+      maintainers = with maintainers; [ fusion809 msteen ];
       license = licenses.gpl3;
       platforms = platforms.linux;
     };
diff --git a/nixpkgs/pkgs/games/openttd/default.nix b/nixpkgs/pkgs/games/openttd/default.nix
index 3071142fc924..6122b586770e 100644
--- a/nixpkgs/pkgs/games/openttd/default.nix
+++ b/nixpkgs/pkgs/games/openttd/default.nix
@@ -1,8 +1,11 @@
-{ lib, stdenv, fetchurl, fetchzip, cmake, SDL2, libpng, zlib, xz, freetype, fontconfig
+{ lib, stdenv, fetchurl, fetchzip, cmake, pkg-config
+, SDL2, libpng, zlib, xz, freetype, fontconfig
+, nlohmann_json, curl, icu, harfbuzz, expat, glib, pcre2
 , withOpenGFX ? true, withOpenSFX ? true, withOpenMSX ? true
-, withFluidSynth ? true, audioDriver ? "alsa", fluidsynth, soundfont-fluid, procps
-, writeScriptBin, makeWrapper, runtimeShell
-}:
+, withFluidSynth ? true, audioDriver ? "alsa"
+, fluidsynth, soundfont-fluid, libsndfile
+, flac, libogg, libvorbis, libopus, libmpg123, pulseaudio, alsa-lib, libjack2
+, procps, writeScriptBin, makeWrapper, runtimeShell }:
 
 let
   opengfx = fetchzip {
@@ -29,16 +32,21 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "openttd";
-  version = "13.3";
+  version = "13.4";
 
   src = fetchurl {
     url = "https://cdn.openttd.org/openttd-releases/${version}/${pname}-${version}-source.tar.xz";
-    hash = "sha256-qvoW0vtnFlE0xzqIj3n3pe19oXoEz26ez2csnLiecZI=";
+    hash = "sha256-Kh3roBv+WOIYiHn0UMP6TzgZJxq0m/NI3WZUXwQNFG8=";
   };
 
-  nativeBuildInputs = [ cmake makeWrapper ];
-  buildInputs = [ SDL2 libpng xz zlib freetype fontconfig ]
-    ++ lib.optionals withFluidSynth [ fluidsynth soundfont-fluid ];
+  nativeBuildInputs = [ cmake pkg-config makeWrapper ];
+  buildInputs = [
+    SDL2 libpng xz zlib freetype fontconfig
+    nlohmann_json curl icu harfbuzz expat glib pcre2
+  ] ++ lib.optionals withFluidSynth [
+    fluidsynth soundfont-fluid libsndfile
+    flac libogg libvorbis libopus libmpg123 pulseaudio alsa-lib libjack2
+  ];
 
   prefixKey = "--prefix-dir=";
 
diff --git a/nixpkgs/pkgs/games/openttd/jgrpp.nix b/nixpkgs/pkgs/games/openttd/jgrpp.nix
index 46fe0ab60ac4..da113ed1afc2 100644
--- a/nixpkgs/pkgs/games/openttd/jgrpp.nix
+++ b/nixpkgs/pkgs/games/openttd/jgrpp.nix
@@ -2,14 +2,20 @@
 
 openttd.overrideAttrs (oldAttrs: rec {
   pname = "openttd-jgrpp";
-  version = "0.54.1";
+  version = "0.54.4";
 
   src = fetchFromGitHub rec {
     owner = "JGRennison";
     repo = "OpenTTD-patches";
     rev = "jgrpp-${version}";
-    hash = "sha256-MfYh2a3wjWB/5zgTE8AAIREI2OEhykqF0Rad7I+912U=";
+    hash = "sha256-bTpHlKffQbANXIrAn9WSEK/PEzBW1nzaHhGKIyclAo0=";
   };
 
   buildInputs = oldAttrs.buildInputs ++ [ zstd ];
+
+  meta = {
+    homepage = "https://github.com/JGRennison/OpenTTD-patches";
+    changelog = "https://github.com/JGRennison/OpenTTD-patches/blob/jgrpp-${version}/jgrpp-changelog.md";
+  };
+
 })
diff --git a/nixpkgs/pkgs/games/openxcom/default.nix b/nixpkgs/pkgs/games/openxcom/default.nix
index ce9d098082d5..c09bd5c28f2f 100644
--- a/nixpkgs/pkgs/games/openxcom/default.nix
+++ b/nixpkgs/pkgs/games/openxcom/default.nix
@@ -1,40 +1,54 @@
-{ lib
-, stdenv
-, fetchFromGitHub
+{ boost
 , cmake
-, pkg-config
+, fetchFromGitHub
+, lib
 , libGLU
 , libGL
-, zlib
 , openssl
-, yaml-cpp
-, boost
+, pkg-config
 , SDL
 , SDL_image
 , SDL_mixer
 , SDL_gfx
+, stdenv
+, yaml-cpp
+, zlib
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "openxcom";
-  version = "1.0.0.2019.10.18";
+  version = "1.0.0.2023.08.12";
 
   src = fetchFromGitHub {
     owner = "OpenXcom";
     repo = "OpenXcom";
-    rev = "f9853b2cb8c8f741ac58707487ef493416d890a3";
-    hash = "sha256-APv49ZT94oeM4KVKGtUdoQ1t8Ly8lsocr+FqXiRXbk0=";
+    rev = "bd632cc8569a57fdc3b68ce53f6ea850422ec5ac";
+    hash = "sha256-ouYZ4rAEluqeP+ZUrbEZwCpXCw0cZLWsf1GbIE3jaTc=";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
 
-  buildInputs = [ SDL SDL_gfx SDL_image SDL_mixer boost yaml-cpp libGLU libGL openssl zlib ];
+  buildInputs = [
+    boost
+    libGL
+    libGLU
+    SDL
+    SDL_gfx
+    SDL_image
+    SDL_mixer
+    yaml-cpp
+    openssl
+    zlib
+  ];
 
-  meta = with lib; {
+  meta = {
     description = "Open source clone of UFO: Enemy Unknown";
     homepage = "https://openxcom.org";
-    maintainers = with maintainers; [ cpages ];
-    platforms = platforms.linux;
-    license = licenses.gpl3;
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ cpages ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/games/osu-lazer/bin.nix b/nixpkgs/pkgs/games/osu-lazer/bin.nix
index 7cbf6bc83956..0854b3861173 100644
--- a/nixpkgs/pkgs/games/osu-lazer/bin.nix
+++ b/nixpkgs/pkgs/games/osu-lazer/bin.nix
@@ -7,21 +7,21 @@
 
 let
   pname = "osu-lazer-bin";
-  version = "2023.803.0";
+  version = "2023.815.0";
   name = "${pname}-${version}";
 
   osu-lazer-bin-src = {
     aarch64-darwin = {
       url = "https://github.com/ppy/osu/releases/download/${version}/osu.app.Apple.Silicon.zip";
-      sha256 = "sha256-41UvP3h7Nnmjnjr1nl35uCe6CUK54p1Ok1KhQ8F5/4M=";
+      sha256 = "sha256-lijX8UOSWZPzQdA+DOPcgKW3PxKFbNtBSUrq903zx7E=";
     };
     x86_64-darwin = {
       url = "https://github.com/ppy/osu/releases/download/${version}/osu.app.Intel.zip";
-      sha256 = "sha256-qxAgXL4igfttsPN3xr4JPBGy9FalR1JIS7OtB4iqNB8=";
+      sha256 = "sha256-XuQ82h/ebo7oWcWq4vUOguh6FUsWO+xFpz7Z++DjkzY=";
     };
     x86_64-linux = {
       url = "https://github.com/ppy/osu/releases/download/${version}/osu.AppImage";
-      sha256 = "sha256-fO9j7hIEhxEDWVdNAPVriHuDQyF2XgReeROBNpXM8gU=";
+      sha256 = "sha256-wRWJQQ4rn3A8Dd53gPt62pOtd9KRmYXxuejd8RGOAdw=";
     };
   }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported.");
 
diff --git a/nixpkgs/pkgs/games/osu-lazer/default.nix b/nixpkgs/pkgs/games/osu-lazer/default.nix
index 17a42db26b59..4286edf6f09b 100644
--- a/nixpkgs/pkgs/games/osu-lazer/default.nix
+++ b/nixpkgs/pkgs/games/osu-lazer/default.nix
@@ -17,13 +17,13 @@
 
 buildDotnetModule rec {
   pname = "osu-lazer";
-  version = "2023.803.0";
+  version = "2023.815.0";
 
   src = fetchFromGitHub {
     owner = "ppy";
     repo = "osu";
     rev = version;
-    sha256 = "sha256-q2rw44veVWpKcW/wCkBHNxaIwOXuflejIvqhGQgoh8o=";
+    sha256 = "sha256-Lm/unDa1ADc2zprrgP/a2bOzHb02CwU9gcvhmTOXKIM=";
   };
 
   projectFile = "osu.Desktop/osu.Desktop.csproj";
diff --git a/nixpkgs/pkgs/games/osu-lazer/deps.nix b/nixpkgs/pkgs/games/osu-lazer/deps.nix
index 816ead326bbe..5bae8db3417c 100644
--- a/nixpkgs/pkgs/games/osu-lazer/deps.nix
+++ b/nixpkgs/pkgs/games/osu-lazer/deps.nix
@@ -6,7 +6,7 @@
   (fetchNuGet { pname = "Clowd.Squirrel"; version = "2.9.42"; sha256 = "1xxrr9jmgn343d467nz40569mkybinnmxaxyc4fhgy6yddvzk1y0"; })
   (fetchNuGet { pname = "CodeFileSanity"; version = "0.0.37"; sha256 = "03ja3g66lb0smjmkr3yf28h7fy52wwbdnf6p268zfla3azh006pq"; })
   (fetchNuGet { pname = "DiffPlex"; version = "1.7.1"; sha256 = "1q78r70pirgb7j5wkh454ws237lihh0fig212cpbj02cz53c2h6j"; })
-  (fetchNuGet { pname = "DiscordRichPresence"; version = "1.1.3.18"; sha256 = "0p4bhaggjjfd4gl06yiphqgncxgcq2bws4sjkrw0n2ldf3hgrps3"; })
+  (fetchNuGet { pname = "DiscordRichPresence"; version = "1.1.4.20"; sha256 = "115nbg7d4j2v5l40hqp4q4s0pm84r1yl7d8fbxyw89s1nbab6qp3"; })
   (fetchNuGet { pname = "FFmpeg.AutoGen"; version = "4.3.0.1"; sha256 = "0n6x57mnnvcjnrs8zyvy07h5zm4bcfy9gh4n4bvd9fx5ys4pxkvv"; })
   (fetchNuGet { pname = "Fody"; version = "6.7.0"; sha256 = "0fv0zrffa296qjyi11yk31vfqh6gm1nxsx8g5zz380jcsrilnp3h"; })
   (fetchNuGet { pname = "HidSharpCore"; version = "1.2.1.1"; sha256 = "1zkndglmz0s8rblfhnqcvv90rkq2i7lf4bc380g7z8h1avf2ikll"; })
@@ -134,10 +134,10 @@
   (fetchNuGet { pname = "ppy.ManagedBass"; version = "2022.1216.0"; sha256 = "19nnj1hq2v21mrplnivjr9c4y3wg4hhfnc062sjgzkmiv1cchvf8"; })
   (fetchNuGet { pname = "ppy.ManagedBass.Fx"; version = "2022.1216.0"; sha256 = "1vw573mkligpx9qiqasw1683cqaa1kgnxhlnbdcj9c4320b1pwjm"; })
   (fetchNuGet { pname = "ppy.ManagedBass.Mix"; version = "2022.1216.0"; sha256 = "185bpvgbnd8y20r7vxb1an4pd1aal9b7b5wvmv3knz0qg8j0chd9"; })
-  (fetchNuGet { pname = "ppy.osu.Framework"; version = "2023.716.0"; sha256 = "11qzwxrmbnzrx0g3dqx9ici58kfn5b3g3riwis3fsjfyiziwzvx8"; })
+  (fetchNuGet { pname = "ppy.osu.Framework"; version = "2023.815.0"; sha256 = "0xda8fd70x6ljbaqliikbjff84arjm3va5ibdv5p9sijn5arhzy8"; })
   (fetchNuGet { pname = "ppy.osu.Framework.NativeLibs"; version = "2022.525.0"; sha256 = "1zsqj3xng06bb46vg79xx35n2dsh3crqg951r1ga2gxqzgzy4nk0"; })
-  (fetchNuGet { pname = "ppy.osu.Framework.SourceGeneration"; version = "2023.709.0"; sha256 = "1p7lh7583lka6awb4q3vwfhlmry69n9gfjp2h0zm2bvyn9p1928f"; })
-  (fetchNuGet { pname = "ppy.osu.Game.Resources"; version = "2023.707.0"; sha256 = "1hndj38qpi7936z7dh6lyip00hvx99q8xzrmkvrp9562ys9xjdpw"; })
+  (fetchNuGet { pname = "ppy.osu.Framework.SourceGeneration"; version = "2023.720.0"; sha256 = "001vvxyv483ibid25fdknvij77x0y983mp4psx2lbg3x2al7yxax"; })
+  (fetchNuGet { pname = "ppy.osu.Game.Resources"; version = "2023.719.0"; sha256 = "1isy0jd8xkjw72m4akh85nmlcfp6na1ksghyajs4amiagjgvvn47"; })
   (fetchNuGet { pname = "ppy.osuTK.NS20"; version = "1.0.211"; sha256 = "0j4a9n39pqm0cgdcps47p5n2mqph3h94r7hmf0bs59imif4jxvjy"; })
   (fetchNuGet { pname = "ppy.SDL2-CS"; version = "1.0.671-alpha"; sha256 = "1yzakyp0wwayd9k2wmmfklmpvhig0skqk6sn98axpfgnq4hxhllm"; })
   (fetchNuGet { pname = "ppy.Veldrid"; version = "4.9.3-g9f8aa2931a"; sha256 = "0jzjaakcfy3x85wx8smp4j7hffbynqakgqvwslr3bkbqlfdxxbil"; })
diff --git a/nixpkgs/pkgs/games/path-of-building/default.nix b/nixpkgs/pkgs/games/path-of-building/default.nix
index a6a51664b088..c4242eb4ea05 100644
--- a/nixpkgs/pkgs/games/path-of-building/default.nix
+++ b/nixpkgs/pkgs/games/path-of-building/default.nix
@@ -1,49 +1,49 @@
-{ stdenv, lib, fetchFromGitHub, runCommand, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }:
+{ stdenv, lib, fetchFromGitHub, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }:
 let
-  dataVersion = "2.30.1";
-  frontendVersion = "unstable-2023-04-09";
-in
-stdenv.mkDerivation {
-  pname = "path-of-building";
-  version = "${dataVersion}-${frontendVersion}";
-
-  src = fetchFromGitHub {
-    owner = "ernstp";
-    repo = "pobfrontend";
-    rev = "9faa19aa362f975737169824c1578d5011487c18";
-    hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
-  };
+  data = stdenv.mkDerivation(finalAttrs: {
+    pname = "path-of-building-data";
+    version = "2.31.2";
 
-  data = runCommand "path-of-building-data" {
     src = fetchFromGitHub {
       owner = "PathOfBuildingCommunity";
       repo = "PathOfBuilding";
-      rev = "v${dataVersion}";
-      hash = "sha256-2itcALgl8eDkZylb/hmePDMILM4RxW2u5LYLbg+NNJ4=";
+      rev = "v${finalAttrs.version}";
+      hash = "sha256-E178uYVQ+B08h1lM7h+hwfMb08VZK+r25pD4haT1tc8=";
     };
 
     nativeBuildInputs = [ unzip ];
-  }
-  ''
-    # I have absolutely no idea how this file is generated
-    # and I don't think I want to know. The Flatpak also does this.
-    unzip -j -d $out $src/runtime-win32.zip lua/sha1.lua
 
-    # Install the actual data
-    cp -r $src/src $src/runtime/lua/*.lua $src/manifest.xml $out
+    buildCommand = ''
+      # I have absolutely no idea how this file is generated
+      # and I don't think I want to know. The Flatpak also does this.
+      unzip -j -d $out $src/runtime-win32.zip lua/sha1.lua
 
-    # Pretend this is an official build so we don't get the ugly "dev mode" warning
-    substituteInPlace $out/manifest.xml --replace '<Version' '<Version platform="nixos"'
-    touch $out/installed.cfg
+      # Install the actual data
+      cp -r $src/src $src/runtime/lua/*.lua $src/manifest.xml $out
 
-    # Completely stub out the update check
-    chmod +w $out/src/UpdateCheck.lua
-    echo 'return "none"' > $out/src/UpdateCheck.lua
-  '';
+      # Pretend this is an official build so we don't get the ugly "dev mode" warning
+      substituteInPlace $out/manifest.xml --replace '<Version' '<Version platform="nixos"'
+      touch $out/installed.cfg
+
+      # Completely stub out the update check
+      chmod +w $out/src/UpdateCheck.lua
+      echo 'return "none"' > $out/src/UpdateCheck.lua
+    '';
+  });
+in
+stdenv.mkDerivation {
+  pname = "path-of-building";
+  version = "${data.version}-unstable-2023-04-09";
+
+  src = fetchFromGitHub {
+    owner = "ernstp";
+    repo = "pobfrontend";
+    rev = "9faa19aa362f975737169824c1578d5011487c18";
+    hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
+  };
 
   nativeBuildInputs = [ meson ninja pkg-config qttools wrapQtAppsHook ];
   buildInputs = [ qtbase luajit luajit.pkgs.lua-curl ];
-  dontWrapQtApps = true;
 
   installPhase = ''
     runHook preInstall
@@ -51,13 +51,16 @@ stdenv.mkDerivation {
     runHook postInstall
   '';
 
-  postFixup = ''
-    wrapQtApp $out/bin/pobfrontend \
-      --set LUA_PATH "$LUA_PATH" \
-      --set LUA_CPATH "$LUA_CPATH" \
-      --chdir "$data"
+  preFixup = ''
+    qtWrapperArgs+=(
+      --set LUA_PATH "$LUA_PATH"
+      --set LUA_CPATH "$LUA_CPATH"
+      --chdir "${data}"
+    )
   '';
 
+  passthru.data = data;
+
   meta = {
     description = "Offline build planner for Path of Exile";
     homepage = "https://pathofbuilding.community/";
diff --git a/nixpkgs/pkgs/games/prismlauncher/wrapper.nix b/nixpkgs/pkgs/games/prismlauncher/wrapper.nix
index 63604ea1ff5a..240deec4e2fe 100644
--- a/nixpkgs/pkgs/games/prismlauncher/wrapper.nix
+++ b/nixpkgs/pkgs/games/prismlauncher/wrapper.nix
@@ -14,11 +14,15 @@
 , jdk8
 , jdk17
 , gamemode
+, flite
+, mesa-demos
 
 , msaClientID ? null
 , gamemodeSupport ? stdenv.isLinux
+, textToSpeechSupport ? stdenv.isLinux
 , jdks ? [ jdk17 jdk8 ]
 , additionalLibs ? [ ]
+, additionalPrograms ? [ ]
 }:
 let
   prismlauncherFinal = prismlauncher-unwrapped.override {
@@ -46,7 +50,7 @@ symlinkJoin {
 
   qtWrapperArgs =
     let
-      libs = (with xorg; [
+      runtimeLibs = (with xorg; [
         libX11
         libXext
         libXcursor
@@ -61,14 +65,21 @@ symlinkJoin {
         stdenv.cc.cc.lib
       ]
       ++ lib.optional gamemodeSupport gamemode.lib
+      ++ lib.optional textToSpeechSupport flite
       ++ additionalLibs;
 
+      runtimePrograms = [
+        xorg.xrandr
+        mesa-demos # need glxinfo
+      ]
+      ++ additionalPrograms;
+
     in
     [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ]
     ++ lib.optionals stdenv.isLinux [
-      "--set LD_LIBRARY_PATH /run/opengl-driver/lib:${lib.makeLibraryPath libs}"
+      "--set LD_LIBRARY_PATH /run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs}"
       # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
-      "--prefix PATH : ${lib.makeBinPath [xorg.xrandr]}"
+      "--prefix PATH : ${lib.makeBinPath runtimePrograms}"
     ];
 
   inherit (prismlauncherFinal) meta;
diff --git a/nixpkgs/pkgs/games/quake3/ioquake/default.nix b/nixpkgs/pkgs/games/quake3/ioquake/default.nix
index f0d8ea56693b..7161b9474f24 100644
--- a/nixpkgs/pkgs/games/quake3/ioquake/default.nix
+++ b/nixpkgs/pkgs/games/quake3/ioquake/default.nix
@@ -1,47 +1,52 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, which
 , pkg-config
+, which
+, copyDesktopItems
+, makeBinaryWrapper
 , SDL2
 , libGL
-, openalSoft
+, openal
 , curl
 , speex
 , opusfile
 , libogg
 , libvorbis
-, libopus
 , libjpeg
-, mumble
+, makeDesktopItem
 , freetype
 }:
 
 stdenv.mkDerivation {
   pname = "ioquake3";
-  version = "unstable-2022-11-24";
+  version = "unstable-2023-08-13";
 
   src = fetchFromGitHub {
     owner = "ioquake";
     repo = "ioq3";
-    rev = "70d07d91d62dcdd2f2268d1ac401bfb697b4c991";
-    sha256 = "sha256-WDjR0ik+xAs6OA1DNbUGIF1MXSuEoy8nNkPiHaegfF0=";
+    rev = "ee950eb7b0e41437cc23a9943254c958da8a61ab";
+    sha256 = "sha256-NfhInwrtw85i2mnv7EtBrrpNaslaQaVhLNlK0I9aYto=";
   };
 
-  nativeBuildInputs = [ which pkg-config ];
+  nativeBuildInputs = [
+    copyDesktopItems
+    makeBinaryWrapper
+    pkg-config
+    which
+  ];
+
   buildInputs = [
     SDL2
     libGL
-    openalSoft
+    openal
     curl
     speex
     opusfile
     libogg
     libvorbis
-    libopus
     libjpeg
     freetype
-    mumble
   ];
 
   enableParallelBuilding = true;
@@ -50,17 +55,32 @@ stdenv.mkDerivation {
 
   installTargets = [ "copyfiles" ];
 
-  installFlags = [ "COPYDIR=$(out)" "COPYBINDIR=$(out)/bin" ];
+  installFlags = [ "COPYDIR=$(out)/share/ioquake3" ];
 
-  preInstall = ''
-    mkdir -p $out/baseq3 $out/bin
+  postInstall = ''
+    install -Dm644 misc/quake3.svg $out/share/icons/hicolor/scalable/apps/ioquake3.svg
+
+    makeWrapper $out/share/ioquake3/ioquake3.* $out/bin/ioquake3
+    makeWrapper $out/share/ioquake3/ioq3ded.* $out/bin/ioq3ded
   '';
 
-  meta = with lib; {
+  desktopItems = [
+    (makeDesktopItem {
+      name = "IOQuake3";
+      exec = "ioquake3";
+      icon = "ioquake3";
+      comment = "A fast-paced 3D first-person shooter, a community effort to continue supporting/developing id's Quake III Arena";
+      desktopName = "ioquake3";
+      categories = [ "Game" "ActionGame" ];
+    })
+  ];
+
+  meta = {
     homepage = "https://ioquake3.org/";
-    description = "First person shooter engine based on the Quake 3: Arena and Quake 3: Team Arena";
-    license = licenses.gpl2Only;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ rvolosatovs eelco abbradar ];
+    description = "A fast-paced 3D first-person shooter, a community effort to continue supporting/developing id's Quake III Arena";
+    license = lib.licenses.gpl2Plus;
+    mainProgram = "ioquake3";
+    maintainers = with lib.maintainers; [ abbradar drupol eelco rvolosatovs ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/games/qzdl/default.nix b/nixpkgs/pkgs/games/qzdl/default.nix
new file mode 100644
index 000000000000..0b44328fb8e4
--- /dev/null
+++ b/nixpkgs/pkgs/games/qzdl/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, inih
+, ninja
+, pkg-config
+, qtbase
+, wrapQtAppsHook
+, makeDesktopItem
+, copyDesktopItems
+}:
+
+stdenv.mkDerivation rec {
+  pname = "qzdl";
+  version = "unstable-2023-04-04";
+
+  src = fetchFromGitHub {
+    owner = "qbasicer";
+    repo = "qzdl";
+    rev = "44aaec0182e781a3cef373e5c795c9dbd9cd61bb";
+    hash = "sha256-K/mJQb7uO2H94krWJIJtFRYd6BAe2TX1xBt6fGBb1tA=";
+  };
+
+  patches = [
+    ./non-bundled-inih.patch
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    copyDesktopItems
+    ninja
+    pkg-config
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    inih
+    qtbase
+  ];
+
+  postInstall = ''
+    install -Dm644 $src/res/zdl3.svg $out/share/icons/hicolor/scalable/apps/zdl3.svg
+  '';
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "zdl3";
+      exec = "zdl %U";
+      icon = "zdl3";
+      desktopName = "ZDL";
+      genericName = "A ZDoom WAD Launcher";
+      categories = [ "Game" ];
+    })
+  ];
+
+  meta = with lib; {
+    description = "A ZDoom WAD Launcher";
+    homepage = "https://zdl.vectec.net";
+    license = licenses.gpl3Only;
+    inherit (qtbase.meta) platforms;
+    maintainers = with maintainers; [ azahi ];
+    mainProgram = "zdl";
+  };
+}
diff --git a/nixpkgs/pkgs/games/qzdl/non-bundled-inih.patch b/nixpkgs/pkgs/games/qzdl/non-bundled-inih.patch
new file mode 100644
index 000000000000..7e47dd8c2017
--- /dev/null
+++ b/nixpkgs/pkgs/games/qzdl/non-bundled-inih.patch
@@ -0,0 +1,36 @@
+diff --git i/CMakeLists.txt w/CMakeLists.txt
+index 10a8fb6..dcab540 100644
+--- i/CMakeLists.txt
++++ w/CMakeLists.txt
+@@ -6,16 +6,8 @@ set(CMAKE_AUTOMOC ON)
+ project(qzdl LANGUAGES C CXX)
+ find_package(Qt5 COMPONENTS Core Widgets REQUIRED)
+ 
+-include(FetchContent)
+-FetchContent_Declare(
+-	inih
+-	GIT_REPOSITORY https://github.com/benhoyt/inih.git
+-	GIT_TAG r44
+-)
+-FetchContent_GetProperties(inih)
+-if (NOT inih_POPULATED)
+-	FetchContent_Populate(inih)
+-endif()
++find_package(PkgConfig)
++pkg_check_modules(INIH inih)
+ 
+ add_executable(
+ 	zdl
+@@ -45,9 +37,8 @@ add_executable(
+ 	libwad.cpp
+ 	qzdl.cpp
+ 	${PROJECT_SOURCE_DIR}/zdlconf/zdlconf.cpp
+-	${inih_SOURCE_DIR}/ini.c
+ )
+ 
+-target_include_directories(zdl PRIVATE ${PROJECT_SOURCE_DIR}/zdlconf)
+-target_include_directories(zdl PRIVATE ${inih_SOURCE_DIR})
+-target_link_libraries(zdl Qt5::Core Qt5::Widgets)
++target_include_directories(zdl PRIVATE ${PROJECT_SOURCE_DIR}/zdlconf ${INIH_INCLUDEDIR})
++target_link_libraries(zdl Qt5::Core Qt5::Widgets ${INIH_LDFLAGS})
++install(TARGETS zdl RUNTIME DESTINATION "bin")
diff --git a/nixpkgs/pkgs/games/steam/default.nix b/nixpkgs/pkgs/games/steam/default.nix
index 370f22268a9a..651c20491844 100644
--- a/nixpkgs/pkgs/games/steam/default.nix
+++ b/nixpkgs/pkgs/games/steam/default.nix
@@ -1,4 +1,4 @@
-{ makeScopeWithSplicing, generateSplicesForMkScope
+{ makeScopeWithSplicing', generateSplicesForMkScope
 , stdenv, buildFHSEnv, pkgsi686Linux, glxinfo
 }:
 
@@ -32,6 +32,7 @@ let
 
     steamcmd = callPackage ./steamcmd.nix { };
   };
-  keep = self: { };
-  extra = spliced0: { };
-in makeScopeWithSplicing (generateSplicesForMkScope "steamPackages") keep extra steamPackagesFun
+in makeScopeWithSplicing' {
+  otherSplices = generateSplicesForMkScope "steamPackages";
+  f = steamPackagesFun;
+}
diff --git a/nixpkgs/pkgs/games/unciv/default.nix b/nixpkgs/pkgs/games/unciv/default.nix
index e0cf519acccb..d5a884a01381 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.7.11";
+  version = "4.7.13";
 
   src = fetchurl {
     url = "https://github.com/yairm210/Unciv/releases/download/${version}/Unciv.jar";
-    hash = "sha256-1QMfGONaw6XX3F2bo5tBghJbnii7z6RE+ZuanIGUF8Q=";
+    hash = "sha256-KvRDPu2FZY+iZ2vNi/tly/7/Tpg/EN8jHTKizYV5jeY=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/games/urbanterror/default.nix b/nixpkgs/pkgs/games/urbanterror/default.nix
index fbb633bb657b..6c54984eccbf 100644
--- a/nixpkgs/pkgs/games/urbanterror/default.nix
+++ b/nixpkgs/pkgs/games/urbanterror/default.nix
@@ -1,64 +1,113 @@
-{ lib, stdenv, fetchurl, unzip, SDL, libGLU, libGL, openal, curl, libXxf86vm }:
+{ lib
+, fetchzip
+, stdenv
+, copyDesktopItems
+, imagemagick
+, libicns
+, makeBinaryWrapper
+, curl
+, libGL
+, libGLU
+, openal
+, libXxf86vm
+, SDL
+, makeDesktopItem
+}:
 
-stdenv.mkDerivation rec {
-  pname = "urbanterror";
+let
   version = "4.3.4";
 
-  srcs =
-    [ (fetchurl {
-         url = "http://cdn.urbanterror.info/urt/43/releases/zips/UrbanTerror434_full.zip";
-         sha256 = "1rx4nnndsk88nvd7k4p35cw6znclkkzm2bl5j6vn6mjjdk66jrki";
-       })
-      (fetchurl {
-         url = "https://github.com/FrozenSand/ioq3-for-UrbanTerror-4/archive/release-${version}.zip";
-         sha256 = "1s9pmw7rbnzwzl1llcs0kr2krf4daf8hhnz1j89qk4bq9a9qfp71";
-       })
-    ];
-
-  nativeBuildInputs = [ unzip ];
-  buildInputs = [ SDL libGL libGLU openal curl libXxf86vm ];
-  sourceRoot = "ioq3-for-UrbanTerror-4-release-${version}";
+  urbanterror-maps = fetchzip {
+    name = "urbanterror-maps";
+    url = "http://cdn.urbanterror.info/urt/43/releases/zips/UrbanTerror${builtins.replaceStrings ["."] [""] version}_full.zip";
+    hash = "sha256-C6Gb5PPECAOjQhmkrzkV6dpY/zHVtUj9oq3507o2PUI=";
+  };
+
+  urbanterror-source = fetchzip {
+    name = "urbanterror-source";
+    url = "https://github.com/FrozenSand/ioq3-for-UrbanTerror-4/archive/release-${version}.zip";
+    hash = "sha256-zF6Tkaj5WYkFU66VwpBFr1P18OJGrGgxnc/jvcvt8hA=";
+  };
+in
+stdenv.mkDerivation {
+  pname = "urbanterror";
+  inherit version;
+
+  srcs = [
+    urbanterror-maps
+    urbanterror-source
+  ];
+
+  sourceRoot = "urbanterror-source";
+
+  nativeBuildInputs = [
+    copyDesktopItems
+    imagemagick
+    libicns
+    makeBinaryWrapper
+  ];
+
+  buildInputs = [
+    curl
+    libGL
+    libGLU
+    openal
+    libXxf86vm
+    SDL
+  ];
 
   configurePhase = ''
+    runHook preConfigure
+
     echo "USE_OPENAL = 1" > Makefile.local
     echo "USE_OPENAL_DLOPEN = 0" >> Makefile.local
     echo "USE_CURL = 1" >> Makefile.local
     echo "USE_CURL_DLOPEN = 0" >> Makefile.local
+
+    runHook postConfigure
   '';
 
-  installPhase = ''
-    destDir="$out/opt/urbanterror"
-    mkdir -p "$destDir"
-    mkdir -p "$out/bin"
-    cp -v build/release-linux-*/Quake3-UrT.* \
-          "$destDir/Quake3-UrT"
-    cp -v build/release-linux-*/Quake3-UrT-Ded.* \
-          "$destDir/Quake3-UrT-Ded"
-    cp -rv ../UrbanTerror43/q3ut4 "$destDir"
-    cat << EOF > "$out/bin/urbanterror"
-    #! ${stdenv.shell}
-    cd "$destDir"
-    exec ./Quake3-UrT "\$@"
-    EOF
-    chmod +x "$out/bin/urbanterror"
-    cat << EOF > "$out/bin/urbanterror-ded"
-    #! ${stdenv.shell}
-    cd "$destDir"
-    exec ./Quake3-UrT-Ded "\$@"
-    EOF
-    chmod +x "$out/bin/urbanterror-ded"
+  installTargets = [ "copyfiles" ];
+  installFlags = [ "COPYDIR=$(out)/share/urbanterror" ];
+
+  preInstall = ''
+    mkdir -p $out/share/urbanterror
   '';
 
-  postFixup = ''
-    p=$out/opt/urbanterror/Quake3-UrT
-    cur_rpath=$(patchelf --print-rpath $p)
-    patchelf --set-rpath $cur_rpath:${libGL}/lib:${libGLU}/lib $p
+  postInstall = ''
+    icns2png --extract ${urbanterror-maps}/Quake3-UrT.app/Contents/Resources/quake3-urt.icns
+
+    for size in 16 24 32 48 64 128 256 512 1024; do
+      mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps
+      if [ ! -e quake3-urt_"$size"x"$size"x32.png ] ; then
+        convert -resize "$size"x"$size" quake3-urt_512x512x32.png quake3-urt_"$size"x"$size"x32.png
+      fi
+      install -Dm644 quake3-urt_"$size"x"$size"x32.png $out/share/icons/hicolor/"$size"x"$size"/apps/urbanterror.png
+    done;
+
+    makeWrapper $out/share/urbanterror/Quake3-UrT.* $out/bin/urbanterror
+    makeWrapper $out/share/urbanterror/Quake3-UrT-Ded.* $out/bin/urbanterror-ded
+
+    ln -s ${urbanterror-maps}/q3ut4 $out/share/urbanterror/
   '';
 
   hardeningDisable = [ "format" ];
 
-  meta = with lib; {
+  desktopItems = [
+    (makeDesktopItem {
+      name = "urbanterror";
+      exec = "urbanterror";
+      icon = "urbanterror";
+      comment = "A multiplayer tactical FPS on top of Quake 3 engine";
+      desktopName = "Urban Terror";
+      categories = [ "Game" "ActionGame" ];
+    })
+  ];
+
+  meta = {
     description = "A multiplayer tactical FPS on top of Quake 3 engine";
+    homepage = "https://www.urbanterror.info";
+    license = lib.licenses.unfreeRedistributable;
     longDescription = ''
       Urban Terror is a free multiplayer first person shooter developed by
       FrozenSand, that (thanks to the ioquake3-code) does not require
@@ -66,10 +115,8 @@ stdenv.mkDerivation rec {
       tactical shooter; somewhat realism based, but the motto is "fun over
       realism". This results in a very unique, enjoyable and addictive game.
     '';
-    homepage = "http://www.urbanterror.info";
-    license = licenses.unfreeRedistributable;
-    maintainers = with maintainers; [ astsmtl ];
-    platforms = platforms.linux;
-    hydraPlatforms = [];
+    mainProgram = "urbanterror";
+    maintainers = with lib.maintainers; [ astsmtl drupol ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/games/vintagestory/default.nix b/nixpkgs/pkgs/games/vintagestory/default.nix
index e7ab08384067..b0f5b54bc93e 100644
--- a/nixpkgs/pkgs/games/vintagestory/default.nix
+++ b/nixpkgs/pkgs/games/vintagestory/default.nix
@@ -4,7 +4,6 @@
 , makeWrapper
 , makeDesktopItem
 , copyDesktopItems
-, mono
 , xorg
 , gtk2
 , sqlite
@@ -16,36 +15,22 @@
 , libglvnd
 , pipewire
 , libpulseaudio
-, experimental ? false
 , dotnet-runtime_7
 }:
 
 stdenv.mkDerivation rec {
   pname = "vintagestory";
-  version = if experimental then "1.18.8-rc.1" else "1.18.7";
+  version = "1.18.8";
 
-  src =
-    if experimental
-    then
-      (fetchurl {
-        url = "https://cdn.vintagestory.at/gamefiles/unstable/vs_client_linux-x64_${version}.tar.gz";
-        hash = "sha256-FxyAJTiLENTp5QxPKRgsiOhkMXz88CTn3QRvIHtOH+A=";
-      })
-    else
-      (fetchurl {
-        url = "https://cdn.vintagestory.at/gamefiles/stable/vs_archive_${version}.tar.gz";
-        hash = "sha256-geJoNxBxODXQeTExLdTOaH84asjo2yg2xFm8Pj0IMc0=";
-      });
+  src = fetchurl {
+    url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${version}.tar.gz";
+    hash = "sha256-q7MxmsWCGODOt/hCkCPz964m7az27SddIRBJ1vYg02k=";
+  };
 
 
   nativeBuildInputs = [ makeWrapper copyDesktopItems ];
 
-  buildInputs =
-    if experimental then [
-      dotnet-runtime_7
-    ] else [
-      mono
-    ];
+  buildInputs = [ dotnet-runtime_7 ];
 
   runtimeLibs = lib.makeLibraryPath ([
     gtk2
@@ -65,7 +50,7 @@ stdenv.mkDerivation rec {
 
   desktopItems = makeDesktopItem {
     name = "vintagestory";
-    desktopName = if experimental then "Vintage Story Experimental .net 7" else "Vintage Story";
+    desktopName = "Vintage Story";
     exec = "vintagestory";
     icon = "vintagestory";
     comment = "Innovate and explore in a sandbox world";
@@ -83,21 +68,14 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  preFixup = (if experimental then ''
+  preFixup = ''
     makeWrapper ${dotnet-runtime_7}/bin/dotnet $out/bin/vintagestory \
       --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
       --add-flags $out/share/vintagestory/Vintagestory.dll
     makeWrapper ${dotnet-runtime_7}/bin/dotnet $out/bin/vintagestory-server \
       --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
       --add-flags $out/share/vintagestory/VintagestoryServer.dll
-  '' else ''
-    makeWrapper ${mono}/bin/mono $out/bin/vintagestory \
-      --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
-      --add-flags $out/share/vintagestory/Vintagestory.exe
-    makeWrapper ${mono}/bin/mono $out/bin/vintagestory-server \
-      --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
-      --add-flags $out/share/vintagestory/VintagestoryServer.exe
-  '') + ''
+  '' + ''
     find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do
       local filename="$(basename -- "$file")"
       ln -sf "$filename" "''${file%/*}"/"''${filename,,}"
diff --git a/nixpkgs/pkgs/games/wesnoth/default.nix b/nixpkgs/pkgs/games/wesnoth/default.nix
index 2bed9e435fce..df5b393ccded 100644
--- a/nixpkgs/pkgs/games/wesnoth/default.nix
+++ b/nixpkgs/pkgs/games/wesnoth/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, SDL2, SDL2_image, SDL2_mixer, SDL2_net, SDL2_ttf
+{ lib, stdenv, fetchFromGitHub, fetchpatch
+, cmake, pkg-config, SDL2, SDL2_image, SDL2_mixer, SDL2_net, SDL2_ttf
 , pango, gettext, boost, libvorbis, fribidi, dbus, libpng, pcre, openssl, icu
 , Cocoa, Foundation
 }:
@@ -14,6 +15,16 @@ stdenv.mkDerivation rec {
     hash = "sha256-KtAPc2nsqSoHNsLTLom/yaUECn+IWBdBFpiMclrUHxM=";
   };
 
+  patches = [
+    # Pull upstream fix https://github.com/wesnoth/wesnoth/pull/6726
+    # for gcc-13 support.
+    (fetchpatch {
+      name = "gcc-134.patch";
+      url = "https://github.com/wesnoth/wesnoth/commit/f073493ebc279cefa391d364c48265058795e1d2.patch";
+      hash = "sha256-uTB65DEBZwHFRgDwNx/yVjzmnW3jRoiibadXhNcwMkI=";
+    })
+  ];
+
   nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [ SDL2 SDL2_image SDL2_mixer SDL2_net SDL2_ttf pango gettext boost