about summary refs log tree commit diff
path: root/pkgs/games
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games')
-rw-r--r--pkgs/games/0ad/data.nix2
-rw-r--r--pkgs/games/0ad/game.nix3
-rw-r--r--pkgs/games/2048-cli/default.nix2
-rw-r--r--pkgs/games/20kly/default.nix2
-rw-r--r--pkgs/games/90secondportraits/default.nix2
-rw-r--r--pkgs/games/BeatSaberModManager/default.nix78
-rw-r--r--pkgs/games/BeatSaberModManager/deps.nix99
-rw-r--r--pkgs/games/abbaye-des-morts/default.nix2
-rw-r--r--pkgs/games/adom/default.nix60
-rw-r--r--pkgs/games/airshipper/default.nix1
-rw-r--r--pkgs/games/airstrike/default.nix2
-rw-r--r--pkgs/games/alienarena/default.nix2
-rw-r--r--pkgs/games/angband/default.nix2
-rw-r--r--pkgs/games/animatch/default.nix2
-rw-r--r--pkgs/games/anki/bin.nix133
-rw-r--r--pkgs/games/armagetronad/default.nix2
-rw-r--r--pkgs/games/augustus/default.nix2
-rw-r--r--pkgs/games/azimuth/default.nix2
-rw-r--r--pkgs/games/badlion-client/default.nix2
-rw-r--r--pkgs/games/black-hole-solver/default.nix2
-rw-r--r--pkgs/games/blackshades/default.nix2
-rw-r--r--pkgs/games/blightmud/default.nix21
-rw-r--r--pkgs/games/blobby/default.nix2
-rw-r--r--pkgs/games/blockattack/default.nix59
-rw-r--r--pkgs/games/boohu/default.nix2
-rw-r--r--pkgs/games/braincurses/default.nix2
-rw-r--r--pkgs/games/brogue-ce/default.nix2
-rw-r--r--pkgs/games/brogue/default.nix2
-rw-r--r--pkgs/games/btanks/default.nix51
-rw-r--r--pkgs/games/bugdom/default.nix5
-rw-r--r--pkgs/games/cataclysm-dda/common.nix2
-rw-r--r--pkgs/games/chessdb/default.nix2
-rw-r--r--pkgs/games/chiaki4deck/default.nix21
-rw-r--r--pkgs/games/chromium-bsu/default.nix2
-rw-r--r--pkgs/games/classicube/default.nix2
-rw-r--r--pkgs/games/cockatrice/default.nix2
-rw-r--r--pkgs/games/colobot/default.nix6
-rw-r--r--pkgs/games/corsix-th/darwin-cmake-no-fixup-bundle.patch12
-rw-r--r--pkgs/games/corsix-th/default.nix47
-rw-r--r--pkgs/games/crack-attack/default.nix2
-rw-r--r--pkgs/games/crawl/default.nix1
-rw-r--r--pkgs/games/crrcsim/default.nix2
-rw-r--r--pkgs/games/curseofwar/default.nix2
-rw-r--r--pkgs/games/darkplaces/default.nix2
-rw-r--r--pkgs/games/ddnet/default.nix2
-rw-r--r--pkgs/games/deliantra/data.nix2
-rw-r--r--pkgs/games/domination/default.nix8
-rw-r--r--pkgs/games/doom-ports/chocolate-doom/default.nix2
-rw-r--r--pkgs/games/doom-ports/crispy-doom/default.nix2
-rw-r--r--pkgs/games/doom-ports/doomretro/default.nix6
-rw-r--r--pkgs/games/doom-ports/doomseeker/qt_build_fix.patch47
-rw-r--r--pkgs/games/doom-ports/eureka-editor/default.nix2
-rw-r--r--pkgs/games/doom-ports/gzdoom/default.nix4
-rw-r--r--pkgs/games/doom-ports/odamex/default.nix2
-rw-r--r--pkgs/games/doom-ports/prboom-plus/default.nix2
-rw-r--r--pkgs/games/doom-ports/slade/default.nix4
-rw-r--r--pkgs/games/doom-ports/slade/git.nix2
-rw-r--r--pkgs/games/doom-ports/zandronum/sqlite.nix2
-rw-r--r--pkgs/games/dwarf-fortress/default.nix8
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/default.nix5
-rw-r--r--pkgs/games/dwarf-fortress/dwarf-therapist/default.nix7
-rw-r--r--pkgs/games/dwarf-fortress/game.json3
-rw-r--r--pkgs/games/dwarf-fortress/game.nix2
-rw-r--r--pkgs/games/dwarf-fortress/lazy-pack.nix2
-rw-r--r--pkgs/games/dwarf-fortress/legends-browser/default.nix2
-rw-r--r--pkgs/games/dwarf-fortress/twbt/default.nix2
-rw-r--r--pkgs/games/dxx-rebirth/default.nix1
-rw-r--r--pkgs/games/eduke32/convert-bmp-to-png.diff23
-rw-r--r--pkgs/games/eduke32/default.nix6
-rw-r--r--pkgs/games/eidolon/default.nix2
-rw-r--r--pkgs/games/empty-epsilon/default.nix16
-rw-r--r--pkgs/games/endgame-singularity/default.nix2
-rw-r--r--pkgs/games/endless-sky/default.nix4
-rw-r--r--pkgs/games/extremetuxracer/default.nix4
-rw-r--r--pkgs/games/ezquake/default.nix2
-rw-r--r--pkgs/games/factorio/default.nix2
-rw-r--r--pkgs/games/factorio/versions.json48
-rw-r--r--pkgs/games/fairymax/default.nix2
-rw-r--r--pkgs/games/fallout-ce/fallout-ce.nix2
-rw-r--r--pkgs/games/fallout-ce/fallout2-ce.nix2
-rw-r--r--pkgs/games/ferium/default.nix6
-rw-r--r--pkgs/games/fheroes2/default.nix4
-rw-r--r--pkgs/games/fish-fillets-ng/default.nix2
-rw-r--r--pkgs/games/fltrator/default.nix2
-rw-r--r--pkgs/games/forge-mtg/default.nix4
-rw-r--r--pkgs/games/freeciv/default.nix18
-rw-r--r--pkgs/games/freedink/default.nix2
-rw-r--r--pkgs/games/freedroid/default.nix2
-rw-r--r--pkgs/games/freeorion/default.nix2
-rw-r--r--pkgs/games/freesweep/default.nix4
-rw-r--r--pkgs/games/frogatto/engine.nix2
-rw-r--r--pkgs/games/frotz/default.nix2
-rw-r--r--pkgs/games/fteqw/default.nix2
-rw-r--r--pkgs/games/gamehub/default.nix4
-rw-r--r--pkgs/games/gamepad-tool/default.nix2
-rw-r--r--pkgs/games/gcompris/default.nix23
-rw-r--r--pkgs/games/gemrb/default.nix2
-rw-r--r--pkgs/games/gl-117/default.nix2
-rw-r--r--pkgs/games/gl-gsync-demo/default.nix2
-rw-r--r--pkgs/games/gnonograms/default.nix4
-rw-r--r--pkgs/games/gnuchess/default.nix5
-rw-r--r--pkgs/games/gnujump/default.nix2
-rw-r--r--pkgs/games/gogdl/default.nix7
-rw-r--r--pkgs/games/gogui/default.nix2
-rw-r--r--pkgs/games/gotypist/default.nix2
-rw-r--r--pkgs/games/grapejuice/default.nix4
-rw-r--r--pkgs/games/graphwar/default.nix2
-rw-r--r--pkgs/games/gscrabble/default.nix4
-rw-r--r--pkgs/games/gshogi/default.nix6
-rw-r--r--pkgs/games/gtypist/default.nix2
-rw-r--r--pkgs/games/gweled/default.nix4
-rw-r--r--pkgs/games/harmonist/default.nix2
-rw-r--r--pkgs/games/hase/default.nix2
-rw-r--r--pkgs/games/heroic/default.nix2
-rw-r--r--pkgs/games/hex-a-hop/default.nix2
-rw-r--r--pkgs/games/hikounomizu/default.nix2
-rw-r--r--pkgs/games/hmcl/default.nix85
-rw-r--r--pkgs/games/hyperrogue/default.nix4
-rw-r--r--pkgs/games/infra-arcana/default.nix2
-rw-r--r--pkgs/games/instawow/default.nix4
-rw-r--r--pkgs/games/ironwail/default.nix27
-rw-r--r--pkgs/games/jfsw/default.nix4
-rw-r--r--pkgs/games/julius/darwin-fixes.patch49
-rw-r--r--pkgs/games/julius/default.nix39
-rw-r--r--pkgs/games/jumpnbump/default.nix4
-rw-r--r--pkgs/games/jumpy/default.nix2
-rw-r--r--pkgs/games/katago/default.nix6
-rw-r--r--pkgs/games/katawa-shoujo/default.nix2
-rw-r--r--pkgs/games/keeperrl/default.nix2
-rw-r--r--pkgs/games/koboredux/default.nix2
-rw-r--r--pkgs/games/ldmud/default.nix2
-rw-r--r--pkgs/games/legendary-gl/default.nix2
-rw-r--r--pkgs/games/liberal-crime-squad/default.nix2
-rw-r--r--pkgs/games/liberation-circuit/default.nix4
-rw-r--r--pkgs/games/linthesia/default.nix6
-rw-r--r--pkgs/games/liquidwar/5.nix2
-rw-r--r--pkgs/games/maelstrom/default.nix2
-rw-r--r--pkgs/games/manaplus/default.nix4
-rw-r--r--pkgs/games/maptool/default.nix4
-rw-r--r--pkgs/games/mars/default.nix2
-rw-r--r--pkgs/games/mchprs/default.nix2
-rw-r--r--pkgs/games/megaglest/default.nix2
-rw-r--r--pkgs/games/methane/default.nix2
-rw-r--r--pkgs/games/mindustry/default.nix3
-rw-r--r--pkgs/games/minecraft-servers/derivation.nix18
-rw-r--r--pkgs/games/minecraft-servers/versions.json50
-rw-r--r--pkgs/games/minecraft/default.nix7
-rw-r--r--pkgs/games/minetest/default.nix5
-rw-r--r--pkgs/games/moon-buggy/default.nix2
-rw-r--r--pkgs/games/naev/default.nix4
-rw-r--r--pkgs/games/nanosaur/default.nix2
-rw-r--r--pkgs/games/nanosaur2/default.nix2
-rw-r--r--pkgs/games/netris/default.nix2
-rw-r--r--pkgs/games/newtonwars/default.nix2
-rw-r--r--pkgs/games/nexuiz/default.nix2
-rw-r--r--pkgs/games/nile/default.nix10
-rw-r--r--pkgs/games/npush/default.nix2
-rw-r--r--pkgs/games/nudoku/default.nix2
-rw-r--r--pkgs/games/nxengine-evo/default.nix68
-rw-r--r--pkgs/games/oh-my-git/default.nix2
-rw-r--r--pkgs/games/oilrush/default.nix2
-rw-r--r--pkgs/games/onscripter-en/default.nix38
-rw-r--r--pkgs/games/openarena/default.nix2
-rw-r--r--pkgs/games/openclonk/default.nix26
-rw-r--r--pkgs/games/opendungeons/default.nix2
-rw-r--r--pkgs/games/openjk/default.nix2
-rw-r--r--pkgs/games/openlierox/default.nix87
-rw-r--r--pkgs/games/openloco/default.nix2
-rw-r--r--pkgs/games/openmw/default.nix2
-rw-r--r--pkgs/games/openrct2/default.nix12
-rw-r--r--pkgs/games/openspades/default.nix2
-rw-r--r--pkgs/games/openttd/default.nix8
-rw-r--r--pkgs/games/openttd/jgrpp.nix4
-rw-r--r--pkgs/games/osu-lazer/bin.nix8
-rw-r--r--pkgs/games/osu-lazer/default.nix9
-rw-r--r--pkgs/games/osu-lazer/deps.nix6
-rw-r--r--pkgs/games/otto-matic/default.nix2
-rw-r--r--pkgs/games/pacvim/default.nix2
-rwxr-xr-xpkgs/games/papermc/update.py11
-rw-r--r--pkgs/games/papermc/versions.json16
-rw-r--r--pkgs/games/path-of-building/default.nix69
-rw-r--r--pkgs/games/pegasus-frontend/default.nix2
-rw-r--r--pkgs/games/pentobi/default.nix2
-rw-r--r--pkgs/games/pingus/default.nix2
-rw-r--r--pkgs/games/pioneer/default.nix2
-rw-r--r--pkgs/games/planetaryannihilation/default.nix2
-rw-r--r--pkgs/games/pokete/default.nix2
-rw-r--r--pkgs/games/powermanga/default.nix2
-rw-r--r--pkgs/games/principia/default.nix4
-rw-r--r--pkgs/games/prismlauncher/default.nix2
-rw-r--r--pkgs/games/prismlauncher/wrapper.nix4
-rw-r--r--pkgs/games/pro-office-calculator/default.nix2
-rw-r--r--pkgs/games/purpur/default.nix2
-rw-r--r--pkgs/games/qgo/default.nix2
-rw-r--r--pkgs/games/qtads/default.nix2
-rw-r--r--pkgs/games/quake3/ioquake/default.nix2
-rw-r--r--pkgs/games/quake3/quake3e/default.nix13
-rw-r--r--pkgs/games/quakespasm/default.nix2
-rw-r--r--pkgs/games/qzdl/default.nix2
-rw-r--r--pkgs/games/r2mod_cli/default.nix2
-rw-r--r--pkgs/games/rare/default.nix2
-rw-r--r--pkgs/games/raylib-games/default.nix2
-rw-r--r--pkgs/games/redeclipse/default.nix4
-rw-r--r--pkgs/games/rigsofrods-bin/default.nix2
-rw-r--r--pkgs/games/riko4/default.nix2
-rw-r--r--pkgs/games/rili/default.nix2
-rw-r--r--pkgs/games/rocksndiamonds/default.nix1
-rw-r--r--pkgs/games/rogue/default.nix2
-rw-r--r--pkgs/games/runescape-launcher/default.nix4
-rw-r--r--pkgs/games/sauerbraten/default.nix2
-rw-r--r--pkgs/games/scid-vs-pc/default.nix4
-rw-r--r--pkgs/games/scrolls/default.nix2
-rw-r--r--pkgs/games/sgt-puzzles/default.nix4
-rw-r--r--pkgs/games/shattered-pixel-dungeon/default.nix4
-rw-r--r--pkgs/games/shattered-pixel-dungeon/experienced-pixel-dungeon.nix6
-rw-r--r--pkgs/games/shattered-pixel-dungeon/shorter-pixel-dungeon.nix6
-rw-r--r--pkgs/games/shipwright/darwin-fixes.patch37
-rw-r--r--pkgs/games/shipwright/default.nix90
-rw-r--r--pkgs/games/sil-q/default.nix2
-rw-r--r--pkgs/games/sil/default.nix2
-rw-r--r--pkgs/games/simutrans/default.nix2
-rw-r--r--pkgs/games/sm64ex/generic.nix1
-rw-r--r--pkgs/games/snake4/default.nix2
-rw-r--r--pkgs/games/soi/default.nix2
-rw-r--r--pkgs/games/solarus/default.nix2
-rw-r--r--pkgs/games/solicurses/default.nix2
-rw-r--r--pkgs/games/space-cadet-pinball/default.nix1
-rw-r--r--pkgs/games/space-orbit/default.nix2
-rw-r--r--pkgs/games/space-station-14-launcher/space-station-14-launcher.nix8
-rw-r--r--pkgs/games/spring/default.nix2
-rw-r--r--pkgs/games/starsector/default.nix10
-rw-r--r--pkgs/games/steam/fhsenv.nix7
-rw-r--r--pkgs/games/steam/runtime.nix6
-rw-r--r--pkgs/games/steam/steam.nix2
-rw-r--r--pkgs/games/steam/steamcmd.nix7
-rw-r--r--pkgs/games/stepmania/default.nix5
-rw-r--r--pkgs/games/stone-kingdoms/default.nix2
-rw-r--r--pkgs/games/super-tux-kart/default.nix2
-rw-r--r--pkgs/games/system-syzygy/default.nix4
-rw-r--r--pkgs/games/t4kcommon/default.nix2
-rw-r--r--pkgs/games/taisei/default.nix2
-rw-r--r--pkgs/games/tcl2048/default.nix2
-rw-r--r--pkgs/games/tecnoballz/default.nix2
-rw-r--r--pkgs/games/tes3cmd/default.nix2
-rw-r--r--pkgs/games/the-butterfly-effect/default.nix2
-rw-r--r--pkgs/games/the-powder-toy/default.nix65
-rw-r--r--pkgs/games/tintin/default.nix2
-rw-r--r--pkgs/games/tinyfugue/default.nix2
-rw-r--r--pkgs/games/trigger/default.nix2
-rw-r--r--pkgs/games/tuxtype/default.nix2
-rw-r--r--pkgs/games/typespeed/default.nix2
-rw-r--r--pkgs/games/ufoai/default.nix2
-rw-r--r--pkgs/games/uhexen2/default.nix2
-rw-r--r--pkgs/games/ultrastardx/default.nix5
-rw-r--r--pkgs/games/umoria/default.nix2
-rw-r--r--pkgs/games/unvanquished/default.nix3
-rw-r--r--pkgs/games/urbanterror/default.nix2
-rw-r--r--pkgs/games/ut2004/demo.nix2
-rw-r--r--pkgs/games/vassal/default.nix10
-rw-r--r--pkgs/games/vcmi/default.nix11
-rw-r--r--pkgs/games/vessel/default.nix2
-rw-r--r--pkgs/games/vimgolf/default.nix2
-rw-r--r--pkgs/games/vintagestory/default.nix6
-rw-r--r--pkgs/games/vms-empire/default.nix62
-rw-r--r--pkgs/games/warzone2100/default.nix2
-rw-r--r--pkgs/games/wesnoth/default.nix2
-rw-r--r--pkgs/games/widelands/default.nix1
-rw-r--r--pkgs/games/wipeout-rewrite/default.nix2
-rw-r--r--pkgs/games/worldofgoo/default.nix3
-rw-r--r--pkgs/games/wyvern/default.nix2
-rw-r--r--pkgs/games/xconq/default.nix2
-rw-r--r--pkgs/games/xjump/default.nix2
-rw-r--r--pkgs/games/xmoto/default.nix2
-rw-r--r--pkgs/games/xpilot/bloodspilot-client.nix2
-rw-r--r--pkgs/games/xpilot/bloodspilot-server.nix2
-rw-r--r--pkgs/games/xpilot/default.nix2
-rw-r--r--pkgs/games/xskat/default.nix2
-rw-r--r--pkgs/games/xsnow/default.nix2
-rw-r--r--pkgs/games/xsok/default.nix2
-rw-r--r--pkgs/games/xtris/default.nix2
-rw-r--r--pkgs/games/zaz/default.nix2
281 files changed, 1094 insertions, 1233 deletions
diff --git a/pkgs/games/0ad/data.nix b/pkgs/games/0ad/data.nix
index 4437a5d26995b..92ebf57486468 100644
--- a/pkgs/games/0ad/data.nix
+++ b/pkgs/games/0ad/data.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A free, open-source game of ancient warfare -- data files";
+    description = "Free, open-source game of ancient warfare -- data files";
     homepage = "https://play0ad.com/";
     license = licenses.cc-by-sa-30;
     maintainers = with maintainers; [ chvp ];
diff --git a/pkgs/games/0ad/game.nix b/pkgs/games/0ad/game.nix
index eadb8bd274575..4391e21ce8102 100644
--- a/pkgs/games/0ad/game.nix
+++ b/pkgs/games/0ad/game.nix
@@ -117,7 +117,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A free, open-source game of ancient warfare";
+    description = "Free, open-source game of ancient warfare";
     homepage = "https://play0ad.com/";
     license = with licenses; [
       gpl2 lgpl21 mit cc-by-sa-30
@@ -125,5 +125,6 @@ stdenv.mkDerivation rec {
     ];
     maintainers = with maintainers; [ chvp ];
     platforms = subtractLists platforms.i686 platforms.linux;
+    mainProgram = "0ad";
   };
 }
diff --git a/pkgs/games/2048-cli/default.nix b/pkgs/games/2048-cli/default.nix
index e1eb958164ce7..450982df7446c 100644
--- a/pkgs/games/2048-cli/default.nix
+++ b/pkgs/games/2048-cli/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "https://github.com/tiehuis/2048-cli";
-    description = "The game 2048 for your Linux terminal";
+    description = "Game 2048 for your Linux terminal";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.AndersonTorres ];
     platforms = lib.platforms.unix;
diff --git a/pkgs/games/20kly/default.nix b/pkgs/games/20kly/default.nix
index c2ab350195162..661feea1730db 100644
--- a/pkgs/games/20kly/default.nix
+++ b/pkgs/games/20kly/default.nix
@@ -38,7 +38,7 @@ python3Packages.buildPythonApplication rec {
   '';
 
   meta = with lib; {
-    description = "A steampunk-themed strategy game where you have to manage a steam supply network";
+    description = "Steampunk-themed strategy game where you have to manage a steam supply network";
     mainProgram = "lightyears";
     homepage = "http://jwhitham.org.uk/20kly/";
     license = licenses.gpl2Only;
diff --git a/pkgs/games/90secondportraits/default.nix b/pkgs/games/90secondportraits/default.nix
index bd60c836b6367..c8db41d791d6f 100644
--- a/pkgs/games/90secondportraits/default.nix
+++ b/pkgs/games/90secondportraits/default.nix
@@ -42,7 +42,7 @@ in stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A silly speed painting game";
+    description = "Silly speed painting game";
     mainProgram = "90secondportraits";
     maintainers = with maintainers; [ leenaars ];
     platforms = platforms.linux;
diff --git a/pkgs/games/BeatSaberModManager/default.nix b/pkgs/games/BeatSaberModManager/default.nix
deleted file mode 100644
index 5c0f73d329f24..0000000000000
--- a/pkgs/games/BeatSaberModManager/default.nix
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  lib,
-  dotnet-sdk,
-  stdenv,
-  substituteAll,
-
-  buildDotnetModule,
-  fetchFromGitHub,
-
-  dotnetCorePackages,
-
-  libX11,
-  libICE,
-  libSM,
-  fontconfig,
-
-  xdg-utils,
-}:
-
-buildDotnetModule rec {
-  pname = "BeatSaberModManager";
-  version = "0.0.5";
-
-  src = fetchFromGitHub {
-    owner = "affederaffe";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-HHWC+MAwJ+AMCuBzSuR7FbW3k+wLri0B9J1DftyfNEU=";
-    fetchSubmodules = true; # It vendors BSIPA-Linux
-  };
-
-  dotnet-sdk = with dotnetCorePackages; combinePackages [
-    sdk_7_0
-    sdk_6_0
-  ];
-
-  dotnet-runtime = dotnetCorePackages.runtime_7_0;
-
-  projectFile = [ "BeatSaberModManager/BeatSaberModManager.csproj" ];
-
-  executables = [ "BeatSaberModManager" ];
-
-  nugetDeps = ./deps.nix;
-
-  runtimeDeps = [
-    libX11
-    libICE
-    libSM
-    fontconfig
-  ];
-
-  # Required for OneClick
-  makeWrapperArgs = [
-    ''--suffix PATH : "${lib.makeBinPath [ xdg-utils ]}"''
-  ];
-
-  meta = with lib; {
-    description = "Yet another mod installer for Beat Saber, heavily inspired by ModAssistant";
-    mainProgram = "BeatSaberModManager";
-    homepage = "https://github.com/affederaffe/BeatSaberModManager";
-    longDescription = ''
-      BeatSaberModManager is yet another mod installer for Beat Saber, heavily inspired by ModAssistant
-      It strives to look more visually appealing and support both Windows and Linux, while still being as feature-rich as ModAssistant.
-
-      Features
-
-      - Windows and Linux support
-      - Dependency resolution
-      - Installed mod detection
-      - Mod uninstallation
-      - Theming support
-      - OneClick™ support for BeatSaver, ModelSaber and Playlists
-    '';
-    license = licenses.mit;
-    maintainers = with maintainers; [ atemu ];
-    platforms = with platforms; linux;
-  };
-}
diff --git a/pkgs/games/BeatSaberModManager/deps.nix b/pkgs/games/BeatSaberModManager/deps.nix
deleted file mode 100644
index 64115dd683e94..0000000000000
--- a/pkgs/games/BeatSaberModManager/deps.nix
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file was automatically generated by passthru.fetch-deps.
-# Please dont edit it manually, your changes might get overwritten!
-
-{ fetchNuGet }: [
-  (fetchNuGet { pname = "Avalonia"; version = "11.0.999-cibuild0030643-beta"; sha256 = "0bcc3h5hxy8mfkgxn07vnnq2rn8whn2gx3d67lmlpm01r16rndyc"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia/11.0.999-cibuild0030643-beta/avalonia.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; sha256 = "1az4s1g22ipak9a3xfh55z2h3rm6lpqh7svbpw6ag4ysrgsjjsjd"; })
-  (fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.999-cibuild0030643-beta"; sha256 = "06n0c8dyh1q4a97nm31vyr8b6jzcq8nvvligwzp4xaxdwhkphg2x"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.controls.colorpicker/11.0.999-cibuild0030643-beta/avalonia.controls.colorpicker.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.999-cibuild0030643-beta"; sha256 = "1vfkbjy9fl24i6skn02wgr047579x4a1liiw79qwbkx7mgvw9pvn"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.controls.datagrid/11.0.999-cibuild0030643-beta/avalonia.controls.datagrid.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.999-cibuild0030643-beta"; sha256 = "0nh6hdw07hwq92n0m1sx7qxwp4ccqash5f8sivj3lflx786s9i5f"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.desktop/11.0.999-cibuild0030643-beta/avalonia.desktop.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.999-cibuild0030643-beta"; sha256 = "0ddcq2w54cywpzcwb9av54zkblvpnp0g7xs4dsw6s39wrxyh8spw"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.diagnostics/11.0.999-cibuild0030643-beta/avalonia.diagnostics.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.999-cibuild0030643-beta"; sha256 = "1wshqaikd1b2a91yixgsnvl8i1arhmlviavjywi67a2w1xv98das"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.freedesktop/11.0.999-cibuild0030643-beta/avalonia.freedesktop.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Native"; version = "11.0.999-cibuild0030643-beta"; sha256 = "10pp6lh5hlcfs3xrqg1rv7xkckkpnbvdvx0ndfqgpfqxyv99jdhd"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.native/11.0.999-cibuild0030643-beta/avalonia.native.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.ReactiveUI"; version = "11.0.999-cibuild0030643-beta"; sha256 = "1pl35gkpc36hydd350ch6iilyfngbg8wxw3vkx5a971761lqrgbz"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.reactiveui/11.0.999-cibuild0030643-beta/avalonia.reactiveui.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.999-cibuild0030643-beta"; sha256 = "179l5w9j2hy683fhxi25q98sfgz03l48qj8mgg1asjjpqcbybgh2"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.remote.protocol/11.0.999-cibuild0030643-beta/avalonia.remote.protocol.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.999-cibuild0030643-beta"; sha256 = "0fvc83phdjxhfg3pndr7j178i2km5wjbm1xiplh4bvg6pwa2xypz"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.skia/11.0.999-cibuild0030643-beta/avalonia.skia.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Themes.Fluent"; version = "11.0.999-cibuild0030643-beta"; sha256 = "1ch7v19xpg4nkq2aqap82sd237735g5nrp06h1i0m83kks4xz6as"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.themes.fluent/11.0.999-cibuild0030643-beta/avalonia.themes.fluent.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.999-cibuild0030643-beta"; sha256 = "0aify5nh31bf347k4s4d5c36mhh6yc6q4l6araq3fxb05v4pb5c0"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.themes.simple/11.0.999-cibuild0030643-beta/avalonia.themes.simple.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.999-cibuild0030643-beta"; sha256 = "1b86hlr25w8i3hdxxxb9qrbaf91d56vmiwm5ikywglk28c9x8zyq"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.win32/11.0.999-cibuild0030643-beta/avalonia.win32.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Avalonia.X11"; version = "11.0.999-cibuild0030643-beta"; sha256 = "15pcbv0hw099080s2ndi7cqm3gnyzcvva3jgp8z33g4h8qaiiyvn"; url = "https://pkgs.dev.azure.com/AvaloniaUI/aa84306f-2981-47b9-8206-edb3bed6250d/_packaging/5ebc1fbc-7d49-4641-8a57-d18c55ed6602/nuget/v3/flat2/avalonia.x11/11.0.999-cibuild0030643-beta/avalonia.x11.11.0.999-cibuild0030643-beta.nupkg"; })
-  (fetchNuGet { pname = "Devlooped.SponsorLink"; version = "0.9.6"; sha256 = "0d6sdy4312fb9g7l3q9x78vmw4ngrzf2f961778h4zqga8nc23rm"; })
-  (fetchNuGet { pname = "DynamicData"; version = "7.9.5"; sha256 = "1m9qx8g6na5ka6kd9vhg8gjmxrnkzb6v5cl5yqp1kdjsw4rcwy6x"; })
-  (fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; sha256 = "115aybicqs9ijjlcv6k6r5v0agkjm1bm1nkd0rj3jglv8s0xvmp2"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; sha256 = "1f18ahwkaginrg0vwsi6s56lvnqvvxv7pzklfs5lnknasxy1a76z"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; sha256 = "052d8frpkj4ijs6fm6xp55xbv95b1s9biqwa0w8zp3rgm88m9236"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; sha256 = "043hv36bg5240znbm8x5la7py17m4jfzy57q3ka32f6zjld83j36"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; sha256 = "08khd2jqm8sw58ljz5srangzfm2sz3gd2q1jzc5fr80lj8rv6r74"; })
-  (fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; })
-  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; sha256 = "0w0yx0lpg54iw5jazqk46h48gx43ij32gwac8iywdj6kxfxm03vw"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
-  (fetchNuGet { pname = "Microsoft.VisualStudio.Threading"; version = "17.1.46"; sha256 = "0w7b17xh88rqzjjsy66gg2kfaqmg7sdmx70sharkqb7qh3pih87m"; })
-  (fetchNuGet { pname = "Microsoft.VisualStudio.Threading.Analyzers"; version = "17.1.46"; sha256 = "0lgx7776ivmz0gr0whyacxpnlp6w5b80mj012a28mm79r1qxpf60"; })
-  (fetchNuGet { pname = "Microsoft.VisualStudio.Validation"; version = "17.0.53"; sha256 = "0y34dvc5z6ash2cpp69mclb3wr52fd8khsmm61sv7lkql0pg03ki"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
-  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.0"; sha256 = "0c6pcj088g1yd1vs529q3ybgsd2vjlk5y1ic6dkmbhvrp5jibl9p"; })
-  (fetchNuGet { pname = "Nerdbank.Streams"; version = "2.9.112"; sha256 = "1i10xr5zm9vapfzvimim9gn2pm9vgnsnb44sq3b0162r0k572rrp"; })
-  (fetchNuGet { pname = "ReactiveUI"; version = "18.3.1"; sha256 = "1lxkc8yk9glj0w9n5vry2dnwwvh8152ad2c5bivk8aciq64zidyn"; })
-  (fetchNuGet { pname = "Serilog"; version = "2.10.0"; sha256 = "08bih205i632ywryn3zxkhb15dwgyaxbhmm1z3b5nmby9fb25k7v"; })
-  (fetchNuGet { pname = "Serilog.Sinks.File"; version = "5.0.1-dev-00947"; sha256 = "153vi3xjy65ixfr8nfs59n0bmgj0jxfyydmhjs8h3apr9f29lbh4"; })
-  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.3"; sha256 = "1yq694myq2rhfp2hwwpyzcg1pzpxcp7j72wib8p9pw9dfj7008sv"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.3"; sha256 = "0dajvr60nwvnv7s6kcqgw1w97zxdpz1c5lb7kcq7r0hi0l05ck3q"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.3"; sha256 = "191ajgi6fnfqcvqvkayjsxasiz6l0bv3pps8vv9abbyc4b12qvph"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.3"; sha256 = "1w5njksq3amrrp7fqxw89nv6ar2kgc5yx092i4rxv7hrjbd1aagx"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.3"; sha256 = "03wwfbarsxjnk70qhqyd1dw65098dncqk2m0vksx92j70i7lry6q"; })
-  (fetchNuGet { pname = "Splat"; version = "14.4.1"; sha256 = "03ycyjn2ii44npi015p4rk344xnjgdzz02cf63cmhx2ab8hv6p4b"; })
-  (fetchNuGet { pname = "StrongInject"; version = "1.4.5-ci-20220524-023137"; sha256 = "1ksiv5rs22j193sxwjvdc4vhblikka9z8hhs705f4mi1r4q0x1ha"; })
-  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
-  (fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
-  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
-  (fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; sha256 = "02n8rzm58dac2np8b3xw8ychbvylja4nh6938l5k2fhyn40imlgz"; })
-  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
-  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
-  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
-  (fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.3"; sha256 = "1jgdazpmwc21dd9naq3l9n5s8a1jnbwlvgkf1pnm0aji6jd4xqdz"; })
-  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
-  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
-  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
-  (fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
-  (fetchNuGet { pname = "System.Reactive"; version = "5.0.0"; sha256 = "1lafmpnadhiwxyd543kraxa3jfdpm6ipblxrjlibym9b1ykpr5ik"; })
-  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
-  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
-  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
-  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; })
-  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
-  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
-  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
-  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
-  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
-  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
-  (fetchNuGet { pname = "System.Security.AccessControl"; version = "5.0.0"; sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r"; })
-  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; })
-  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; })
-  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
-  (fetchNuGet { pname = "System.Threading.Channels"; version = "7.0.0"; sha256 = "1qrmqa6hpzswlmyp3yqsbnmia9i5iz1y208xpqc1y88b1f6j1v8a"; })
-  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
-  (fetchNuGet { pname = "ThisAssembly.AssemblyInfo"; version = "1.2.9"; sha256 = "1pilnin62fb2frmybl3n0xvxn1xpr8bymbzialspl6cbw2xvag97"; })
-  (fetchNuGet { pname = "ThisAssembly.Prerequisites"; version = "1.2.9"; sha256 = "0skk9sk8lc4dn9rmykz337n5apg76if9l327q7787fabisr9rbw7"; })
-  (fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.13.0"; sha256 = "1r5lc8x3iq795l7vnyzs3shvpqz92fldkayvkqmrfjxnqmy0w3kg"; })
-  (fetchNuGet { pname = "Tmds.DBus.SourceGenerator"; version = "0.0.2"; sha256 = "03q0fja30216npb3hd39iapr9psriz2k35lymaf4921195y40fiq"; })
-  (fetchNuGet { pname = "XamlNameReferenceGenerator"; version = "1.6.1"; sha256 = "0348gj9g5rl0pj2frx4vscj6602gfyn9ba3i1rmfcrxh9jwwa09m"; })
-]
diff --git a/pkgs/games/abbaye-des-morts/default.nix b/pkgs/games/abbaye-des-morts/default.nix
index 1461c45a0b795..4f1d744653d34 100644
--- a/pkgs/games/abbaye-des-morts/default.nix
+++ b/pkgs/games/abbaye-des-morts/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://locomalito.com/abbaye_des_morts.php";
-    description = "A retro arcade video game";
+    description = "Retro arcade video game";
     mainProgram = "abbayev2";
     license = licenses.gpl3;
     maintainers = [ maintainers.marius851000 ];
diff --git a/pkgs/games/adom/default.nix b/pkgs/games/adom/default.nix
deleted file mode 100644
index bef9d1b42d32b..0000000000000
--- a/pkgs/games/adom/default.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{ lib, stdenv, fetchurl, patchelf, zlib, libmad, libpng12, libcaca, libGLU, libGL, alsa-lib, libpulseaudio
-, xorg }:
-
-let
-
-  inherit (xorg) libXext libX11;
-
-  lpath = "${stdenv.cc.cc.lib}/lib64:" + lib.makeLibraryPath [
-      zlib libmad libpng12 libcaca libXext libX11 libGLU libGL alsa-lib libpulseaudio];
-
-in
-stdenv.mkDerivation rec {
-  name = "adom-${version}-noteye";
-  version = "1.2.0_pre23";
-
-  src = fetchurl {
-    url = "http://ancardia.uk.to/download/adom_noteye_linux_ubuntu_64_${version}.tar.gz";
-    sha256 = "0sbn0csaqb9cqi0z5fdwvnymkf84g64csg0s9mm6fzh0sm2mi0hz";
-  };
-
-  buildCommand = ''
-    . $stdenv/setup
-
-    unpackPhase
-
-    mkdir -pv $out
-    cp -r -t $out adom/*
-
-    chmod u+w $out/lib
-    for l in $out/lib/*so* ; do
-      chmod u+w $l
-      ${patchelf}/bin/patchelf \
-        --set-rpath "$out/lib:${lpath}" \
-        $l
-    done
-
-    ${patchelf}/bin/patchelf \
-      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "$out/lib:${lpath}" \
-      $out/adom
-
-    mkdir $out/bin
-    cat >$out/bin/adom <<EOF
-    #! ${stdenv.shell}
-    (cd $out; exec $out/adom ; )
-    EOF
-    chmod +x $out/bin/adom
-  '';
-
-  meta = with lib; {
-    description = "A rogue-like game with nice graphical interface";
-    homepage = "http://adom.de/";
-    license = licenses.unfreeRedistributable;
-    maintainers = [maintainers.smironov];
-
-    # Please, notify me (smironov) if you need the x86 version
-    platforms = ["x86_64-linux"];
-    broken = true; # at 2022-09-30, failed download.
-  };
-}
diff --git a/pkgs/games/airshipper/default.nix b/pkgs/games/airshipper/default.nix
index 0791aa8dfa27d..ae26c4cf7bbf6 100644
--- a/pkgs/games/airshipper/default.nix
+++ b/pkgs/games/airshipper/default.nix
@@ -1,7 +1,6 @@
 { lib
 , rustPlatform
 , fetchFromGitLab
-, fetchpatch
 , openssl
 , libGL
 , vulkan-loader
diff --git a/pkgs/games/airstrike/default.nix b/pkgs/games/airstrike/default.nix
index 63b2686e97c95..819f238806b2a 100644
--- a/pkgs/games/airstrike/default.nix
+++ b/pkgs/games/airstrike/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A 2d dogfighting game";
+    description = "2d dogfighting game";
     mainProgram = "airstrike";
     homepage = "https://icculus.org/airstrike/";
     license = licenses.gpl2;
diff --git a/pkgs/games/alienarena/default.nix b/pkgs/games/alienarena/default.nix
index 2aff5c86151e6..dbf74aa4f3b08 100644
--- a/pkgs/games/alienarena/default.nix
+++ b/pkgs/games/alienarena/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     changelog = "https://github.com/alienarena/alienarena/releases/tag/${version}";
-    description = "A free, stand-alone first-person shooter computer game";
+    description = "Free, stand-alone first-person shooter computer game";
     longDescription = ''
       Do you like old school deathmatch with modern features? How
       about rich, colorful, arcade-like atmospheres? How about retro
diff --git a/pkgs/games/angband/default.nix b/pkgs/games/angband/default.nix
index 1d3ac929d337b..3cd9174f3e8a1 100644
--- a/pkgs/games/angband/default.nix
+++ b/pkgs/games/angband/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     homepage = "https://angband.github.io/angband";
-    description = "A single-player roguelike dungeon exploration game";
+    description = "Single-player roguelike dungeon exploration game";
     mainProgram = "angband";
     maintainers = [ maintainers.kenran ];
     license = licenses.gpl2;
diff --git a/pkgs/games/animatch/default.nix b/pkgs/games/animatch/default.nix
index 261612374ace1..7b235c93e0336 100644
--- a/pkgs/games/animatch/default.nix
+++ b/pkgs/games/animatch/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "https://gitlab.com/HolyPangolin/animatch/";
-    description = "A cute match three game for the Librem 5 smartphone";
+    description = "Cute match three game for the Librem 5 smartphone";
     mainProgram = "animatch";
     license = with lib.licenses; [ gpl3Plus ];
     maintainers = with lib.maintainers; [ colinsane ];
diff --git a/pkgs/games/anki/bin.nix b/pkgs/games/anki/bin.nix
index 6af284843e71b..0d9465b770605 100644
--- a/pkgs/games/anki/bin.nix
+++ b/pkgs/games/anki/bin.nix
@@ -1,24 +1,36 @@
-{ fetchurl, stdenv, lib, buildFHSEnv, appimageTools, writeShellScript, anki, undmg, zstd, cacert, commandLineArgs ? [] }:
+{
+  fetchurl,
+  stdenv,
+  lib,
+  buildFHSEnv,
+  appimageTools,
+  writeShellScript,
+  anki,
+  undmg,
+  zstd,
+  cacert,
+  commandLineArgs ? [ ],
+}:
 
 let
   pname = "anki-bin";
   # Update hashes for both Linux and Darwin!
-  version = "24.04.1";
+  version = "24.06.2";
 
   sources = {
     linux = fetchurl {
       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-linux-qt6.tar.zst";
-      sha256 = "sha256-elUTr0Lumw5bzWbeU74m8e/AxQPNpKXiIOC0Rcgh3AY=";
+      sha256 = "sha256-A7/R7nQUt0L4fKFadPvKyi1sCEUIXcOZSW+Yr1ty63c=";
     };
 
     # For some reason anki distributes completely separate dmg-files for the aarch64 version and the x86_64 version
     darwin-x86_64 = fetchurl {
       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-intel-qt6.dmg";
-      sha256 = "sha256-LlHbZ8Yw17Ym11L1lqMibAaV8XWB8oiMFGQxE1PvApI=";
+      sha256 = "sha256-tZjR5ebzbm9w5m66Q2cy8Oe1VtqGEDpLfjpgbUh07Lo=";
     };
     darwin-aarch64 = fetchurl {
       url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-apple-qt6.dmg";
-      sha256 = "sha256-lMUfIvV4biaOb0ABTZciBP59XY1Ln3tkwphi2oaRu4c=";
+      sha256 = "sha256-/SVtyvsPWv5EGiNTbfHbPtguLi/oNytO16JPnD7IaCM=";
     };
   };
 
@@ -43,57 +55,80 @@ let
   };
 
   meta = with lib; {
-    inherit (anki.meta) license homepage description longDescription;
-    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    inherit (anki.meta)
+      license
+      homepage
+      description
+      longDescription
+      ;
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+      "aarch64-darwin"
+    ];
     maintainers = with maintainers; [ mahmoudk1000 ];
   };
 
-  passthru = { inherit sources; };
-
-  fhsEnvAnki = buildFHSEnv (appimageTools.defaultFhsEnvArgs // {
-    inherit pname version;
-
-    profile = ''
-      # anki vendors QT and mixing QT versions usually causes crashes
-      unset QT_PLUGIN_PATH
-      # anki uses the system ssl cert, without it plugins do not download/update
-      export SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt"
-    '';
-
-    # Dependencies of anki
-    targetPkgs = pkgs: (with pkgs; [ xorg.libxkbfile xcb-util-cursor-HEAD krb5 zstd ]);
-
-    runScript = writeShellScript "anki-wrapper.sh" ''
-      exec ${unpacked}/bin/anki ${ lib.strings.escapeShellArgs commandLineArgs } "$@"
-    '';
-
-    extraInstallCommands = ''
-      ln -s ${pname} $out/bin/anki
-
-      mkdir -p $out/share
-      cp -R ${unpacked}/share/applications \
-        ${unpacked}/share/man \
-        ${unpacked}/share/pixmaps \
-        $out/share/
-    '';
+  passthru = {
+    inherit sources;
+  };
 
-    inherit meta passthru;
-  });
+  fhsEnvAnki = buildFHSEnv (
+    appimageTools.defaultFhsEnvArgs
+    // {
+      inherit pname version;
+
+      profile = ''
+        # anki vendors QT and mixing QT versions usually causes crashes
+        unset QT_PLUGIN_PATH
+        # anki uses the system ssl cert, without it plugins do not download/update
+        export SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt"
+      '';
+
+      # Dependencies of anki
+      targetPkgs =
+        pkgs:
+        (with pkgs; [
+          xorg.libxkbfile
+          xcb-util-cursor-HEAD
+          krb5
+          zstd
+        ]);
+
+      runScript = writeShellScript "anki-wrapper.sh" ''
+        exec ${unpacked}/bin/anki ${lib.strings.escapeShellArgs commandLineArgs} "$@"
+      '';
+
+      extraInstallCommands = ''
+        ln -s ${pname} $out/bin/anki
+
+        mkdir -p $out/share
+        cp -R ${unpacked}/share/applications \
+          ${unpacked}/share/man \
+          ${unpacked}/share/pixmaps \
+          $out/share/
+      '';
+
+      inherit meta passthru;
+    }
+  );
 in
 
-if stdenv.isLinux then fhsEnvAnki
-else stdenv.mkDerivation {
-  inherit pname version passthru;
+if stdenv.isLinux then
+  fhsEnvAnki
+else
+  stdenv.mkDerivation {
+    inherit pname version passthru;
 
-  src = if stdenv.isAarch64 then sources.darwin-aarch64 else sources.darwin-x86_64;
+    src = if stdenv.isAarch64 then sources.darwin-aarch64 else sources.darwin-x86_64;
 
-  nativeBuildInputs = [ undmg ];
-  sourceRoot = ".";
+    nativeBuildInputs = [ undmg ];
+    sourceRoot = ".";
 
-  installPhase = ''
-    mkdir -p $out/Applications/
-    cp -a Anki.app $out/Applications/
-  '';
+    installPhase = ''
+      mkdir -p $out/Applications/
+      cp -a Anki.app $out/Applications/
+    '';
 
-  inherit meta;
-}
+    inherit meta;
+  }
diff --git a/pkgs/games/armagetronad/default.nix b/pkgs/games/armagetronad/default.nix
index fc22e7162f6dd..d4bfba671d659 100644
--- a/pkgs/games/armagetronad/default.nix
+++ b/pkgs/games/armagetronad/default.nix
@@ -191,7 +191,7 @@ let
       meta = with lib; {
         inherit mainProgram;
         homepage = "https://www.armagetronad.org";
-        description = "A multiplayer networked arcade racing game in 3D similar to Tron";
+        description = "Multiplayer networked arcade racing game in 3D similar to Tron";
         maintainers = with maintainers; [ numinit ];
         license = licenses.gpl2Plus;
         platforms = platforms.linux;
diff --git a/pkgs/games/augustus/default.nix b/pkgs/games/augustus/default.nix
index 1ccbd14f5f33a..67ad7b967359d 100644
--- a/pkgs/games/augustus/default.nix
+++ b/pkgs/games/augustus/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ SDL2 SDL2_mixer libpng ];
 
   meta = with lib; {
-    description = "An open source re-implementation of Caesar III. Fork of Julius incorporating gameplay changes";
+    description = "Open source re-implementation of Caesar III. Fork of Julius incorporating gameplay changes";
     mainProgram = "augustus";
     homepage = "https://github.com/Keriew/augustus";
     license = licenses.agpl3Only;
diff --git a/pkgs/games/azimuth/default.nix b/pkgs/games/azimuth/default.nix
index 84d50211dc372..739336733cda2 100644
--- a/pkgs/games/azimuth/default.nix
+++ b/pkgs/games/azimuth/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    description = "A metroidvania game using only vectorial graphic";
+    description = "Metroidvania game using only vectorial graphic";
     mainProgram = "azimuth";
     longDescription = ''
       Azimuth is a metroidvania game, and something of an homage to the previous
diff --git a/pkgs/games/badlion-client/default.nix b/pkgs/games/badlion-client/default.nix
index 9900551d8cd6d..a162f7e37f788 100644
--- a/pkgs/games/badlion-client/default.nix
+++ b/pkgs/games/badlion-client/default.nix
@@ -22,7 +22,7 @@ in
     '';
 
     meta = with lib; {
-      description = "The Most Complete All-In-One Mod Library for Minecraft with 100+ Mods, FPS Improvements, and more";
+      description = "Most Complete All-In-One Mod Library for Minecraft with 100+ Mods, FPS Improvements, and more";
       homepage = "https://client.badlion.net";
       license = with licenses; [ unfree ];
       maintainers = with maintainers; [];
diff --git a/pkgs/games/black-hole-solver/default.nix b/pkgs/games/black-hole-solver/default.nix
index 1950403e10c68..cab7b2ca6d6bd 100644
--- a/pkgs/games/black-hole-solver/default.nix
+++ b/pkgs/games/black-hole-solver/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A solver for Solitaire variants Golf, Black Hole, and All in a Row";
+    description = "Solver for Solitaire variants Golf, Black Hole, and All in a Row";
     mainProgram = "black-hole-solve";
     homepage = "https://www.shlomifish.org/open-source/projects/black-hole-solitaire-solver/";
     license = licenses.mit;
diff --git a/pkgs/games/blackshades/default.nix b/pkgs/games/blackshades/default.nix
index 7f1cd29c9d548..17bd0e2e96a37 100644
--- a/pkgs/games/blackshades/default.nix
+++ b/pkgs/games/blackshades/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "https://sr.ht/~cnx/blackshades";
-    description = "A psychic bodyguard FPS";
+    description = "Psychic bodyguard FPS";
     changelog = "https://git.sr.ht/~cnx/blackshades/refs/${finalAttrs.version}";
     mainProgram = "blackshades";
     license = lib.licenses.gpl3Plus;
diff --git a/pkgs/games/blightmud/default.nix b/pkgs/games/blightmud/default.nix
index e62ab24370825..237fed69ff484 100644
--- a/pkgs/games/blightmud/default.nix
+++ b/pkgs/games/blightmud/default.nix
@@ -7,8 +7,12 @@
 , openssl
 , withTTS ? false
 , speechd
+, darwin
 }:
-
+let
+  inherit (darwin.apple_sdk.frameworks)
+    CoreAudio AudioUnit AVFoundation AppKit;
+in
 rustPlatform.buildRustPackage rec {
   pname = "blightmud";
   version = "5.3.0";
@@ -17,7 +21,7 @@ rustPlatform.buildRustPackage rec {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-e9Uo0IJYL9/6/nNL27zfUYnsTwDaOJOcR2CY6t++jDE=";
+    hash = "sha256-e9Uo0IJYL9/6/nNL27zfUYnsTwDaOJOcR2CY6t++jDE=";
   };
 
   cargoHash = "sha256-QSgTpmSojZrwZ0RsUL6c2xO310RZX3gkyGl6oNf6pYI=";
@@ -26,7 +30,11 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook ];
 
-  buildInputs = [ alsa-lib openssl ] ++ lib.optionals withTTS [ speechd ];
+  buildInputs = [ openssl ]
+    ++ lib.optionals (withTTS && stdenv.isLinux) [ speechd ]
+    ++ lib.optionals stdenv.isLinux [ alsa-lib ]
+    ++ lib.optionals (withTTS && stdenv.isDarwin) [ AVFoundation AppKit ]
+    ++ lib.optionals stdenv.isDarwin [ CoreAudio AudioUnit ];
 
   checkFlags =
     let
@@ -44,13 +52,16 @@ rustPlatform.buildRustPackage rec {
         "timer_test"
         "validate_assertion_fail"
         "regex_smoke_test"
+        "test_tls_init_verify_err"
+        "test_tls_init_no_verify"
+        "test_tls_init_verify"
       ];
       skipFlag = test: "--skip " + test;
     in
     builtins.concatStringsSep " " (builtins.map skipFlag skipList);
 
   meta = with lib; {
-    description = "A terminal MUD client written in Rust";
+    description = "Terminal MUD client written in Rust";
     mainProgram = "blightmud";
     longDescription = ''
       Blightmud is a terminal client for connecting to Multi User Dungeon (MUD)
@@ -64,6 +75,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Blightmud/Blightmud";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ cpu ];
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/games/blobby/default.nix b/pkgs/games/blobby/default.nix
index 27371b905417a..e4afb474b3a48 100644
--- a/pkgs/games/blobby/default.nix
+++ b/pkgs/games/blobby/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A blobby volleyball game";
+    description = "Blobby volleyball game";
     license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ raskin ];
diff --git a/pkgs/games/blockattack/default.nix b/pkgs/games/blockattack/default.nix
deleted file mode 100644
index d59b93ae600c6..0000000000000
--- a/pkgs/games/blockattack/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, SDL2
-, SDL2_image
-, SDL2_mixer
-, SDL2_ttf
-, boost
-, cmake
-, gettext
-, physfs
-, pkg-config
-, zip
-}:
-
-stdenv.mkDerivation rec {
-  pname = "blockattack";
-  version = "2.8.0";
-
-  src = fetchFromGitHub {
-    owner = "blockattack";
-    repo = "blockattack-game";
-    rev = "v${version}";
-    hash = "sha256-2oKesdr2eNZhDlGrFRiH5/8APFkGJfxPCNvzFoIumdQ=";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    pkg-config
-    gettext
-    zip
-  ];
-
-  buildInputs = [
-    SDL2
-    SDL2_image
-    SDL2_mixer
-    SDL2_ttf
-    SDL2_ttf
-    boost
-    physfs
-  ];
-
-  preConfigure = ''
-    patchShebangs packdata.sh source/misc/translation/*.sh
-    chmod +x ./packdata.sh
-    ./packdata.sh
-  '';
-
-  meta = with lib; {
-    homepage = "https://blockattack.net/";
-    description = "An open source clone of Panel de Pon (aka Tetris Attack)";
-    mainProgram = "blockattack";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ AndersonTorres ];
-    platforms = platforms.unix;
-    broken = stdenv.isDarwin;
-  };
-}
diff --git a/pkgs/games/boohu/default.nix b/pkgs/games/boohu/default.nix
index 6d90106521ad7..0d74d8dbe55c4 100644
--- a/pkgs/games/boohu/default.nix
+++ b/pkgs/games/boohu/default.nix
@@ -14,7 +14,7 @@ buildGoModule rec {
   ldflags = [ "-s" "-w" ];
 
   meta = with lib; {
-    description = "A new coffee-break roguelike game";
+    description = "New coffee-break roguelike game";
     mainProgram = "boohu";
     longDescription = ''
       Break Out Of Hareka's Underground (Boohu) is a roguelike game mainly
diff --git a/pkgs/games/braincurses/default.nix b/pkgs/games/braincurses/default.nix
index bbbc35b412a25..2e3b54cb87101 100644
--- a/pkgs/games/braincurses/default.nix
+++ b/pkgs/games/braincurses/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/bderrly/braincurses";
-    description = "A version of the classic game Mastermind";
+    description = "Version of the classic game Mastermind";
     mainProgram = "braincurses";
     license = licenses.gpl2;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/games/brogue-ce/default.nix b/pkgs/games/brogue-ce/default.nix
index ee2862f9c445a..9d6963eb09ddd 100644
--- a/pkgs/games/brogue-ce/default.nix
+++ b/pkgs/games/brogue-ce/default.nix
@@ -54,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   meta = with lib; {
-    description = "A community-lead fork of the minimalist roguelike game Brogue";
+    description = "Community-lead fork of the minimalist roguelike game Brogue";
     mainProgram = "brogue-ce";
     homepage = "https://github.com/tmewett/BrogueCE";
     license = licenses.agpl3Plus;
diff --git a/pkgs/games/brogue/default.nix b/pkgs/games/brogue/default.nix
index f502c710afbf6..bf19e6c4225b6 100644
--- a/pkgs/games/brogue/default.nix
+++ b/pkgs/games/brogue/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
   hardeningDisable = [ "stackprotector" "fortify" ];
 
   meta = with lib; {
-    description = "A roguelike game";
+    description = "Roguelike game";
     mainProgram = "brogue";
     homepage = "https://sites.google.com/site/broguegame/";
     license = licenses.agpl3Plus;
diff --git a/pkgs/games/btanks/default.nix b/pkgs/games/btanks/default.nix
deleted file mode 100644
index f1f2e84a614dd..0000000000000
--- a/pkgs/games/btanks/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ lib, stdenv, fetchurl, fetchpatch, scons, pkg-config, SDL, libGL, zlib, smpeg
-, SDL_image, libvorbis, expat, zip, lua }:
-
-stdenv.mkDerivation rec {
-  pname = "btanks";
-  version = "0.9.8083";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
-    hash = "sha256-P9LOaitF96YMOxFPqa/xPLPdn7tqZc3JeYt2xPosQ0E=";
-  };
-
-  nativeBuildInputs = [ scons pkg-config ];
-
-  buildInputs = [ SDL libGL zlib smpeg SDL_image libvorbis expat zip lua ];
-
-  enableParallelBuilding = true;
-
-  env.NIX_CFLAGS_COMPILE = "-I${SDL_image}/include/SDL";
-
-  patches = [
-    (fetchpatch {
-      name = "lua52.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/lua52.patch?h=btanks&id=cd0e016963238f16209baa2da658aa3fad36e33d";
-      hash = "sha256-Xwl//sfGprhg71jf+X3q8qxdB+5ZtqJrjBxS8+cw5UY=";
-    })
-    (fetchpatch {
-      url = "https://salsa.debian.org/games-team/btanks/-/raw/debian/0.9.8083-9/debian/patches/gcc-4.7.patch";
-      hash = "sha256-JN7D+q63EvKJX9wAEQgcVqE1VZzMa4Y1CPIlA3uYtLc=";
-    })
-    (fetchpatch {
-      url = "https://salsa.debian.org/games-team/btanks/-/raw/debian/0.9.8083-9/debian/patches/pow10f.patch";
-      hash = "sha256-6QFP1GTwqXnjfekzEiIpWKCD6HOcGusYW+02sUE6hcA=";
-    })
-    (fetchpatch {
-      url = "https://salsa.debian.org/games-team/btanks/-/raw/debian/0.9.8083-9/debian/patches/python3.patch";
-      hash = "sha256-JpK409Myi8mxQaunmLFKKh1NKvKLXpNHHsDvRee8OoQ=";
-    })
-    (fetchpatch {
-      url = "https://salsa.debian.org/games-team/btanks/-/raw/debian/0.9.8083-9/debian/patches/scons.patch";
-      hash = "sha256-JCvBY2fOV8Sc/mpvEsJQv1wKcS1dHqYxvRk6I9p7ZKc=";
-    })
-  ];
-
-  meta = with lib; {
-    description = "Fast 2d tank arcade game";
-    homepage = "https://sourceforge.net/projects/btanks/";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/games/bugdom/default.nix b/pkgs/games/bugdom/default.nix
index 52760d907986e..586d92e9d417f 100644
--- a/pkgs/games/bugdom/default.nix
+++ b/pkgs/games/bugdom/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, SDL2, IOKit, Foundation, cmake, makeWrapper }:
+{ lib, stdenv, fetchFromGitHub, SDL2, IOKit, Foundation, OpenGL, cmake, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "bugdom";
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
     IOKit
     Foundation
+    OpenGL
   ];
 
   nativeBuildInputs = [
@@ -59,7 +60,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A port of Bugdom, a 1999 Macintosh game by Pangea Software, for modern operating systems";
+    description = "Port of Bugdom, a 1999 Macintosh game by Pangea Software, for modern operating systems";
     homepage = "https://github.com/jorio/Bugdom";
     license = with licenses; [ cc-by-sa-40 ];
     maintainers = with maintainers; [ lux ];
diff --git a/pkgs/games/cataclysm-dda/common.nix b/pkgs/games/cataclysm-dda/common.nix
index b2aa2878080b4..f18d2cc37550e 100644
--- a/pkgs/games/cataclysm-dda/common.nix
+++ b/pkgs/games/cataclysm-dda/common.nix
@@ -71,7 +71,7 @@ stdenv.mkDerivation {
   };
 
   meta = with lib; {
-    description = "A free, post apocalyptic, zombie infested rogue-like";
+    description = "Free, post apocalyptic, zombie infested rogue-like";
     mainProgram = "cataclysm-tiles";
     longDescription = ''
       Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
diff --git a/pkgs/games/chessdb/default.nix b/pkgs/games/chessdb/default.nix
index db6214bdf0964..4acfc4d18e3d2 100644
--- a/pkgs/games/chessdb/default.nix
+++ b/pkgs/games/chessdb/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "https://chessdb.sourceforge.net/";
-    description = "A free chess database";
+    description = "Free chess database";
     platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/games/chiaki4deck/default.nix b/pkgs/games/chiaki4deck/default.nix
index 83af55da1d01b..79757acef9cca 100644
--- a/pkgs/games/chiaki4deck/default.nix
+++ b/pkgs/games/chiaki4deck/default.nix
@@ -1,6 +1,5 @@
 { lib
 , fetchFromGitHub
-, fetchpatch
 , stdenv
 , cmake
 , pkg-config
@@ -18,8 +17,11 @@
 , SDL2
 , libevdev
 , udev
+, curlFull
 , hidapi
+, json_c
 , fftw
+, miniupnpc
 , speexdsp
 , libplacebo
 , vulkan-loader
@@ -33,13 +35,13 @@
 
 stdenv.mkDerivation rec {
   pname = "chiaki4deck";
-  version = "1.6.6";
+  version = "1.7.2";
 
   src = fetchFromGitHub {
     owner = "streetpea";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-hai7fIyeNcAURfeQtAIqOLb9j8erPNoy3zHK4rgLjc0=";
+    hash = "sha256-gh+ZOsAOi5mKZjs7B1xh07vatoD8F2j2HVxOT/fKDEo=";
     fetchSubmodules = true;
   };
 
@@ -65,8 +67,11 @@ stdenv.mkDerivation rec {
     qtwebengine
     protobuf
     SDL2
+    curlFull
     hidapi
+    json_c
     fftw
+    miniupnpc
     libevdev
     udev
     speexdsp
@@ -79,8 +84,18 @@ stdenv.mkDerivation rec {
     xxHash
   ];
 
+  # handle cmake not being able to identify if curl is built with websocket support, and library name discrepancy when curl not built with cmake
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace-fail ' WS WSS' ""
+
+    substituteInPlace lib/CMakeLists.txt \
+      --replace-fail 'libcurl_shared' 'libcurl'
+  '';
+
   cmakeFlags = [
     "-Wno-dev"
+    (lib.cmakeFeature "CHIAKI_USE_SYSTEM_CURL" "true")
   ];
 
   qtWrapperArgs = [
diff --git a/pkgs/games/chromium-bsu/default.nix b/pkgs/games/chromium-bsu/default.nix
index cd403c704e582..f3dfb41c77924 100644
--- a/pkgs/games/chromium-bsu/default.nix
+++ b/pkgs/games/chromium-bsu/default.nix
@@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "http://chromium-bsu.sourceforge.net/";
-    description = "A fast paced, arcade-style, top-scrolling space shooter";
+    description = "Fast paced, arcade-style, top-scrolling space shooter";
     mainProgram = "chromium-bsu";
     license = licenses.artistic1;
     maintainers = with maintainers; [ AndersonTorres ];
diff --git a/pkgs/games/classicube/default.nix b/pkgs/games/classicube/default.nix
index c6805cc58343d..d0c7fd79475a8 100644
--- a/pkgs/games/classicube/default.nix
+++ b/pkgs/games/classicube/default.nix
@@ -93,7 +93,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.classicube.net/";
-    description = "A lightweight, custom Minecraft Classic/ClassiCube client with optional additions written from scratch in C";
+    description = "Lightweight, custom Minecraft Classic/ClassiCube client with optional additions written from scratch in C";
     license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ _360ied ];
diff --git a/pkgs/games/cockatrice/default.nix b/pkgs/games/cockatrice/default.nix
index 0d8b925faa2bb..2f268409d8925 100644
--- a/pkgs/games/cockatrice/default.nix
+++ b/pkgs/games/cockatrice/default.nix
@@ -21,7 +21,7 @@ mkDerivation rec {
 
   meta = {
     homepage = "https://github.com/Cockatrice/Cockatrice";
-    description = "A cross-platform virtual tabletop for multiplayer card games";
+    description = "Cross-platform virtual tabletop for multiplayer card games";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ evanjs ];
     platforms = with lib.platforms; linux;
diff --git a/pkgs/games/colobot/default.nix b/pkgs/games/colobot/default.nix
index e1070843811c5..58edbea1881b8 100644
--- a/pkgs/games/colobot/default.nix
+++ b/pkgs/games/colobot/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, boost, SDL2, SDL2_image, SDL2_ttf, libpng
+{ lib, stdenv, fetchFromGitHub, cmake, boost, SDL2, SDL2_image, SDL2_ttf, libpng
 , glew, gettext, libsndfile, libvorbis, libogg, physfs, openal
 , xmlstarlet, doxygen, python3, callPackage }:
 
@@ -9,13 +9,13 @@ stdenv.mkDerivation rec {
   pname = "colobot";
   # Maybe require an update to package colobot-data as well
   # in file data.nix next to this one
-  version = "0.2.0-alpha";
+  version = "0.2.1-alpha";
 
   src = fetchFromGitHub {
     owner = "colobot";
     repo = pname;
     rev = "colobot-gold-${version}";
-    sha256 = "sha256-Nu7NyicNIk5yza9sXfd4KbGdB65guVuGREd6rwRU3lU=";
+    hash = "sha256-3iea2+5xCT0//NAjMHrynZKSoiOSgLTNMUQkRhXuXg8=";
   };
 
   nativeBuildInputs = [ cmake xmlstarlet doxygen python3 ];
diff --git a/pkgs/games/corsix-th/darwin-cmake-no-fixup-bundle.patch b/pkgs/games/corsix-th/darwin-cmake-no-fixup-bundle.patch
new file mode 100644
index 0000000000000..170554ce9f2f0
--- /dev/null
+++ b/pkgs/games/corsix-th/darwin-cmake-no-fixup-bundle.patch
@@ -0,0 +1,12 @@
+diff --git a/CorsixTH/CMakeLists.txt b/CorsixTH/CMakeLists.txt
+index 85856df3..f0f08277 100644
+--- a/CorsixTH/CMakeLists.txt
++++ b/CorsixTH/CMakeLists.txt
+@@ -293,7 +293,6 @@ if(NOT USE_SOURCE_DATADIRS)
+     install(CODE "
+       INCLUDE(BundleUtilities)
+       SET(BU_CHMOD_BUNDLE_ITEMS ON)
+-      FIXUP_BUNDLE(\"${CMAKE_INSTALL_PREFIX}/CorsixTH.app\" \"\" \"\")
+       ")
+     if(WITH_LUAROCKS)
+       install(CODE "execute_process(
diff --git a/pkgs/games/corsix-th/default.nix b/pkgs/games/corsix-th/default.nix
index 04cfd263c9ee9..f55a9a20b3281 100644
--- a/pkgs/games/corsix-th/default.nix
+++ b/pkgs/games/corsix-th/default.nix
@@ -10,9 +10,15 @@
 , SDL2
 , SDL2_mixer
 , timidity
+# Darwin dependencies
+, libiconv
+, Cocoa
+, CoreVideo
+# Update
+, nix-update-script
 }:
 
-stdenv.mkDerivation (finalAttrs: {
+stdenv.mkDerivation(finalAttrs: {
   pname = "corsix-th";
   version = "0.67";
 
@@ -23,23 +29,50 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-WA/VJqHXzBfVUBNtxCVsGBRzSRQ0pvDvAy03ntc0KZE=";
   };
 
-  luaEnv = lua.withPackages(p: with p; [ luafilesystem lpeg luasec luasocket ]);
+  patches = [
+    ./darwin-cmake-no-fixup-bundle.patch
+  ];
+
   nativeBuildInputs = [ cmake doxygen makeWrapper ];
-  buildInputs = [ ffmpeg freetype lua finalAttrs.luaEnv SDL2 SDL2_mixer timidity ];
+
+  buildInputs = let
+    luaEnv = lua.withPackages(p: with p; [ luafilesystem lpeg luasec luasocket ]);
+  in [
+    ffmpeg
+    freetype
+    lua
+    luaEnv
+    SDL2
+    SDL2_mixer
+    timidity
+  ] ++ lib.optionals stdenv.isDarwin [
+    libiconv
+    Cocoa
+    CoreVideo
+  ];
+
   cmakeFlags = [ "-Wno-dev" ];
 
-  postInstall = ''
+  postInstall = lib.optionalString stdenv.isLinux ''
     wrapProgram $out/bin/corsix-th \
     --set LUA_PATH "$LUA_PATH" \
     --set LUA_CPATH "$LUA_CPATH"
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv $out/CorsixTH.app $out/Applications
+    wrapProgram $out/Applications/CorsixTH.app/Contents/MacOS/CorsixTH \
+      --set LUA_PATH "$LUA_PATH" \
+      --set LUA_CPATH "$LUA_CPATH"
   '';
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
-    description = "A reimplementation of the 1997 Bullfrog business sim Theme Hospital";
+    description = "Reimplementation of the 1997 Bullfrog business sim Theme Hospital";
     mainProgram = "corsix-th";
     homepage = "https://corsixth.com/";
     license = licenses.mit;
-    maintainers = with maintainers; [ hughobrien ];
-    platforms = platforms.linux;
+    maintainers = with maintainers; [ hughobrien matteopacini ];
+    platforms = platforms.linux ++ platforms.darwin;
   };
 })
diff --git a/pkgs/games/crack-attack/default.nix b/pkgs/games/crack-attack/default.nix
index 71e15f562d459..4f037f72a38ca 100644
--- a/pkgs/games/crack-attack/default.nix
+++ b/pkgs/games/crack-attack/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    description = "A fast-paced puzzle game inspired by the classic Super NES title Tetris Attack!";
+    description = "Fast-paced puzzle game inspired by the classic Super NES title Tetris Attack!";
     mainProgram = "crack-attack";
     homepage = "https://www.nongnu.org/crack-attack/";
     license = lib.licenses.gpl2;
diff --git a/pkgs/games/crawl/default.nix b/pkgs/games/crawl/default.nix
index 37dd788d82965..e32fb5fa60d6b 100644
--- a/pkgs/games/crawl/default.nix
+++ b/pkgs/games/crawl/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, fetchpatch
 , which
 , sqlite
 , lua5_1
diff --git a/pkgs/games/crrcsim/default.nix b/pkgs/games/crrcsim/default.nix
index 447b1e75d6f73..0ad930ca26cbb 100644
--- a/pkgs/games/crrcsim/default.nix
+++ b/pkgs/games/crrcsim/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    description = "A model-airplane flight simulator";
+    description = "Model-airplane flight simulator";
     mainProgram = "crrcsim";
     maintainers = with lib.maintainers; [ raskin ];
     platforms = [ "i686-linux" "x86_64-linux" ];
diff --git a/pkgs/games/curseofwar/default.nix b/pkgs/games/curseofwar/default.nix
index c0accf1e7b649..448d8fb7ae2c4 100644
--- a/pkgs/games/curseofwar/default.nix
+++ b/pkgs/games/curseofwar/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   meta = with lib; {
-    description = "A fast-paced action strategy game";
+    description = "Fast-paced action strategy game";
     homepage = "https://a-nikolaev.github.io/curseofwar/";
     license = licenses.gpl3;
     maintainers = with maintainers; [ fgaz ];
diff --git a/pkgs/games/darkplaces/default.nix b/pkgs/games/darkplaces/default.nix
index 876e0025976fc..6ea4ae241d5a9 100644
--- a/pkgs/games/darkplaces/default.nix
+++ b/pkgs/games/darkplaces/default.nix
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://www.icculus.org/twilight/darkplaces/";
-    description = "A quake 1 engine implementation by LadyHavoc";
+    description = "Quake 1 engine implementation by LadyHavoc";
     longDescription = ''
       A game engine based on the Quake 1 engine by id Software.
       It improves and builds upon the original 1996 engine by adding modern
diff --git a/pkgs/games/ddnet/default.nix b/pkgs/games/ddnet/default.nix
index e21325198de24..84ecbf4e91cf2 100644
--- a/pkgs/games/ddnet/default.nix
+++ b/pkgs/games/ddnet/default.nix
@@ -114,7 +114,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Teeworlds modification with a unique cooperative gameplay";
+    description = "Teeworlds modification with a unique cooperative gameplay";
     longDescription = ''
       DDraceNetwork (DDNet) is an actively maintained version of DDRace,
       a Teeworlds modification with a unique cooperative gameplay.
diff --git a/pkgs/games/deliantra/data.nix b/pkgs/games/deliantra/data.nix
index 31ed7d0f0118d..8e8c7e310df7b 100644
--- a/pkgs/games/deliantra/data.nix
+++ b/pkgs/games/deliantra/data.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, deliantra-maps, deliantra-arch, deliantra-server, symlinkJoin }:
+{ stdenv, lib, deliantra-maps, deliantra-arch, deliantra-server, symlinkJoin }:
 
 symlinkJoin rec {
   name = "deliantra-data-${version}";
diff --git a/pkgs/games/domination/default.nix b/pkgs/games/domination/default.nix
index 8bf1c2a9ec313..d1647eb6a46a1 100644
--- a/pkgs/games/domination/default.nix
+++ b/pkgs/games/domination/default.nix
@@ -26,7 +26,7 @@ let
 
 in stdenv.mkDerivation {
   pname = "domination";
-  version = "1.2.9";
+  version = "1.3.1";
 
   # The .zip releases do not contain the build.xml file
   src = fetchsvn {
@@ -34,8 +34,8 @@ in stdenv.mkDerivation {
     # There are no tags in the repository.
     # Look for commits like "new version x.y.z info on website"
     # or "website update for x.y.z".
-    rev = "2470";
-    hash = "sha256-ghq7EGg++mTOzA3ASzXhk97fzy5/n9vyaRzxp12X3/4=";
+    rev = "2538";
+    hash = "sha256-wsLBHkQc1SW+PToyCXIek6qRrRga2nLLkM+5msrnsBo=";
   };
 
   nativeBuildInputs = [
@@ -90,7 +90,7 @@ in stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://domination.sourceforge.net/";
     downloadPage = "https://domination.sourceforge.net/download.shtml";
-    description = "A game that is a bit like the board game Risk or RisiKo";
+    description = "Game that is a bit like the board game Risk or RisiKo";
     longDescription = ''
       Domination is a game that is a bit like the well known board game of Risk
       or RisiKo. It has many game options and includes many maps.
diff --git a/pkgs/games/doom-ports/chocolate-doom/default.nix b/pkgs/games/doom-ports/chocolate-doom/default.nix
index 4bd3944a42241..10b96eb905628 100644
--- a/pkgs/games/doom-ports/chocolate-doom/default.nix
+++ b/pkgs/games/doom-ports/chocolate-doom/default.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "http://chocolate-doom.org/";
-    description = "A Doom source port that accurately reproduces the experience of Doom as it was played in the 1990s";
+    description = "Doom source port that accurately reproduces the experience of Doom as it was played in the 1990s";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.unix;
     hydraPlatforms = lib.platforms.linux; # darwin times out
diff --git a/pkgs/games/doom-ports/crispy-doom/default.nix b/pkgs/games/doom-ports/crispy-doom/default.nix
index a4a0fc08730d9..299c299d48e90 100644
--- a/pkgs/games/doom-ports/crispy-doom/default.nix
+++ b/pkgs/games/doom-ports/crispy-doom/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "http://fabiangreffrath.github.io/crispy-doom";
-    description = "A limit-removing enhanced-resolution Doom source port based on Chocolate Doom";
+    description = "Limit-removing enhanced-resolution Doom source port based on Chocolate Doom";
     longDescription = ''
       Crispy Doom is a limit-removing enhanced-resolution Doom source port based on Chocolate Doom.
       Its name means that 640x400 looks \"crisp\" and is also a slight reference to its origin.
diff --git a/pkgs/games/doom-ports/doomretro/default.nix b/pkgs/games/doom-ports/doomretro/default.nix
index 127220603bdff..794f3c7194ff7 100644
--- a/pkgs/games/doom-ports/doomretro/default.nix
+++ b/pkgs/games/doom-ports/doomretro/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "doomretro";
-  version = "5.3";
+  version = "5.4";
 
   src = fetchFromGitHub {
     owner = "bradharding";
     repo = "doomretro";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-LCCBtsDEyjzsPS5ADPzsup714p84MO65FQDVjAHhSts=";
+    hash = "sha256-IOv58BmJvJtO7MMbrvf52MPYI0zjmPuRK7mcTwmBEY0=";
   };
 
   nativeBuildInputs = [
@@ -35,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "https://www.doomretro.com/";
-    description = "A classic, refined DOOM source port";
+    description = "Classic, refined DOOM source port";
     mainProgram = "doomretro";
     longDescription = ''
       DOOM Retro is the classic, refined DOOM source port for Windows PC. It
diff --git a/pkgs/games/doom-ports/doomseeker/qt_build_fix.patch b/pkgs/games/doom-ports/doomseeker/qt_build_fix.patch
deleted file mode 100644
index e21b53b3cc536..0000000000000
--- a/pkgs/games/doom-ports/doomseeker/qt_build_fix.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -r c2c7f37b1afb src/core/gui/irc/ircdock.cpp
---- a/src/core/gui/irc/ircdock.cpp	Tue Mar 06 00:14:23 2018 +0100
-+++ b/src/core/gui/irc/ircdock.cpp	Sat Jul 28 16:53:04 2018 -0700
-@@ -32,6 +32,7 @@
- #include <QInputDialog>
- #include <QMessageBox>
- #include <QToolBar>
-+#include <QTabBar>
- 
- DClass<IRCDock> : public Ui::IRCDock
- {
-diff -r c2c7f37b1afb src/core/gui/logdock.cpp
---- a/src/core/gui/logdock.cpp	Tue Mar 06 00:14:23 2018 +0100
-+++ b/src/core/gui/logdock.cpp	Sat Jul 28 16:53:04 2018 -0700
-@@ -21,6 +21,8 @@
- // Copyright (C) 2009 "Zalewa" <zalewapl@gmail.com>
- //------------------------------------------------------------------------------
- 
-+#include <QAction>
-+
- #include "clipboard.h"
- #include "logdock.h"
- #include "log.h"
-diff -r c2c7f37b1afb src/core/gui/serverdetailsdock.cpp
---- a/src/core/gui/serverdetailsdock.cpp	Tue Mar 06 00:14:23 2018 +0100
-+++ b/src/core/gui/serverdetailsdock.cpp	Sat Jul 28 16:53:04 2018 -0700
-@@ -21,6 +21,7 @@
- // Copyright (C) 2014 Braden "Blzut3" Obrzut <admin@maniacsvault.net>
- //------------------------------------------------------------------------------
- 
-+#include <QAction>
- #include <QBoxLayout>
- 
- #include "serverdetailsdock.h"
-diff -r c2c7f37b1afb src/core/gui/serverfilterdock.cpp
---- a/src/core/gui/serverfilterdock.cpp	Tue Mar 06 00:14:23 2018 +0100
-+++ b/src/core/gui/serverfilterdock.cpp	Sat Jul 28 16:53:04 2018 -0700
-@@ -20,6 +20,9 @@
- //------------------------------------------------------------------------------
- // Copyright (C) 2011 "Zalewa" <zalewapl@gmail.com>
- //------------------------------------------------------------------------------
-+
-+#include <QAction>
-+
- #include "serverfilterdock.h"
- #include "ui_serverfilterdock.h"
- 
diff --git a/pkgs/games/doom-ports/eureka-editor/default.nix b/pkgs/games/doom-ports/eureka-editor/default.nix
index 2d547f959048b..6f1752d109740 100644
--- a/pkgs/games/doom-ports/eureka-editor/default.nix
+++ b/pkgs/games/doom-ports/eureka-editor/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://eureka-editor.sourceforge.net";
-    description = "A map editor for the classic DOOM games, and a few related games such as Heretic and Hexen";
+    description = "Map editor for the classic DOOM games, and a few related games such as Heretic and Hexen";
     mainProgram = "eureka";
     license = licenses.gpl2Plus;
     platforms = platforms.all;
diff --git a/pkgs/games/doom-ports/gzdoom/default.nix b/pkgs/games/doom-ports/gzdoom/default.nix
index 2800e770ba0e8..f34276c7783f2 100644
--- a/pkgs/games/doom-ports/gzdoom/default.nix
+++ b/pkgs/games/doom-ports/gzdoom/default.nix
@@ -27,14 +27,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gzdoom";
-  version = "4.12.1";
+  version = "4.12.2";
 
   src = fetchFromGitHub {
     owner = "ZDoom";
     repo = "gzdoom";
     rev = "g${version}";
     fetchSubmodules = true;
-    hash = "sha256-ityjfxlazt/R9vD+azVGr+w7Sdjlbh+ekbJexkPSF1g=";
+    hash = "sha256-taie1Iod3pXvuxxBC7AArmtndkIV0Di9mtJoPvPkioo=";
   };
 
   outputs = [ "out" "doc" ];
diff --git a/pkgs/games/doom-ports/odamex/default.nix b/pkgs/games/doom-ports/odamex/default.nix
index cc1862b0b3715..095c92891502c 100644
--- a/pkgs/games/doom-ports/odamex/default.nix
+++ b/pkgs/games/doom-ports/odamex/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "http://odamex.net/";
-    description = "A client/server port for playing old-school Doom online";
+    description = "Client/server port for playing old-school Doom online";
     license = lib.licenses.gpl2Only;
     platforms = lib.platforms.unix;
     maintainers = with lib.maintainers; [ ];
diff --git a/pkgs/games/doom-ports/prboom-plus/default.nix b/pkgs/games/doom-ports/prboom-plus/default.nix
index 2d9be1073fa39..f4723eb82ec8f 100644
--- a/pkgs/games/doom-ports/prboom-plus/default.nix
+++ b/pkgs/games/doom-ports/prboom-plus/default.nix
@@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/coelckers/prboom-plus";
-    description = "An advanced, Vanilla-compatible Doom engine based on PrBoom";
+    description = "Advanced, Vanilla-compatible Doom engine based on PrBoom";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.ashley ];
diff --git a/pkgs/games/doom-ports/slade/default.nix b/pkgs/games/doom-ports/slade/default.nix
index 9ab3d1f458d5d..bae685ccac47f 100644
--- a/pkgs/games/doom-ports/slade/default.nix
+++ b/pkgs/games/doom-ports/slade/default.nix
@@ -15,7 +15,7 @@
 , glew
 , lua
 , mpg123
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 stdenv.mkDerivation rec {
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
     pkg-config
     which
     zip
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
diff --git a/pkgs/games/doom-ports/slade/git.nix b/pkgs/games/doom-ports/slade/git.nix
index 7ecc5d5d1b6a1..db85d405f8c5c 100644
--- a/pkgs/games/doom-ports/slade/git.nix
+++ b/pkgs/games/doom-ports/slade/git.nix
@@ -20,7 +20,7 @@
 
 stdenv.mkDerivation rec {
   pname = "slade";
-  version = "unstable-2023-09-30";
+  version = "3.2.4-unstable-2023-09-30";
 
   src = fetchFromGitHub {
     owner = "sirjuddington";
diff --git a/pkgs/games/doom-ports/zandronum/sqlite.nix b/pkgs/games/doom-ports/zandronum/sqlite.nix
index 67dbb84f515a8..e6c8585cb541a 100644
--- a/pkgs/games/doom-ports/zandronum/sqlite.nix
+++ b/pkgs/games/doom-ports/zandronum/sqlite.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "http://www.sqlite.org/";
-    description = "A single C code file, named sqlite3.c, that contains all C code for the core SQLite library and the FTS3 and RTREE extensions";
+    description = "Single C code file, named sqlite3.c, that contains all C code for the core SQLite library and the FTS3 and RTREE extensions";
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.lassulus ];
   };
diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix
index ee02364a40a4a..acf50d650c49d 100644
--- a/pkgs/games/dwarf-fortress/default.nix
+++ b/pkgs/games/dwarf-fortress/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, stdenvNoCC, gccStdenv, lib, recurseIntoAttrs, libsForQt5, newScope, texliveBasic, perlPackages, jdk8, jre8 }:
+{ stdenv, stdenvNoCC, gccStdenv, lib, recurseIntoAttrs, libsForQt5, newScope, perlPackages, jdk8, jre8 }:
 
 # To whomever it may concern:
 #
@@ -49,7 +49,7 @@ let
   # The latest Dwarf Fortress version. Maintainers: when a new version comes
   # out, ensure that (unfuck|dfhack|twbt) are all up to date before changing
   # this. Note that unfuck and twbt are not required for 50.
-  latestVersion = "50.12";
+  latestVersion = "50.13";
 
   # Converts a version to a package name.
   versionToName = version: "dwarf-fortress_${replaceStrings ["."] ["_"] version}";
@@ -79,9 +79,7 @@ let
 
           dwarf-therapist = libsForQt5.callPackage ./dwarf-therapist/wrapper.nix {
             inherit dwarf-fortress;
-            dwarf-therapist = (libsForQt5.callPackage ./dwarf-therapist {
-              texlive = texliveBasic.withPackages (ps: with ps; [ float caption wrapfig adjmulticol sidecap preprint enumitem ]);
-            }).override (optionalAttrs (!isAtLeast50) {
+            dwarf-therapist = (libsForQt5.callPackage ./dwarf-therapist {}).override (optionalAttrs (!isAtLeast50) {
               # 41.2.5 is the last version to support Dwarf Fortress 0.47.
               version = "41.2.5";
               hash = "sha256-xfYBtnO1n6OcliVt07GsQ9alDJIfWdVhtuyWwuvXSZs=";
diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix
index 156dac32c472b..96a5dac52540f 100644
--- a/pkgs/games/dwarf-fortress/dfhack/default.nix
+++ b/pkgs/games/dwarf-fortress/dfhack/default.nix
@@ -89,6 +89,11 @@ let
       hash = "sha256-2mO8DpNmZRCV7IRY0arf3SMvlO4Pxs61Kxfh3q3k3HU=";
       xmlRev = "980b1af13acc31660dce632f913c968f52e2b275";
     };
+    "50.13" = {
+      dfHackRelease = "50.13-r1.1";
+      hash = "sha256-FiXanXflszTr4ogz+EoDAUxzE2U9ODeZIJJ1u6Xm4Mo=";
+      xmlRev = "3507715fd07340de5a6c47064220f6e17343e5d5";
+    };
   };
 
   release =
diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
index d51c8274bb066..52560a0d52b54 100644
--- a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
+++ b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
@@ -4,10 +4,9 @@
 , qtbase
 , qtdeclarative
 , cmake
-, texlive
 , ninja
-, version ? "42.1.5"
-, hash ? "sha256-aUakfUjnIZWNDhCkG3A6u7BaaCG8kPMV/Fu2S73CoDg="
+, version ? "42.1.6"
+, hash ? "sha256-VjCXT4sl3HsFILrqTc3JJSeRedZaOXUbf4KvSzTo0uc="
 }:
 
 stdenv.mkDerivation rec {
@@ -22,7 +21,7 @@ stdenv.mkDerivation rec {
     inherit hash;
   };
 
-  nativeBuildInputs = [ texlive cmake ninja ];
+  nativeBuildInputs = [ cmake ninja ];
   buildInputs = [ qtbase qtdeclarative ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/games/dwarf-fortress/game.json b/pkgs/games/dwarf-fortress/game.json
index c287a4dd84490..4fb341c350e99 100644
--- a/pkgs/games/dwarf-fortress/game.json
+++ b/pkgs/games/dwarf-fortress/game.json
@@ -144,5 +144,8 @@
   },
   "50.12": {
     "linux": "070014fzwszfgjyxjyij0k0hadah6s62lpi91ykp3vs220azya1m"
+  },
+  "50.13": {
+    "linux": "19wzgsdgv0vq7v2dxhypr9hayky3nm3lbra1kk9vn8ri96jdkfkw"
   }
 }
diff --git a/pkgs/games/dwarf-fortress/game.nix b/pkgs/games/dwarf-fortress/game.nix
index 9cf7847d14893..6e8467e55df9b 100644
--- a/pkgs/games/dwarf-fortress/game.nix
+++ b/pkgs/games/dwarf-fortress/game.nix
@@ -160,7 +160,7 @@ stdenv.mkDerivation {
   };
 
   meta = {
-    description = "A single-player fantasy game with a randomly generated adventure world";
+    description = "Single-player fantasy game with a randomly generated adventure world";
     homepage = "https://www.bay12games.com/dwarves/";
     license = licenses.unfreeRedistributable;
     platforms = attrNames platforms;
diff --git a/pkgs/games/dwarf-fortress/lazy-pack.nix b/pkgs/games/dwarf-fortress/lazy-pack.nix
index d472924845618..c94a46f04d9ef 100644
--- a/pkgs/games/dwarf-fortress/lazy-pack.nix
+++ b/pkgs/games/dwarf-fortress/lazy-pack.nix
@@ -57,7 +57,7 @@ buildEnv {
 
   meta = {
     inherit mainProgram;
-    description = "An opinionated wrapper for Dwarf Fortress";
+    description = "Opinionated wrapper for Dwarf Fortress";
     maintainers = with maintainers; [ Baughn numinit ];
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/games/dwarf-fortress/legends-browser/default.nix b/pkgs/games/dwarf-fortress/legends-browser/default.nix
index 3484db0cc8ff5..3920c1f4693e9 100644
--- a/pkgs/games/dwarf-fortress/legends-browser/default.nix
+++ b/pkgs/games/dwarf-fortress/legends-browser/default.nix
@@ -27,7 +27,7 @@ buildEnv {
   paths = [ script ];
 
   meta = with lib; {
-    description = "A multi-platform, open source, java-based legends viewer for dwarf fortress";
+    description = "Multi-platform, open source, java-based legends viewer for dwarf fortress";
     maintainers = with maintainers; [ Baughn ];
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.mit;
diff --git a/pkgs/games/dwarf-fortress/twbt/default.nix b/pkgs/games/dwarf-fortress/twbt/default.nix
index 0ccb859b5be32..82b03dd1e0d72 100644
--- a/pkgs/games/dwarf-fortress/twbt/default.nix
+++ b/pkgs/games/dwarf-fortress/twbt/default.nix
@@ -86,7 +86,7 @@ stdenvNoCC.mkDerivation rec {
   };
 
   meta = {
-    description = "A plugin for Dwarf Fortress / DFHack that improves various aspects of the game interface";
+    description = "Plugin for Dwarf Fortress / DFHack that improves various aspects of the game interface";
     maintainers = with maintainers; [ Baughn numinit ];
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/games/dxx-rebirth/default.nix b/pkgs/games/dxx-rebirth/default.nix
index d69a4c6adc022..9ca1a591cf4a6 100644
--- a/pkgs/games/dxx-rebirth/default.nix
+++ b/pkgs/games/dxx-rebirth/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , fetchFromGitHub
 , fetchurl
-, fetchpatch
 , scons
 , pkg-config
 , SDL2
diff --git a/pkgs/games/eduke32/convert-bmp-to-png.diff b/pkgs/games/eduke32/convert-bmp-to-png.diff
new file mode 100644
index 0000000000000..7d83ce4aabafc
--- /dev/null
+++ b/pkgs/games/eduke32/convert-bmp-to-png.diff
@@ -0,0 +1,23 @@
+diff --git a/GNUmakefile b/GNUmakefile
+index f83f04d..25a4fa8 100644
+--- a/GNUmakefile
++++ b/GNUmakefile
+@@ -798,6 +798,9 @@ libklzw$(DLLSUFFIX): $(engine_src)/klzw.cpp
+ 	$(COMPILE_STATUS)
+ 	$(RECIPE_IF) $(COMPILER_C) -shared -fPIC $< -o $@ $(RECIPE_RESULT_COMPILE)
+ 
++%.png: %.bmp
++	gm convert $< $@
++
+ # to debug the tools link phase, make a copy of this rule explicitly replacing % with the name of a tool, such as kextract
+ %$(EXESUFFIX): $(tools_obj)/%.$o $(foreach i,tools $(tools_deps),$(call expandobjs,$i))
+ 	$(LINK_STATUS)
+@@ -880,7 +883,7 @@ $$($1_obj)/%.$$o: $$($1_rsrc)/%.c | $$($1_obj)
+ 	$$(call MKDIR,$$(dir $$@))
+ 	$$(RECIPE_IF) $$(COMPILER_C) $$($1_cflags) -c $$< -o $$@ $$(RECIPE_RESULT_COMPILE)
+ 
+-$$($1_obj)/%_banner.c: $$($1_rsrc)/%.bmp | $$($1_obj)
++$$($1_obj)/%_banner.c: $$($1_rsrc)/%.png | $$($1_obj)
+ 	echo "#include \"gtkpixdata_shim.h\"" > $$@
+ 	gdk-pixbuf-csource --extern --struct --raw --name=startbanner_pixdata $$^ | sed 's/load_inc//' >> $$@
+ 
diff --git a/pkgs/games/eduke32/default.nix b/pkgs/games/eduke32/default.nix
index 1ddcccd27f9d2..5bb9966602d85 100644
--- a/pkgs/games/eduke32/default.nix
+++ b/pkgs/games/eduke32/default.nix
@@ -37,6 +37,12 @@ in stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-dyZ4JtDBxsTDe9uQDWxJe7M74X7m+5wpEHm+i+s9hwo=";
   };
 
+  patches = [
+    # gdk-pixbuf-csource no longer supports bmp so convert to png
+    # patch GNUMakefile to use graphicsmagick to convert bmp -> png
+    ./convert-bmp-to-png.diff
+  ];
+
   buildInputs = [
     flac
     libvorbis
diff --git a/pkgs/games/eidolon/default.nix b/pkgs/games/eidolon/default.nix
index fbb5d86deb914..d79fdb4b4af07 100644
--- a/pkgs/games/eidolon/default.nix
+++ b/pkgs/games/eidolon/default.nix
@@ -29,7 +29,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu";
+    description = "Single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu";
     mainProgram = "eidolon";
     homepage = "https://github.com/nicohman/eidolon";
     license = licenses.gpl3Only;
diff --git a/pkgs/games/empty-epsilon/default.nix b/pkgs/games/empty-epsilon/default.nix
index 20f4f5855a35a..3bcf141906016 100644
--- a/pkgs/games/empty-epsilon/default.nix
+++ b/pkgs/games/empty-epsilon/default.nix
@@ -1,11 +1,11 @@
-{ lib, stdenv, fetchFromGitHub, cmake, sfml, libX11, glew, python3, fetchpatch, applyPatches, glm, meshoptimizer, SDL2, ninja}:
+{ lib, stdenv, fetchFromGitHub, cmake, sfml, libX11, glew, python3, glm, meshoptimizer, SDL2, ninja}:
 
 let
 
-  major = "2023";
-  minor = "06";
-  patch.seriousproton = "17";
-  patch.emptyepsilon = "17";
+  major = "2024";
+  minor = "05";
+  patch.seriousproton = "16";
+  patch.emptyepsilon = "16";
 
   version.seriousproton = "${major}.${minor}.${patch.seriousproton}";
   version.emptyepsilon = "${major}.${minor}.${patch.emptyepsilon}";
@@ -26,7 +26,7 @@ let
       owner = "daid";
       repo = "SeriousProton";
       rev = "EE-${version.seriousproton}";
-      sha256 = "sha256-5ifYb5dX8ihQmJB1RHyzMsZJeXZ+m27JmA+W+XA/XwI=";
+      sha256 = "sha256-0gCwWvx7ceJG3VmVVufRkwreuHn41pl7jHsJXzNwqaE=";
     };
 
     nativeBuildInputs = [ cmake ];
@@ -56,7 +56,7 @@ stdenv.mkDerivation {
     owner = "daid";
     repo = "EmptyEpsilon";
     rev = "EE-${version.emptyepsilon}";
-    sha256 = "sha256-zuXbCBlv6URndbB0aA+3bli0cSeUBf3LT/7/jcPITnc=";
+    sha256 = "sha256-pLnyzahGEPb2cEwH89RE5Jq8UHIoDWXatmDWdeZ+rqo=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -80,7 +80,7 @@ stdenv.mkDerivation {
     mainProgram = "EmptyEpsilon";
     homepage = "https://daid.github.io/EmptyEpsilon/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ fpletz lheckemann ma27 ];
+    maintainers = with maintainers; [ fpletz ma27 ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/games/endgame-singularity/default.nix b/pkgs/games/endgame-singularity/default.nix
index 57766c2e8446d..fb68885b936ff 100644
--- a/pkgs/games/endgame-singularity/default.nix
+++ b/pkgs/games/endgame-singularity/default.nix
@@ -41,7 +41,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = {
     homepage = "http://www.emhsoft.com/singularity/";
-    description = "A simulation game about strong AI";
+    description = "Simulation game about strong AI";
     longDescription = ''
       A simulation of a true AI. Go from computer to computer, pursued by the
       entire world. Keep hidden, and you might have a chance
diff --git a/pkgs/games/endless-sky/default.nix b/pkgs/games/endless-sky/default.nix
index 7648bbd9b7716..7fb1753445922 100644
--- a/pkgs/games/endless-sky/default.nix
+++ b/pkgs/games/endless-sky/default.nix
@@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
   prefixKey = "PREFIX=";
 
   meta = with lib; {
-    description = "A sandbox-style space exploration game similar to Elite, Escape Velocity, or Star Control";
+    description = "Sandbox-style space exploration game similar to Elite, Escape Velocity, or Star Control";
     mainProgram = "endless-sky";
     homepage = "https://endless-sky.github.io/";
     license = with licenses; [
@@ -63,7 +63,7 @@ stdenv.mkDerivation rec {
       cc-by-sa-40
       publicDomain
     ];
-    maintainers = with maintainers; [ lheckemann _360ied ];
+    maintainers = with maintainers; [ _360ied ];
     platforms = platforms.linux; # Maybe other non-darwin Unix
   };
 }
diff --git a/pkgs/games/extremetuxracer/default.nix b/pkgs/games/extremetuxracer/default.nix
index 446c692ad81f8..a1322499ea6ae 100644
--- a/pkgs/games/extremetuxracer/default.nix
+++ b/pkgs/games/extremetuxracer/default.nix
@@ -5,12 +5,12 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "0.8.3";
+  version = "0.8.4";
   pname = "extremetuxracer";
 
   src = fetchurl {
     url = "mirror://sourceforge/extremetuxracer/etr-${version}.tar.xz";
-    sha256 = "sha256-LuQvP1/C+NSap1BW6xFvbKuE1lZBIOaWGuWSc2ckURM=";
+    sha256 = "sha256-+jKFzAx1Wlr/Up8/LOo1FkgRFMa0uOHsB2n+7/BHc+U=";
   };
 
   nativeBuildInputs = [ pkg-config intltool ];
diff --git a/pkgs/games/ezquake/default.nix b/pkgs/games/ezquake/default.nix
index 46efa6c7b9827..202102bb38ed3 100644
--- a/pkgs/games/ezquake/default.nix
+++ b/pkgs/games/ezquake/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://ezquake.com/";
-    description = "A modern QuakeWorld client focused on competitive online play";
+    description = "Modern QuakeWorld client focused on competitive online play";
     mainProgram = "ezquake";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/games/factorio/default.nix b/pkgs/games/factorio/default.nix
index d5190aa1d9458..aff5d11b3021b 100644
--- a/pkgs/games/factorio/default.nix
+++ b/pkgs/games/factorio/default.nix
@@ -181,7 +181,7 @@ let
       ] else null;
 
     meta = {
-      description = "A game in which you build and maintain factories";
+      description = "Game in which you build and maintain factories";
       longDescription = ''
         Factorio is a game in which you build and maintain factories.
 
diff --git a/pkgs/games/factorio/versions.json b/pkgs/games/factorio/versions.json
index a627e967d1993..e32801b769740 100644
--- a/pkgs/games/factorio/versions.json
+++ b/pkgs/games/factorio/versions.json
@@ -2,56 +2,56 @@
   "x86_64-linux": {
     "alpha": {
       "experimental": {
-        "name": "factorio_alpha_x64-1.1.104.tar.xz",
+        "name": "factorio_alpha_x64-1.1.107.tar.xz",
         "needsAuth": true,
-        "sha256": "0aizllbfzbn2j0560n4f823jqq7v7qz813an4wlm39rfsfx7b0vq",
+        "sha256": "16hkyfwp02zcijka4yslifz62ry6hrvk0w9960618kqdw3gr7p82",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.104/alpha/linux64",
-        "version": "1.1.104"
+        "url": "https://factorio.com/get-download/1.1.107/alpha/linux64",
+        "version": "1.1.107"
       },
       "stable": {
-        "name": "factorio_alpha_x64-1.1.104.tar.xz",
+        "name": "factorio_alpha_x64-1.1.107.tar.xz",
         "needsAuth": true,
-        "sha256": "0aizllbfzbn2j0560n4f823jqq7v7qz813an4wlm39rfsfx7b0vq",
+        "sha256": "16hkyfwp02zcijka4yslifz62ry6hrvk0w9960618kqdw3gr7p82",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.104/alpha/linux64",
-        "version": "1.1.104"
+        "url": "https://factorio.com/get-download/1.1.107/alpha/linux64",
+        "version": "1.1.107"
       }
     },
     "demo": {
       "experimental": {
-        "name": "factorio_demo_x64-1.1.104.tar.xz",
+        "name": "factorio_demo_x64-1.1.107.tar.xz",
         "needsAuth": false,
-        "sha256": "0x08dy6pagfpqc9c2cl239b1f7pf0p4cghzp7avxmbkmbl1fan2l",
+        "sha256": "0qc36n6h4wcbnj9rnq162bsml4x3ag1dkjmywqz8f4ydaf86gyjw",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.104/demo/linux64",
-        "version": "1.1.104"
+        "url": "https://factorio.com/get-download/1.1.107/demo/linux64",
+        "version": "1.1.107"
       },
       "stable": {
-        "name": "factorio_demo_x64-1.1.104.tar.xz",
+        "name": "factorio_demo_x64-1.1.107.tar.xz",
         "needsAuth": false,
-        "sha256": "0x08dy6pagfpqc9c2cl239b1f7pf0p4cghzp7avxmbkmbl1fan2l",
+        "sha256": "0qc36n6h4wcbnj9rnq162bsml4x3ag1dkjmywqz8f4ydaf86gyjw",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.104/demo/linux64",
-        "version": "1.1.104"
+        "url": "https://factorio.com/get-download/1.1.107/demo/linux64",
+        "version": "1.1.107"
       }
     },
     "headless": {
       "experimental": {
-        "name": "factorio_headless_x64-1.1.104.tar.xz",
+        "name": "factorio_headless_x64-1.1.107.tar.xz",
         "needsAuth": false,
-        "sha256": "10qmq2mw2j97s64skwr3m7hmv21h3m0r8rdhnyfrhmrxn8x3a4wf",
+        "sha256": "10ds1nz9sbx9xz1lyypf16wncc6323vpm7l5p11d6iy4cha85wsw",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.104/headless/linux64",
-        "version": "1.1.104"
+        "url": "https://factorio.com/get-download/1.1.107/headless/linux64",
+        "version": "1.1.107"
       },
       "stable": {
-        "name": "factorio_headless_x64-1.1.104.tar.xz",
+        "name": "factorio_headless_x64-1.1.107.tar.xz",
         "needsAuth": false,
-        "sha256": "10qmq2mw2j97s64skwr3m7hmv21h3m0r8rdhnyfrhmrxn8x3a4wf",
+        "sha256": "10ds1nz9sbx9xz1lyypf16wncc6323vpm7l5p11d6iy4cha85wsw",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.104/headless/linux64",
-        "version": "1.1.104"
+        "url": "https://factorio.com/get-download/1.1.107/headless/linux64",
+        "version": "1.1.107"
       }
     }
   }
diff --git a/pkgs/games/fairymax/default.nix b/pkgs/games/fairymax/default.nix
index 79468b320811e..9ea9d7df974dd 100644
--- a/pkgs/games/fairymax/default.nix
+++ b/pkgs/games/fairymax/default.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "http://home.hccnet.nl/h.g.muller/dwnldpage.html";
-    description = "A small chess engine supporting fairy pieces";
+    description = "Small chess engine supporting fairy pieces";
     mainProgram = "fairymax";
     longDescription = ''
        A version of micro-Max that reads the piece description from a file
diff --git a/pkgs/games/fallout-ce/fallout-ce.nix b/pkgs/games/fallout-ce/fallout-ce.nix
index 2f229fdf73801..2053738d1df27 100644
--- a/pkgs/games/fallout-ce/fallout-ce.nix
+++ b/pkgs/games/fallout-ce/fallout-ce.nix
@@ -14,7 +14,7 @@ callPackage ./build.nix rec {
   };
 
   extraMeta = {
-    description = "A fully working re-implementation of Fallout, with the same original gameplay, engine bugfixes, and some quality of life improvements";
+    description = "Fully working re-implementation of Fallout, with the same original gameplay, engine bugfixes, and some quality of life improvements";
     homepage = "https://github.com/alexbatalov/fallout1-ce";
   };
 }
diff --git a/pkgs/games/fallout-ce/fallout2-ce.nix b/pkgs/games/fallout-ce/fallout2-ce.nix
index 6d665c96a0e2d..b9d41ad994c24 100644
--- a/pkgs/games/fallout-ce/fallout2-ce.nix
+++ b/pkgs/games/fallout-ce/fallout2-ce.nix
@@ -17,7 +17,7 @@ callPackage ./build.nix rec {
   extraBuildInputs = [ zlib ];
 
   extraMeta = {
-    description = "A fully working re-implementation of Fallout 2, with the same original gameplay, engine bugfixes, and some quality of life improvements";
+    description = "Fully working re-implementation of Fallout 2, with the same original gameplay, engine bugfixes, and some quality of life improvements";
     homepage = "https://github.com/alexbatalov/fallout2-ce";
   };
 }
diff --git a/pkgs/games/ferium/default.nix b/pkgs/games/ferium/default.nix
index f5958fec86718..ea9a092d2ccb4 100644
--- a/pkgs/games/ferium/default.nix
+++ b/pkgs/games/ferium/default.nix
@@ -9,18 +9,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ferium";
-  version = "4.5.2";
+  version = "4.7.0";
 
   src = fetchFromGitHub {
     owner = "gorilla-devs";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-tYRs6HfFTdUZqWal9pLZ0uUNCPr3+zQz5JV2ohOLIP8=";
+    hash = "sha256-jj3BdaxH7ofhHNF2eu+burn6+/0bPQQZ8JfjXAFyN4A=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
 
-  cargoHash = "sha256-5ClBS42hWw3ULEG1Qn+fiM6dvJ+xS4Dusy3BCj5Cvbg=";
+  cargoHash = "sha256-dysKHi6CqPrF/q7LPn1+TwOP3p2KwauhTuqLCda3OSs=";
 
   # Disable the GUI file picker so that GTK/XDG dependencies aren't used
   buildNoDefaultFeatures = true;
diff --git a/pkgs/games/fheroes2/default.nix b/pkgs/games/fheroes2/default.nix
index bc96eb5cfcc35..0508fda010930 100644
--- a/pkgs/games/fheroes2/default.nix
+++ b/pkgs/games/fheroes2/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "fheroes2";
-  version = "1.0.13";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "ihhub";
     repo = "fheroes2";
     rev = version;
-    hash = "sha256-uR46G1DISurBk17GQdo+x94F2cP0+157PxjdG2s1Ik4=";
+    hash = "sha256-a4IZX0aq2iXLPKTVRWxkr50vhCEqAMUA0z50rOpEIjU=";
   };
 
   nativeBuildInputs = [ imagemagick ];
diff --git a/pkgs/games/fish-fillets-ng/default.nix b/pkgs/games/fish-fillets-ng/default.nix
index 3b83f732df747..dc2d01ec9e94a 100644
--- a/pkgs/games/fish-fillets-ng/default.nix
+++ b/pkgs/games/fish-fillets-ng/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A puzzle game";
+    description = "Puzzle game";
     mainProgram = "fillets";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ raskin ];
diff --git a/pkgs/games/fltrator/default.nix b/pkgs/games/fltrator/default.nix
index b1a2bb6b8c0dd..a228471f16236 100644
--- a/pkgs/games/fltrator/default.nix
+++ b/pkgs/games/fltrator/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A simple retro style arcade side-scroller game";
+    description = "Simple retro style arcade side-scroller game";
     longDescription = '' FLTrator is a simple retro style arcade side-scroller game in which you steer a spaceship through a landscape with hostile rockets and other obstacles.
     It has ten different levels and a level editor to create new levels or modify the existing.''; # from https://libregamewiki.org/FLTrator
     homepage = "https://fltrator.sourceforge.net/";
diff --git a/pkgs/games/forge-mtg/default.nix b/pkgs/games/forge-mtg/default.nix
index cc5c56977bb98..8ca1675591ee3 100644
--- a/pkgs/games/forge-mtg/default.nix
+++ b/pkgs/games/forge-mtg/default.nix
@@ -25,10 +25,10 @@ maven.buildMavenPackage {
   pname = "forge-mtg";
   inherit version src patches;
 
-  # Tests need a running Xorg.
-  mvnParameters = "-DskipTests";
   mvnHash = "sha256-QK9g0tG75lIhEtf4jW03N32YbD9Fe5iI0JTuqmCTtnE=";
 
+  doCheck = false; # Needs a running Xorg
+
   nativeBuildInputs = [ makeWrapper ];
 
   installPhase = ''
diff --git a/pkgs/games/freeciv/default.nix b/pkgs/games/freeciv/default.nix
index 6f653c46df864..6ecd9fcdade05 100644
--- a/pkgs/games/freeciv/default.nix
+++ b/pkgs/games/freeciv/default.nix
@@ -2,7 +2,7 @@
 , zlib, bzip2, curl, xz, gettext, libiconv, icu
 , SDL2, SDL2_mixer, SDL2_image, SDL2_ttf, SDL2_gfx, freetype, fluidsynth
 , sdl2Client ? false
-, gtkClient ? true, gtk3, wrapGAppsHook
+, gtkClient ? true, gtk3, wrapGAppsHook3
 , qtClient ? false, qt5
 , server ? true, readline
 , enableSqlite ? true, sqlite
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "freeciv";
-  version = "3.1.0";
+  version = "3.1.1";
 
   src = fetchFromGitHub {
     owner = "freeciv";
     repo = "freeciv";
     rev = "R${lib.replaceStrings [ "." ] [ "_" ] version}";
-    hash = "sha256-8cMy0O5VxVi1ffvA/Gz4BnTB0WvJptMSgM7Zu992k5k=";
+    hash = "sha256-ImjXDJ1Bq85OfUhxGe184cd5eu4a8BrZh+YYhzUdrLo=";
   };
 
   postPatch = ''
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ autoreconfHook pkg-config ]
     ++ lib.optionals qtClient [ qt5.wrapQtAppsHook ]
-    ++ lib.optionals gtkClient [ wrapGAppsHook ];
+    ++ lib.optionals gtkClient [ wrapGAppsHook3 ];
 
   buildInputs = [ lua5_3 zlib bzip2 curl xz gettext libiconv icu ]
     ++ [ SDL2 SDL2_mixer SDL2_image SDL2_ttf SDL2_gfx freetype fluidsynth ]
@@ -70,7 +70,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with lib; {
+  meta = {
     description = "Multiplayer (or single player), turn-based strategy game";
     longDescription = ''
       Freeciv is a Free and Open Source empire-building strategy game
@@ -79,10 +79,10 @@ stdenv.mkDerivation rec {
       to the space age...
     '';
     homepage = "http://www.freeciv.org"; # http only
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ pierron ];
-    platforms = platforms.unix;
-    hydraPlatforms = platforms.linux; # sdl-config times out on darwin
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ pierron ];
+    platforms = lib.platforms.unix;
+    hydraPlatforms = lib.platforms.linux; # sdl-config times out on darwin
     broken = qtClient && stdenv.isDarwin; # Missing Qt5 development files
   };
 }
diff --git a/pkgs/games/freedink/default.nix b/pkgs/games/freedink/default.nix
index ecdcbb7dce69a..5f03f084dd77f 100644
--- a/pkgs/games/freedink/default.nix
+++ b/pkgs/games/freedink/default.nix
@@ -45,7 +45,7 @@ in stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    description = "A free, portable and enhanced version of the Dink Smallwood game engine";
+    description = "Free, portable and enhanced version of the Dink Smallwood game engine";
 
     longDescription = ''
       GNU FreeDink is a new and portable version of the Dink Smallwood
diff --git a/pkgs/games/freedroid/default.nix b/pkgs/games/freedroid/default.nix
index ab7c36ba5d5a3..a3aba73131117 100644
--- a/pkgs/games/freedroid/default.nix
+++ b/pkgs/games/freedroid/default.nix
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
   }) ];
 
   meta = with lib; {
-    description = "A clone of the classic game 'Paradroid' on Commodore 64";
+    description = "Clone of the classic game 'Paradroid' on Commodore 64";
     mainProgram = "freedroid";
     homepage    = "https://github.com/ReinhardPrix/FreedroidClassic";
     license     = licenses.gpl2Only;
diff --git a/pkgs/games/freeorion/default.nix b/pkgs/games/freeorion/default.nix
index 204223e6094dd..5db18d9a04c95 100644
--- a/pkgs/games/freeorion/default.nix
+++ b/pkgs/games/freeorion/default.nix
@@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A free, open source, turn-based space empire and galactic conquest (4X) computer game";
+    description = "Free, open source, turn-based space empire and galactic conquest (4X) computer game";
     homepage = "https://www.freeorion.org/";
     license = with licenses; [ gpl2 cc-by-sa-30 ];
     platforms = platforms.linux;
diff --git a/pkgs/games/freesweep/default.nix b/pkgs/games/freesweep/default.nix
index 8add760f930b7..99130d9d036a2 100644
--- a/pkgs/games/freesweep/default.nix
+++ b/pkgs/games/freesweep/default.nix
@@ -1,4 +1,4 @@
-{ fetchFromGitHub, fetchpatch, ncurses, lib, stdenv
+{ fetchFromGitHub, ncurses, lib, stdenv
 , updateAutotoolsGnuConfigScriptsHook, installShellFiles }:
 
 stdenv.mkDerivation rec {
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A console minesweeper-style game written in C for Unix-like systems";
+    description = "Console minesweeper-style game written in C for Unix-like systems";
     mainProgram = "freesweep";
     homepage = "https://github.com/rwestlund/freesweep";
     license = licenses.gpl2;
diff --git a/pkgs/games/frogatto/engine.nix b/pkgs/games/frogatto/engine.nix
index 95e2135660fdb..1efdb2ceee042 100644
--- a/pkgs/games/frogatto/engine.nix
+++ b/pkgs/games/frogatto/engine.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, fetchurl, which
+{ lib, stdenv, fetchFromGitHub, which
 , boost, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf
 , glew, zlib, icu, pkg-config, cairo, libvpx, glm
 }:
diff --git a/pkgs/games/frotz/default.nix b/pkgs/games/frotz/default.nix
index af9efd96318f3..80aa8055dc35d 100644
--- a/pkgs/games/frotz/default.nix
+++ b/pkgs/games/frotz/default.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://davidgriffith.gitlab.io/frotz/";
     changelog = "https://gitlab.com/DavidGriffith/frotz/-/raw/${version}/NEWS";
-    description = "A z-machine interpreter for Infocom games and other interactive fiction";
+    description = "Z-machine interpreter for Infocom games and other interactive fiction";
     mainProgram = "frotz";
     platforms = platforms.unix;
     maintainers = with maintainers; [ nicknovitski ddelabru ];
diff --git a/pkgs/games/fteqw/default.nix b/pkgs/games/fteqw/default.nix
index c4129d3974d62..1e9a0b0967612 100644
--- a/pkgs/games/fteqw/default.nix
+++ b/pkgs/games/fteqw/default.nix
@@ -54,7 +54,7 @@
         --add-needed ${vulkan-loader}/lib/libvulkan.so
     '';
 
-    description = "A hybrid and versatile game engine";
+    description = "Hybrid and versatile game engine";
   } // attrs);
 
   fteqw-dedicated = import ./generic.nix (rec {
diff --git a/pkgs/games/gamehub/default.nix b/pkgs/games/gamehub/default.nix
index 87796d58c732b..3bfbe71c3c0e8 100644
--- a/pkgs/games/gamehub/default.nix
+++ b/pkgs/games/gamehub/default.nix
@@ -16,7 +16,7 @@
 , webkitgtk
 , libmanette
 , libXtst
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 stdenv.mkDerivation rec {
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     vala
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
diff --git a/pkgs/games/gamepad-tool/default.nix b/pkgs/games/gamepad-tool/default.nix
index 11da7ab16d528..4e7b03bdb4afb 100644
--- a/pkgs/games/gamepad-tool/default.nix
+++ b/pkgs/games/gamepad-tool/default.nix
@@ -37,7 +37,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
   '';
 
   meta = with lib; {
-    description = "A simple GUI tool to create/modify gamepad mappings for games that use SDL2 Game Controller API";
+    description = "Simple GUI tool to create/modify gamepad mappings for games that use SDL2 Game Controller API";
     homepage = "https://generalarcade.com/gamepadtool/";
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/games/gcompris/default.nix b/pkgs/games/gcompris/default.nix
index c6e16da0280c4..6b5168fa8c5a1 100644
--- a/pkgs/games/gcompris/default.nix
+++ b/pkgs/games/gcompris/default.nix
@@ -16,22 +16,24 @@
 , qtsensors
 , qttools
 , qtxmlpatterns
+, extra-cmake-modules
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "gcompris";
-  version = "4.0";
+  version = "4.1";
 
   src = fetchurl {
-    url = "mirror://kde/stable/gcompris/qt/src/gcompris-qt-${version}.tar.xz";
-    hash = "sha256-wcTqnK7ESv+jWHr5asedlkQ5rZV9iV4PLS8yQkvuDrY=";
+    url = "mirror://kde/stable/gcompris/qt/src/gcompris-qt-${finalAttrs.version}.tar.xz";
+    hash = "sha256-Pz0cOyBfiexKHUsHXm18Zw2FKu7b7vVuwy4Vu4daBoU=";
   };
 
   cmakeFlags = [
-    "-DQML_BOX2D_LIBRARY=${qmlbox2d}/${qtbase.qtQmlPrefix}/Box2D.2.1"
+    (lib.cmakeFeature "QML_BOX2D_LIBRARY" "${qmlbox2d}/${qtbase.qtQmlPrefix}/Box2D.2.1")
+    (lib.cmakeBool "BUILD_TESTING" (finalAttrs.doCheck or false))
   ];
 
-  nativeBuildInputs = [ cmake gettext ninja qttools wrapQtAppsHook ];
+  nativeBuildInputs = [ cmake extra-cmake-modules gettext ninja qttools wrapQtAppsHook ];
 
   buildInputs = [
     qmlbox2d
@@ -51,19 +53,20 @@ stdenv.mkDerivation rec {
   ]);
 
   postInstall = ''
-    install -Dm444 ../org.kde.gcompris.desktop     -t $out/share/applications
     install -Dm444 ../org.kde.gcompris.appdata.xml -t $out/share/metainfo
-    install -Dm444 ../images/256-apps-gcompris-qt.png $out/share/icons/hicolor/256x256/apps/gcompris-qt.png
 
     qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
   '';
 
+  # we need a graphical environment for the tests
+  doCheck = false;
+
   meta = with lib; {
-    description = "A high quality educational software suite, including a large number of activities for children aged 2 to 10";
+    description = "High quality educational software suite, including a large number of activities for children aged 2 to 10";
     homepage = "https://gcompris.net/";
     license = licenses.gpl3Plus;
     mainProgram = "gcompris-qt";
     maintainers = with maintainers; [ guibou ];
     platforms = platforms.linux;
   };
-}
+})
diff --git a/pkgs/games/gemrb/default.nix b/pkgs/games/gemrb/default.nix
index 7768ccf762534..a28bb8d0cc009 100644
--- a/pkgs/games/gemrb/default.nix
+++ b/pkgs/games/gemrb/default.nix
@@ -75,7 +75,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A reimplementation of the Infinity Engine, used by games such as Baldur's Gate";
+    description = "Reimplementation of the Infinity Engine, used by games such as Baldur's Gate";
     longDescription = ''
       GemRB (Game engine made with pre-Rendered Background) is a portable
       open-source implementation of Bioware's Infinity Engine. It was written to
diff --git a/pkgs/games/gl-117/default.nix b/pkgs/games/gl-117/default.nix
index 493ca986d9c24..9e56ec4cfccdd 100644
--- a/pkgs/games/gl-117/default.nix
+++ b/pkgs/games/gl-117/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libGLU libGL SDL freeglut SDL_mixer libtool ];
 
   meta = with lib; {
-    description = "An air combat simulator";
+    description = "Air combat simulator";
     mainProgram = "gl-117";
     homepage = "https://sourceforge.net/projects/gl-117";
     maintainers = with maintainers; [ raskin ];
diff --git a/pkgs/games/gl-gsync-demo/default.nix b/pkgs/games/gl-gsync-demo/default.nix
index 2027b9d3b27ec..a776a1b13dff9 100644
--- a/pkgs/games/gl-gsync-demo/default.nix
+++ b/pkgs/games/gl-gsync-demo/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     license = with licenses; mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ atemu ];
-    description = "A very basic OpenGL demo for testing NVIDIA's G-SYNC technology on Linux";
+    description = "Very basic OpenGL demo for testing NVIDIA's G-SYNC technology on Linux";
     mainProgram = "gl-gsync-demo";
     longDescription = ''
       The demo simply draws a vertical bar moving across the screen at constant speed, but deliberately rendered at a variable frame rate.
diff --git a/pkgs/games/gnonograms/default.nix b/pkgs/games/gnonograms/default.nix
index 69d45e32fe26c..57f38d61bbb5a 100644
--- a/pkgs/games/gnonograms/default.nix
+++ b/pkgs/games/gnonograms/default.nix
@@ -9,7 +9,7 @@
 , appstream
 , python3
 , shared-mime-info
-, wrapGAppsHook
+, wrapGAppsHook3
 , gtk3
 , pantheon
 , libgee
@@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
     appstream
     python3
     shared-mime-info
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
diff --git a/pkgs/games/gnuchess/default.nix b/pkgs/games/gnuchess/default.nix
index 3acf6a8aa62de..7e1bdd1d48cee 100644
--- a/pkgs/games/gnuchess/default.nix
+++ b/pkgs/games/gnuchess/default.nix
@@ -14,6 +14,11 @@ stdenv.mkDerivation rec {
   ];
   nativeBuildInputs = [ makeWrapper ];
 
+  configureFlags = [
+    # register keyword is removed in c++17 so stick to c++14
+    "CXXFLAGS=-std=c++14"
+  ];
+
   postInstall = ''
     wrapProgram $out/bin/gnuchessx --set PATH "$out/bin"
     wrapProgram $out/bin/gnuchessu --set PATH "$out/bin"
diff --git a/pkgs/games/gnujump/default.nix b/pkgs/games/gnujump/default.nix
index 10750f84da680..a9806cf81f8d4 100644
--- a/pkgs/games/gnujump/default.nix
+++ b/pkgs/games/gnujump/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     homepage = "https://jump.gnu.sinusoid.es/index.php?title=Main_Page";
-    description = "A clone of the simple yet addictive game Xjump";
+    description = "Clone of the simple yet addictive game Xjump";
     mainProgram = "gnujump";
     longDescription = ''
       The goal in this game is to jump to the next floor trying not to fall
diff --git a/pkgs/games/gogdl/default.nix b/pkgs/games/gogdl/default.nix
index 91cfe972d9c6e..5e47713f314c8 100644
--- a/pkgs/games/gogdl/default.nix
+++ b/pkgs/games/gogdl/default.nix
@@ -1,5 +1,4 @@
 { lib
-, fetchpatch
 , writeScript
 , buildPythonApplication
 , fetchFromGitHub
@@ -11,14 +10,14 @@
 
 buildPythonApplication rec {
   pname = "gogdl";
-  version = "1.0.1";
+  version = "1.1.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Heroic-Games-Launcher";
     repo = "heroic-gogdl";
-    rev = "10b4a19e0fbe9bc3db6b9ce3ea49fd17c9f1d37d";
-    hash = "sha256-po9To5WfT0L2j48Q84ygbbIqtTfXP9uQPrl4Uu+CWGk=";
+    rev = "7c9a6f43043e04763d4b06d09f420bda2baa98ce";
+    hash = "sha256-9SJ/DjxqYmvaVxEGxhnalZkr9yZhEOb0AzXYPBfUss4=";
   };
 
   disabled = pythonOlder "3.8";
diff --git a/pkgs/games/gogui/default.nix b/pkgs/games/gogui/default.nix
index 50cb29ddb454c..e83516d1c7d0e 100644
--- a/pkgs/games/gogui/default.nix
+++ b/pkgs/games/gogui/default.nix
@@ -86,7 +86,7 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   meta = {
-    description = "A graphical user interface to programs that play the board game Go and support the Go Text Protocol such as GNU Go";
+    description = "Graphical user interface to programs that play the board game Go and support the Go Text Protocol such as GNU Go";
     homepage = "https://github.com/Remi-Coulom/gogui";
     license = lib.licenses.gpl3Plus;
     mainProgram = "gogui";
diff --git a/pkgs/games/gotypist/default.nix b/pkgs/games/gotypist/default.nix
index 12489a27e6a6a..b60fe896392d0 100644
--- a/pkgs/games/gotypist/default.nix
+++ b/pkgs/games/gotypist/default.nix
@@ -14,7 +14,7 @@ buildGoModule rec {
   vendorHash = null;
 
   meta = with lib; {
-    description = "A touch-typing tutor";
+    description = "Touch-typing tutor";
     mainProgram = "gotypist";
     longDescription = ''
       A simple touch-typing tutor that follows Steve Yegge's methodology of
diff --git a/pkgs/games/grapejuice/default.nix b/pkgs/games/grapejuice/default.nix
index c8d1956eb9a54..9c2c8a594388b 100644
--- a/pkgs/games/grapejuice/default.nix
+++ b/pkgs/games/grapejuice/default.nix
@@ -4,7 +4,7 @@
 , pciutils
 , python3Packages
 , gtk3
-, wrapGAppsHook
+, wrapGAppsHook3
 , glib
 , cairo
 , desktop-file-utils
@@ -33,7 +33,7 @@ python3Packages.buildPythonApplication rec  {
     gobject-introspection
     desktop-file-utils
     glib
-    wrapGAppsHook
+    wrapGAppsHook3
     python3Packages.pip
   ];
 
diff --git a/pkgs/games/graphwar/default.nix b/pkgs/games/graphwar/default.nix
index 3586979292e6c..ac177281fa07b 100644
--- a/pkgs/games/graphwar/default.nix
+++ b/pkgs/games/graphwar/default.nix
@@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "http://www.graphwar.com/";
-    description = "An artillery game in which you must hit your enemies using mathematical functions";
+    description = "Artillery game in which you must hit your enemies using mathematical functions";
     license = licenses.gpl3Plus;
     platforms = jdk.meta.platforms;
     maintainers = with maintainers; [ yrd ];
diff --git a/pkgs/games/gscrabble/default.nix b/pkgs/games/gscrabble/default.nix
index 28e2a58b0d008..453cbfedba949 100644
--- a/pkgs/games/gscrabble/default.nix
+++ b/pkgs/games/gscrabble/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonApplication, fetchFromGitHub
-, gtk3, wrapGAppsHook, gst_all_1, gobject-introspection
+, gtk3, wrapGAppsHook3, gst_all_1, gobject-introspection
 , python3Packages, gnome }:
 
 buildPythonApplication {
@@ -15,7 +15,7 @@ buildPythonApplication {
 
   doCheck = false;
 
-  nativeBuildInputs = [ wrapGAppsHook gobject-introspection ];
+  nativeBuildInputs = [ wrapGAppsHook3 gobject-introspection ];
 
   buildInputs = with gst_all_1; [
     gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
diff --git a/pkgs/games/gshogi/default.nix b/pkgs/games/gshogi/default.nix
index 350ab86aa22b3..28013690ccc77 100644
--- a/pkgs/games/gshogi/default.nix
+++ b/pkgs/games/gshogi/default.nix
@@ -3,7 +3,7 @@
 , gobject-introspection
 , gtk3
 , python3
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 python3.pkgs.buildPythonApplication rec {
@@ -23,7 +23,7 @@ python3.pkgs.buildPythonApplication rec {
     gtk3
   ];
 
-  nativeBuildInputs = [ wrapGAppsHook gobject-introspection ];
+  nativeBuildInputs = [ wrapGAppsHook3 gobject-introspection ];
 
   propagatedBuildInputs = with python3.pkgs; [
     pygobject3
@@ -32,7 +32,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     homepage = "http://johncheetham.com/projects/gshogi/";
-    description = "A graphical implementation of the Shogi board game, also known as Japanese Chess";
+    description = "Graphical implementation of the Shogi board game, also known as Japanese Chess";
     mainProgram = "gshogi";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/games/gtypist/default.nix b/pkgs/games/gtypist/default.nix
index 43b95bacefc8d..169b0fa77db08 100644
--- a/pkgs/games/gtypist/default.nix
+++ b/pkgs/games/gtypist/default.nix
@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1";
   };
 
+  CFLAGS = "-std=gnu89";
+
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ ncurses perl fortune ]
    ++ lib.optional stdenv.isDarwin libiconv;
diff --git a/pkgs/games/gweled/default.nix b/pkgs/games/gweled/default.nix
index 484543ad86592..b27da3b2f7c4e 100644
--- a/pkgs/games/gweled/default.nix
+++ b/pkgs/games/gweled/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchbzr, gettext
-, gtk2, wrapGAppsHook, autoreconfHook, pkg-config
+, gtk2, wrapGAppsHook3, autoreconfHook, pkg-config
 , libmikmod, librsvg, libcanberra-gtk2, hicolor-icon-theme }:
 
 stdenv.mkDerivation rec {
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     substituteInPlace configure.ac --replace "AM_GNU_GETTEXT_VERSION([0.19.8])" "AM_GNU_GETTEXT_VERSION([${gettext.version}])"
   '';
 
-  nativeBuildInputs = [ wrapGAppsHook gettext autoreconfHook pkg-config ];
+  nativeBuildInputs = [ wrapGAppsHook3 gettext autoreconfHook pkg-config ];
 
   buildInputs = [ gtk2 libmikmod librsvg hicolor-icon-theme libcanberra-gtk2 ];
 
diff --git a/pkgs/games/harmonist/default.nix b/pkgs/games/harmonist/default.nix
index 57e9a06ec9a54..12715ff9247cf 100644
--- a/pkgs/games/harmonist/default.nix
+++ b/pkgs/games/harmonist/default.nix
@@ -14,7 +14,7 @@ buildGoModule rec {
   ldflags = [ "-s" "-w" ];
 
   meta = with lib; {
-    description = "A stealth coffee-break roguelike game";
+    description = "Stealth coffee-break roguelike game";
     mainProgram = "harmonist";
     longDescription = ''
       Harmonist is a stealth coffee-break roguelike game. The game has a heavy
diff --git a/pkgs/games/hase/default.nix b/pkgs/games/hase/default.nix
index 1e1ef23367fa0..20e1afa56d39b 100644
--- a/pkgs/games/hase/default.nix
+++ b/pkgs/games/hase/default.nix
@@ -42,7 +42,7 @@ stdenv.mkDerivation {
   '';
 
   meta = {
-    description = "An open-source artillery shooter";
+    description = "Open-source artillery shooter";
     mainProgram = "hase";
     longDescription = ''
       Hase is an open source gravity based artillery shooter. It is similar to
diff --git a/pkgs/games/heroic/default.nix b/pkgs/games/heroic/default.nix
index 354eeba61aad2..a1da27a566e4b 100644
--- a/pkgs/games/heroic/default.nix
+++ b/pkgs/games/heroic/default.nix
@@ -114,7 +114,7 @@ in stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac";
+    description = "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/pkgs/games/hex-a-hop/default.nix b/pkgs/games/hex-a-hop/default.nix
index 32a395195b5ea..98c4c5c03cbb6 100644
--- a/pkgs/games/hex-a-hop/default.nix
+++ b/pkgs/games/hex-a-hop/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "A puzzle game based on hexagonal tiles";
+    description = "Puzzle game based on hexagonal tiles";
     mainProgram = "hex-a-hop";
     homepage = "http://hexahop.sourceforge.net";
     license = with lib.licenses; [
diff --git a/pkgs/games/hikounomizu/default.nix b/pkgs/games/hikounomizu/default.nix
index 6e05a17b082e0..7848b5febad7c 100644
--- a/pkgs/games/hikounomizu/default.nix
+++ b/pkgs/games/hikounomizu/default.nix
@@ -62,7 +62,7 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   meta = with lib; {
-    description = "A free platform-based fighting game";
+    description = "Free platform-based fighting game";
     longDescription = ''
       Hikou no mizu (ハイクの水) is a free platform-based fighting game,
       licensed under the GNU GPL v3 (program) and the LAL (graphics).
diff --git a/pkgs/games/hmcl/default.nix b/pkgs/games/hmcl/default.nix
index 95a40f0a8d809..3ac7b9a96cdac 100644
--- a/pkgs/games/hmcl/default.nix
+++ b/pkgs/games/hmcl/default.nix
@@ -1,9 +1,8 @@
 { lib
 , stdenv
 , fetchurl
-, makeBinaryWrapper
 , makeDesktopItem
-, wrapGAppsHook
+, wrapGAppsHook3
 , copyDesktopItems
 , imagemagick
 , jre
@@ -15,13 +14,14 @@
 , alsa-lib
 , wayland
 , libpulseaudio
+, gobject-introspection
 }:
 
 let
-  version = "3.5.5";
+  version = "3.5.8";
   icon = fetchurl {
     url = "https://github.com/huanghongxun/HMCL/raw/release-${version}/HMCLauncher/HMCL/HMCL.ico";
-    hash = "sha256-MWp78rP4b39Scz5/gpsjwaJhSu+K9q3S2B2cD/V31MA=";
+    hash = "sha256-+EYL33VAzKHOMp9iXoJaSGZfv+ymDDYIx6i/1o47Dmc=";
   };
 in
 stdenv.mkDerivation (finalAttrs: {
@@ -30,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   src = fetchurl {
     url = "https://github.com/huanghongxun/HMCL/releases/download/release-${version}/HMCL-${version}.jar";
-    hash = "sha256-bXZF38pd8I8cReuDNrZzDj1hp1Crk+P26JNiikUCg4g=";
+    hash = "sha256-HRTXJhKtRB+pANMAZ9R1kNsSbl/Rr6a8wMhfaPeD/40=";
   };
 
   dontUnpack = true;
@@ -49,42 +49,51 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   nativeBuildInputs = [
-    makeBinaryWrapper
-    wrapGAppsHook
+    gobject-introspection
+    wrapGAppsHook3
     copyDesktopItems
     imagemagick
   ];
 
-  installPhase =
-    let
-      libpath = lib.makeLibraryPath ([
-        libGL
-        glfw
-        openal
-        libglvnd
-      ] ++ lib.optionals stdenv.isLinux [
-        xorg.libX11
-        xorg.libXxf86vm
-        xorg.libXext
-        xorg.libXcursor
-        xorg.libXrandr
-        xorg.libXtst
-        libpulseaudio
-        wayland
-        alsa-lib
-      ]);
-    in
-    ''
-      runHook preInstall
-      mkdir -p $out/{bin,lib/hmcl}
-      cp $src $out/lib/hmcl/hmcl.jar
-      magick ${icon} hmcl.png
-      install -Dm644 hmcl.png $out/share/icons/hicolor/32x32/apps/hmcl.png
-      makeBinaryWrapper ${jre}/bin/java $out/bin/hmcl \
-        --add-flags "-jar $out/lib/hmcl/hmcl.jar" \
-        --set LD_LIBRARY_PATH ${libpath}
-      runHook postInstall
-    '';
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/{bin,lib/hmcl}
+    cp $src $out/lib/hmcl/hmcl.jar
+    magick ${icon} hmcl.png
+    install -Dm644 hmcl-1.png $out/share/icons/hicolor/32x32/apps/hmcl.png
+
+    runHook postInstall
+  '';
+
+    fixupPhase =
+      let
+        libpath = lib.makeLibraryPath ([
+          libGL
+          glfw
+          openal
+          libglvnd
+        ] ++ lib.optionals stdenv.isLinux [
+          xorg.libX11
+          xorg.libXxf86vm
+          xorg.libXext
+          xorg.libXcursor
+          xorg.libXrandr
+          xorg.libXtst
+          libpulseaudio
+          wayland
+          alsa-lib
+        ]);
+      in ''
+        runHook preFixup
+
+        makeBinaryWrapper ${jre}/bin/java $out/bin/hmcl \
+          --add-flags "-jar $out/lib/hmcl/hmcl.jar" \
+          --set LD_LIBRARY_PATH ${libpath} \
+          ''${gappsWrapperArgs[@]}
+
+        runHook postFixup
+      '';
 
   meta = with lib; {
     homepage = "https://hmcl.huangyuhui.net";
@@ -92,7 +101,7 @@ stdenv.mkDerivation (finalAttrs: {
     mainProgram = "hmcl";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ daru-san ];
     inherit (jre.meta) platforms;
   };
 })
diff --git a/pkgs/games/hyperrogue/default.nix b/pkgs/games/hyperrogue/default.nix
index 21316d967c5ad..627b2349c8a52 100644
--- a/pkgs/games/hyperrogue/default.nix
+++ b/pkgs/games/hyperrogue/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "hyperrogue";
-  version = "13.0d";
+  version = "13.0i";
 
   src = fetchFromGitHub {
     owner = "zenorogue";
     repo = "hyperrogue";
     rev = "v${version}";
-    sha256 = "sha256-K7KKOumotBx9twgCBF4UkpsgMWb8vAclzbYZK83T66I=";
+    sha256 = "sha256-jXiZ/+XvDluXvNFmSp4suAFVsQvbHEx6fa4iztu+n6c=";
   };
 
   CXXFLAGS = [
diff --git a/pkgs/games/infra-arcana/default.nix b/pkgs/games/infra-arcana/default.nix
index c5c960d7deff9..4d3db6214cbb7 100644
--- a/pkgs/games/infra-arcana/default.nix
+++ b/pkgs/games/infra-arcana/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://sites.google.com/site/infraarcana";
-    description = "A Lovecraftian single-player roguelike game";
+    description = "Lovecraftian single-player roguelike game";
     mainProgram = "infra-arcana";
     longDescription = ''
       Infra Arcana is a Roguelike set in the early 20th century. The goal is to
diff --git a/pkgs/games/instawow/default.nix b/pkgs/games/instawow/default.nix
index 02daa3207837e..0793ece2960f1 100644
--- a/pkgs/games/instawow/default.nix
+++ b/pkgs/games/instawow/default.nix
@@ -2,14 +2,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "instawow";
-  version = "4.1.1";
+  version = "4.4.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "layday";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-RRBuFja5vejzjrtOvRBIjT7sq/Wg/39FA/o9O8c2B0o=";
+    sha256 = "sha256-LSn8b29IEPimwLpmYU7vRRH2dcyaCCr/dk9MzBIW4U0=";
   };
 
   extras = [ ];  # Disable GUI, most dependencies are not packaged.
diff --git a/pkgs/games/ironwail/default.nix b/pkgs/games/ironwail/default.nix
index f55d72c4a40be..599637b3ae604 100644
--- a/pkgs/games/ironwail/default.nix
+++ b/pkgs/games/ironwail/default.nix
@@ -30,9 +30,20 @@ stdenv.mkDerivation (finalAttrs: {
   sourceRoot = "${finalAttrs.pname}-${finalAttrs.version}/Quake";
 
   nativeBuildInputs = [
-    copyDesktopItems pkg-config vulkan-headers
-    gzip libvorbis libmad flac curl libopus
-    opusfile libogg libxmp vulkan-loader SDL2
+    copyDesktopItems
+    pkg-config
+    vulkan-headers
+    gzip
+    libvorbis
+    libmad
+    flac
+    curl
+    libopus
+    opusfile
+    libogg
+    libxmp
+    vulkan-loader
+    SDL2
   ];
 
   buildFlags = [
@@ -55,8 +66,8 @@ stdenv.mkDerivation (finalAttrs: {
   preInstall = ''
     mkdir -p "$out/bin"
     mkdir -p "$out/share/quake"
-    substituteInPlace Makefile --replace "cp ironwail.pak /usr/local/games/quake" "cp ironwail.pak $out/share/quake/ironwail.pak"
-    substituteInPlace Makefile --replace "/usr/local/games" "$out/bin"
+    substituteInPlace Makefile --replace-fail "cp ironwail.pak /usr/local/games/quake" "cp ironwail.pak $out/share/quake/ironwail.pak"
+    substituteInPlace Makefile --replace-fail "/usr/local/games/quake" "$out/bin/ironwail"
   '';
 
   enableParallelBuilding = true;
@@ -64,14 +75,14 @@ stdenv.mkDerivation (finalAttrs: {
   desktopItems = [
     (makeDesktopItem {
       name = "ironwail";
-      exec = "quake";
+      exec = "ironwail";
       desktopName = "Ironwail";
       categories = [ "Game" ];
     })
   ];
 
   meta = {
-    description = "A fork of the QuakeSpasm engine for iD software's Quake";
+    description = "Fork of the QuakeSpasm engine for iD software's Quake";
     homepage = "https://github.com/andrei-drexler/ironwail";
     longDescription = ''
       Ironwail is a fork of QuakeSpasm with focus on high performance instead of
@@ -86,6 +97,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.necrophcodr ];
-    mainProgram = "quake";
+    mainProgram = "ironwail";
   };
 })
diff --git a/pkgs/games/jfsw/default.nix b/pkgs/games/jfsw/default.nix
index 9b631551b5790..ed82964e4d0eb 100644
--- a/pkgs/games/jfsw/default.nix
+++ b/pkgs/games/jfsw/default.nix
@@ -5,7 +5,7 @@
 , SDL2
 , perl
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook3
 , gtk3
 }:
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
     SDL2
     perl
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
diff --git a/pkgs/games/julius/darwin-fixes.patch b/pkgs/games/julius/darwin-fixes.patch
new file mode 100644
index 0000000000000..b4dfee59659b7
--- /dev/null
+++ b/pkgs/games/julius/darwin-fixes.patch
@@ -0,0 +1,49 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 038a34ba..d46b9258 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -669,16 +669,14 @@ endif()
+ if(APPLE)
+     # generating a macOS icns file (see https://stackoverflow.com/a/20703594)
+     add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/res/julius.icns
+-        COMMAND mkdir -p julius.iconset
+-        COMMAND sips -z 16 16    julius_256.png --out julius.iconset/icon_16x16.png
+-        COMMAND sips -z 32 32    julius_256.png --out julius.iconset/icon_16x16@2x.png
+-        COMMAND sips -z 32 32    julius_256.png --out julius.iconset/icon_32x32.png
+-        COMMAND sips -z 64 64    julius_256.png --out julius.iconset/icon_32x32@2x.png
+-        COMMAND sips -z 128 128  julius_256.png --out julius.iconset/icon_128x128.png
+-        COMMAND sips -z 256 256  julius_256.png --out julius.iconset/icon_128x128@2x.png
+-        COMMAND sips -z 256 256  julius_256.png --out julius.iconset/icon_256x256.png
+-        COMMAND sips -z 512 512  julius_512.png --out julius.iconset/icon_256x256@2x.png
+-        COMMAND iconutil -c icns julius.iconset
++        COMMAND mkdir julius.iconset
++        COMMAND convert julius_256.png -resize 16x16 julius.iconset/icon_16.png
++        COMMAND convert julius_256.png -resize 32x32 julius.iconset/icon_32.png
++        COMMAND convert julius_256.png -resize 64x64 julius.iconset/icon_64.png
++        COMMAND convert julius_256.png -resize 128x128 julius.iconset/icon_128.png
++        COMMAND cp julius_256.png julius.iconset/icon_256.png
++        COMMAND cp julius_512.png julius.iconset/icon_512.png
++        COMMAND png2icns julius.icns julius.iconset/icon_{16,32,64,128,256,512}.png
+         COMMAND rm -R julius.iconset
+         WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/res)
+     set_source_files_properties(${PROJECT_SOURCE_DIR}/res/julius.icns PROPERTIES
+@@ -687,7 +685,6 @@ if(APPLE)
+     # setting variables that will populate Info.plist
+     set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.github.bvschaik.julius")
+     set(MACOSX_BUNDLE_BUNDLE_NAME ${USER_FRIENDLY_NAME})
+-    set(CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE STRING "Minimum OS X deployment version" FORCE)
+     set(MACOSX_BUNDLE_ICON_FILE "julius.icns")
+     set(MACOSX_BUNDLE_BUNDLE_VERSION
+         "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${VERSION_REVISION}")
+diff --git a/cmake/FindSDL2_mixer.cmake b/cmake/FindSDL2_mixer.cmake
+index 29cc683c..1fa28a1f 100644
+--- a/cmake/FindSDL2_mixer.cmake
++++ b/cmake/FindSDL2_mixer.cmake
+@@ -93,7 +93,6 @@ ELSE()
+         PATH_SUFFIXES include include/SDL2
+         PATHS ${SDL2_SEARCH_PATHS}
+       )
+-      set(SDL2_MIXER_INCLUDE_DIR "${SDL2_MIXER_INCLUDE_DIR}/Headers")
+     endif()
+ 
+     if(NOT APPLE OR NOT EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h")
diff --git a/pkgs/games/julius/default.nix b/pkgs/games/julius/default.nix
index 5e1f046d97103..69f3c34a1f0ff 100644
--- a/pkgs/games/julius/default.nix
+++ b/pkgs/games/julius/default.nix
@@ -5,8 +5,10 @@
 , SDL2_mixer
 , cmake
 , libpng
+, darwin
+, libicns
+, imagemagick
 }:
-
 stdenv.mkDerivation rec {
   pname = "julius";
   version = "1.7.0";
@@ -18,16 +20,41 @@ stdenv.mkDerivation rec {
     hash = "sha256-I5GTaVWzz0ryGLDSS3rzxp+XFVXZa9hZmgwon/6r83A=";
   };
 
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ SDL2 SDL2_mixer libpng ];
+  patches = [
+    # This fixes the darwin bundle generation, sets min. deployment version
+    # and patches SDL2_mixer include
+    ./darwin-fixes.patch
+  ];
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.sigtool
+    libicns
+    imagemagick
+  ];
+
+  buildInputs = [
+    SDL2
+    SDL2_mixer
+    libpng
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Cocoa
+  ];
+
+  installPhase = lib.optionalString stdenv.isDarwin ''
+    runHook preInstall
+    mkdir -p $out/Applications
+    cp -r julius.app $out/Applications/
+    runHook postInstall
+  '';
 
   meta = with lib; {
     homepage = "https://github.com/bvschaik/julius";
-    description = "An open source re-implementation of Caesar III";
+    description = "Open source re-implementation of Caesar III";
     mainProgram = "julius";
     license = licenses.agpl3Only;
-    maintainers = with maintainers; [ Thra11 ];
+    maintainers = with maintainers; [ Thra11 matteopacini ];
     platforms = platforms.all;
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/games/jumpnbump/default.nix b/pkgs/games/jumpnbump/default.nix
index 193d4dc0b585f..b2f6a646c65f3 100644
--- a/pkgs/games/jumpnbump/default.nix
+++ b/pkgs/games/jumpnbump/default.nix
@@ -4,7 +4,7 @@
 , SDL2, SDL2_mixer, SDL2_net
 , gtk3, gobject-introspection
 , python3Packages
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 let data = fetchzip {
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook gobject-introspection ];
+  nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook3 gobject-introspection ];
   buildInputs = [ SDL2 SDL2_mixer SDL2_net gtk3 ];
 
   postInstall = ''
diff --git a/pkgs/games/jumpy/default.nix b/pkgs/games/jumpy/default.nix
index 29110d42ff825..23e130582a3d0 100644
--- a/pkgs/games/jumpy/default.nix
+++ b/pkgs/games/jumpy/default.nix
@@ -76,7 +76,7 @@ rustPlatform.buildRustPackage rec {
   '';
 
   meta = with lib; {
-    description = "A tactical 2D shooter played by up to 4 players online or on a shared screen";
+    description = "Tactical 2D shooter played by up to 4 players online or on a shared screen";
     mainProgram = "jumpy";
     homepage = "https://fishfight.org/";
     changelog = "https://github.com/fishfolk/jumpy/releases/tag/v${version}";
diff --git a/pkgs/games/katago/default.nix b/pkgs/games/katago/default.nix
index e9ba507a3c95d..a633430ee673e 100644
--- a/pkgs/games/katago/default.nix
+++ b/pkgs/games/katago/default.nix
@@ -28,14 +28,14 @@ assert lib.assertOneOf "backend" backend [ "opencl" "cuda" "tensorrt" "eigen" ];
 # of gcc.  If you need to use cuda10, please override stdenv with gcc8Stdenv
 stdenv.mkDerivation rec {
   pname = "katago";
-  version = "1.14.0";
-  githash = "c6de1bbda837a0717eaeca46102f7326ed0da0d4";
+  version = "1.14.1";
+  githash = "f2dc582f98a79fefeb11b2c37de7db0905318f4f";
 
   src = fetchFromGitHub {
     owner = "lightvector";
     repo = "katago";
     rev = "v${version}";
-    sha256 = "sha256-0WB/weQIJkLXedcOJO7D/N85oXTufvbmyfIp8XdrACg=";
+    hash = "sha256-ZdvHvrtSLwQ5vFMzLdJSJEiGcSent9iskPgpbL1TfhI=";
   };
 
   fakegit = writeShellScriptBin "git" "echo ${githash}";
diff --git a/pkgs/games/katawa-shoujo/default.nix b/pkgs/games/katawa-shoujo/default.nix
index e549fbbcf9638..8e24966fc9aef 100644
--- a/pkgs/games/katawa-shoujo/default.nix
+++ b/pkgs/games/katawa-shoujo/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   version = "1.3.1";
 
   src = fetchurl {
-    url = "https://dl.katawa-shoujo.com/gold_${version}/%5b4ls%5d_katawa_shoujo_${version}-${srcDetails.urlSuffix}";
+    url = "https://cdn.fhs.sh/ks/bin/gold_${version}/%5b4ls%5d_katawa_shoujo_${version}-${srcDetails.urlSuffix}";
     inherit (srcDetails) hash;
   };
 
diff --git a/pkgs/games/keeperrl/default.nix b/pkgs/games/keeperrl/default.nix
index 0cbcfd036702f..262702c223338 100644
--- a/pkgs/games/keeperrl/default.nix
+++ b/pkgs/games/keeperrl/default.nix
@@ -81,7 +81,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A dungeon management rogue-like";
+    description = "Dungeon management rogue-like";
     mainProgram = "keeper";
     homepage = "https://keeperrl.com/";
     license = licenses.gpl2;
diff --git a/pkgs/games/koboredux/default.nix b/pkgs/games/koboredux/default.nix
index 5eb482b09cb37..cab22ce44034d 100644
--- a/pkgs/games/koboredux/default.nix
+++ b/pkgs/games/koboredux/default.nix
@@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    description = "A frantic 80's style 2D shooter, similar to XKobo and Kobo Deluxe" +
+    description = "Frantic 80's style 2D shooter, similar to XKobo and Kobo Deluxe" +
       optionalString (!useProprietaryAssets) " (built without proprietary assets)";
     mainProgram = "kobord";
     longDescription = ''
diff --git a/pkgs/games/ldmud/default.nix b/pkgs/games/ldmud/default.nix
index 41348fa0bcfaa..83bbadfe7dc41 100644
--- a/pkgs/games/ldmud/default.nix
+++ b/pkgs/games/ldmud/default.nix
@@ -82,7 +82,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A gamedriver for LPMuds including a LPC compiler, interpreter and runtime";
+    description = "Gamedriver for LPMuds including a LPC compiler, interpreter and runtime";
     homepage = "https://ldmud.eu";
     changelog = "https://github.com/ldmud/ldmud/blob/${version}/HISTORY";
     longDescription = ''
diff --git a/pkgs/games/legendary-gl/default.nix b/pkgs/games/legendary-gl/default.nix
index 7d339681f333f..a802efd66587d 100644
--- a/pkgs/games/legendary-gl/default.nix
+++ b/pkgs/games/legendary-gl/default.nix
@@ -31,7 +31,7 @@ buildPythonApplication rec {
   pythonImportsCheck = [ "legendary" ];
 
   meta = with lib; {
-    description = "A free and open-source Epic Games Launcher alternative";
+    description = "Free and open-source Epic Games Launcher alternative";
     homepage = "https://github.com/derrod/legendary";
     license = licenses.gpl3;
     maintainers = with maintainers; [ equirosa ];
diff --git a/pkgs/games/liberal-crime-squad/default.nix b/pkgs/games/liberal-crime-squad/default.nix
index f46bd3b50a388..0d81f7b3e610d 100644
--- a/pkgs/games/liberal-crime-squad/default.nix
+++ b/pkgs/games/liberal-crime-squad/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
   enableParallelBuilding = true;
 
   meta = with lib; {
-    description = "A humorous politically themed ncurses game";
+    description = "Humorous politically themed ncurses game";
     longDescription = ''
       Welcome to Liberal Crime Squad! The Conservatives have taken the Executive, Legislative, and Judicial branches of government. Over time, the Liberal laws of this nation will erode and turn the country into a BACKWOODS YET CORPORATE NIGHTMARE. To prevent this from happening, the Liberal Crime Squad was established. The mood of the country is shifting, and we need to turn things around. Go out on the streets and indoctrinate Conservative automatons. That is, let them see their True Liberal Nature. Then arm them and send them forth to Stop Evil.
     '';
diff --git a/pkgs/games/liberation-circuit/default.nix b/pkgs/games/liberation-circuit/default.nix
index 5df48282f26d4..a9bceda06adb9 100644
--- a/pkgs/games/liberation-circuit/default.nix
+++ b/pkgs/games/liberation-circuit/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, fetchurl, pkg-config, allegro5, libGL, wrapGAppsHook }:
+{ stdenv, lib, fetchFromGitHub, pkg-config, allegro5, libGL, wrapGAppsHook3 }:
 
 stdenv.mkDerivation rec {
   pname = "liberation-circuit";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     hash = "sha256-zIwjh4CBSmKz7pF7GM5af+VslWho5jHOLsulbW4C8TY=";
   };
 
-  nativeBuildInputs = [ pkg-config wrapGAppsHook ];
+  nativeBuildInputs = [ pkg-config wrapGAppsHook3 ];
   buildInputs = [ allegro5 libGL ];
 
   dontWrapGApps = true;
diff --git a/pkgs/games/linthesia/default.nix b/pkgs/games/linthesia/default.nix
index 1200afa4f2f71..c13bbec0ecfd2 100644
--- a/pkgs/games/linthesia/default.nix
+++ b/pkgs/games/linthesia/default.nix
@@ -14,7 +14,7 @@
 , python3
 , sqlite
 , stdenv
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 stdenv.mkDerivation rec {
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     patchShebangs meson_post_install.py
   '';
 
-  nativeBuildInputs = [ meson ninja pkg-config python3 wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkg-config python3 wrapGAppsHook3 ];
   buildInputs = [
     libGL
     libGLU
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A game of playing music using a MIDI keyboard following a MIDI file";
+    description = "Game of playing music using a MIDI keyboard following a MIDI file";
     mainProgram = "linthesia";
     inherit (src.meta) homepage;
     license = licenses.gpl2Plus;
diff --git a/pkgs/games/liquidwar/5.nix b/pkgs/games/liquidwar/5.nix
index fc9802d46e5e2..9c61f97d1a7f9 100644
--- a/pkgs/games/liquidwar/5.nix
+++ b/pkgs/games/liquidwar/5.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "The classic version of a quick tactics game LiquidWar";
+    description = "Classic version of a quick tactics game LiquidWar";
     maintainers = [ maintainers.raskin ];
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
diff --git a/pkgs/games/maelstrom/default.nix b/pkgs/games/maelstrom/default.nix
index 9c408b2643cfb..45318987dca6c 100644
--- a/pkgs/games/maelstrom/default.nix
+++ b/pkgs/games/maelstrom/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "An arcade-style game resembling Asteroids";
+    description = "Arcade-style game resembling Asteroids";
     mainProgram = "maelstrom";
     license = licenses.gpl2Plus;
     platforms = platforms.all;
diff --git a/pkgs/games/manaplus/default.nix b/pkgs/games/manaplus/default.nix
index 1ea5231a65ea3..974564a4d5e35 100644
--- a/pkgs/games/manaplus/default.nix
+++ b/pkgs/games/manaplus/default.nix
@@ -24,8 +24,8 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    maintainers = [ lib.maintainers.lheckemann ];
-    description = "A free OpenSource 2D MMORPG client";
+    maintainers = [ ];
+    description = "Free OpenSource 2D MMORPG client";
     homepage = "https://manaplus.org/";
     license = lib.licenses.gpl2;
     broken = stdenv.isDarwin;
diff --git a/pkgs/games/maptool/default.nix b/pkgs/games/maptool/default.nix
index 1e95e376825c6..775879a957ad3 100644
--- a/pkgs/games/maptool/default.nix
+++ b/pkgs/games/maptool/default.nix
@@ -8,7 +8,7 @@
 , makeDesktopItem
 , openjfx
 , stdenvNoCC
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 let
   pname = "maptool";
@@ -82,7 +82,7 @@ stdenvNoCC.mkDerivation {
   nativeBuildInputs = [
     copyDesktopItems
     libarchive
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   desktopItems = [
diff --git a/pkgs/games/mars/default.nix b/pkgs/games/mars/default.nix
index 3ce42bb7748e0..c63152fb5445d 100644
--- a/pkgs/games/mars/default.nix
+++ b/pkgs/games/mars/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   '';
   meta = with lib; {
     homepage = "https://mars-game.sourceforge.net/";
-    description = "A game about fighting with ships in a 2D space setting";
+    description = "Game about fighting with ships in a 2D space setting";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.astsmtl ];
     platforms = platforms.linux;
diff --git a/pkgs/games/mchprs/default.nix b/pkgs/games/mchprs/default.nix
index feda0c496f9c7..49ef836423cdc 100644
--- a/pkgs/games/mchprs/default.nix
+++ b/pkgs/games/mchprs/default.nix
@@ -43,7 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     mainProgram = "mchprs";
-    description = "A multithreaded Minecraft server built for redstone";
+    description = "Multithreaded Minecraft server built for redstone";
     homepage = "https://github.com/MCHPR/MCHPRS";
     license = licenses.mit;
     maintainers = with maintainers; [ gdd ];
diff --git a/pkgs/games/megaglest/default.nix b/pkgs/games/megaglest/default.nix
index 83954c1b2463d..2a914c9412265 100644
--- a/pkgs/games/megaglest/default.nix
+++ b/pkgs/games/megaglest/default.nix
@@ -79,7 +79,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "An entertaining free (freeware and free software) and open source cross-platform 3D real-time strategy (RTS) game";
+    description = "Entertaining free (freeware and free software) and open source cross-platform 3D real-time strategy (RTS) game";
     license = licenses.gpl3;
     homepage = "https://megaglest.org/";
     maintainers = [ maintainers.matejc ];
diff --git a/pkgs/games/methane/default.nix b/pkgs/games/methane/default.nix
index 5ab8843b33bf1..d1e4bb03409d8 100644
--- a/pkgs/games/methane/default.nix
+++ b/pkgs/games/methane/default.nix
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/rombust/methane";
-    description = "A clone of Taito's Bubble Bobble arcade game released for Amiga in 1993 by Apache Software";
+    description = "Clone of Taito's Bubble Bobble arcade game released for Amiga in 1993 by Apache Software";
     mainProgram = "methane";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ nixinator ];
diff --git a/pkgs/games/mindustry/default.nix b/pkgs/games/mindustry/default.nix
index 0562ff40ac2dd..49ce37cc4b579 100644
--- a/pkgs/games/mindustry/default.nix
+++ b/pkgs/games/mindustry/default.nix
@@ -98,6 +98,7 @@ let
     desktopName = "Mindustry";
     exec = "mindustry";
     icon = "mindustry";
+    categories = [ "Game" ];
   };
 
   cleanupMindustrySrc = ''
@@ -239,7 +240,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://mindustrygame.github.io/";
     downloadPage = "https://github.com/Anuken/Mindustry/releases";
-    description = "A sandbox tower defense game";
+    description = "Sandbox tower defense game";
     sourceProvenance = with sourceTypes; [
       fromSource
       binaryBytecode  # deps
diff --git a/pkgs/games/minecraft-servers/derivation.nix b/pkgs/games/minecraft-servers/derivation.nix
index 0773be6bcfc7e..a1b03a0a3b368 100644
--- a/pkgs/games/minecraft-servers/derivation.nix
+++ b/pkgs/games/minecraft-servers/derivation.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, nixosTests, jre_headless, version, url, sha1 }:
+{ lib, stdenv, fetchurl, nixosTests, jre_headless, makeWrapper, udev, version, url, sha1 }:
 stdenv.mkDerivation {
   pname = "minecraft-server";
   inherit version;
@@ -7,16 +7,18 @@ stdenv.mkDerivation {
 
   preferLocalBuild = true;
 
+  nativeBuildInputs = [ makeWrapper ];
+
   installPhase = ''
-    mkdir -p $out/bin $out/lib/minecraft
-    cp -v $src $out/lib/minecraft/server.jar
+    runHook preInstall
+
+    install -Dm644 $src $out/lib/minecraft/server.jar
 
-    cat > $out/bin/minecraft-server << EOF
-    #!/bin/sh
-    exec ${jre_headless}/bin/java \$@ -jar $out/lib/minecraft/server.jar nogui
-    EOF
+    makeWrapper ${lib.getExe jre_headless} $out/bin/minecraft-server \
+      --append-flags "-jar $out/lib/minecraft/server.jar nogui" \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ udev ]}
 
-    chmod +x $out/bin/minecraft-server
+    runHook postInstall
   '';
 
   dontUnpack = true;
diff --git a/pkgs/games/minecraft-servers/versions.json b/pkgs/games/minecraft-servers/versions.json
index 15dbc82c6d901..fdda977994b81 100644
--- a/pkgs/games/minecraft-servers/versions.json
+++ b/pkgs/games/minecraft-servers/versions.json
@@ -1,115 +1,121 @@
 {
+  "1.21": {
+    "sha1": "450698d1863ab5180c25d7c804ef0fe6369dd1ba",
+    "url": "https://piston-data.mojang.com/v1/objects/450698d1863ab5180c25d7c804ef0fe6369dd1ba/server.jar",
+    "version": "1.21",
+    "javaVersion": 21
+  },
   "1.20": {
-    "sha1": "8dd1a28015f51b1803213892b50b7b4fc76e594d",
-    "url": "https://piston-data.mojang.com/v1/objects/8dd1a28015f51b1803213892b50b7b4fc76e594d/server.jar",
-    "version": "1.20.4",
-    "javaVersion": 17
+    "sha1": "145ff0858209bcfc164859ba735d4199aafa1eea",
+    "url": "https://piston-data.mojang.com/v1/objects/145ff0858209bcfc164859ba735d4199aafa1eea/server.jar",
+    "version": "1.20.6",
+    "javaVersion": 21
   },
   "1.19": {
-    "url": "https://piston-data.mojang.com/v1/objects/8f3112a1049751cc472ec13e397eade5336ca7ae/server.jar",
     "sha1": "8f3112a1049751cc472ec13e397eade5336ca7ae",
+    "url": "https://piston-data.mojang.com/v1/objects/8f3112a1049751cc472ec13e397eade5336ca7ae/server.jar",
     "version": "1.19.4",
     "javaVersion": 17
   },
   "1.18": {
-    "url": "https://piston-data.mojang.com/v1/objects/c8f83c5655308435b3dcf03c06d9fe8740a77469/server.jar",
     "sha1": "c8f83c5655308435b3dcf03c06d9fe8740a77469",
+    "url": "https://piston-data.mojang.com/v1/objects/c8f83c5655308435b3dcf03c06d9fe8740a77469/server.jar",
     "version": "1.18.2",
     "javaVersion": 17
   },
   "1.17": {
-    "url": "https://piston-data.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar",
     "sha1": "a16d67e5807f57fc4e550299cf20226194497dc2",
+    "url": "https://piston-data.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar",
     "version": "1.17.1",
     "javaVersion": 16
   },
   "1.16": {
-    "url": "https://piston-data.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar",
     "sha1": "1b557e7b033b583cd9f66746b7a9ab1ec1673ced",
+    "url": "https://piston-data.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar",
     "version": "1.16.5",
     "javaVersion": 8
   },
   "1.15": {
-    "url": "https://piston-data.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar",
     "sha1": "bb2b6b1aefcd70dfd1892149ac3a215f6c636b07",
+    "url": "https://piston-data.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar",
     "version": "1.15.2",
     "javaVersion": 8
   },
   "1.14": {
-    "url": "https://piston-data.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar",
     "sha1": "3dc3d84a581f14691199cf6831b71ed1296a9fdf",
+    "url": "https://piston-data.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar",
     "version": "1.14.4",
     "javaVersion": 8
   },
   "1.13": {
-    "url": "https://piston-data.mojang.com/v1/objects/3737db93722a9e39eeada7c27e7aca28b144ffa7/server.jar",
     "sha1": "3737db93722a9e39eeada7c27e7aca28b144ffa7",
+    "url": "https://piston-data.mojang.com/v1/objects/3737db93722a9e39eeada7c27e7aca28b144ffa7/server.jar",
     "version": "1.13.2",
     "javaVersion": 8
   },
   "1.12": {
-    "url": "https://piston-data.mojang.com/v1/objects/886945bfb2b978778c3a0288fd7fab09d315b25f/server.jar",
     "sha1": "886945bfb2b978778c3a0288fd7fab09d315b25f",
+    "url": "https://piston-data.mojang.com/v1/objects/886945bfb2b978778c3a0288fd7fab09d315b25f/server.jar",
     "version": "1.12.2",
     "javaVersion": 8
   },
   "1.11": {
-    "url": "https://piston-data.mojang.com/v1/objects/f00c294a1576e03fddcac777c3cf4c7d404c4ba4/server.jar",
     "sha1": "f00c294a1576e03fddcac777c3cf4c7d404c4ba4",
+    "url": "https://piston-data.mojang.com/v1/objects/f00c294a1576e03fddcac777c3cf4c7d404c4ba4/server.jar",
     "version": "1.11.2",
     "javaVersion": 8
   },
   "1.10": {
-    "url": "https://piston-data.mojang.com/v1/objects/3d501b23df53c548254f5e3f66492d178a48db63/server.jar",
     "sha1": "3d501b23df53c548254f5e3f66492d178a48db63",
+    "url": "https://piston-data.mojang.com/v1/objects/3d501b23df53c548254f5e3f66492d178a48db63/server.jar",
     "version": "1.10.2",
     "javaVersion": 8
   },
   "1.9": {
-    "url": "https://piston-data.mojang.com/v1/objects/edbb7b1758af33d365bf835eb9d13de005b1e274/server.jar",
     "sha1": "edbb7b1758af33d365bf835eb9d13de005b1e274",
+    "url": "https://piston-data.mojang.com/v1/objects/edbb7b1758af33d365bf835eb9d13de005b1e274/server.jar",
     "version": "1.9.4",
     "javaVersion": 8
   },
   "1.8": {
-    "url": "https://launcher.mojang.com/v1/objects/b58b2ceb36e01bcd8dbf49c8fb66c55a9f0676cd/server.jar",
     "sha1": "b58b2ceb36e01bcd8dbf49c8fb66c55a9f0676cd",
+    "url": "https://launcher.mojang.com/v1/objects/b58b2ceb36e01bcd8dbf49c8fb66c55a9f0676cd/server.jar",
     "version": "1.8.9",
     "javaVersion": 8
   },
   "1.7": {
-    "url": "https://launcher.mojang.com/v1/objects/952438ac4e01b4d115c5fc38f891710c4941df29/server.jar",
     "sha1": "952438ac4e01b4d115c5fc38f891710c4941df29",
+    "url": "https://launcher.mojang.com/v1/objects/952438ac4e01b4d115c5fc38f891710c4941df29/server.jar",
     "version": "1.7.10",
     "javaVersion": 8
   },
   "1.6": {
-    "url": "https://launcher.mojang.com/v1/objects/050f93c1f3fe9e2052398f7bd6aca10c63d64a87/server.jar",
     "sha1": "050f93c1f3fe9e2052398f7bd6aca10c63d64a87",
+    "url": "https://launcher.mojang.com/v1/objects/050f93c1f3fe9e2052398f7bd6aca10c63d64a87/server.jar",
     "version": "1.6.4",
     "javaVersion": null
   },
   "1.5": {
-    "url": "https://launcher.mojang.com/v1/objects/f9ae3f651319151ce99a0bfad6b34fa16eb6775f/server.jar",
     "sha1": "f9ae3f651319151ce99a0bfad6b34fa16eb6775f",
+    "url": "https://launcher.mojang.com/v1/objects/f9ae3f651319151ce99a0bfad6b34fa16eb6775f/server.jar",
     "version": "1.5.2",
     "javaVersion": 8
   },
   "1.4": {
-    "url": "https://launcher.mojang.com/v1/objects/2f0ec8efddd2f2c674c77be9ddb370b727dec676/server.jar",
     "sha1": "2f0ec8efddd2f2c674c77be9ddb370b727dec676",
+    "url": "https://launcher.mojang.com/v1/objects/2f0ec8efddd2f2c674c77be9ddb370b727dec676/server.jar",
     "version": "1.4.7",
     "javaVersion": 8
   },
   "1.3": {
-    "url": "https://launcher.mojang.com/v1/objects/3de2ae6c488135596e073a9589842800c9f53bfe/server.jar",
     "sha1": "3de2ae6c488135596e073a9589842800c9f53bfe",
+    "url": "https://launcher.mojang.com/v1/objects/3de2ae6c488135596e073a9589842800c9f53bfe/server.jar",
     "version": "1.3.2",
     "javaVersion": 8
   },
   "1.2": {
-    "url": "https://launcher.mojang.com/v1/objects/d8321edc9470e56b8ad5c67bbd16beba25843336/server.jar",
     "sha1": "d8321edc9470e56b8ad5c67bbd16beba25843336",
+    "url": "https://launcher.mojang.com/v1/objects/d8321edc9470e56b8ad5c67bbd16beba25843336/server.jar",
     "version": "1.2.5",
     "javaVersion": 8
   }
diff --git a/pkgs/games/minecraft/default.nix b/pkgs/games/minecraft/default.nix
index c9ce3bfb17f16..b4a74fecd4f5f 100644
--- a/pkgs/games/minecraft/default.nix
+++ b/pkgs/games/minecraft/default.nix
@@ -4,7 +4,7 @@
 , copyDesktopItems
 , makeDesktopItem
 , makeWrapper
-, wrapGAppsHook
+, wrapGAppsHook3
 , gobject-introspection
 , jre # old or modded versions of the game may require Java 8 (https://aur.archlinux.org/packages/minecraft-launcher/#pinned-674960)
 , xorg
@@ -100,7 +100,7 @@ stdenv.mkDerivation rec {
     sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
   };
 
-  nativeBuildInputs = [ makeWrapper wrapGAppsHook copyDesktopItems gobject-introspection ];
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook3 copyDesktopItems gobject-introspection ];
 
   sourceRoot = ".";
 
@@ -151,6 +151,9 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
+    # "minecraft-launcher will fail on NixOS for minecraft versions >1.19
+    # try prismlauncher or atlauncher instead"
+    broken = true;
   };
 
   passthru = {
diff --git a/pkgs/games/minetest/default.nix b/pkgs/games/minetest/default.nix
index fcea007ff5988..ff6a59e08ad72 100644
--- a/pkgs/games/minetest/default.nix
+++ b/pkgs/games/minetest/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, gitUpdater
 , cmake
 , irrlichtmt
 , coreutils
@@ -128,6 +129,10 @@ stdenv.mkDerivation (finalAttrs: {
     mv $out/minetest.app $out/Applications
   '';
 
+  passthru.updateScript = gitUpdater {
+    ignoredVersions = "^[^.]+$|.*-android$";
+  };
+
   meta = with lib; {
     homepage = "https://minetest.net/";
     description = "Infinite-world block sandbox game";
diff --git a/pkgs/games/moon-buggy/default.nix b/pkgs/games/moon-buggy/default.nix
index e0235e70a92d9..6941beb248f1a 100644
--- a/pkgs/games/moon-buggy/default.nix
+++ b/pkgs/games/moon-buggy/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = {
-    description = "A simple character graphics game where you drive some kind of car across the moon's surface";
+    description = "Simple character graphics game where you drive some kind of car across the moon's surface";
     mainProgram = "moon-buggy";
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.rybern ];
diff --git a/pkgs/games/naev/default.nix b/pkgs/games/naev/default.nix
index 962497bb73c0b..9f7f667ea39da 100644
--- a/pkgs/games/naev/default.nix
+++ b/pkgs/games/naev/default.nix
@@ -26,13 +26,13 @@
 
 stdenv.mkDerivation rec {
   pname = "naev";
-  version = "0.11.4";
+  version = "0.11.5";
 
   src = fetchFromGitHub {
     owner = "naev";
     repo = "naev";
     rev = "v${version}";
-    sha256 = "sha256-Cyun9BxIcv5V3HbMuFEhbYZnAuneTUwztc+ZlNaTp70=";
+    sha256 = "sha256-vdPkACgLGSTb9E/HZR5KoXn/fro0iHV7hX9kJim1j/M=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/games/nanosaur/default.nix b/pkgs/games/nanosaur/default.nix
index 897847b0f11cf..99f609ffd509e 100644
--- a/pkgs/games/nanosaur/default.nix
+++ b/pkgs/games/nanosaur/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
   passthru.updateScript = unstableGitUpdater { };
 
   meta = with lib; {
-    description = "A port of Nanosaur, a 1998 Macintosh game by Pangea Software, for modern operating systems";
+    description = "Port of Nanosaur, a 1998 Macintosh game by Pangea Software, for modern operating systems";
     longDescription = ''
       Nanosaur is a 1998 Macintosh game by Pangea Software.
       In it, you’re a cybernetic dinosaur from the future who’s sent back in time 20 minutes before a giant asteroid hits the Earth.
diff --git a/pkgs/games/nanosaur2/default.nix b/pkgs/games/nanosaur2/default.nix
index 92cf781da7d38..3e370d7809a97 100644
--- a/pkgs/games/nanosaur2/default.nix
+++ b/pkgs/games/nanosaur2/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
   passthru.updateScript = unstableGitUpdater { };
 
   meta = with lib; {
-    description = "A port of Nanosaur2, a 2004 Macintosh game by Pangea Software, for modern operating systems";
+    description = "Port of Nanosaur2, a 2004 Macintosh game by Pangea Software, for modern operating systems";
     longDescription = ''
       Nanosaur is a 2004 Macintosh game by Pangea Software.
 
diff --git a/pkgs/games/netris/default.nix b/pkgs/games/netris/default.nix
index 620f21f02902e..e161f2ea25b88 100644
--- a/pkgs/games/netris/default.nix
+++ b/pkgs/games/netris/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A free networked version of T*tris";
+    description = "Free networked version of T*tris";
     mainProgram = "netris";
     license = licenses.gpl2;
     maintainers = with maintainers; [ patryk27 ];
diff --git a/pkgs/games/newtonwars/default.nix b/pkgs/games/newtonwars/default.nix
index 66fb694e85632..c9ed0ca0dbc5d 100644
--- a/pkgs/games/newtonwars/default.nix
+++ b/pkgs/games/newtonwars/default.nix
@@ -39,7 +39,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A space battle game with gravity as the main theme";
+    description = "Space battle game with gravity as the main theme";
     mainProgram = "nw";
     maintainers = with maintainers; [ pSub ];
     platforms = platforms.linux;
diff --git a/pkgs/games/nexuiz/default.nix b/pkgs/games/nexuiz/default.nix
index 5bcd84ee38011..e8af5d43e2dea 100644
--- a/pkgs/games/nexuiz/default.nix
+++ b/pkgs/games/nexuiz/default.nix
@@ -85,7 +85,7 @@ in stdenv.mkDerivation {
   ];
 
   meta = {
-    description = "A free fast-paced first-person shooter";
+    description = "Free fast-paced first-person shooter";
     homepage = "http://www.alientrap.org/games/nexuiz";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
diff --git a/pkgs/games/nile/default.nix b/pkgs/games/nile/default.nix
index b83eda87f934d..f52c1ecb1f1fa 100644
--- a/pkgs/games/nile/default.nix
+++ b/pkgs/games/nile/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonApplication rec {
   pname = "nile";
-  version = "unstable-2024-03-09";
+  version = "1.0.3-unstable-2024-06-08";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "imLinguin";
     repo = "nile";
-    rev = "ae09acfc20fe4e462762666871f78caae70f6c74";
-    hash = "sha256-hqhIacsbultY3CvvkYAZHmhCkQLi1mkPQwkztaUOd10=";
+    rev = "fcf57a69d6f322e389a8c21b77215a488fa81132";
+    hash = "sha256-zRuWJ0ziKxxOpGyR2IB8LncIFveIyz5PWYXhEHhQEM8=";
   };
 
   disabled = pythonOlder "3.8";
@@ -56,5 +56,7 @@ buildPythonApplication rec {
     maintainers = with maintainers; [ aidalgol ];
   };
 
-  passthru.updateScript = unstableGitUpdater { };
+  passthru.updateScript = unstableGitUpdater {
+    tagPrefix = "v";
+  };
 }
diff --git a/pkgs/games/npush/default.nix b/pkgs/games/npush/default.nix
index 9fc465da38a81..7a061a4bc638e 100644
--- a/pkgs/games/npush/default.nix
+++ b/pkgs/games/npush/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     homepage = "https://npush.sourceforge.net/";
-    description = "A Sokoban-like game";
+    description = "Sokoban-like game";
     mainProgram = "npush";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ AndersonTorres ];
diff --git a/pkgs/games/nudoku/default.nix b/pkgs/games/nudoku/default.nix
index 11e6fc0d8f289..cb09c466c8d56 100644
--- a/pkgs/games/nudoku/default.nix
+++ b/pkgs/games/nudoku/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   configureFlags = lib.optional stdenv.hostPlatform.isMusl "--disable-nls";
 
   meta = with lib; {
-    description = "An ncurses based sudoku game";
+    description = "Ncurses based sudoku game";
     mainProgram = "nudoku";
     homepage = "http://jubalh.github.io/nudoku/";
     license = licenses.gpl3;
diff --git a/pkgs/games/nxengine-evo/default.nix b/pkgs/games/nxengine-evo/default.nix
deleted file mode 100644
index ca57d11910aa6..0000000000000
--- a/pkgs/games/nxengine-evo/default.nix
+++ /dev/null
@@ -1,68 +0,0 @@
-{ lib, stdenv
-, fetchpatch
-, fetchurl
-, fetchFromGitHub
-, cmake
-, libpng
-, SDL2
-, SDL2_mixer
-}:
-
-stdenv.mkDerivation rec {
-  pname = "nxengine-evo";
-  version = "2.6.4";
-  src = fetchFromGitHub {
-    owner = "nxengine";
-    repo = "nxengine-evo";
-    rev = "v${version}";
-    sha256 = "sha256-krK2b1E5JUMxRoEWmb3HZMNSIHfUUGXSpyb4/Zdp+5A=";
-  };
-  assets = fetchurl {
-    url = "https://github.com/nxengine/nxengine-evo/releases/download/v${version}/NXEngine-v${version}-Linux.tar.xz";
-    sha256 = "1b5hkmsrrhnjjf825ri6n62kb3fldwl7v5f1cqvqyv47zv15g5gy";
-  };
-
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/nxengine/nxengine-evo/commit/1890127ec4b4b5f8d6cb0fb30a41868e95659840.patch";
-      sha256 = "18j22vzkikcwqd42vlhzd6rjp26dq0zslxw5yyl07flivms0hny2";
-    })
-    (fetchpatch {
-      url = "https://github.com/nxengine/nxengine-evo/commit/75b8b8e3b067fd354baa903332f2a3254d1cc017.patch";
-      sha256 = "0sjr7z63gp7nfxifxisvp2w664mxxk3xi4a3d86mm0470dj5m5bx";
-    })
-  ];
-
-  nativeBuildInputs = [ cmake ];
-
-  buildInputs = [
-    libpng
-    SDL2
-    SDL2_mixer
-  ];
-
-  # Allow finding game assets.
-  postPatch = ''
-    sed -i -e "s,/usr/share/,$out/share/," src/ResourceManager.cpp
-  '';
-
-  installPhase = ''
-    cd ..
-    unpackFile ${assets}
-    mkdir -p $out/bin/ $out/share/nxengine/
-    install bin/* $out/bin/
-    cp -r NXEngine-evo-${version}-Linux/data/ $out/share/nxengine/data
-    chmod -R a=r,a+X $out/share/nxengine/data
-  '';
-
-  meta = {
-    description = "A complete open-source clone/rewrite of the masterpiece jump-and-run platformer Doukutsu Monogatari (also known as Cave Story)";
-    license = with lib.licenses; [
-      gpl3                   # Game engine
-      unfreeRedistributable  # Game assets, freeware
-    ];
-    maintainers = [ ];
-    homepage = "https://github.com/nxengine/nxengine-evo";
-    platforms = lib.platforms.linux;
-  };
-}
diff --git a/pkgs/games/oh-my-git/default.nix b/pkgs/games/oh-my-git/default.nix
index 9fe0fb9ac4205..5674e2a0a94d8 100644
--- a/pkgs/games/oh-my-git/default.nix
+++ b/pkgs/games/oh-my-git/default.nix
@@ -126,7 +126,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://ohmygit.org/";
-    description = "An interactive Git learning game";
+    description = "Interactive Git learning game";
     mainProgram = "oh-my-git";
     license = with licenses; [ blueOak100 ];
     platforms   = [ "x86_64-linux" ];
diff --git a/pkgs/games/oilrush/default.nix b/pkgs/games/oilrush/default.nix
index 947b7141b5723..5715c5e029b9e 100644
--- a/pkgs/games/oilrush/default.nix
+++ b/pkgs/games/oilrush/default.nix
@@ -61,7 +61,7 @@ stdenv.mkDerivation {
     chmod +x "$out/bin/oilrush"
   '';
   meta = {
-    description = "A naval strategy game";
+    description = "Naval strategy game";
     longDescription = ''
       Oil Rush is a real-time naval strategy game based on group control. It
       combines the strategic challenge of a classical RTS with the sheer fun
diff --git a/pkgs/games/onscripter-en/default.nix b/pkgs/games/onscripter-en/default.nix
deleted file mode 100644
index edc9e20235ffe..0000000000000
--- a/pkgs/games/onscripter-en/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib, stdenv, fetchurl
-, libpng, libjpeg, libogg, libvorbis, freetype, smpeg
-, SDL, SDL_image, SDL_mixer, SDL_ttf }:
-
-
-stdenv.mkDerivation {
-  pname = "onscripter-en";
-  version = "20111009";
-
-  src = fetchurl {
-    # The website is not available now.
-    url = "https://www.dropbox.com/s/ag21owy9poyr2oy/onscripter-en-20111009-src.tar.bz2";
-    sha256 = "sha256-pir3ExhehJ9zNygDN83S4GOs5ugDNMjngxEwklAz9c8=";
-  };
-
-  buildInputs = [ libpng libjpeg libogg libvorbis freetype smpeg
-                  SDL SDL_image SDL_mixer SDL_ttf
-                ];
-
-  configureFlags = [ "--no-werror" ];
-
-  # Without this libvorbisfile.so is not getting linked properly for some reason.
-  NIX_CFLAGS_LINK = "-lvorbisfile";
-
-  preBuild = ''
-    sed -i 's/.dll//g' Makefile
-  '';
-
-  meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "Japanese visual novel scripting engine";
-    mainProgram = "onscripter-en";
-    homepage = "http://unclemion.com/onscripter/";
-    license = licenses.gpl2;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ abbradar ];
-  };
-}
diff --git a/pkgs/games/openarena/default.nix b/pkgs/games/openarena/default.nix
index 7ae0111cfe4b8..25b4954cb4261 100644
--- a/pkgs/games/openarena/default.nix
+++ b/pkgs/games/openarena/default.nix
@@ -103,7 +103,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   meta = {
-    description = "A fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena";
+    description = "Fast-paced 3D first-person shooter, similar to id Software Inc.'s Quake III Arena";
     homepage = "http://openarena.ws/";
     license = lib.licenses.gpl2Plus;
     mainProgram = "openarena";
diff --git a/pkgs/games/openclonk/default.nix b/pkgs/games/openclonk/default.nix
index 2249ab213a220..47c4cc6e4612a 100644
--- a/pkgs/games/openclonk/default.nix
+++ b/pkgs/games/openclonk/default.nix
@@ -1,5 +1,6 @@
-{ lib, stdenv, fetchurl, fetchDebianPatch, fetchpatch, cmake, pkg-config
-, SDL2, libvorbis, libogg, libjpeg, libpng, freetype, glew, tinyxml, openal
+{ lib, stdenv, fetchurl, fetchFromGitHub, fetchDebianPatch, cmake, pkg-config
+, SDL2, libvorbis, libogg, libjpeg, libpng, freetype, glew, tinyxml, openal, libepoxy
+, curl
 , freealut, readline, libb2, gcc-unwrapped
 , enableSoundtrack ? false # Enable the "Open Clonk Soundtrack - Explorers Journey" by David Oerther
 }:
@@ -10,12 +11,14 @@ let
     sha256 = "1ckj0dlpp5zsnkbb5qxxfxpkiq76jj2fgj91fyf3ll7n0gbwcgw5";
   };
 in stdenv.mkDerivation rec {
-  version = "8.1";
+  version = "unstable-2023-10-30";
   pname = "openclonk";
 
-  src = fetchurl {
-    url = "https://www.openclonk.org/builds/release/8.1/openclonk-${version}-src.tar.bz2";
-    sha256 = "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik";
+  src = fetchFromGitHub {
+    owner = "openclonk";
+    repo = "openclonk";
+    rev = "5275334a11ef7c23ce809f35d6b443abd91b415f";
+    sha256 = "14x5b2rh739156l4072rbsnv9n862jz1zafi6ng158ja5fwl16l2";
   };
 
   patches = [
@@ -26,15 +29,11 @@ in stdenv.mkDerivation rec {
       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=";
-    })
   ];
 
+  enableParallelInstalling = false;
+
   postInstall = ''
-    mv -v $out/games/openclonk $out/bin/
   '' + lib.optionalString enableSoundtrack ''
     ln -sv ${soundtrack_src} $out/share/games/openclonk/Music.ocg
   '';
@@ -43,6 +42,7 @@ in stdenv.mkDerivation rec {
 
   buildInputs = [
     SDL2 libvorbis libogg libjpeg libpng freetype glew tinyxml openal freealut
+    libepoxy curl
     readline libb2
   ];
 
@@ -55,7 +55,7 @@ in stdenv.mkDerivation rec {
     homepage = "https://www.openclonk.org";
     license = if enableSoundtrack then licenses.unfreeRedistributable else licenses.isc;
     mainProgram = "openclonk";
-    maintainers = with maintainers; [ lheckemann ];
+    maintainers = with maintainers; [ ];
     platforms = [ "x86_64-linux" "i686-linux" ];
   };
 }
diff --git a/pkgs/games/opendungeons/default.nix b/pkgs/games/opendungeons/default.nix
index 8755a07169bf2..3562aa8c6f89d 100644
--- a/pkgs/games/opendungeons/default.nix
+++ b/pkgs/games/opendungeons/default.nix
@@ -63,7 +63,7 @@ stdenv.mkDerivation {
   ];
 
   meta = with lib; {
-    description = "An open source, real time strategy game sharing game elements with the Dungeon Keeper series and Evil Genius";
+    description = "Open source, real time strategy game sharing game elements with the Dungeon Keeper series and Evil Genius";
     mainProgram = "opendungeons";
     homepage = "https://opendungeons.github.io";
     license = with licenses; [ gpl3Plus zlib mit cc-by-sa-30 cc0 ofl cc-by-30 ];
diff --git a/pkgs/games/openjk/default.nix b/pkgs/games/openjk/default.nix
index b8e80b845c1cd..58cbb1e212736 100644
--- a/pkgs/games/openjk/default.nix
+++ b/pkgs/games/openjk/default.nix
@@ -84,7 +84,7 @@ in stdenv.mkDerivation {
   passthru.updateScript = unstableGitUpdater { };
 
   meta = with lib; {
-    description = "An open-source engine for Star Wars Jedi Academy game";
+    description = "Open-source engine for Star Wars Jedi Academy game";
     homepage = "https://github.com/JACoders/OpenJK";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/games/openlierox/default.nix b/pkgs/games/openlierox/default.nix
index 2543d71f0a88f..f1fa65c403de1 100644
--- a/pkgs/games/openlierox/default.nix
+++ b/pkgs/games/openlierox/default.nix
@@ -1,42 +1,79 @@
-{ lib, stdenv, fetchurl, libX11, xorgproto, gd, SDL, SDL_image, SDL_mixer, zlib
-, libxml2, pkg-config, curl, cmake, libzip }:
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  pkg-config,
+  curl,
+  gd,
+  libX11,
+  libxml2,
+  libzip,
+  SDL,
+  SDL_image,
+  SDL_mixer,
+  zlib,
+}:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "openlierox";
-  version = "0.58rc3";
+  version = "0.58_rc5";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/openlierox/OpenLieroX_0.58_rc3.src.tar.bz2";
-    sha256 = "1k35xppfqi3qfysv81xq3hj4qdy9j2ciinbkfdcmwclcsf3nh94z";
+  src = fetchFromGitHub {
+    owner = "albertz";
+    repo = "openlierox";
+    rev = finalAttrs.version;
+    hash = "sha256-4ofjroEHlfrQitc7M+YTNWut0LGgntgQoOeBWU8nscY=";
   };
 
-  env.NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2 -std=c++98 -Wno-error";
+  postPatch = ''
+    sed 1i'#include <cstdint>' -i src/common/s*x.cpp
+    sed 1i'#include <libxml/parser.h>' -i include/XMLutils.h
+    substituteInPlace src/common/StringUtils.cpp \
+        --replace-fail "xmlErrorPtr" "const xmlError*"
+  '';
 
-  # The breakpad fails to build on x86_64, and it's only to report bugs upstream
-  cmakeFlags = [ "-DBREAKPAD=0" ];
+  strictDeps = true;
 
-  preConfigure = ''
-    cmakeFlags="$cmakeFlags -DSYSTEM_DATA_DIR=$out/share"
-  '';
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    SDL
+  ];
 
-  patchPhase = ''
-    sed -i s,curl/types.h,curl/curl.h, include/HTTP.h src/common/HTTP.cpp
-  '';
+  buildInputs = [
+    curl
+    gd
+    libX11
+    libxml2
+    libzip
+    SDL
+    SDL_image
+    SDL_mixer
+    zlib
+  ];
+
+  cmakeFlags = [ "-DSYSTEM_DATA_DIR=${placeholder "out"}/share" ];
+
+  env.NIX_CFLAGS_COMPILE = "-I${lib.getDev libxml2}/include/libxml2";
 
   installPhase = ''
-    mkdir -p $out/bin $out/share/OpenLieroX
-    cp bin/* $out/bin
-    cp -R ../share/gamedir/* $out/share/OpenLieroX
-  '';
+    runHook preInstall
 
-  nativeBuildInputs = [ cmake pkg-config curl ];
-  buildInputs = [ libX11 xorgproto gd SDL SDL_image SDL_mixer zlib libxml2
-    libzip ];
+    install -Dm755 bin/* -t $out/bin
+
+    mkdir -p $out/share/OpenLieroX
+    cp -r ../share/gamedir/* $out/share/OpenLieroX
+
+    runHook postInstall
+  '';
 
   meta = {
-    homepage = "http://openlierox.net";
     description = "Real-time game with Worms-like shooting";
+    homepage = "http://openlierox.net";
     license = lib.licenses.lgpl2Plus;
+    mainProgram = "openlierox";
+    maintainers = with lib.maintainers; [ tomasajt ];
     platforms = lib.platforms.linux;
   };
-}
+})
diff --git a/pkgs/games/openloco/default.nix b/pkgs/games/openloco/default.nix
index ef4e12631f512..caa286c7ef62c 100644
--- a/pkgs/games/openloco/default.nix
+++ b/pkgs/games/openloco/default.nix
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    description = "An open source re-implementation of Chris Sawyer's Locomotion";
+    description = "Open source re-implementation of Chris Sawyer's Locomotion";
     homepage = "https://github.com/OpenLoco/OpenLoco";
     license = lib.licenses.mit;
     platforms = lib.platforms.linux;
diff --git a/pkgs/games/openmw/default.nix b/pkgs/games/openmw/default.nix
index 99c58df372443..edeed841c923a 100644
--- a/pkgs/games/openmw/default.nix
+++ b/pkgs/games/openmw/default.nix
@@ -104,7 +104,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "An unofficial open source engine reimplementation of the game Morrowind";
+    description = "Unofficial open source engine reimplementation of the game Morrowind";
     homepage = "https://openmw.org";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ abbradar marius851000 ];
diff --git a/pkgs/games/openrct2/default.nix b/pkgs/games/openrct2/default.nix
index 485b7104b20af..4a8a1c255e894 100644
--- a/pkgs/games/openrct2/default.nix
+++ b/pkgs/games/openrct2/default.nix
@@ -30,27 +30,27 @@
 }:
 
 let
-  openrct2-version = "0.4.8";
+  openrct2-version = "0.4.11";
 
   # Those versions MUST match the pinned versions within the CMakeLists.txt
   # file. The REPLAYS repository from the CMakeLists.txt is not necessary.
-  objects-version = "1.3.13";
+  objects-version = "1.4.4";
   openmsx-version = "1.5";
-  opensfx-version = "1.0.3";
+  opensfx-version = "1.0.5";
   title-sequences-version = "0.4.6";
 
   openrct2-src = fetchFromGitHub {
     owner = "OpenRCT2";
     repo = "OpenRCT2";
     rev = "v${openrct2-version}";
-    hash = "sha256-jSKAgohNMHuyOu4gUHyyZf1I7UrsXGDV5XwwK1DQPyM=";
+    hash = "sha256-zaaVieU/hulc2G/F19diJug3xuj3ejn5ihnmKfkBDcQ=";
   };
 
   objects-src = fetchFromGitHub {
     owner = "OpenRCT2";
     repo = "objects";
     rev = "v${objects-version}";
-    hash = "sha256-7RvRe7skXH5x8RbkQgtKs1YMBwq8dHInVo/4FAJwUD0=";
+    hash = "sha256-wKxWp/DSKkxCEI0lp4X8F9LxQsUKZfLk2CgajQ+y84k=";
   };
 
   openmsx-src = fetchFromGitHub {
@@ -64,7 +64,7 @@ let
     owner = "OpenRCT2";
     repo = "OpenSoundEffects";
     rev = "v${opensfx-version}";
-    hash = "sha256-AMuCpq1Hszi2Vikto/cX9g81LwBDskaRMTLxNzU0/Gk=";
+    hash = "sha256-ucADnMLGm36eAo+NiioxEzeMqtu7YbGF9wsydK1mmoE=";
   };
 
   title-sequences-src = fetchFromGitHub {
diff --git a/pkgs/games/openspades/default.nix b/pkgs/games/openspades/default.nix
index 0f9060d235d78..ebab9a018fbfa 100644
--- a/pkgs/games/openspades/default.nix
+++ b/pkgs/games/openspades/default.nix
@@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
   NIX_CFLAGS_LINK = "-lopenal";
 
   meta = with lib; {
-    description = "A compatible client of Ace of Spades 0.75";
+    description = "Compatible client of Ace of Spades 0.75";
     mainProgram = "openspades";
     homepage    = "https://github.com/yvt/openspades/";
     license     = licenses.gpl3;
diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix
index 69a2c75fa4637..268cead62dc47 100644
--- a/pkgs/games/openttd/default.nix
+++ b/pkgs/games/openttd/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, fetchzip, cmake, pkg-config
+{ lib, stdenv, fetchzip, cmake, pkg-config
 , SDL2, libpng, zlib, xz, freetype, fontconfig
 , nlohmann_json, curl, icu, harfbuzz, expat, glib, pcre2
 , withOpenGFX ? true, withOpenSFX ? true, withOpenMSX ? true
@@ -32,11 +32,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "openttd";
-  version = "13.4";
+  version = "14.1";
 
-  src = fetchurl {
+  src = fetchzip {
     url = "https://cdn.openttd.org/openttd-releases/${version}/${pname}-${version}-source.tar.xz";
-    hash = "sha256-Kh3roBv+WOIYiHn0UMP6TzgZJxq0m/NI3WZUXwQNFG8=";
+    hash = "sha256-YT4IE/rJ9pnpeMWKbOra6AbSUwW19RwOKlXkxwoMeKY=";
   };
 
   nativeBuildInputs = [ cmake pkg-config makeWrapper ];
diff --git a/pkgs/games/openttd/jgrpp.nix b/pkgs/games/openttd/jgrpp.nix
index d26c62dd8906b..98681bfd60ec3 100644
--- a/pkgs/games/openttd/jgrpp.nix
+++ b/pkgs/games/openttd/jgrpp.nix
@@ -2,13 +2,13 @@
 
 openttd.overrideAttrs (oldAttrs: rec {
   pname = "openttd-jgrpp";
-  version = "0.58.2";
+  version = "0.59.1";
 
   src = fetchFromGitHub rec {
     owner = "JGRennison";
     repo = "OpenTTD-patches";
     rev = "jgrpp-${version}";
-    hash = "sha256-XwKCqfYgrqQpo/2L+vHCde/z2QV88BFL+WQqvsEYdhE=";
+    hash = "sha256-8I3NSg7iRzdY+k8g2m1Z/QWwlT3BErV1RL7cirlO71g=";
   };
 
   buildInputs = oldAttrs.buildInputs ++ [ zstd ];
diff --git a/pkgs/games/osu-lazer/bin.nix b/pkgs/games/osu-lazer/bin.nix
index 945fe4ac91b3f..ee8a20a865623 100644
--- a/pkgs/games/osu-lazer/bin.nix
+++ b/pkgs/games/osu-lazer/bin.nix
@@ -7,22 +7,22 @@
 
 let
   pname = "osu-lazer-bin";
-  version = "2024.412.1";
+  version = "2024.521.2";
 
   src = {
     aarch64-darwin = fetchzip {
       url = "https://github.com/ppy/osu/releases/download/${version}/osu.app.Apple.Silicon.zip";
-      hash = "sha256-iV9m6w2bs2123uUmH1lgc+sZFG0NtvEIaQmADkaF/x8=";
+      hash = "sha256-YaCET5njEkjWEON3hDUwQ1vg7//7fiJ+5bDRKPRR6M0=";
       stripRoot = false;
     };
     x86_64-darwin = fetchzip {
       url = "https://github.com/ppy/osu/releases/download/${version}/osu.app.Intel.zip";
-      hash = "sha256-yuVoNApIp9g+Un2LHdDsvVo+BCflPT4rMPtOf1vltZA=";
+      hash = "sha256-M7fPOEcdOsPnrbyyh4JAiQnoffDK5Ba6lejtHwcqifM=";
       stripRoot = false;
     };
     x86_64-linux = fetchurl {
       url = "https://github.com/ppy/osu/releases/download/${version}/osu.AppImage";
-      hash = "sha256-9mMP8+Ee8lZcaIkZfcaDmgDqe/rFvEGc01oGwFpnhOY=";
+      hash = "sha256-QVDgY04PmGJ/eOfes/qBAbBKsk9uOaqLjwZSQH+F9ro=";
     };
   }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported.");
 
diff --git a/pkgs/games/osu-lazer/default.nix b/pkgs/games/osu-lazer/default.nix
index 43a7a9b3233e1..67454d30a6e77 100644
--- a/pkgs/games/osu-lazer/default.nix
+++ b/pkgs/games/osu-lazer/default.nix
@@ -17,13 +17,13 @@
 
 buildDotnetModule rec {
   pname = "osu-lazer";
-  version = "2024.412.1";
+  version = "2024.521.2";
 
   src = fetchFromGitHub {
     owner = "ppy";
     repo = "osu";
     rev = version;
-    hash = "sha256-lpBQGNN91mV9Uy9NpyFYh3vsoMW1ZaiYA5wkoS6bgig=";
+    hash = "sha256-g/d+3389EDh2uDq+Zqvh87AioZ2s3IFBE4bhEy6NT1s=";
   };
 
   projectFile = "osu.Desktop/osu.Desktop.csproj";
@@ -74,11 +74,13 @@ buildDotnetModule rec {
     name = "osu";
     exec = "osu!";
     icon = "osu!";
-    comment = meta.description;
+    comment = "Rhythm is just a *click* away (no score submission or multiplayer, see osu-lazer-bin)";
     type = "Application";
     categories = [ "Game" ];
   })];
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     description = "Rhythm is just a *click* away (no score submission or multiplayer, see osu-lazer-bin)";
     homepage = "https://osu.ppy.sh";
@@ -91,5 +93,4 @@ buildDotnetModule rec {
     platforms = [ "x86_64-linux" ];
     mainProgram = "osu!";
   };
-  passthru.updateScript = ./update.sh;
 }
diff --git a/pkgs/games/osu-lazer/deps.nix b/pkgs/games/osu-lazer/deps.nix
index f06dc41d286ba..8e7a5c6d2eb73 100644
--- a/pkgs/games/osu-lazer/deps.nix
+++ b/pkgs/games/osu-lazer/deps.nix
@@ -131,8 +131,8 @@
   (fetchNuGet { pname = "OpenTabletDriver.Native"; version = "0.6.4"; sha256 = "1jsw2kwxxskwppk65i52yrxjjgbfbhicpmz30iaxlm68d5m6gwz2"; })
   (fetchNuGet { pname = "OpenTabletDriver.Plugin"; version = "0.6.4"; sha256 = "0lbd80yddsy7wqjw014kvj9an49h2rbgd9s86ifq38dyin5r2czn"; })
   (fetchNuGet { pname = "PolySharp"; version = "1.10.0"; sha256 = "06qici3hhk6a0jmy0nyvspcnmhbapnic6iin3i28pkdvrii02hnz"; })
-  (fetchNuGet { pname = "ppy.LocalisationAnalyser"; version = "2023.1117.0"; sha256 = "04q65q27nzjq0fmv8p62r5lmhzdbpfk6y65fxqmfmm7qz2wkiy27"; })
-  (fetchNuGet { pname = "ppy.LocalisationAnalyser.Tools"; version = "2023.1117.0"; sha256 = "1yr0r628x5aaa1vqxpkr9ys1xnf4qnz6ypggms6v4a336gjz2734"; })
+  (fetchNuGet { pname = "ppy.LocalisationAnalyser"; version = "2024.517.0"; sha256 = "06lhlsadcxd95cszqhy9sswcrifywzblnrra5myvj8ylq0h00l85"; })
+  (fetchNuGet { pname = "ppy.LocalisationAnalyser.Tools"; version = "2024.517.0"; sha256 = "1d5y75l3ni4p4f19lv2q1wly7fsp5wcnj4r7kl1akav2h7z195q0"; })
   (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"; })
@@ -140,7 +140,7 @@
   (fetchNuGet { pname = "ppy.osu.Framework"; version = "2024.329.0"; sha256 = "1hpcgga80sliip6r1a7ps1bb2cwqfrg34sj2y473ijxbhk74swhr"; })
   (fetchNuGet { pname = "ppy.osu.Framework.NativeLibs"; version = "2024.326.0-nativelibs"; sha256 = "14vx8gz249nr9zx0qqcd4lrz8nxddclki3mjf0xvc1pfkz7xnqdj"; })
   (fetchNuGet { pname = "ppy.osu.Framework.SourceGeneration"; version = "2023.720.0"; sha256 = "001vvxyv483ibid25fdknvij77x0y983mp4psx2lbg3x2al7yxax"; })
-  (fetchNuGet { pname = "ppy.osu.Game.Resources"; version = "2024.410.0"; sha256 = "0s43adha41fg56xdn4skridljhpi7mcwp6nqka7im772fj942rv4"; })
+  (fetchNuGet { pname = "ppy.osu.Game.Resources"; version = "2024.517.0"; sha256 = "18jsxlp73ij4snns4dm95a31lynzvfrknk4nhhzldw8h3kfgb0ky"; })
   (fetchNuGet { pname = "ppy.osuTK.NS20"; version = "1.0.211"; sha256 = "0j4a9n39pqm0cgdcps47p5n2mqph3h94r7hmf0bs59imif4jxvjy"; })
   (fetchNuGet { pname = "ppy.SDL2-CS"; version = "1.0.741-alpha"; sha256 = "158h05lbw6m5anv8glsaylbrc4mbxm8m314cicrga815hcrgxmdi"; })
   (fetchNuGet { pname = "ppy.Veldrid"; version = "4.9.9-ga61b647961"; sha256 = "1avi372bff89xzb4awbv96q479xknlxhwxnl0i2aylv7gz11yjad"; })
diff --git a/pkgs/games/otto-matic/default.nix b/pkgs/games/otto-matic/default.nix
index 6d0633febbd2f..fbdbb3366b10e 100644
--- a/pkgs/games/otto-matic/default.nix
+++ b/pkgs/games/otto-matic/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A port of Otto Matic, a 2001 Macintosh game by Pangea Software, for modern operating systems";
+    description = "Port of Otto Matic, a 2001 Macintosh game by Pangea Software, for modern operating systems";
     homepage = "https://github.com/jorio/OttoMatic";
     license = licenses.cc-by-sa-40;
     maintainers = with maintainers; [ lux ];
diff --git a/pkgs/games/pacvim/default.nix b/pkgs/games/pacvim/default.nix
index 1335f46d342c0..8a24cb99ab219 100644
--- a/pkgs/games/pacvim/default.nix
+++ b/pkgs/games/pacvim/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     homepage = "https://github.com/jmoon018/PacVim";
-    description = "A game that teaches you vim commands";
+    description = "Game that teaches you vim commands";
     mainProgram = "pacvim";
     maintainers = [ ];
     license = licenses.lgpl3;
diff --git a/pkgs/games/papermc/update.py b/pkgs/games/papermc/update.py
index 6e2d0ec9274e6..2eb4e7c2790e1 100755
--- a/pkgs/games/papermc/update.py
+++ b/pkgs/games/papermc/update.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env nix-shell
 #! nix-shell -i python -p "python3.withPackages (ps: with ps; [ps.requests ])"
 
+import os
 import hashlib
 import base64
 import json
@@ -95,7 +96,13 @@ class VersionManager:
             indent=4
         )
 
-    def write_versions(self, file_name: str):
+    def find_version_json() -> str:
+        """
+        Find the versions.json file in the same directory as this script
+        """
+        return os.path.join(os.path.dirname(os.path.realpath(__file__)), "versions.json")
+
+    def write_versions(self, file_name: str = find_version_json()):
         """ write all processed versions to json """
         # save json to versions.json
         with open(file_name, 'w') as f:
@@ -142,4 +149,4 @@ if __name__ == '__main__':
     version_manager.fetch_versions()
     version_manager.fetch_latest_version_builds()
     version_manager.generate_version_hashes()
-    version_manager.write_versions(file_name="versions.json")
+    version_manager.write_versions()
diff --git a/pkgs/games/papermc/versions.json b/pkgs/games/papermc/versions.json
index 0fa4bad8ba04b..67fb3903da117 100644
--- a/pkgs/games/papermc/versions.json
+++ b/pkgs/games/papermc/versions.json
@@ -44,7 +44,19 @@
         "version": "1.20.2-318"
     },
     "1.20.4": {
-        "hash": "sha256-NrIsYLoAAWORw/S26NDFjYBVwpNITJxuWGZow3696wM=",
-        "version": "1.20.4-435"
+        "hash": "sha256-eCCeEIGCuJPO1l2qH8WTtF0xFZAPBJjT6BUqfXPTg5I=",
+        "version": "1.20.4-497"
+    },
+    "1.20.5": {
+        "hash": "sha256-PNfaL435LggqUBo5xnSqs8A0Pt0Xm4b1usyuv8mXQTI=",
+        "version": "1.20.5-22"
+    },
+    "1.20.6": {
+        "hash": "sha256-JMWN40FTFg87RmxwyUr87Js9KyCmaBhj6Dnfe3vblZQ=",
+        "version": "1.20.6-147"
+    },
+    "1.21": {
+        "hash": "sha256-LaQyYAlZ2GQKzT3GlOKr1RUhu0XQpILuqPcDHdczqcU=",
+        "version": "1.21-15"
     }
 }
diff --git a/pkgs/games/path-of-building/default.nix b/pkgs/games/path-of-building/default.nix
index 1e2a2811769a1..b3f5549c487c8 100644
--- a/pkgs/games/path-of-building/default.nix
+++ b/pkgs/games/path-of-building/default.nix
@@ -1,6 +1,21 @@
-{ stdenv, lib, fetchFromGitHub, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }:
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  unzip,
+  meson,
+  ninja,
+  pkg-config,
+  qtbase,
+  qttools,
+  wrapQtAppsHook,
+  icoutils,
+  copyDesktopItems,
+  makeDesktopItem,
+  luajit,
+}:
 let
-  data = stdenv.mkDerivation(finalAttrs: {
+  data = stdenv.mkDerivation (finalAttrs: {
     pname = "path-of-building-data";
     version = "2.42.0";
 
@@ -42,12 +57,35 @@ stdenv.mkDerivation {
     hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config qttools wrapQtAppsHook ];
-  buildInputs = [ qtbase luajit luajit.pkgs.lua-curl ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    qttools
+    wrapQtAppsHook
+    icoutils
+  ] ++ lib.optional stdenv.isLinux copyDesktopItems;
+
+  buildInputs = [
+    qtbase
+    luajit
+    luajit.pkgs.lua-curl
+  ];
 
   installPhase = ''
     runHook preInstall
     install -Dm555 pobfrontend $out/bin/pobfrontend
+
+    wrestool -x -t 14 ${data.src}/runtime/Path{space}of{space}Building.exe -o pathofbuilding.ico
+    icotool -x pathofbuilding.ico
+
+    for size in 16 32 48 256; do
+      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+      install -Dm 644 pathofbuilding*"$size"x"$size"*.png \
+        $out/share/icons/hicolor/"$size"x"$size"/apps/pathofbuilding.png
+    done
+    rm pathofbuilding.ico
+
     runHook postInstall
   '';
 
@@ -59,6 +97,27 @@ stdenv.mkDerivation {
     )
   '';
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = "path-of-building";
+      desktopName = "Path of Building";
+      comment = "Offline build planner for Path of Exile";
+      exec = "pobfrontend %U";
+      terminal = false;
+      type = "Application";
+      icon = "pathofbuilding";
+      categories = [ "Game" ];
+      keywords = [
+        "poe"
+        "pob"
+        "pobc"
+        "path"
+        "exile"
+      ];
+      mimeTypes = [ "x-scheme-handler/pob" ];
+    })
+  ];
+
   passthru.data = data;
 
   meta = {
@@ -67,6 +126,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.k900 ];
     mainProgram = "pobfrontend";
-    broken = stdenv.isDarwin;  # doesn't find uic6 for some reason
+    broken = stdenv.isDarwin; # doesn't find uic6 for some reason
   };
 }
diff --git a/pkgs/games/pegasus-frontend/default.nix b/pkgs/games/pegasus-frontend/default.nix
index a6459943a98ba..1b1a6d38294ca 100644
--- a/pkgs/games/pegasus-frontend/default.nix
+++ b/pkgs/games/pegasus-frontend/default.nix
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A cross platform, customizable graphical frontend for launching emulators and managing your game collection";
+    description = "Cross platform, customizable graphical frontend for launching emulators and managing your game collection";
     mainProgram = "pegasus-fe";
     homepage = "https://pegasus-frontend.org/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/games/pentobi/default.nix b/pkgs/games/pentobi/default.nix
index e0bd6909fb946..4974deca7e5ef 100644
--- a/pkgs/games/pentobi/default.nix
+++ b/pkgs/games/pentobi/default.nix
@@ -29,7 +29,7 @@ mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A computer opponent for the board game Blokus";
+    description = "Computer opponent for the board game Blokus";
     homepage = "https://pentobi.sourceforge.io";
     license = licenses.gpl3Plus;
     maintainers = [ ];
diff --git a/pkgs/games/pingus/default.nix b/pkgs/games/pingus/default.nix
index adf393de9ed5f..efee89fc0716f 100644
--- a/pkgs/games/pingus/default.nix
+++ b/pkgs/games/pingus/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "A puzzle game with mechanics similar to Lemmings";
+    description = "Puzzle game with mechanics similar to Lemmings";
     mainProgram = "pingus";
     platforms = lib.platforms.linux;
     maintainers = [lib.maintainers.raskin];
diff --git a/pkgs/games/pioneer/default.nix b/pkgs/games/pioneer/default.nix
index b7ac0b73b3b90..c5f1a31426315 100644
--- a/pkgs/games/pioneer/default.nix
+++ b/pkgs/games/pioneer/default.nix
@@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
   makeFlags = [ "all" "build-data" ];
 
   meta = with lib; {
-    description = "A space adventure game set in the Milky Way galaxy at the turn of the 31st century";
+    description = "Space adventure game set in the Milky Way galaxy at the turn of the 31st century";
     homepage = "https://pioneerspacesim.net";
     license = with licenses; [
         gpl3Only cc-by-sa-30
diff --git a/pkgs/games/planetaryannihilation/default.nix b/pkgs/games/planetaryannihilation/default.nix
index 73adffab475ae..e99f5541f2847 100644
--- a/pkgs/games/planetaryannihilation/default.nix
+++ b/pkgs/games/planetaryannihilation/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, config, fetchurl, patchelf, makeWrapper, gtk2, glib, udev, alsa-lib, atk
+{ lib, stdenv, patchelf, makeWrapper, gtk2, glib, udev, alsa-lib, atk
 , nspr, fontconfig, cairo, pango, nss, freetype, gnome2, gdk-pixbuf, curl, systemd, xorg, requireFile }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/games/pokete/default.nix b/pkgs/games/pokete/default.nix
index 3a4d9a3c2031e..beb262edee704 100644
--- a/pkgs/games/pokete/default.nix
+++ b/pkgs/games/pokete/default.nix
@@ -48,7 +48,7 @@ python3.pkgs.buildPythonApplication rec {
   };
 
   meta = with lib; {
-    description = "A terminal based Pokemon like game";
+    description = "Terminal based Pokemon like game";
     mainProgram = "pokete";
     homepage = "https://lxgr-linux.github.io/pokete";
     license = licenses.gpl3Only;
diff --git a/pkgs/games/powermanga/default.nix b/pkgs/games/powermanga/default.nix
index 0b0d27a0beadf..3c89266370cf0 100644
--- a/pkgs/games/powermanga/default.nix
+++ b/pkgs/games/powermanga/default.nix
@@ -43,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://linux.tlk.fr/games/Powermanga/";
     downloadPage = "https://linux.tlk.fr/games/Powermanga/download/";
-    description = "An arcade 2D shoot-em-up game";
+    description = "Arcade 2D shoot-em-up game";
     mainProgram = "powermanga";
     longDescription = ''
       Powermanga is an arcade 2D shoot-em-up game with 41 levels and more than
diff --git a/pkgs/games/principia/default.nix b/pkgs/games/principia/default.nix
index e97fc509c5b0a..0cf659e448e0e 100644
--- a/pkgs/games/principia/default.nix
+++ b/pkgs/games/principia/default.nix
@@ -3,7 +3,7 @@
 , fetchFromGitHub
 , cmake
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook3
 
 , curl
 , freetype
@@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: {
   nativeBuildInputs = [
     cmake
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
diff --git a/pkgs/games/prismlauncher/default.nix b/pkgs/games/prismlauncher/default.nix
index a2aabb72f0d7c..b9b585a4e5031 100644
--- a/pkgs/games/prismlauncher/default.nix
+++ b/pkgs/games/prismlauncher/default.nix
@@ -76,7 +76,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = {
     mainProgram = "prismlauncher";
     homepage = "https://prismlauncher.org/";
-    description = "A free, open source launcher for Minecraft";
+    description = "Free, open source launcher for Minecraft";
     longDescription = ''
       Allows you to have multiple, separate instances of Minecraft (each with
       their own mods, texture packs, saves, etc) and helps you manage them and
diff --git a/pkgs/games/prismlauncher/wrapper.nix b/pkgs/games/prismlauncher/wrapper.nix
index 3393ff45efdcb..f5b21d70844fc 100644
--- a/pkgs/games/prismlauncher/wrapper.nix
+++ b/pkgs/games/prismlauncher/wrapper.nix
@@ -21,7 +21,7 @@
 , jdk21
 , gamemode
 , flite
-, mesa-demos
+, glxinfo
 , pciutils
 , udev
 , vulkan-loader
@@ -113,7 +113,7 @@ symlinkJoin {
 
       runtimePrograms = [
         xorg.xrandr
-        mesa-demos # need glxinfo
+        glxinfo
         pciutils # need lspci
       ]
       ++ additionalPrograms;
diff --git a/pkgs/games/pro-office-calculator/default.nix b/pkgs/games/pro-office-calculator/default.nix
index d49bb69cec0cb..f345d4b5d5848 100644
--- a/pkgs/games/pro-office-calculator/default.nix
+++ b/pkgs/games/pro-office-calculator/default.nix
@@ -15,7 +15,7 @@ mkDerivation rec {
   nativeBuildInputs = [ cmake ];
 
   meta = with lib; {
-    description = "A completely normal office calculator";
+    description = "Completely normal office calculator";
     mainProgram = "procalc";
     homepage = "https://proofficecalculator.com/";
     maintainers = [ maintainers.pmiddend ];
diff --git a/pkgs/games/purpur/default.nix b/pkgs/games/purpur/default.nix
index 33ec936dc63d6..7246c689c9bf9 100644
--- a/pkgs/games/purpur/default.nix
+++ b/pkgs/games/purpur/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    description = "A drop-in replacement for Minecraft Paper servers";
+    description = "Drop-in replacement for Minecraft Paper servers";
     longDescription = ''
       Purpur is a drop-in replacement for Minecraft Paper servers designed for configurability, new fun and exciting
       gameplay features, and performance built on top of Airplane.
diff --git a/pkgs/games/qgo/default.nix b/pkgs/games/qgo/default.nix
index 6493dff2d3c11..98dbbb693ba8d 100644
--- a/pkgs/games/qgo/default.nix
+++ b/pkgs/games/qgo/default.nix
@@ -12,7 +12,7 @@ mkDerivation {
   version = "unstable-2017-12-18";
 
   meta = with lib; {
-    description = "A Go client based on Qt5";
+    description = "Go client based on Qt5";
     mainProgram = "qgo";
     longDescription = ''
       qGo is a Go Client based on Qt 5. It supports playing online at
diff --git a/pkgs/games/qtads/default.nix b/pkgs/games/qtads/default.nix
index aef921900ae77..2d5ae31814e02 100644
--- a/pkgs/games/qtads/default.nix
+++ b/pkgs/games/qtads/default.nix
@@ -1,4 +1,4 @@
-{ lib, mkDerivation, fetchFromGitHub, fetchpatch, pkg-config, qmake
+{ lib, mkDerivation, fetchFromGitHub, pkg-config, qmake
 , SDL2, fluidsynth, libsndfile, libvorbis, mpg123, qtbase
 }:
 
diff --git a/pkgs/games/quake3/ioquake/default.nix b/pkgs/games/quake3/ioquake/default.nix
index 437b99ae34391..6340ea8c82f95 100644
--- a/pkgs/games/quake3/ioquake/default.nix
+++ b/pkgs/games/quake3/ioquake/default.nix
@@ -81,7 +81,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "https://ioquake3.org/";
-    description = "A fast-paced 3D first-person shooter, a community effort to continue supporting/developing id's Quake III Arena";
+    description = "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 ];
diff --git a/pkgs/games/quake3/quake3e/default.nix b/pkgs/games/quake3/quake3e/default.nix
index de6a842cc1332..1ad03d494ab03 100644
--- a/pkgs/games/quake3/quake3e/default.nix
+++ b/pkgs/games/quake3/quake3e/default.nix
@@ -15,7 +15,11 @@
 , copyDesktopItems
 , makeDesktopItem
 }:
-
+let
+  arch =
+    /**/ if stdenv.hostPlatform.isx86_64 then "x64"
+    else stdenv.hostPlatform.parsed.cpu.name;
+in
 stdenv.mkDerivation rec {
   pname = "Quake3e";
   version = "2022-04-01-dev";
@@ -52,8 +56,8 @@ stdenv.mkDerivation rec {
   installPhase = ''
     runHook preInstall
     make install DESTDIR=$out/lib
-    makeWrapper $out/lib/quake3e.x64 $out/bin/quake3e
-    makeWrapper $out/lib/quake3e.ded.x64 $out/bin/quake3e.ded
+    makeWrapper $out/lib/quake3e.${arch} $out/bin/quake3e
+    makeWrapper $out/lib/quake3e.ded.${arch} $out/bin/quake3e.ded
     runHook postInstall
   '';
 
@@ -72,8 +76,5 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ pmiddend ];
-    badPlatforms = platforms.aarch64;
-    # never built on aarch64-linux since first introduction in nixpkgs
-    broken = stdenv.isLinux && stdenv.isAarch64;
   };
 }
diff --git a/pkgs/games/quakespasm/default.nix b/pkgs/games/quakespasm/default.nix
index b9541d1b274e6..6b3080c7573e5 100644
--- a/pkgs/games/quakespasm/default.nix
+++ b/pkgs/games/quakespasm/default.nix
@@ -87,7 +87,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "An engine for iD software's Quake";
+    description = "Engine for iD software's Quake";
     homepage = "https://quakespasm.sourceforge.net/";
     longDescription = ''
       QuakeSpasm is a modern, cross-platform Quake 1 engine based on FitzQuake.
diff --git a/pkgs/games/qzdl/default.nix b/pkgs/games/qzdl/default.nix
index 0b44328fb8e4c..ad880c09522f3 100644
--- a/pkgs/games/qzdl/default.nix
+++ b/pkgs/games/qzdl/default.nix
@@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A ZDoom WAD Launcher";
+    description = "ZDoom WAD Launcher";
     homepage = "https://zdl.vectec.net";
     license = licenses.gpl3Only;
     inherit (qtbase.meta) platforms;
diff --git a/pkgs/games/r2mod_cli/default.nix b/pkgs/games/r2mod_cli/default.nix
index 3ea7432550fc0..896be4c971783 100644
--- a/pkgs/games/r2mod_cli/default.nix
+++ b/pkgs/games/r2mod_cli/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Risk of Rain 2 Mod Manager in Bash";
+    description = "Risk of Rain 2 Mod Manager in Bash";
     homepage = "https://github.com/foldex/r2mod_cli";
     license = licenses.gpl3Only;
     maintainers = [ maintainers.reedrw ];
diff --git a/pkgs/games/rare/default.nix b/pkgs/games/rare/default.nix
index 6d46b09626f66..ae65bdc2f1719 100644
--- a/pkgs/games/rare/default.nix
+++ b/pkgs/games/rare/default.nix
@@ -57,7 +57,7 @@ buildPythonApplication rec {
   meta = with lib; {
     description = "GUI for Legendary, an Epic Games Launcher open source alternative";
     homepage = "https://github.com/RareDevs/Rare";
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     mainProgram = "rare";
diff --git a/pkgs/games/raylib-games/default.nix b/pkgs/games/raylib-games/default.nix
index 34ef5c8014356..802093b8682c4 100644
--- a/pkgs/games/raylib-games/default.nix
+++ b/pkgs/games/raylib-games/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A collection of games made with raylib ";
+    description = "Collection of games made with raylib ";
     homepage = "https://www.raylib.com/games.html";
     license = licenses.zlib;
     maintainers = with maintainers; [ ehmry ];
diff --git a/pkgs/games/redeclipse/default.nix b/pkgs/games/redeclipse/default.nix
index 07c2b9e33adfc..28c112fba3531 100644
--- a/pkgs/games/redeclipse/default.nix
+++ b/pkgs/games/redeclipse/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, fetchurl, fetchpatch
+{ lib, stdenv, fetchurl
 , curl, ed, pkg-config, freetype, zlib, libX11
 , SDL2, SDL2_image, SDL2_mixer
 }:
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A first person arena shooter, featuring parkour, impulse boosts, and more";
+    description = "First person arena shooter, featuring parkour, impulse boosts, and more";
     longDescription = ''
       Red Eclipse is a fun-filled new take on the first person arena shooter,
       featuring parkour, impulse boosts, and more. The development is geared
diff --git a/pkgs/games/rigsofrods-bin/default.nix b/pkgs/games/rigsofrods-bin/default.nix
index fa9edfe72f454..5fc1795056141 100644
--- a/pkgs/games/rigsofrods-bin/default.nix
+++ b/pkgs/games/rigsofrods-bin/default.nix
@@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A free/libre soft-body physics simulator mainly targeted at simulating vehicle physics";
+    description = "Free/libre soft-body physics simulator mainly targeted at simulating vehicle physics";
     homepage = "https://www.rigsofrods.org";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ raskin wegank ];
diff --git a/pkgs/games/riko4/default.nix b/pkgs/games/riko4/default.nix
index e5e0738d8b0e7..b3721f7f78f43 100644
--- a/pkgs/games/riko4/default.nix
+++ b/pkgs/games/riko4/default.nix
@@ -18,7 +18,7 @@ let
 
     meta = with lib; {
       homepage = "https://github.com/grimfang4/sdl-gpu";
-      description = "A library for high-performance, modern 2D graphics with SDL written in C";
+      description = "Library for high-performance, modern 2D graphics with SDL written in C";
       license = licenses.mit;
       maintainers = with maintainers; [ CrazedProgrammer ];
     };
diff --git a/pkgs/games/rili/default.nix b/pkgs/games/rili/default.nix
index b02cf7e5dea09..4737be3ffc4c3 100644
--- a/pkgs/games/rili/default.nix
+++ b/pkgs/games/rili/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://ri-li.sourceforge.net";
     license = lib.licenses.gpl2Plus;
-    description = "A children's train game";
+    description = "Children's train game";
     longDescription = ''
      Ri-li is an arcade game licensed under the GPL (General Public License).
 You drive a toy wood engine in many levels and you must collect all the coaches
diff --git a/pkgs/games/rocksndiamonds/default.nix b/pkgs/games/rocksndiamonds/default.nix
index 65f0dd9392f7a..2803ca5d18cfd 100644
--- a/pkgs/games/rocksndiamonds/default.nix
+++ b/pkgs/games/rocksndiamonds/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchurl
-, fetchpatch
 , makeDesktopItem
 , SDL2
 , SDL2_image
diff --git a/pkgs/games/rogue/default.nix b/pkgs/games/rogue/default.nix
index a30b856eed9ce..13ee9400cfff9 100644
--- a/pkgs/games/rogue/default.nix
+++ b/pkgs/games/rogue/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "http://rogue.rogueforge.net/rogue-5-4/";
-    description = "The final version of the original Rogue game developed for the UNIX operating system";
+    description = "Final version of the original Rogue game developed for the UNIX operating system";
     mainProgram = "rogue";
     platforms = platforms.all;
     license = licenses.bsd3;
diff --git a/pkgs/games/runescape-launcher/default.nix b/pkgs/games/runescape-launcher/default.nix
index 062a194c83dcc..6bed4908f471f 100644
--- a/pkgs/games/runescape-launcher/default.nix
+++ b/pkgs/games/runescape-launcher/default.nix
@@ -18,7 +18,7 @@
 , openssl_1_1
 , pango
 , SDL2
-, wrapGAppsHook
+, wrapGAppsHook3
 , xdg-utils
 , xorg
 , xorg_sys_opengl
@@ -40,7 +40,7 @@ let
     nativeBuildInputs = [
       autoPatchelfHook
       dpkg
-      wrapGAppsHook
+      wrapGAppsHook3
     ];
 
     buildInputs = [
diff --git a/pkgs/games/sauerbraten/default.nix b/pkgs/games/sauerbraten/default.nix
index e2365f9ad2de1..b32ffadaea161 100644
--- a/pkgs/games/sauerbraten/default.nix
+++ b/pkgs/games/sauerbraten/default.nix
@@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A free multiplayer & singleplayer first person shooter, the successor of the Cube FPS";
+    description = "Free multiplayer & singleplayer first person shooter, the successor of the Cube FPS";
     homepage = "http://sauerbraten.org";
     maintainers = with maintainers; [ raskin ajs124 ];
     mainProgram = "sauerbraten_client";
diff --git a/pkgs/games/scid-vs-pc/default.nix b/pkgs/games/scid-vs-pc/default.nix
index dc76a6149c9d4..0a071237bee7c 100644
--- a/pkgs/games/scid-vs-pc/default.nix
+++ b/pkgs/games/scid-vs-pc/default.nix
@@ -2,11 +2,11 @@
 
 tcl.mkTclDerivation rec {
   pname = "scid-vs-pc";
-  version = "4.24";
+  version = "4.25";
 
   src = fetchurl {
     url = "mirror://sourceforge/scidvspc/scid_vs_pc-${version}.tgz";
-    hash = "sha256-x4Ljn1vaXrue16kUofWAH2sDNYC8h3NvzFjffRo0EhA=";
+    hash = "sha256-YZsBwIp5ouGk75wsAywuYyNSeNjCAx0iWgiA7YmUmnk=";
   };
 
   postPatch = ''
diff --git a/pkgs/games/scrolls/default.nix b/pkgs/games/scrolls/default.nix
index fad783571c5da..7478df20e9930 100644
--- a/pkgs/games/scrolls/default.nix
+++ b/pkgs/games/scrolls/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation {
   version = "2015-10-13";
 
   meta = {
-    description = "A strategy collectible card game";
+    description = "Strategy collectible card game";
     homepage = "https://scrolls.com/";
     # http://www.reddit.com/r/Scrolls/comments/2j3pxw/linux_client_experimental/
 
diff --git a/pkgs/games/sgt-puzzles/default.nix b/pkgs/games/sgt-puzzles/default.nix
index e5be3c4ae71ed..304c0f9b27c78 100644
--- a/pkgs/games/sgt-puzzles/default.nix
+++ b/pkgs/games/sgt-puzzles/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchurl, desktop-file-utils
 , gtk3, libX11, cmake, imagemagick
-, pkg-config, perl, wrapGAppsHook, nixosTests, writeScript
+, pkg-config, perl, wrapGAppsHook3, nixosTests, writeScript
 , isMobile ? false
 }:
 
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     imagemagick
     perl
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   env.NIX_CFLAGS_COMPILE = lib.optionalString isMobile "-DSTYLUS_BASED";
diff --git a/pkgs/games/shattered-pixel-dungeon/default.nix b/pkgs/games/shattered-pixel-dungeon/default.nix
index fbafe8c1b3261..dd58a3d9db3ac 100644
--- a/pkgs/games/shattered-pixel-dungeon/default.nix
+++ b/pkgs/games/shattered-pixel-dungeon/default.nix
@@ -5,13 +5,13 @@
 
 callPackage ./generic.nix rec {
   pname = "shattered-pixel-dungeon";
-  version = "2.3.2";
+  version = "2.4.2";
 
   src = fetchFromGitHub {
     owner = "00-Evan";
     repo = "shattered-pixel-dungeon";
     rev = "v${version}";
-    hash = "sha256-CZOi3kLwYdA4U9LjgK4ukPTLFUodyubSQg9JaJpUB9s=";
+    hash = "sha256-1msmjKDEd/pFMqLB4vJgR6GPC9z4CnNew2hlemLw2d0=";
   };
 
   depsHash = "sha256-vihoR0bPh7590sRxeYJ1uuynNRxtRBuiFUrdmsRNUJc=";
diff --git a/pkgs/games/shattered-pixel-dungeon/experienced-pixel-dungeon.nix b/pkgs/games/shattered-pixel-dungeon/experienced-pixel-dungeon.nix
index 26d89978c1a21..72ce4f790ad49 100644
--- a/pkgs/games/shattered-pixel-dungeon/experienced-pixel-dungeon.nix
+++ b/pkgs/games/shattered-pixel-dungeon/experienced-pixel-dungeon.nix
@@ -4,18 +4,18 @@
 
 callPackage ./generic.nix rec {
   pname = "experienced-pixel-dungeon";
-  version = "2.17.2";
+  version = "2.18";
 
   src = fetchFromGitHub {
     owner = "TrashboxBobylev";
     repo = "Experienced-Pixel-Dungeon-Redone";
     rev = "ExpPD-${version}";
-    hash = "sha256-eX+wPw2Bi37yQZ+ftjEkiGzvheJZingqDqy1481ABvs=";
+    hash = "sha256-jOKHBd9LaDn3oqLdQWqAcJnicktlbkDGw00nT8JveoI=";
   };
 
   postPatch = ''
     substituteInPlace build.gradle \
-      --replace-fail "gdxControllersVersion = '2.2.3-SNAPSHOT'" "gdxControllersVersion = '2.2.3'"
+      --replace-fail "gdxControllersVersion = '2.2.4-SNAPSHOT'" "gdxControllersVersion = '2.2.3'"
   '';
 
   depsHash = "sha256-PyBEhlOOVD3/YH4SWs1yMkdg3U96znk1/VV6SAr8S30=";
diff --git a/pkgs/games/shattered-pixel-dungeon/shorter-pixel-dungeon.nix b/pkgs/games/shattered-pixel-dungeon/shorter-pixel-dungeon.nix
index 6b52ebe0b5f34..7d775e7e6ed58 100644
--- a/pkgs/games/shattered-pixel-dungeon/shorter-pixel-dungeon.nix
+++ b/pkgs/games/shattered-pixel-dungeon/shorter-pixel-dungeon.nix
@@ -4,13 +4,13 @@
 
 callPackage ./generic.nix rec {
   pname = "shorter-pixel-dungeon";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "TrashboxBobylev";
     repo = "Shorter-Pixel-Dungeon";
     rev = "Short-${version}";
-    hash = "sha256-dfBFAXlMjazTjvvRZ87H48OmitZuHhaa3qUF81pF4wc=";
+    hash = "sha256-iG90T/Ho8/JY3HgkACiBnGdbUGsVRlfxXbcNFHhzZi4=";
   };
 
   postPatch = ''
@@ -18,7 +18,7 @@ callPackage ./generic.nix rec {
       --replace-fail "gdxControllersVersion = '2.2.4-SNAPSHOT'" "gdxControllersVersion = '2.2.3'"
   '';
 
-  depsHash = "sha256-MUUeWZUCVPakK1MJwn0lPnjAlLpPWB/J17Ad68XRcHg=";
+  depsHash = "sha256-PyBEhlOOVD3/YH4SWs1yMkdg3U96znk1/VV6SAr8S30=";
 
   desktopName = "Shorter Pixel Dungeon";
 
diff --git a/pkgs/games/shipwright/darwin-fixes.patch b/pkgs/games/shipwright/darwin-fixes.patch
new file mode 100644
index 0000000000000..ae5e936603ddf
--- /dev/null
+++ b/pkgs/games/shipwright/darwin-fixes.patch
@@ -0,0 +1,37 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2c8644af..157758c9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -166,17 +166,13 @@ endif()
+ if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ add_custom_target(CreateOSXIcons
+     COMMAND mkdir -p ${CMAKE_BINARY_DIR}/macosx/soh.iconset
+-    COMMAND sips -z 16 16     soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16.png
+-    COMMAND sips -z 32 32     soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16@2x.png
+-    COMMAND sips -z 32 32     soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32.png
+-    COMMAND sips -z 64 64     soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32@2x.png
+-    COMMAND sips -z 128 128   soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128.png
+-    COMMAND sips -z 256 256   soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128@2x.png
+-    COMMAND sips -z 256 256   soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256.png
+-    COMMAND sips -z 512 512   soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256@2x.png
+-    COMMAND sips -z 512 512   soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512.png
+-    COMMAND cp                soh/macosx/sohIcon.png ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512@2x.png
+-    COMMAND iconutil -c icns -o ${CMAKE_BINARY_DIR}/macosx/soh.icns ${CMAKE_BINARY_DIR}/macosx/soh.iconset
++    COMMAND convert soh/macosx/sohIcon.png -resize 16x16 ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16.png
++    COMMAND convert soh/macosx/sohIcon.png -resize 32x32 ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32.png
++    COMMAND convert soh/macosx/sohIcon.png -resize 64x64 ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_64.png
++    COMMAND convert soh/macosx/sohIcon.png -resize 128x128 ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128.png
++    COMMAND convert soh/macosx/sohIcon.png -resize 256x256 ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256.png
++    COMMAND convert soh/macosx/sohIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512.png
++    COMMAND png2icns ${CMAKE_BINARY_DIR}/macosx/soh.icns ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_{16,32,64,128,256,512}.png
+     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+     COMMENT "Creating OSX icons ..."
+     )
+@@ -201,7 +197,6 @@ install(DIRECTORY ${CMAKE_BINARY_DIR}/assets
+ 
+ install(CODE "
+     include(BundleUtilities)
+-    fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/soh-macos\" \"\" \"${dirs}\")
+     ")
+ 
+ endif()
diff --git a/pkgs/games/shipwright/default.nix b/pkgs/games/shipwright/default.nix
index 397226fc4ba5c..cdb48733eb012 100644
--- a/pkgs/games/shipwright/default.nix
+++ b/pkgs/games/shipwright/default.nix
@@ -24,8 +24,13 @@
 , imagemagick
 , gnome
 , makeWrapper
+, darwin
+, libicns
 }:
-
+let
+  inherit (darwin.apple_sdk_11_0.frameworks)
+    IOSurface Metal QuartzCore Cocoa AVFoundation;
+in
 stdenv.mkDerivation (finalAttrs: {
   pname = "shipwright";
   version = "8.0.5";
@@ -38,6 +43,10 @@ stdenv.mkDerivation (finalAttrs: {
     fetchSubmodules = true;
   };
 
+  patches = [
+    ./darwin-fixes.patch
+  ];
+
   # This would get fetched at build time otherwise, see:
   # https://github.com/HarbourMasters/Shipwright/blob/e46c60a7a1396374e23f7a1f7122ddf9efcadff7/soh/CMakeLists.txt#L736
   gamecontrollerdb = fetchurl {
@@ -50,27 +59,39 @@ stdenv.mkDerivation (finalAttrs: {
     cmake
     ninja
     pkg-config
-    lsb-release
     python3
     imagemagick
-    copyDesktopItems
     makeWrapper
+  ] ++ lib.optionals stdenv.isLinux [
+    lsb-release
+    copyDesktopItems
+  ] ++ lib.optionals stdenv.isDarwin [
+    libicns
+    darwin.sigtool
   ];
 
   buildInputs = [
     boost
+    glew
+    SDL2
+    SDL2_net
+    libpng
+  ] ++ lib.optionals stdenv.isLinux [
     libX11
     libXrandr
     libXinerama
     libXcursor
     libXi
     libXext
-    glew
-    SDL2
-    SDL2_net
     libpulseaudio
-    libpng
     gnome.zenity
+  ] ++ lib.optionals stdenv.isDarwin [
+    IOSurface
+    Metal
+    QuartzCore
+    Cocoa
+    AVFoundation
+    darwin.apple_sdk_11_0.libs.simd
   ];
 
   cmakeFlags = [
@@ -78,6 +99,9 @@ stdenv.mkDerivation (finalAttrs: {
     (lib.cmakeBool "NON_PORTABLE" true)
   ];
 
+  env.NIX_CFLAGS_COMPILE =
+    lib.optionalString stdenv.isDarwin "-Wno-int-conversion -Wno-implicit-int";
+
   dontAddPrefix = true;
 
   # Linking fails without this
@@ -90,18 +114,60 @@ stdenv.mkDerivation (finalAttrs: {
     popd
   '';
 
-  preInstall = ''
+  preInstall = lib.optionalString stdenv.isLinux ''
     # Cmake likes it here for its install paths
     cp ../OTRExporter/soh.otr ..
+  '' + lib.optionalString stdenv.isDarwin ''
+    cp ../OTRExporter/soh.otr soh/soh.otr
   '';
 
-  postInstall = ''
+  postInstall = lib.optionalString stdenv.isLinux ''
     mkdir -p $out/bin
     ln -s $out/lib/soh.elf $out/bin/soh
     install -Dm644 ../soh/macosx/sohIcon.png $out/share/pixmaps/soh.png
+  '' + lib.optionalString stdenv.isDarwin ''
+    # Recreate the macOS bundle (without using cpack)
+    # We mirror the structure of the bundle distributed by the project
+
+    mkdir -p $out/Applications/soh.app/Contents
+    cp $src/soh/macosx/Info.plist.in $out/Applications/soh.app/Contents/Info.plist
+    substituteInPlace $out/Applications/soh.app/Contents/Info.plist \
+      --replace-fail "@CMAKE_PROJECT_VERSION@" "${finalAttrs.version}"
+
+    mv $out/MacOS $out/Applications/soh.app/Contents/MacOS
+
+    # Wrapper
+    cp $src/soh/macosx/soh-macos.sh.in $out/Applications/soh.app/Contents/MacOS/soh
+    chmod +x $out/Applications/soh.app/Contents/MacOS/soh
+    patchShebangs $out/Applications/soh.app/Contents/MacOS/soh
+
+    # "lib" contains all resources that are in "Resources" in the official bundle.
+    # We move them to the right place and symlink them back to $out/lib,
+    # as that's where the game expects them.
+    mv $out/Resources $out/Applications/soh.app/Contents/Resources
+    mv $out/lib/** $out/Applications/soh.app/Contents/Resources
+    rm -rf $out/lib
+    ln -s $out/Applications/soh.app/Contents/Resources $out/lib
+
+    # Copy icons
+    cp -r ../build/macosx/soh.icns $out/Applications/soh.app/Contents/Resources/soh.icns
+
+    # Fix executable
+    install_name_tool -change @executable_path/../Frameworks/libSDL2-2.0.0.dylib \
+                      ${SDL2}/lib/libSDL2-2.0.0.dylib \
+                      $out/Applications/soh.app/Contents/Resources/soh-macos
+    install_name_tool -change @executable_path/../Frameworks/libGLEW.2.2.0.dylib \
+                      ${glew}/lib/libGLEW.2.2.0.dylib \
+                      $out/Applications/soh.app/Contents/Resources/soh-macos
+    install_name_tool -change @executable_path/../Frameworks/libpng16.16.dylib \
+                      ${libpng}/lib/libpng16.16.dylib \
+                      $out/Applications/soh.app/Contents/Resources/soh-macos
+
+    # Codesign (ad-hoc)
+    codesign -f -s - $out/Applications/soh.app/Contents/Resources/soh-macos
   '';
 
-  fixupPhase = ''
+  fixupPhase = lib.optionalString stdenv.isLinux ''
     wrapProgram $out/lib/soh.elf --prefix PATH ":" ${lib.makeBinPath [ gnome.zenity ]}
   '';
 
@@ -121,8 +187,8 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/HarbourMasters/Shipwright";
     description = "A PC port of Ocarina of Time with modern controls, widescreen, high-resolution, and more";
     mainProgram = "soh";
-    platforms = [ "x86_64-linux" ];
-    maintainers = with lib.maintainers; [ ivar j0lol ];
+    platforms = [ "x86_64-linux" ] ++ lib.platforms.darwin;
+    maintainers = with lib.maintainers; [ ivar j0lol matteopacini ];
     license = with lib.licenses; [
       # OTRExporter, OTRGui, ZAPDTR, libultraship
       mit
diff --git a/pkgs/games/sil-q/default.nix b/pkgs/games/sil-q/default.nix
index e029d77a02dbd..9a52a05db93f5 100644
--- a/pkgs/games/sil-q/default.nix
+++ b/pkgs/games/sil-q/default.nix
@@ -55,7 +55,7 @@ in stdenv.mkDerivation rec {
   };
 
   meta = {
-    description = "A roguelike game set in the First Age of Middle-earth";
+    description = "Roguelike game set in the First Age of Middle-earth";
     mainProgram = "sil-q";
     longDescription = ''
       A game of adventure set in the First Age of Middle-earth, when the world still
diff --git a/pkgs/games/sil/default.nix b/pkgs/games/sil/default.nix
index 0c6a11f479817..e8f88074b66d8 100644
--- a/pkgs/games/sil/default.nix
+++ b/pkgs/games/sil/default.nix
@@ -67,7 +67,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = {
-    description = "A rogue-like game set in the First Age of Middle-earth";
+    description = "Rogue-like game set in the First Age of Middle-earth";
     longDescription = ''
       A game of adventure set in the First Age of Middle-earth, when the world still
       rang with Elven song and gleamed with Dwarven mail.
diff --git a/pkgs/games/simutrans/default.nix b/pkgs/games/simutrans/default.nix
index c89cdf7c8588f..5c668557027e3 100644
--- a/pkgs/games/simutrans/default.nix
+++ b/pkgs/games/simutrans/default.nix
@@ -153,7 +153,7 @@ let
     '';
 
     meta = with lib; {
-      description = "A simulation game in which the player strives to run a successful transport system";
+      description = "Simulation game in which the player strives to run a successful transport system";
       mainProgram = "simutrans";
       longDescription = ''
         Simutrans is a cross-platform simulation game in which the
diff --git a/pkgs/games/sm64ex/generic.nix b/pkgs/games/sm64ex/generic.nix
index 95ba3be4a5691..d3da340d502fb 100644
--- a/pkgs/games/sm64ex/generic.nix
+++ b/pkgs/games/sm64ex/generic.nix
@@ -10,7 +10,6 @@
 
 , lib
 , stdenv
-, fetchFromGitHub
 , python3
 , pkg-config
 , audiofile
diff --git a/pkgs/games/snake4/default.nix b/pkgs/games/snake4/default.nix
index aee8b9e0810ca..79524e974c4d2 100644
--- a/pkgs/games/snake4/default.nix
+++ b/pkgs/games/snake4/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
                    "INSTMANDIR=$(out)/man" ];
 
   meta = with lib; {
-    description = "A game starring a fruit-eating snake";
+    description = "Game starring a fruit-eating snake";
     homepage = "https://shh.thathost.com/pub-unix/html/snake4.html";
     license = licenses.artistic1;
     platforms = platforms.linux;
diff --git a/pkgs/games/soi/default.nix b/pkgs/games/soi/default.nix
index e0526ff442351..67f1b5b211a71 100644
--- a/pkgs/games/soi/default.nix
+++ b/pkgs/games/soi/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A physics-based puzzle game";
+    description = "Physics-based puzzle game";
     mainProgram = "soi";
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/games/solarus/default.nix b/pkgs/games/solarus/default.nix
index 0e95a77a7cd46..fd80b03066ce6 100644
--- a/pkgs/games/solarus/default.nix
+++ b/pkgs/games/solarus/default.nix
@@ -28,7 +28,7 @@ mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Zelda-like ARPG game engine";
+    description = "Zelda-like ARPG game engine";
     longDescription = ''
       Solarus is a game engine for Zelda-like ARPG games written in lua.
       Many full-fledged games have been writen for the engine.
diff --git a/pkgs/games/solicurses/default.nix b/pkgs/games/solicurses/default.nix
index afa49bbd5ce19..5ed776f9f1c6f 100644
--- a/pkgs/games/solicurses/default.nix
+++ b/pkgs/games/solicurses/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A version of Solitaire written in C++ using the ncurses library";
+    description = "Version of Solitaire written in C++ using the ncurses library";
     mainProgram = "solicurses";
     homepage = "https://github.com/KaylaPP/SoliCurses";
     maintainers = with maintainers; [ laalsaas ];
diff --git a/pkgs/games/space-cadet-pinball/default.nix b/pkgs/games/space-cadet-pinball/default.nix
index 20016809f255d..53edf5860518a 100644
--- a/pkgs/games/space-cadet-pinball/default.nix
+++ b/pkgs/games/space-cadet-pinball/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv, fetchFromGitHub, fetchzip
 , cmake, SDL2, SDL2_mixer, Cocoa
 , unrar-wrapper, makeWrapper
-, fetchpatch
 }:
 
 let
diff --git a/pkgs/games/space-orbit/default.nix b/pkgs/games/space-orbit/default.nix
index 7762bde4cfa5a..4e3e044bbbfe9 100644
--- a/pkgs/games/space-orbit/default.nix
+++ b/pkgs/games/space-orbit/default.nix
@@ -39,7 +39,7 @@ EOF
 
   meta = with lib; {
     broken = stdenv.isDarwin;
-    description = "A space combat simulator";
+    description = "Space combat simulator";
     mainProgram = "space-orbit";
     license = licenses.gpl2;
     platforms = platforms.all;
diff --git a/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix b/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix
index d6eedb6e9f698..be4a50034b914 100644
--- a/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix
+++ b/pkgs/games/space-station-14-launcher/space-station-14-launcher.nix
@@ -2,7 +2,7 @@
 , buildDotnetModule
 , dotnetCorePackages
 , fetchFromGitHub
-, wrapGAppsHook
+, wrapGAppsHook3
 , iconConvTools
 , copyDesktopItems
 , makeDesktopItem
@@ -31,7 +31,7 @@
 , gdk-pixbuf
 }:
 let
-  version = "0.26.0";
+  version = "0.27.2";
   pname = "space-station-14-launcher";
 in
 buildDotnetModule rec {
@@ -44,7 +44,7 @@ buildDotnetModule rec {
     owner = "space-wizards";
     repo = "SS14.Launcher";
     rev = "v${version}";
-    hash = "sha256-Gh2gQucn3VsfFrPAS/vehfVy5WqlVpvSeISB4/j08MQ=";
+    hash = "sha256-r+nNZ2xkHMp8bmNNqbf4WnmGP3SIxCtHUCfGxfydTH4=";
     fetchSubmodules = true;
   };
 
@@ -73,7 +73,7 @@ buildDotnetModule rec {
     "-nologo"
   ];
 
-  nativeBuildInputs = [ wrapGAppsHook iconConvTools copyDesktopItems ];
+  nativeBuildInputs = [ wrapGAppsHook3 iconConvTools copyDesktopItems ];
 
   runtimeDeps = [
     # Required by the game.
diff --git a/pkgs/games/spring/default.nix b/pkgs/games/spring/default.nix
index 0a2eb6cfc9113..1185894dae66c 100644
--- a/pkgs/games/spring/default.nix
+++ b/pkgs/games/spring/default.nix
@@ -83,7 +83,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://springrts.com/";
-    description = "A powerful real-time strategy (RTS) game engine";
+    description = "Powerful real-time strategy (RTS) game engine";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ qknight domenkozar sorki ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/games/starsector/default.nix b/pkgs/games/starsector/default.nix
index 535039c79f2fa..8e38f232f21e9 100644
--- a/pkgs/games/starsector/default.nix
+++ b/pkgs/games/starsector/default.nix
@@ -62,15 +62,17 @@ stdenv.mkDerivation rec {
 
   # it tries to run everything with relative paths, which makes it CWD dependent
   # also point mod, screenshot, and save directory to $XDG_DATA_HOME
-  # additionally, add some GC options to improve performance of the game
-  # and remove flags "PermSize" and "MaxPermSize" that were removed with Java 8
+  # additionally, add some GC options to improve performance of the game,
+  # remove flags "PermSize" and "MaxPermSize" that were removed with Java 8 and
+  # pass-through CLI args ($@) to the JVM.
   postPatch = ''
     substituteInPlace starsector.sh \
       --replace-fail "./jre_linux/bin/java" "${openjdk}/bin/java" \
       --replace-fail "./native/linux" "$out/share/starsector/native/linux" \
       --replace-fail "=." "=\''${XDG_DATA_HOME:-\$HOME/.local/share}/starsector" \
-      --replace-warn "-XX:+CompilerThreadHintNoPreempt" "-XX:+UnlockDiagnosticVMOptions -XX:-BytecodeVerificationRemote -XX:+CMSConcurrentMTEnabled -XX:+DisableExplicitGC" \
-      --replace-quiet " -XX:PermSize=192m -XX:MaxPermSize=192m" ""
+      --replace-fail "-XX:+CompilerThreadHintNoPreempt" "-XX:+UnlockDiagnosticVMOptions -XX:-BytecodeVerificationRemote -XX:+CMSConcurrentMTEnabled -XX:+DisableExplicitGC" \
+      --replace-quiet " -XX:PermSize=192m -XX:MaxPermSize=192m" "" \
+      --replace-fail "com.fs.starfarer.StarfarerLauncher" "\"\$@\" com.fs.starfarer.StarfarerLauncher"
   '';
 
   passthru.updateScript = writeScript "starsector-update-script" ''
diff --git a/pkgs/games/steam/fhsenv.nix b/pkgs/games/steam/fhsenv.nix
index 95668e1ecea99..a2157da80d6b9 100644
--- a/pkgs/games/steam/fhsenv.nix
+++ b/pkgs/games/steam/fhsenv.nix
@@ -190,11 +190,14 @@ in buildFHSEnv rec {
     libvdpau
 
     # required by coreutils stuff to run correctly
-    # Steam ends up with LD_LIBRARY_PATH=<bunch of runtime stuff>:/usr/lib:<etc>
+    # Steam ends up with LD_LIBRARY_PATH=/usr/lib:<bunch of runtime stuff>:<etc>
     # which overrides DT_RUNPATH in our binaries, so it tries to dynload the
     # very old versions of stuff from the runtime.
     # FIXME: how do we even fix this correctly
     attr
+    # same thing, but for Xwayland (usually via gamescope), already in the closure
+    libkrb5
+    keyutils
   ] ++ lib.optionals withGameSpecificLibraries [
     # Not formally in runtime but needed by some games
     at-spi2-atk
@@ -277,7 +280,7 @@ in buildFHSEnv rec {
     WARNING: Steam is not set up. Add the following options to /etc/nixos/configuration.nix
     and then run \`sudo nixos-rebuild switch\`:
     {
-      hardware.opengl.driSupport32Bit = true;
+      hardware.graphics.enable32Bit = true;
       hardware.pulseaudio.support32Bit = true;
     }
     **
diff --git a/pkgs/games/steam/runtime.nix b/pkgs/games/steam/runtime.nix
index 563a09d369073..f736ac8daa47c 100644
--- a/pkgs/games/steam/runtime.nix
+++ b/pkgs/games/steam/runtime.nix
@@ -8,11 +8,11 @@ stdenv.mkDerivation (finalAttrs: {
 
   pname = "steam-runtime";
   # from https://repo.steampowered.com/steamrt-images-scout/snapshots/latest-steam-client-general-availability/VERSION.txt
-  version = "0.20231127.68515";
+  version = "0.20240415.84615";
 
   src = fetchurl {
     url = "https://repo.steampowered.com/steamrt-images-scout/snapshots/${finalAttrs.version}/steam-runtime.tar.xz";
-    hash = "sha256-invUOdJGNhrswsj9Vj/bSAkEigWtBQ554sBAyvPf0mk=";
+    hash = "sha256-C8foNnIVA+O4YwuCrIf9N6Lr/GlApPVgZsYgi+3OZUE=";
     name = "scout-runtime-${finalAttrs.version}.tar.gz";
   };
 
@@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
   };
 
   meta = {
-    description = "The official runtime used by Steam";
+    description = "Official runtime used by Steam";
     homepage = "https://github.com/ValveSoftware/steam-runtime";
     license = lib.licenses.unfreeRedistributable; # Includes NVIDIA CG toolkit
     maintainers = with lib.maintainers; [ hrdinka abbradar ];
diff --git a/pkgs/games/steam/steam.nix b/pkgs/games/steam/steam.nix
index 2687ee7febdd4..92c45cc7c06fd 100644
--- a/pkgs/games/steam/steam.nix
+++ b/pkgs/games/steam/steam.nix
@@ -40,7 +40,7 @@ in stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "A digital distribution platform";
+    description = "Digital distribution platform";
     longDescription = ''
       Steam is a video game digital distribution service and storefront from Valve.
 
diff --git a/pkgs/games/steam/steamcmd.nix b/pkgs/games/steam/steamcmd.nix
index 1c834f1c2ea69..69d5cd8a7863c 100644
--- a/pkgs/games/steam/steamcmd.nix
+++ b/pkgs/games/steam/steamcmd.nix
@@ -7,8 +7,8 @@ stdenv.mkDerivation {
   version = "20180104"; # According to steamcmd_linux.tar.gz mtime
 
   src = fetchurl {
-    url = "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz";
-    sha256 = "0z0y0zqvhydmfc9y9vg5am0vz7m3gbj4l2dwlrfz936hpx301gyf";
+    url = "https://web.archive.org/web/20240521141411/https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz";
+    hash = "sha256-zr8ARr/QjPRdprwJSuR6o56/QVXl7eQTc7V5uPEHHnw=";
   };
 
   # The source tarball does not have a single top-level directory.
@@ -37,8 +37,9 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
-    description = "Steam command-line tools";
     homepage = "https://developer.valvesoftware.com/wiki/SteamCMD";
+    description = "Steam command-line tools";
+    mainProgram = "steamcmd";
     platforms = platforms.linux;
     license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ tadfisher ];
diff --git a/pkgs/games/stepmania/default.nix b/pkgs/games/stepmania/default.nix
index bfd871a2a1c14..000b07c5433d9 100644
--- a/pkgs/games/stepmania/default.nix
+++ b/pkgs/games/stepmania/default.nix
@@ -11,6 +11,7 @@
 , gtk2
 , libmad
 , libogg
+, libpng
 , libpulseaudio
 , libvorbis
 , udev
@@ -51,6 +52,7 @@ stdenv.mkDerivation {
     gtk2
     libmad
     libogg
+    libpng
     libpulseaudio
     libvorbis
     udev
@@ -59,6 +61,7 @@ stdenv.mkDerivation {
 
   cmakeFlags = [
     "-DWITH_SYSTEM_FFMPEG=1"
+    "-DWITH_SYSTEM_PNG=on"
     "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
     "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
   ];
@@ -79,8 +82,6 @@ stdenv.mkDerivation {
     platforms = platforms.linux;
     license = licenses.mit; # expat version
     maintainers = with maintainers; [ h7x4 ];
-    # never built on aarch64-linux since first introduction in nixpkgs
-    broken = stdenv.isLinux && stdenv.isAarch64;
     mainProgram = "stepmania";
   };
 }
diff --git a/pkgs/games/stone-kingdoms/default.nix b/pkgs/games/stone-kingdoms/default.nix
index 3680f3af1275c..a8b84c60b1e89 100644
--- a/pkgs/games/stone-kingdoms/default.nix
+++ b/pkgs/games/stone-kingdoms/default.nix
@@ -51,7 +51,7 @@ stdenvNoCC.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A real-time strategy game made with LÖVE based on the original Stronghold by Firefly studios";
+    description = "Real-time strategy game made with LÖVE based on the original Stronghold by Firefly studios";
     homepage = "https://gitlab.com/stone-kingdoms/stone-kingdoms";
     platforms = platforms.linux;
     license = with licenses; [
diff --git a/pkgs/games/super-tux-kart/default.nix b/pkgs/games/super-tux-kart/default.nix
index 1d55465d0092c..69bdb24cea7c5 100644
--- a/pkgs/games/super-tux-kart/default.nix
+++ b/pkgs/games/super-tux-kart/default.nix
@@ -144,7 +144,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A Free 3D kart racing game";
+    description = "Free 3D kart racing game";
     mainProgram = "supertuxkart";
     longDescription = ''
       SuperTuxKart is a Free 3D kart racing game, with many tracks,
diff --git a/pkgs/games/system-syzygy/default.nix b/pkgs/games/system-syzygy/default.nix
index dee96f392c541..b478259a8a9c3 100644
--- a/pkgs/games/system-syzygy/default.nix
+++ b/pkgs/games/system-syzygy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, rustPlatform, fetchFromGitHub, fetchurl, SDL2, makeWrapper, makeDesktopItem}:
+{ stdenv, lib, rustPlatform, fetchFromGitHub, SDL2, makeWrapper, makeDesktopItem}:
 
 let
   desktopFile = makeDesktopItem {
@@ -44,7 +44,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     broken = stdenv.isDarwin;
-    description = "A story and a puzzle game, where you solve a variety of puzzle";
+    description = "Story and a puzzle game, where you solve a variety of puzzle";
     mainProgram = "syzygy";
     homepage = "https://mdsteele.games/syzygy";
     license = licenses.gpl3Plus;
diff --git a/pkgs/games/t4kcommon/default.nix b/pkgs/games/t4kcommon/default.nix
index b9f9635321b8f..7fa7d686b1780 100644
--- a/pkgs/games/t4kcommon/default.nix
+++ b/pkgs/games/t4kcommon/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ SDL SDL_image SDL_mixer SDL_net SDL_ttf libpng librsvg libxml2 ];
 
   meta = with lib; {
-    description = "A library of code shared between tuxmath and tuxtype";
+    description = "Library of code shared between tuxmath and tuxtype";
     homepage = "https://github.com/tux4kids/t4kcommon";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.aanderse ];
diff --git a/pkgs/games/taisei/default.nix b/pkgs/games/taisei/default.nix
index 148329d32052d..cb87e48da38eb 100644
--- a/pkgs/games/taisei/default.nix
+++ b/pkgs/games/taisei/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     broken = stdenv.isDarwin;
-    description = "A free and open-source Touhou Project clone and fangame";
+    description = "Free and open-source Touhou Project clone and fangame";
     mainProgram = "taisei";
     longDescription = ''
       Taisei is an open clone of the Tōhō Project series. Tōhō is a one-man
diff --git a/pkgs/games/tcl2048/default.nix b/pkgs/games/tcl2048/default.nix
index b74d3630e0e69..1937ccd0f040e 100644
--- a/pkgs/games/tcl2048/default.nix
+++ b/pkgs/games/tcl2048/default.nix
@@ -19,7 +19,7 @@ tcl.mkTclDerivation rec {
 
   meta = {
     homepage = "https://github.com/dbohdan/2048.tcl";
-    description = "The game of 2048 implemented in Tcl";
+    description = "Game of 2048 implemented in Tcl";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dbohdan ];
     mainProgram = "2048";
diff --git a/pkgs/games/tecnoballz/default.nix b/pkgs/games/tecnoballz/default.nix
index b51cc1afed91f..0d19a2c0f7e24 100644
--- a/pkgs/games/tecnoballz/default.nix
+++ b/pkgs/games/tecnoballz/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://linux.tlk.fr/games/TecnoballZ/";
     downloadPage = "https://linux.tlk.fr/games/TecnoballZ/download/";
-    description = "A brick breaker game with a sophisticated system of weapons and bonuses";
+    description = "Brick breaker game with a sophisticated system of weapons and bonuses";
     mainProgram = "tecnoballz";
     longDescription = ''
       A exciting Brick Breaker with 50 levels of game and 11 special levels,
diff --git a/pkgs/games/tes3cmd/default.nix b/pkgs/games/tes3cmd/default.nix
index b394c2323c217..18fa0edc43683 100644
--- a/pkgs/games/tes3cmd/default.nix
+++ b/pkgs/games/tes3cmd/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A command line tool for examining and modifying plugins for the Elder Scrolls game Morrowind by Bethesda Softworks";
+    description = "Command line tool for examining and modifying plugins for the Elder Scrolls game Morrowind by Bethesda Softworks";
     mainProgram = "tes3cmd";
     homepage = "https://github.com/john-moonsugar/tes3cmd";
     license = licenses.mit;
diff --git a/pkgs/games/the-butterfly-effect/default.nix b/pkgs/games/the-butterfly-effect/default.nix
index 1d77be3c5a8ab..e589018eddefd 100644
--- a/pkgs/games/the-butterfly-effect/default.nix
+++ b/pkgs/games/the-butterfly-effect/default.nix
@@ -30,7 +30,7 @@ mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A physics-based game vaguely similar to Incredible Machine";
+    description = "Physics-based game vaguely similar to Incredible Machine";
     mainProgram = "tbe";
     homepage = "http://the-butterfly-effect.org/";
     maintainers = [ maintainers.raskin ];
diff --git a/pkgs/games/the-powder-toy/default.nix b/pkgs/games/the-powder-toy/default.nix
deleted file mode 100644
index 2cb972344fd67..0000000000000
--- a/pkgs/games/the-powder-toy/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, fetchpatch
-, meson
-, ninja
-, pkg-config
-, python3
-, SDL2
-, bzip2
-, curl
-, fftwFloat
-, lua
-, luajit
-, zlib
-, jsoncpp
-, libpng
-, Cocoa }:
-
-stdenv.mkDerivation rec {
-  pname = "the-powder-toy";
-  version = "97.0.352";
-
-  src = fetchFromGitHub {
-    owner = "The-Powder-Toy";
-    repo = "The-Powder-Toy";
-    rev = "v${version}";
-    sha256 = "sha256-LYohsqFU9LBgTXMaV6cf8/zf3fBvT+s5A1JBpPHekH8=";
-  };
-
-  patches = [
-    # Fix gcc-13 build failure:
-    #   https://github.com/The-Powder-Toy/The-Powder-Toy/pull/898
-    (fetchpatch {
-      name = "gcc-13.patch";
-      url = "https://github.com/The-Powder-Toy/The-Powder-Toy/commit/162bce9a1036e0c233399941410364c4a4370980.patch";
-      hash = "sha256-oQNwKemV3BjMLSUd6zMCKqiClcc3Ouxwn3jagf/Q1/I=";
-    })
-  ];
-
-  nativeBuildInputs = [ meson ninja pkg-config python3 ];
-
-  buildInputs = [ SDL2 bzip2 curl fftwFloat lua luajit zlib jsoncpp libpng ]
-  ++ lib.optionals stdenv.isDarwin [ Cocoa ];
-
-  mesonFlags = [ "-Dworkaround_elusive_bzip2=false" ];
-
-  installPhase = ''
-    install -Dm 755 powder $out/bin/powder
-
-    mkdir -p $out/share/applications
-    mv ../resources $out/share
-  '' + lib.optionalString stdenv.isLinux ''
-    mv ./resources/powder.desktop $out/share/applications
-  '';
-
-  meta = with lib; {
-    description = "A free 2D physics sandbox game";
-    homepage = "https://powdertoy.co.uk/";
-    platforms = platforms.unix;
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ abbradar siraben ];
-    mainProgram = "powder";
-  };
-}
diff --git a/pkgs/games/tintin/default.nix b/pkgs/games/tintin/default.nix
index b8945cfb3d551..6f56512b1da24 100644
--- a/pkgs/games/tintin/default.nix
+++ b/pkgs/games/tintin/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A free MUD client for macOS, Linux and Windows";
+    description = "Free MUD client for macOS, Linux and Windows";
     homepage    = "https://tintin.mudhalla.net/index.php";
     license     = licenses.gpl3Plus;
     maintainers = with maintainers; [ abathur ];
diff --git a/pkgs/games/tinyfugue/default.nix b/pkgs/games/tinyfugue/default.nix
index e03364f4a1ad8..6cb80663bdb78 100644
--- a/pkgs/games/tinyfugue/default.nix
+++ b/pkgs/games/tinyfugue/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "https://tinyfugue.sourceforge.net/";
-    description = "A terminal UI, screen-oriented MUD client";
+    description = "Terminal UI, screen-oriented MUD client";
     mainProgram = "tf";
     longDescription = ''
       TinyFugue, aka "tf", is a flexible, screen-oriented MUD client, for use
diff --git a/pkgs/games/trigger/default.nix b/pkgs/games/trigger/default.nix
index 2182667173511..3e8862f66e3a9 100644
--- a/pkgs/games/trigger/default.nix
+++ b/pkgs/games/trigger/default.nix
@@ -61,7 +61,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    description = "A fast-paced single-player racing game";
+    description = "Fast-paced single-player racing game";
     mainProgram = "trigger-rally";
     homepage = "http://trigger-rally.sourceforge.net/";
     license = lib.licenses.gpl2;
diff --git a/pkgs/games/tuxtype/default.nix b/pkgs/games/tuxtype/default.nix
index 822dac9808dcc..58a31d4695362 100644
--- a/pkgs/games/tuxtype/default.nix
+++ b/pkgs/games/tuxtype/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   configureFlags = [ "--without-sdlpango" ];
 
   meta = with lib; {
-    description = "An Educational Typing Tutor Game Starring Tux, the Linux Penguin";
+    description = "Educational Typing Tutor Game Starring Tux, the Linux Penguin";
     mainProgram = "tuxtype";
     homepage = "https://github.com/tux4kids/tuxtype";
     license = licenses.gpl3Plus;
diff --git a/pkgs/games/typespeed/default.nix b/pkgs/games/typespeed/default.nix
index 483f631fcea9c..8b9881a68a8a8 100644
--- a/pkgs/games/typespeed/default.nix
+++ b/pkgs/games/typespeed/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
 
   meta = with lib; {
-    description = "A curses based typing game";
+    description = "Curses based typing game";
     mainProgram = "typespeed";
     homepage = "https://typespeed.sourceforge.net/";
     license = licenses.gpl2;
diff --git a/pkgs/games/ufoai/default.nix b/pkgs/games/ufoai/default.nix
index 1272097ecb93e..0200d919d2f09 100644
--- a/pkgs/games/ufoai/default.nix
+++ b/pkgs/games/ufoai/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "http://ufoai.org";
-    description = "A squad-based tactical strategy game in the tradition of X-Com";
+    description = "Squad-based tactical strategy game in the tradition of X-Com";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [viric];
     platforms = lib.platforms.linux;
diff --git a/pkgs/games/uhexen2/default.nix b/pkgs/games/uhexen2/default.nix
index 1a43679bd127e..1d44b16c3aef9 100644
--- a/pkgs/games/uhexen2/default.nix
+++ b/pkgs/games/uhexen2/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     broken = stdenv.isDarwin;
-    description = "A cross-platform port of Hexen II game";
+    description = "Cross-platform port of Hexen II game";
     longDescription = ''
       Hammer of Thyrion (uHexen2) is a cross-platform port of Raven Software's Hexen II source.
       It is based on an older linux port, Anvil of Thyrion.
diff --git a/pkgs/games/ultrastardx/default.nix b/pkgs/games/ultrastardx/default.nix
index e7401ac9dfbe3..7708652d22b31 100644
--- a/pkgs/games/ultrastardx/default.nix
+++ b/pkgs/games/ultrastardx/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , autoreconfHook
 , fetchFromGitHub
-, fetchpatch
 , pkg-config
 , lua
 , fpc
@@ -31,13 +30,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "ultrastardx";
-  version = "2024.3.0";
+  version = "2024.5.1";
 
   src = fetchFromGitHub {
     owner = "UltraStar-Deluxe";
     repo = "USDX";
     rev = "v${version}";
-    hash = "sha256-0+7PMSnQoNu6tcR9MB6b94fWlMRvH10ySUhdSicWU8U=";
+    hash = "sha256-HtvKy3uQwIO2BiLUqIcv9crf9Ngq0dmYOm6E8Gm2EHs=";
   };
 
   nativeBuildInputs = [ pkg-config autoreconfHook ];
diff --git a/pkgs/games/umoria/default.nix b/pkgs/games/umoria/default.nix
index 91097ca542763..c6302eba34bfd 100644
--- a/pkgs/games/umoria/default.nix
+++ b/pkgs/games/umoria/default.nix
@@ -63,7 +63,7 @@ gcc9Stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://umoria.org/";
-    description = "The Dungeons of Moria - the original roguelike";
+    description = "Dungeons of Moria - the original roguelike";
     mainProgram = "umoria";
     longDescription = ''
       The Dungeons of Moria is a single player dungeon simulation originally written
diff --git a/pkgs/games/unvanquished/default.nix b/pkgs/games/unvanquished/default.nix
index 628c72a24a926..95603a9559fb0 100644
--- a/pkgs/games/unvanquished/default.nix
+++ b/pkgs/games/unvanquished/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , fetchzip
 , fetchFromGitHub
-, fetchpatch
 , SDL2
 , buildFHSEnv
 , cmake
@@ -220,7 +219,7 @@ in stdenv.mkDerivation rec {
   meta = {
     homepage = "https://unvanquished.net/";
     downloadPage = "https://unvanquished.net/download/";
-    description = "A fast paced, first person strategy game";
+    description = "Fast paced, first person strategy game";
     # don't replace the following lib.licenses.zlib with just "zlib",
     # or you would end up with the package instead
     license = with lib.licenses; [
diff --git a/pkgs/games/urbanterror/default.nix b/pkgs/games/urbanterror/default.nix
index a1bf80784d03b..cce5deaac246d 100644
--- a/pkgs/games/urbanterror/default.nix
+++ b/pkgs/games/urbanterror/default.nix
@@ -98,7 +98,7 @@ stdenv.mkDerivation {
   ];
 
   meta = {
-    description = "A multiplayer tactical FPS on top of Quake 3 engine";
+    description = "Multiplayer tactical FPS on top of Quake 3 engine";
     homepage = "https://www.urbanterror.info";
     license = lib.licenses.unfreeRedistributable;
     longDescription = ''
diff --git a/pkgs/games/ut2004/demo.nix b/pkgs/games/ut2004/demo.nix
index 5203453cc6010..caa6651e457fb 100644
--- a/pkgs/games/ut2004/demo.nix
+++ b/pkgs/games/ut2004/demo.nix
@@ -31,7 +31,7 @@ in stdenv.mkDerivation rec {
   dontPatchELF = true;
 
   meta = with lib; {
-    description = "A first-person shooter video game developed by Epic Games and Digital Extreme -- demo version";
+    description = "First-person shooter video game developed by Epic Games and Digital Extreme -- demo version";
     homepage = "http://www.unrealtournament2004.com";
     license = licenses.unfree;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/games/vassal/default.nix b/pkgs/games/vassal/default.nix
index 31996a30c1fe6..45b1e6f68e4ef 100644
--- a/pkgs/games/vassal/default.nix
+++ b/pkgs/games/vassal/default.nix
@@ -4,16 +4,16 @@
 , glib
 , jre
 , makeWrapper
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 stdenv.mkDerivation rec {
   pname = "VASSAL";
-  version = "3.7.10";
+  version = "3.7.12";
 
   src = fetchzip {
     url = "https://github.com/vassalengine/vassal/releases/download/${version}/${pname}-${version}-linux.tar.bz2";
-    sha256 = "sha256-cQ2tLd3KU46qe/PrMPh3I3+KQxNGBB4WbRfPHpT9IVA=";
+    sha256 = "sha256-pNpDaGx/h3W+AsX965zu3zZ94kMYvh1pV8C8qYN0imc=";
   };
 
   buildInputs = [
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     makeWrapper
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   installPhase = ''
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
   forceShare = [ "man" "info" ];
 
   meta = with lib; {
-      description = "A free, open-source boardgame engine";
+      description = "Free, open-source boardgame engine";
       homepage = "https://vassalengine.org/";
       sourceProvenance = with sourceTypes; [ binaryBytecode ];
       license = licenses.lgpl21Only;
diff --git a/pkgs/games/vcmi/default.nix b/pkgs/games/vcmi/default.nix
index ec6905e2d1304..dbbb3891f51cf 100644
--- a/pkgs/games/vcmi/default.nix
+++ b/pkgs/games/vcmi/default.nix
@@ -20,6 +20,7 @@
 , tbb
 , unshield
 , wrapQtAppsHook
+, xz
 , zlib
 , testers
 , vcmi
@@ -27,13 +28,14 @@
 
 stdenv.mkDerivation rec {
   pname = "vcmi";
-  version = "1.4.5";
+  version = "1.5.3";
 
   src = fetchFromGitHub {
     owner = "vcmi";
     repo = "vcmi";
     rev = version;
-    hash = "sha256-nyYzG0O7tZwo77r7QwenVgaTffZ3ELEyUrkZmdvwm/w=";
+    fetchSubmodules = true;
+    hash = "sha256-P1Rt7VvLaesAQ5JEHv+3cG51EzDAwhcQ45RTcvYlKVc=";
   };
 
   nativeBuildInputs = [
@@ -57,13 +59,14 @@ stdenv.mkDerivation rec {
     qtbase
     qttools
     tbb
+    xz
     zlib
   ];
 
   cmakeFlags = [
     "-DENABLE_LUA:BOOL=ON"
     "-DENABLE_ERM:BOOL=ON"
-    "-DENABLE_GITVERSION:BOOL=OFF"
+    "-DENABLE_GOLDMASTER:BOOL=ON"
     "-DENABLE_PCH:BOOL=OFF"
     "-DENABLE_TEST:BOOL=OFF" # Tests require HOMM3 data files.
     "-DFORCE_BUNDLED_MINIZIP:BOOL=OFF"
@@ -88,7 +91,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    description = "An open-source engine for Heroes of Might and Magic III";
+    description = "Open-source engine for Heroes of Might and Magic III";
     homepage = "https://vcmi.eu";
     changelog = "https://github.com/vcmi/vcmi/blob/${src.rev}/ChangeLog.md";
     license = with licenses; [ gpl2Plus cc-by-sa-40 ];
diff --git a/pkgs/games/vessel/default.nix b/pkgs/games/vessel/default.nix
index 7c535cb323ec7..42408cd042aa0 100644
--- a/pkgs/games/vessel/default.nix
+++ b/pkgs/games/vessel/default.nix
@@ -69,7 +69,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A fluid physics based puzzle game";
+    description = "Fluid physics based puzzle game";
     longDescription = ''
       Living liquid machines have overrun this world of unstoppable progress,
       and it is the role of their inventor, Arkwright, to stop the chaos they are
diff --git a/pkgs/games/vimgolf/default.nix b/pkgs/games/vimgolf/default.nix
index 2847ff7dd3bfd..917dd3ffdfa94 100644
--- a/pkgs/games/vimgolf/default.nix
+++ b/pkgs/games/vimgolf/default.nix
@@ -8,7 +8,7 @@ bundlerApp {
   passthru.updateScript = bundlerUpdateScript "vimgolf";
 
   meta = with lib; {
-    description = "A game that tests Vim efficiency";
+    description = "Game that tests Vim efficiency";
     homepage = "https://vimgolf.com";
     license = licenses.mit;
     maintainers = with maintainers; [ leungbk ];
diff --git a/pkgs/games/vintagestory/default.nix b/pkgs/games/vintagestory/default.nix
index 7134139c62505..b32417d7754bf 100644
--- a/pkgs/games/vintagestory/default.nix
+++ b/pkgs/games/vintagestory/default.nix
@@ -20,11 +20,11 @@
 
 stdenv.mkDerivation rec {
   pname = "vintagestory";
-  version = "1.19.7";
+  version = "1.19.8";
 
   src = fetchurl {
     url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${version}.tar.gz";
-    hash = "sha256-C+vPsoMlo6EKmzf+XkvIhrDGG7EccU8c36GZt0/1r1Q=";
+    hash = "sha256-R6J+ACYDQpOzJZFBizsQGOexR7lMyeoZqz9TnWxfwyM=";
   };
 
 
@@ -83,7 +83,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "An in-development indie sandbox game about innovation and exploration";
+    description = "In-development indie sandbox game about innovation and exploration";
     homepage = "https://www.vintagestory.at/";
     license = licenses.unfree;
     maintainers = with maintainers; [ artturin gigglesquid ];
diff --git a/pkgs/games/vms-empire/default.nix b/pkgs/games/vms-empire/default.nix
deleted file mode 100644
index 9da37789f7cd4..0000000000000
--- a/pkgs/games/vms-empire/default.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, ncurses
-, xmlto
-, docbook_xml_dtd_44
-, docbook_xsl
-, installShellFiles
-}:
-
-stdenv.mkDerivation rec {
-  pname = "vms-empire";
-  version = "1.16";
-
-  src = fetchurl{
-    url = "http://www.catb.org/~esr/${pname}/${pname}-${version}.tar.gz";
-    hash = "sha256-XETIbt/qVU+TpamPc2WQynqqUuZqkTUnItBprjg+gPk=";
-  };
-
-  nativeBuildInputs = [ installShellFiles ];
-  buildInputs = [
-    ncurses
-    xmlto
-    docbook_xml_dtd_44
-    docbook_xsl
-  ];
-
-  postBuild = ''
-    xmlto man vms-empire.xml
-    xmlto html-nochunks vms-empire.xml
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -D vms-empire -t ${placeholder "out"}/bin/
-    install -D vms-empire.html -t ${placeholder "out"}/share/doc/${pname}/
-    install -D vms-empire.desktop -t ${placeholder "out"}/share/applications/
-    install -D vms-empire.png -t ${placeholder "out"}/share/icons/hicolor/48x48/apps/
-    install -D vms-empire.xml -t ${placeholder "out"}/share/appdata/
-    installManPage empire.6
-    runHook postInstall
-  '';
-
-  hardeningDisable = [ "format" ];
-
-  meta = with lib; {
-    homepage = "http://catb.org/~esr/vms-empire/";
-    description = "The ancestor of all expand/explore/exploit/exterminate games";
-    mainProgram = "vms-empire";
-    longDescription = ''
-      Empire is a simulation of a full-scale war between two emperors, the
-      computer and you. Naturally, there is only room for one, so the object of
-      the game is to destroy the other. The computer plays by the same rules
-      that you do. This game was ancestral to all later
-      expand/explore/exploit/exterminate games, including Civilization and
-      Master of Orion.
-    '';
-    license = licenses.gpl2Only;
-    maintainers = [ maintainers.AndersonTorres ];
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/games/warzone2100/default.nix b/pkgs/games/warzone2100/default.nix
index a39b7915b187b..2d16cb5c73191 100644
--- a/pkgs/games/warzone2100/default.nix
+++ b/pkgs/games/warzone2100/default.nix
@@ -122,7 +122,7 @@ stdenv.mkDerivation (finalAttrs: {
   };
 
   meta = with lib; {
-    description = "A free RTS game, originally developed by Pumpkin Studios";
+    description = "Free RTS game, originally developed by Pumpkin Studios";
     mainProgram = "warzone2100";
     longDescription = ''
         Warzone 2100 is an open source real-time strategy and real-time tactics
diff --git a/pkgs/games/wesnoth/default.nix b/pkgs/games/wesnoth/default.nix
index 54a7aaa822c32..9106ad9f425b9 100644
--- a/pkgs/games/wesnoth/default.nix
+++ b/pkgs/games/wesnoth/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework AppKit";
 
   meta = with lib; {
-    description = "The Battle for Wesnoth, a free, turn-based strategy game with a fantasy theme";
+    description = "Battle for Wesnoth, a free, turn-based strategy game with a fantasy theme";
     longDescription = ''
       The Battle for Wesnoth is a Free, turn-based tactical strategy
       game with a high fantasy theme, featuring both single-player, and
diff --git a/pkgs/games/widelands/default.nix b/pkgs/games/widelands/default.nix
index 324f388e716e9..0be50f2b8be12 100644
--- a/pkgs/games/widelands/default.nix
+++ b/pkgs/games/widelands/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, fetchpatch
 , pkg-config # needed to find minizip
 , SDL2
 , SDL2_image
diff --git a/pkgs/games/wipeout-rewrite/default.nix b/pkgs/games/wipeout-rewrite/default.nix
index 16703fad517b2..99e7d9b9d31c1 100644
--- a/pkgs/games/wipeout-rewrite/default.nix
+++ b/pkgs/games/wipeout-rewrite/default.nix
@@ -62,7 +62,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     mainProgram = "wipegame";
-    description = "A re-implementation of the 1995 PSX game wipEout";
+    description = "Re-implementation of the 1995 PSX game wipEout";
     homepage = "https://github.com/phoboslab/wipeout-rewrite";
     license = licenses.unfree;
     maintainers = with maintainers; [ OPNA2608 ];
diff --git a/pkgs/games/worldofgoo/default.nix b/pkgs/games/worldofgoo/default.nix
index 06f6b71172aeb..123e296f5e0a9 100644
--- a/pkgs/games/worldofgoo/default.nix
+++ b/pkgs/games/worldofgoo/default.nix
@@ -35,7 +35,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ unzip ];
   sourceRoot = pname;
-  phases = [ "unpackPhase installPhase" ];
 
   libPath = lib.makeLibraryPath [ stdenv.cc.cc.lib stdenv.cc.libc SDL2 SDL2_mixer
     libogg libvorbis ];
@@ -61,7 +60,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A physics based puzzle game";
+    description = "Physics based puzzle game";
     longDescription = ''
       World of Goo is a physics based puzzle / construction game. The millions of Goo
       Balls who live in the beautiful World of Goo don't know that they are in a
diff --git a/pkgs/games/wyvern/default.nix b/pkgs/games/wyvern/default.nix
index 705d6a33db5fa..5afee81c6c0c8 100644
--- a/pkgs/games/wyvern/default.nix
+++ b/pkgs/games/wyvern/default.nix
@@ -23,7 +23,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [ openssl ];
 
   meta = with lib; {
-    description = "A simple CLI client for installing and maintaining linux GOG games";
+    description = "Simple CLI client for installing and maintaining linux GOG games";
     mainProgram = "wyvern";
     homepage = "https://git.sr.ht/~nicohman/wyvern";
     license = licenses.gpl3;
diff --git a/pkgs/games/xconq/default.nix b/pkgs/games/xconq/default.nix
index 78a7949d1a911..4c4f441964dd6 100644
--- a/pkgs/games/xconq/default.nix
+++ b/pkgs/games/xconq/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A programmable turn-based strategy game";
+    description = "Programmable turn-based strategy game";
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.unix;
     license = licenses.gpl2;
diff --git a/pkgs/games/xjump/default.nix b/pkgs/games/xjump/default.nix
index 2113ffbda116e..93f999bce2708 100644
--- a/pkgs/games/xjump/default.nix
+++ b/pkgs/games/xjump/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
   configureFlags = lib.optionals (localStateDir != null) ["--localstatedir=${localStateDir}"];
 
   meta = with lib; {
-    description = "The falling tower game";
+    description = "Falling tower game";
     mainProgram = "xjump";
     license = licenses.gpl2;
     maintainers = with maintainers; [ pmeunier ];
diff --git a/pkgs/games/xmoto/default.nix b/pkgs/games/xmoto/default.nix
index 23ed54e6b8e49..615b30fc644e6 100644
--- a/pkgs/games/xmoto/default.nix
+++ b/pkgs/games/xmoto/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    description = "A challenging 2D motocross platform game, where physics play an important role";
+    description = "Challenging 2D motocross platform game, where physics play an important role";
     mainProgram = "xmoto";
     longDescription = ''
       X-Moto is a challenging 2D motocross platform game, where physics plays an all important role in the gameplay.
diff --git a/pkgs/games/xpilot/bloodspilot-client.nix b/pkgs/games/xpilot/bloodspilot-client.nix
index 58eb7e8151645..baf51d96a0283 100644
--- a/pkgs/games/xpilot/bloodspilot-client.nix
+++ b/pkgs/games/xpilot/bloodspilot-client.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   NIX_LDFLAGS = "-lX11";
 
   meta = {
-    description = "A multiplayer space combat game (client part)";
+    description = "Multiplayer space combat game (client part)";
     mainProgram = "bloodspilot-client-sdl";
     homepage = "http://bloodspilot.sf.net/";
     license = lib.licenses.gpl2Plus ;
diff --git a/pkgs/games/xpilot/bloodspilot-server.nix b/pkgs/games/xpilot/bloodspilot-server.nix
index 495412c0eab46..509da8eabbe01 100644
--- a/pkgs/games/xpilot/bloodspilot-server.nix
+++ b/pkgs/games/xpilot/bloodspilot-server.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = "A multiplayer X11 space combat game (server part)";
+    description = "Multiplayer X11 space combat game (server part)";
     mainProgram = "xpilots";
     homepage = "http://bloodspilot.sf.net/";
     license = licenses.gpl2Plus ;
diff --git a/pkgs/games/xpilot/default.nix b/pkgs/games/xpilot/default.nix
index bd86538d99ec0..009ba7a7a7240 100644
--- a/pkgs/games/xpilot/default.nix
+++ b/pkgs/games/xpilot/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     libX11 libSM SDL SDL_ttf SDL_image libGLU libGL expat zlib libXxf86misc
   ];
   meta = with lib; {
-    description = "A multiplayer X11 space combat game";
+    description = "Multiplayer X11 space combat game";
     homepage = "http://xpilot.sf.net/";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.raskin ];
diff --git a/pkgs/games/xskat/default.nix b/pkgs/games/xskat/default.nix
index 6f28a6846ea75..993070c89c96c 100644
--- a/pkgs/games/xskat/default.nix
+++ b/pkgs/games/xskat/default.nix
@@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
     sha256 = "8ba52797ccbd131dce69b96288f525b0d55dee5de4008733f7a5a51deb831c10";
   };
 
+  env.NIX_CFLAGS_COMPILE = "-Wno-implicit-int";
+
   preInstall = ''
     sed -i Makefile \
       -e "s|.* BINDIR .*|   BINDIR = $out/bin|" \
diff --git a/pkgs/games/xsnow/default.nix b/pkgs/games/xsnow/default.nix
index fe744375d79b8..ba9791cc6f1a3 100644
--- a/pkgs/games/xsnow/default.nix
+++ b/pkgs/games/xsnow/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = with lib; {
-    description = "An X-windows application that will let it snow on the root, in between and on windows";
+    description = "X-windows application that will let it snow on the root, in between and on windows";
     mainProgram = "xsnow";
     homepage = "https://ratrabbit.nl/ratrabbit/xsnow/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/games/xsok/default.nix b/pkgs/games/xsok/default.nix
index 51ca06a9091c1..a89d74f33a159 100644
--- a/pkgs/games/xsok/default.nix
+++ b/pkgs/games/xsok/default.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "A generic Sokoban game for X11";
+    description = "Generic Sokoban game for X11";
     mainProgram = "xsok";
     license = lib.licenses.gpl2Plus;
     maintainers = [lib.maintainers.raskin];
diff --git a/pkgs/games/xtris/default.nix b/pkgs/games/xtris/default.nix
index 2263a46187e94..25c93df7ff4b2 100644
--- a/pkgs/games/xtris/default.nix
+++ b/pkgs/games/xtris/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
 
   meta = with lib; {
-    description = "A multi-player version of the classical game of Tetris, for the X Window system";
+    description = "Multi-player version of the classical game of Tetris, for the X Window system";
     homepage = "https://web.archive.org/web/20120315061213/http://www.iagora.com/~espel/xtris/xtris.html";
     license = licenses.gpl2;
     platforms = platforms.unix;
diff --git a/pkgs/games/zaz/default.nix b/pkgs/games/zaz/default.nix
index 9cfbad23c278a..3af6f069a5aa1 100644
--- a/pkgs/games/zaz/default.nix
+++ b/pkgs/games/zaz/default.nix
@@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     broken = stdenv.isDarwin;
-    description = "A puzzle game about arranging balls in triplets, like Luxor, Zuma, or Puzzle Bobble";
+    description = "Puzzle game about arranging balls in triplets, like Luxor, Zuma, or Puzzle Bobble";
     homepage = "https://zaz.sourceforge.net/";
     license = licenses.gpl3;
     maintainers = with maintainers; [ fgaz ];