about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games')
-rw-r--r--nixpkgs/pkgs/games/0verkill/default.nix39
-rw-r--r--nixpkgs/pkgs/games/20kly/default.nix2
-rw-r--r--nixpkgs/pkgs/games/abuse/abuse.sh18
-rw-r--r--nixpkgs/pkgs/games/abuse/default.nix54
-rw-r--r--nixpkgs/pkgs/games/alephone/default.nix2
-rw-r--r--nixpkgs/pkgs/games/armagetronad/default.nix38
-rw-r--r--nixpkgs/pkgs/games/boohu/default.nix2
-rw-r--r--nixpkgs/pkgs/games/chessx/default.nix2
-rw-r--r--nixpkgs/pkgs/games/chiaki/default.nix6
-rw-r--r--nixpkgs/pkgs/games/cockatrice/default.nix2
-rw-r--r--nixpkgs/pkgs/games/crawl/default.nix4
-rw-r--r--nixpkgs/pkgs/games/eidolon/default.nix2
-rw-r--r--nixpkgs/pkgs/games/endgame-singularity/default.nix2
-rw-r--r--nixpkgs/pkgs/games/enyo-doom/default.nix2
-rw-r--r--nixpkgs/pkgs/games/factorio/default.nix2
-rw-r--r--nixpkgs/pkgs/games/factorio/mods.nix2
-rw-r--r--nixpkgs/pkgs/games/factorio/versions.json48
-rw-r--r--nixpkgs/pkgs/games/freeciv/default.nix7
-rw-r--r--nixpkgs/pkgs/games/freedroid/default.nix53
-rw-r--r--nixpkgs/pkgs/games/frogatto/default.nix2
-rw-r--r--nixpkgs/pkgs/games/frozen-bubble/default.nix18
-rw-r--r--nixpkgs/pkgs/games/gimx/default.nix72
-rw-r--r--nixpkgs/pkgs/games/gimx/ds4.patch16
-rw-r--r--nixpkgs/pkgs/games/gimx/env.patch30
-rw-r--r--nixpkgs/pkgs/games/gimx/variant.nix14
-rw-r--r--nixpkgs/pkgs/games/gscrabble/default.nix2
-rw-r--r--nixpkgs/pkgs/games/gshogi/default.nix2
-rw-r--r--nixpkgs/pkgs/games/gzdoom/default.nix10
-rw-r--r--nixpkgs/pkgs/games/harmonist/default.nix2
-rw-r--r--nixpkgs/pkgs/games/hhexen/default.nix22
-rw-r--r--nixpkgs/pkgs/games/legendary-gl/default.nix11
-rw-r--r--nixpkgs/pkgs/games/lunar-client/default.nix2
-rw-r--r--nixpkgs/pkgs/games/mindustry/default.nix29
-rw-r--r--nixpkgs/pkgs/games/minecraft/default.nix4
-rw-r--r--nixpkgs/pkgs/games/multimc/default.nix2
-rw-r--r--nixpkgs/pkgs/games/openmw/default.nix1
-rw-r--r--nixpkgs/pkgs/games/openra/common.nix2
-rw-r--r--nixpkgs/pkgs/games/openra/mods.nix1
-rw-r--r--nixpkgs/pkgs/games/osu-lazer/default.nix17
-rw-r--r--nixpkgs/pkgs/games/osu-lazer/deps.nix977
-rw-r--r--nixpkgs/pkgs/games/osu-lazer/osu.runtimeconfig.json4
-rwxr-xr-xnixpkgs/pkgs/games/osu-lazer/update.sh2
-rw-r--r--nixpkgs/pkgs/games/papermc/default.nix8
-rw-r--r--nixpkgs/pkgs/games/performous/default.nix4
-rw-r--r--nixpkgs/pkgs/games/pioneer/default.nix4
-rw-r--r--nixpkgs/pkgs/games/pokerth/default.nix2
-rw-r--r--nixpkgs/pkgs/games/portmod/default.nix2
-rw-r--r--nixpkgs/pkgs/games/pro-office-calculator/default.nix2
-rw-r--r--nixpkgs/pkgs/games/pysolfc/default.nix2
-rw-r--r--nixpkgs/pkgs/games/snipes/default.nix6
-rw-r--r--nixpkgs/pkgs/games/steam/fhsenv.nix4
-rw-r--r--nixpkgs/pkgs/games/stockfish/default.nix25
-rw-r--r--nixpkgs/pkgs/games/super-tux-kart/default.nix71
-rw-r--r--nixpkgs/pkgs/games/the-butterfly-effect/default.nix2
-rw-r--r--nixpkgs/pkgs/games/trackballs/default.nix3
-rw-r--r--nixpkgs/pkgs/games/ue4/default.nix3
-rw-r--r--nixpkgs/pkgs/games/unciv/default.nix4
-rw-r--r--nixpkgs/pkgs/games/vitetris/default.nix4
-rw-r--r--nixpkgs/pkgs/games/warzone2100/default.nix90
-rw-r--r--nixpkgs/pkgs/games/wesnoth/default.nix4
-rw-r--r--nixpkgs/pkgs/games/widelands/default.nix12
-rw-r--r--nixpkgs/pkgs/games/wyvern/default.nix2
62 files changed, 991 insertions, 792 deletions
diff --git a/nixpkgs/pkgs/games/0verkill/default.nix b/nixpkgs/pkgs/games/0verkill/default.nix
new file mode 100644
index 000000000000..69a371f09d9f
--- /dev/null
+++ b/nixpkgs/pkgs/games/0verkill/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, xorgproto
+, libX11
+, libXpm
+}:
+
+stdenv.mkDerivation rec {
+  pname = "0verkill";
+  version = "unstable-2011-01-13";
+
+  src = fetchFromGitHub {
+    owner = "hackndev";
+    repo = pname;
+    rev = "522f11a3e40670bbf85e0fada285141448167968";
+    sha256 = "WO7PN192HhcDl6iHIbVbH7MVMi1Tl2KyQbDa9DWRO6M=";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ libX11 xorgproto libXpm ];
+
+  configureFlags = [ "--with-x" ];
+
+  preAutoreconf = ''
+    autoupdate
+  '';
+
+  hardeningDisable = [ "all" ]; # Someday the upstream will update the code...
+
+  meta = with lib; {
+    homepage = "https://github.com/hackndev/0verkill";
+    description = "ASCII-ART bloody 2D action deathmatch-like game";
+    license = with licenses; gpl2Only;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/games/20kly/default.nix b/nixpkgs/pkgs/games/20kly/default.nix
index e8778d7bebcf..092e0e4eac27 100644
--- a/nixpkgs/pkgs/games/20kly/default.nix
+++ b/nixpkgs/pkgs/games/20kly/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv
+{ lib
 , fetchurl
 , python }:
 
diff --git a/nixpkgs/pkgs/games/abuse/abuse.sh b/nixpkgs/pkgs/games/abuse/abuse.sh
new file mode 100644
index 000000000000..de837d27181f
--- /dev/null
+++ b/nixpkgs/pkgs/games/abuse/abuse.sh
@@ -0,0 +1,18 @@
+#! @shell@
+
+if grep datadir ~/.abuse/abuserc &>/dev/null; then
+  if [ ! -d "$(grep datadir ~/.abuse/abuserc | cut -d= -f2)" ]; then
+    echo "Warning: ~/.abuse/abuserc references a datadir which is not existent." >&2
+    echo "Try removing ~/.abuse/abuserc, else abuse will most likely not run." >&2
+    echo >&2
+    # This can happen if the build hash of abuse changes and the older version
+    # is garbage-collected. The correct path of the datadir is compiled into
+    # the binary, but unfortunately abuse writes out the path into abuserc on
+    # first start. This entry may later become stale.
+  fi
+fi
+
+# The timidity bundled into SDL_mixer looks in . and in several global places
+# like /etc for its configuration file.
+cd @out@/etc
+exec @out@/bin/.abuse-bin "$@"
diff --git a/nixpkgs/pkgs/games/abuse/default.nix b/nixpkgs/pkgs/games/abuse/default.nix
new file mode 100644
index 000000000000..2e863022a68b
--- /dev/null
+++ b/nixpkgs/pkgs/games/abuse/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, fetchurl, makeDesktopItem, copyDesktopItems, SDL, SDL_mixer, freepats }:
+
+stdenv.mkDerivation rec {
+  pname   = "abuse";
+  version = "0.8";
+
+  src = fetchurl {
+    url    = "http://abuse.zoy.org/raw-attachment/wiki/download/${pname}-${version}.tar.gz";
+    sha256 = "0104db5fd2695c9518583783f7aaa7e5c0355e27c5a803840a05aef97f9d3488";
+  };
+
+  configureFlags = [
+    "--with-x"
+    "--with-assetdir=$(out)/orig"
+    # The "--enable-debug" is to work around a segfault on start, see https://bugs.archlinux.org/task/52915.
+    "--enable-debug"
+  ];
+
+  desktopItems = [ (makeDesktopItem {
+    name = "abuse";
+    exec = "abuse";
+    icon = "abuse";
+    desktopName = "Abuse";
+    comment     = "Side-scroller action game that pits you against ruthless alien killers";
+    categories  = "Game;ActionGame;";
+  }) ];
+
+  postInstall = ''
+    mkdir $out/etc
+    echo -e "dir ${freepats}\nsource ${freepats}/freepats.cfg" > $out/etc/timidity.cfg
+
+    mv $out/bin/abuse $out/bin/.abuse-bin
+    substituteAll "${./abuse.sh}" $out/bin/abuse
+    chmod +x $out/bin/abuse
+
+    install -Dm644 doc/abuse.png $out/share/pixmaps/abuse.png
+  '';
+
+  nativeBuildInputs = [ copyDesktopItems ];
+  buildInputs       = [ SDL SDL_mixer freepats ];
+
+  meta = with lib; {
+    description = "Side-scroller action game that pits you against ruthless alien killers";
+    homepage    = "http://abuse.zoy.org/";
+    license     = with licenses; [ unfree ];
+    # Most of abuse is free (public domain, GPL2+, WTFPL), however the creator
+    # of its sfx and music only gave Debian permission to redistribute the
+    # files. Our friends from Debian thought about it some more:
+    # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648272
+    maintainers = with maintainers; [ iblech ];
+    platforms   = platforms.unix;
+    broken      = stdenv.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/games/alephone/default.nix b/nixpkgs/pkgs/games/alephone/default.nix
index efd26d1c4f0a..6562a60a5be4 100644
--- a/nixpkgs/pkgs/games/alephone/default.nix
+++ b/nixpkgs/pkgs/games/alephone/default.nix
@@ -96,5 +96,5 @@ in self // {
         license = lib.licenses.free;
         hydraPlatforms = [ ];
       } // meta;
-    });
+    } // extraArgs);
 }
diff --git a/nixpkgs/pkgs/games/armagetronad/default.nix b/nixpkgs/pkgs/games/armagetronad/default.nix
index e271db867340..27f509c3f72a 100644
--- a/nixpkgs/pkgs/games/armagetronad/default.nix
+++ b/nixpkgs/pkgs/games/armagetronad/default.nix
@@ -1,30 +1,42 @@
-{ lib, stdenv, fetchurl, SDL, libxml2, SDL_image, libjpeg, libpng, libGLU, libGL, zlib }:
+{ lib, stdenv, fetchurl
+, pkg-config, SDL, libxml2, SDL_image, libjpeg, libpng, libGLU, libGL, zlib
+, dedicatedServer ? false }:
 
 let
-  versionMajor = "0.2.8";
-  versionMinor = "3.5";
+  versionMajor = "0.2.9";
+  versionMinor = "1.0";
   version = "${versionMajor}.${versionMinor}";
 in
-
 stdenv.mkDerivation {
-  pname = "armagetron";
+  pname = if dedicatedServer then "armagetronad-dedicated" else "armagetronad";
   inherit version;
   src = fetchurl {
-    url = "https://launchpad.net/armagetronad/${versionMajor}/${versionMajor}.${versionMinor}/+download/armagetronad-${version}.src.tar.bz2";
-    sha256 = "1vyja7mzivs3pacxb7kznndsgqhq4p0f7x2zg55dckvzqwprdhqx";
+    url = "https://launchpad.net/armagetronad/${versionMajor}/${version}/+download/armagetronad-${version}.tbz";
+    sha256 = "sha256-WbbHwBzj+MylQ34z+XSmN1KVQaEapPUsGlwXSZ4m9qE";
   };
 
-  NIX_LDFLAGS = "-lSDL_image";
-
   enableParallelBuilding = true;
 
-  configureFlags = [ "--disable-etc" ];
-  buildInputs = [ SDL SDL_image libxml2 libjpeg libpng libGLU libGL zlib ];
+  configureFlags = [
+    "--enable-memmanager"
+    "--enable-automakedefaults"
+    "--disable-useradd"
+    "--disable-initscripts"
+    "--disable-etc"
+    "--disable-uninstall"
+    "--disable-sysinstall"
+  ] ++ lib.optional dedicatedServer "--enable-dedicated";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ libxml2 zlib ]
+    ++ lib.optionals (!dedicatedServer) [ SDL SDL_image libxml2 libjpeg libpng libGLU libGL ];
 
   meta = with lib; {
     homepage = "http://armagetronad.org";
-    description = "An multiplayer networked arcade racing game in 3D similar to Tron";
-    license = licenses.gpl2;
+    description = "A multiplayer networked arcade racing game in 3D similar to Tron";
+    maintainers = with maintainers; [ numinit ];
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/games/boohu/default.nix b/nixpkgs/pkgs/games/boohu/default.nix
index 9b46420d5fff..831893536453 100644
--- a/nixpkgs/pkgs/games/boohu/default.nix
+++ b/nixpkgs/pkgs/games/boohu/default.nix
@@ -1,4 +1,4 @@
-{lib, stdenv, fetchurl, buildGoPackage}:
+{lib, fetchurl, buildGoPackage}:
 
 buildGoPackage rec {
 
diff --git a/nixpkgs/pkgs/games/chessx/default.nix b/nixpkgs/pkgs/games/chessx/default.nix
index f63f6362558e..fb7c7fddf095 100644
--- a/nixpkgs/pkgs/games/chessx/default.nix
+++ b/nixpkgs/pkgs/games/chessx/default.nix
@@ -1,5 +1,5 @@
 { mkDerivation
-, lib, stdenv
+, lib
 , pkg-config
 , zlib
 , qtbase
diff --git a/nixpkgs/pkgs/games/chiaki/default.nix b/nixpkgs/pkgs/games/chiaki/default.nix
index 33abfe644651..ef454e500064 100644
--- a/nixpkgs/pkgs/games/chiaki/default.nix
+++ b/nixpkgs/pkgs/games/chiaki/default.nix
@@ -18,13 +18,13 @@
 
 mkDerivation rec {
   pname = "chiaki";
-  version = "2.0.1";
+  version = "2.1.0";
 
   src = fetchgit {
     url = "https://git.sr.ht/~thestr4ng3r/chiaki";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "0l532i9j6wmzbxqx7fg69kgfd1zy1r1wlw6f756vpxpgswivi892";
+    sha256 = "1hgh2j71rch53cnpm3f195gpfgrb4hd0yqa810k3ikar8zl4h7sd";
   };
 
   nativeBuildInputs = [
@@ -57,7 +57,7 @@ mkDerivation rec {
   meta = with lib; {
     homepage = "https://git.sr.ht/~thestr4ng3r/chiaki";
     description = "Free and Open Source PlayStation Remote Play Client";
-    license = licenses.gpl3Plus;
+    license = licenses.agpl3Only;
     maintainers = with maintainers; [ delroth ];
     platforms = platforms.all;
   };
diff --git a/nixpkgs/pkgs/games/cockatrice/default.nix b/nixpkgs/pkgs/games/cockatrice/default.nix
index d47e0d5521db..a657913aad76 100644
--- a/nixpkgs/pkgs/games/cockatrice/default.nix
+++ b/nixpkgs/pkgs/games/cockatrice/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, mkDerivation, cmake, protobuf
+{ lib, fetchFromGitHub, mkDerivation, cmake, protobuf
 , qtbase, qtmultimedia, qttools, qtwebsockets, wrapQtAppsHook
 }:
 
diff --git a/nixpkgs/pkgs/games/crawl/default.nix b/nixpkgs/pkgs/games/crawl/default.nix
index 8d16b2fe59cc..7b644aa71476 100644
--- a/nixpkgs/pkgs/games/crawl/default.nix
+++ b/nixpkgs/pkgs/games/crawl/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   name = "crawl-${version}${lib.optionalString tileMode "-tiles"}";
-  version = "0.26.0";
+  version = "0.26.1";
 
   src = fetchFromGitHub {
     owner = "crawl";
     repo = "crawl";
     rev = version;
-    sha256 = "0g0icmhppb6f5amf5r2ksfylrlipz2cd8gd85pmd05k463nrmwqi";
+    sha256 = "sha256-lh0lCMZRH+c6jSHjLFDU3wjy6Oyp59ZcPaqg5PWVrkk=";
   };
 
   # Patch hard-coded paths and remove force library builds
diff --git a/nixpkgs/pkgs/games/eidolon/default.nix b/nixpkgs/pkgs/games/eidolon/default.nix
index 3192976b0f62..dcb72d53b328 100644
--- a/nixpkgs/pkgs/games/eidolon/default.nix
+++ b/nixpkgs/pkgs/games/eidolon/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchgit, rustPlatform, pkg-config, openssl }:
+{ lib, fetchgit, rustPlatform, pkg-config, openssl }:
 
 rustPlatform.buildRustPackage rec {
   pname = "eidolon";
diff --git a/nixpkgs/pkgs/games/endgame-singularity/default.nix b/nixpkgs/pkgs/games/endgame-singularity/default.nix
index f220a85e0eb6..d6b153018723 100644
--- a/nixpkgs/pkgs/games/endgame-singularity/default.nix
+++ b/nixpkgs/pkgs/games/endgame-singularity/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv
+{ lib
 , fetchurl
 , fetchFromGitHub
 , unzip
diff --git a/nixpkgs/pkgs/games/enyo-doom/default.nix b/nixpkgs/pkgs/games/enyo-doom/default.nix
index 10cce9f3bf81..eeb4086f924e 100644
--- a/nixpkgs/pkgs/games/enyo-doom/default.nix
+++ b/nixpkgs/pkgs/games/enyo-doom/default.nix
@@ -1,4 +1,4 @@
-{ mkDerivation, lib, stdenv, fetchFromGitLab, cmake, qtbase }:
+{ mkDerivation, lib, fetchFromGitLab, cmake, qtbase }:
 
 mkDerivation rec {
   pname = "enyo-doom";
diff --git a/nixpkgs/pkgs/games/factorio/default.nix b/nixpkgs/pkgs/games/factorio/default.nix
index 9db8a95746d4..356cedd3507e 100644
--- a/nixpkgs/pkgs/games/factorio/default.nix
+++ b/nixpkgs/pkgs/games/factorio/default.nix
@@ -42,7 +42,7 @@ let
 
       releaseType=alpha
       version=0.17.74
-      nix-prefetch-url file://$HOME/Downloads/factorio_\''${releaseType}_x64_\''${version}.tar.xz --name factorio_\''${releaseType}_x64-\''${version}.tar.xz
+      nix-prefetch-url file://\''$HOME/Downloads/factorio_\''${releaseType}_x64_\''${version}.tar.xz --name factorio_\''${releaseType}_x64-\''${version}.tar.xz
 
     Note the ultimate "_" is replaced with "-" in the --name arg!
   '';
diff --git a/nixpkgs/pkgs/games/factorio/mods.nix b/nixpkgs/pkgs/games/factorio/mods.nix
index 8d9976689cc4..7327b9e22870 100644
--- a/nixpkgs/pkgs/games/factorio/mods.nix
+++ b/nixpkgs/pkgs/games/factorio/mods.nix
@@ -2,7 +2,7 @@
 # mods. It will eventually be replaced by a nixos-channel that will provide
 # derivations for most or all of the mods tracked through the official mod
 # manager site.
-{ lib, stdenv, fetchurl
+{ lib, fetchurl
 , factorio-utils
 , allRecommendedMods ? true
 , allOptionalMods ? false
diff --git a/nixpkgs/pkgs/games/factorio/versions.json b/nixpkgs/pkgs/games/factorio/versions.json
index 10a3e55a94fe..a8f49d599548 100644
--- a/nixpkgs/pkgs/games/factorio/versions.json
+++ b/nixpkgs/pkgs/games/factorio/versions.json
@@ -2,56 +2,56 @@
   "x86_64-linux": {
     "alpha": {
       "experimental": {
-        "name": "factorio_alpha_x64-1.1.12.tar.xz",
+        "name": "factorio_alpha_x64-1.1.21.tar.xz",
         "needsAuth": true,
-        "sha256": "1b6rccm3vvvgs1sky0nrm001hsrzahrd8hc0pgldgyk0i6g5bmss",
+        "sha256": "0js252wmny46s5fss8b4l83cyy3l5lqsnx31x9n9wqc9akr9c9w7",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.12/alpha/linux64",
-        "version": "1.1.12"
+        "url": "https://factorio.com/get-download/1.1.21/alpha/linux64",
+        "version": "1.1.21"
       },
       "stable": {
-        "name": "factorio_alpha_x64-1.0.0.tar.xz",
+        "name": "factorio_alpha_x64-1.1.21.tar.xz",
         "needsAuth": true,
-        "sha256": "0zixscff0svpb0yg8nzczp2z4filqqxi1k0z0nrpzn2hhzhf1464",
+        "sha256": "0js252wmny46s5fss8b4l83cyy3l5lqsnx31x9n9wqc9akr9c9w7",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.0.0/alpha/linux64",
-        "version": "1.0.0"
+        "url": "https://factorio.com/get-download/1.1.21/alpha/linux64",
+        "version": "1.1.21"
       }
     },
     "demo": {
       "experimental": {
-        "name": "factorio_demo_x64-1.1.12.tar.xz",
+        "name": "factorio_demo_x64-1.1.21.tar.xz",
         "needsAuth": false,
-        "sha256": "037lipqxgfxycjsjffgd6rnx3xv62r40fmkyarcclww3yi596zrw",
+        "sha256": "1z049ckiff6sv9f6xym5akmmn3gh37z9mr2wf8a70ch7j1i4z3fn",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.12/demo/linux64",
-        "version": "1.1.12"
+        "url": "https://factorio.com/get-download/1.1.21/demo/linux64",
+        "version": "1.1.21"
       },
       "stable": {
-        "name": "factorio_demo_x64-1.0.0.tar.xz",
+        "name": "factorio_demo_x64-1.1.21.tar.xz",
         "needsAuth": false,
-        "sha256": "0h9cqbp143w47zcl4qg4skns4cngq0k40s5jwbk0wi5asjz8whqn",
+        "sha256": "1z049ckiff6sv9f6xym5akmmn3gh37z9mr2wf8a70ch7j1i4z3fn",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.0.0/demo/linux64",
-        "version": "1.0.0"
+        "url": "https://factorio.com/get-download/1.1.21/demo/linux64",
+        "version": "1.1.21"
       }
     },
     "headless": {
       "experimental": {
-        "name": "factorio_headless_x64-1.1.12.tar.xz",
+        "name": "factorio_headless_x64-1.1.21.tar.xz",
         "needsAuth": false,
-        "sha256": "0chgv7ymsiz4rrjmp04ckdhk2yzgi4ly7rwl0nv2fswajhl7ngmf",
+        "sha256": "038342z429cavdp2q3mjczlprw83nca030mjlipjppr43bzg9db0",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.1.12/headless/linux64",
-        "version": "1.1.12"
+        "url": "https://factorio.com/get-download/1.1.21/headless/linux64",
+        "version": "1.1.21"
       },
       "stable": {
-        "name": "factorio_headless_x64-1.0.0.tar.xz",
+        "name": "factorio_headless_x64-1.1.21.tar.xz",
         "needsAuth": false,
-        "sha256": "0r0lplns8nxna2viv8qyx9mp4cckdvx6k20w2g2fwnj3jjmf3nc1",
+        "sha256": "038342z429cavdp2q3mjczlprw83nca030mjlipjppr43bzg9db0",
         "tarDirectory": "x64",
-        "url": "https://factorio.com/get-download/1.0.0/headless/linux64",
-        "version": "1.0.0"
+        "url": "https://factorio.com/get-download/1.1.21/headless/linux64",
+        "version": "1.1.21"
       }
     }
   }
diff --git a/nixpkgs/pkgs/games/freeciv/default.nix b/nixpkgs/pkgs/games/freeciv/default.nix
index de5f2751fd19..647a87d571b5 100644
--- a/nixpkgs/pkgs/games/freeciv/default.nix
+++ b/nixpkgs/pkgs/games/freeciv/default.nix
@@ -12,13 +12,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "freeciv";
-  version = "2.6.2.1";
+  version = "2.6.3";
 
   src = fetchFromGitHub {
     owner = "freeciv";
     repo = "freeciv";
     rev = "R${builtins.replaceStrings [ "." ] [ "_" ] version}";
-    sha256 = "1nra6b6sk2gciaw1fpwx7qa20hky8cwcdwlshcl1zsikg577hyg5";
+    sha256 = "sha256-tRjik2LONwKFZOcIuyFDoE1fD23UnZHMdNLo0DdYyOc=";
   };
 
   postPatch = ''
@@ -28,7 +28,8 @@ in stdenv.mkDerivation rec {
     done
   '';
 
-  nativeBuildInputs = [ autoreconfHook pkg-config ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ]
+    ++ optional qtClient [ qt5.wrapQtAppsHook ];
 
   buildInputs = [ lua5_3 zlib bzip2 curl lzma gettext libiconv ]
     ++ optionals sdlClient [ SDL SDL_mixer SDL_image SDL_ttf SDL_gfx freetype fluidsynth ]
diff --git a/nixpkgs/pkgs/games/freedroid/default.nix b/nixpkgs/pkgs/games/freedroid/default.nix
new file mode 100644
index 000000000000..266407d17dba
--- /dev/null
+++ b/nixpkgs/pkgs/games/freedroid/default.nix
@@ -0,0 +1,53 @@
+{ lib, stdenv
+, fetchFromGitHub
+, makeDesktopItem, copyDesktopItems
+, imagemagick
+, autoreconfHook
+, SDL, SDL_mixer, SDL_image, SDL_gfx
+, libvorbis
+, libjpeg, libpng
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname   = "freedroid";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner  = "ReinhardPrix";
+    repo   = "FreedroidClassic";
+    rev    = "release-${version}";
+    sha256 = "027wns25nyyc8afyhyp5a8wn13x9nlzmnqzqyyma1055xjy5imis";
+  };
+
+  nativeBuildInputs = [ copyDesktopItems imagemagick autoreconfHook ];
+  buildInputs = [ SDL SDL_image SDL_gfx SDL_mixer libjpeg libpng libvorbis zlib ];
+
+  postPatch = ''
+    touch NEWS
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/icons/hicolor/32x32/apps
+    convert graphics/paraicon.bmp $out/share/icons/hicolor/32x32/apps/freedroid.png
+  '';
+
+  desktopItems = [ (makeDesktopItem {
+    name = pname;
+    exec = pname;
+    icon = pname;
+    desktopName = "Freedroid Classic";
+    comment     = "A clone of the classic game 'Paradroid' on Commodore 64";
+    categories  = "Game;ArcadeGame;";
+  }) ];
+
+  meta = with lib; {
+    description = "A clone of the classic game 'Paradroid' on Commodore 64";
+    homepage    = "https://github.com/ReinhardPrix/FreedroidClassic";
+    license     = licenses.gpl2Only;
+    maintainers = with maintainers; [ iblech ];
+    platforms   = platforms.unix;
+    # Builds but fails to render to the screen at runtime.
+    broken      = stdenv.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/games/frogatto/default.nix b/nixpkgs/pkgs/games/frogatto/default.nix
index fb09847908da..69d5282aedca 100644
--- a/nixpkgs/pkgs/games/frogatto/default.nix
+++ b/nixpkgs/pkgs/games/frogatto/default.nix
@@ -1,4 +1,4 @@
-{ buildEnv, lib, stdenv, callPackage, makeWrapper, makeDesktopItem }:
+{ buildEnv, lib, callPackage, makeWrapper, makeDesktopItem }:
 
 let
   description = "Action-adventure game, starring a certain quixotic frog";
diff --git a/nixpkgs/pkgs/games/frozen-bubble/default.nix b/nixpkgs/pkgs/games/frozen-bubble/default.nix
index d1521dae3c4e..f9dd3fd61592 100644
--- a/nixpkgs/pkgs/games/frozen-bubble/default.nix
+++ b/nixpkgs/pkgs/games/frozen-bubble/default.nix
@@ -1,5 +1,6 @@
-{ lib, stdenv, fetchurl, perlPackages, pkg-config, SDL, SDL_mixer, SDL_Pango, glib }:
-
+{ lib, fetchurl, perlPackages, pkg-config, SDL, SDL_mixer, SDL_Pango, glib
+, copyDesktopItems, makeDesktopItem
+}:
 perlPackages.buildPerlModule {
   pname = "frozen-bubble";
   version = "2.212";
@@ -10,13 +11,24 @@ perlPackages.buildPerlModule {
   };
   patches = [ ./fix-compilation.patch ];
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ copyDesktopItems pkg-config ];
 
   buildInputs =  [ glib SDL SDL_mixer SDL_Pango perlPackages.SDL perlPackages.FileSlurp ];
   propagatedBuildInputs = with perlPackages; [ AlienSDL CompressBzip2 FileShareDir FileWhich IPCSystemSimple LocaleMaketextLexicon ];
 
   perlPreHook = "export LD=$CC";
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = "frozen-bubble";
+      exec = "frozen-bubble";
+      desktopName = "Frozen Bubble";
+      genericName = "Frozen Bubble";
+      comment = "Arcade/reflex colour matching game";
+      categories = "Game;";
+    })
+  ];
+
   meta = {
     description = "Puzzle with Bubbles";
     license = lib.licenses.gpl2;
diff --git a/nixpkgs/pkgs/games/gimx/default.nix b/nixpkgs/pkgs/games/gimx/default.nix
new file mode 100644
index 000000000000..727945ff2b46
--- /dev/null
+++ b/nixpkgs/pkgs/games/gimx/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, curl, libusb1, xorg, libxml2
+, ncurses5, bluez, libmhash, gimxAuth ? "" }:
+
+let
+  gimx-config = fetchFromGitHub {
+    owner = "matlo";
+    repo = "GIMX-configurations";
+    rev = "f31bba7d3be57519540be290cd69ba6a8dc4e4d4";
+    sha256 = "0wpxx2qxyiiblz2qrl5swg00ls1aq7i5vzlk0qlnqdq8ss8jssax";
+  };
+
+in stdenv.mkDerivation rec {
+  pname = "gimx";
+  version = "8.0";
+
+  src = fetchFromGitHub {
+    owner = "matlo";
+    repo = "GIMX";
+    rev = "v${version}";
+    fetchSubmodules = true;
+    sha256 = "0265gg6q7ymg76fb4pjrfdwjd280b3zzry96qy92w0h411slph85";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    curl libusb1 bluez libxml2 ncurses5 libmhash
+    xorg.libX11 xorg.libXi xorg.libXext
+  ];
+
+  patches = [ ./env.patch ];
+  prePatch = (if gimxAuth == "afterglow" then (import ./variant.nix).afterglow
+              else "");
+
+  makeFlags = "build-core";
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+    substituteInPlace ./core/Makefile --replace "chmod ug+s" "echo"
+
+    export DESTDIR="$out"
+    make install-shared install-core
+    mv $out/usr/lib $out/lib
+    mv $out/usr/bin $out/bin
+    rmdir $out/usr
+
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share
+    cp -r ./loader/firmware $out/share/firmware
+    cp -r ${gimx-config}/Linux $out/share/config
+    patch ${gimx-config}/Linux/Dualshock4.xml ${./ds4.patch} -o $out/share/DS4_noff.xml
+
+    makeWrapper $out/bin/gimx $out/bin/gimx-with-confs \
+      --set GIMXCONF $out/share
+
+    makeWrapper $out/bin/gimx $out/bin/gimx-test-ds4 \
+      --set GIMXCONF $out/share \
+      --add-flags "--nograb" --add-flags "--curses" \
+      --add-flags "-p /dev/ttyUSB0" --add-flags "-c DS4_noff.xml"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/matlo/GIMX";
+    description = "Game Input Multiplexer";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bb2020 ];
+  };
+}
diff --git a/nixpkgs/pkgs/games/gimx/ds4.patch b/nixpkgs/pkgs/games/gimx/ds4.patch
new file mode 100644
index 000000000000..86b36adda231
--- /dev/null
+++ b/nixpkgs/pkgs/games/gimx/ds4.patch
@@ -0,0 +1,16 @@
+diff --git a/Linux/Dualshock4.xml b/Linux/Dualshock4.xml
+index 5e53ed3..45ee5ed 100644
+--- a/Linux/Dualshock4.xml
++++ b/Linux/Dualshock4.xml
+@@ -94,6 +94,11 @@
+         </axis>
+       </axis_map>
+       <joystick_corrections_list/>
++      <force_feedback>
++        <device type="joystick" id="0" name="Sony Computer Entertainment Wireless Controller"/>
++        <inversion enable="no"/>
++        <gain rumble="0" constant="0" spring="0" damper="0"/>
++      </force_feedback>
+     </configuration>
+   </controller>
+ </root>
diff --git a/nixpkgs/pkgs/games/gimx/env.patch b/nixpkgs/pkgs/games/gimx/env.patch
new file mode 100644
index 000000000000..e1f8ed8bb6f1
--- /dev/null
+++ b/nixpkgs/pkgs/games/gimx/env.patch
@@ -0,0 +1,30 @@
+--- a/core/config_reader.c
++++ b/core/config_reader.c
+@@ -1353,8 +1353,10 @@ static int read_file(char* file_path)
+ int read_config_file(const char* file)
+ {
+   char file_path[PATH_MAX];
+-
+-  snprintf(file_path, sizeof(file_path), "%s%s%s%s", gimx_params.homedir, GIMX_DIR, CONFIG_DIR, file);
++  char* e = getenv("GIMXCONF"); if (e) { snprintf(file_path, sizeof(file_path), "%s/%s", e, file); }
++  else {
++    snprintf(file_path, sizeof(file_path), "%s%s%s%s", gimx_params.homedir, GIMX_DIR, CONFIG_DIR, file);
++  }
+ 
+   if(read_file(file_path) == -1)
+   {
+--- a/core/gimx.c
++++ b/core/gimx.c
+@@ -190,8 +190,10 @@ void show_config()
+   }
+ 
+   char file_path[PATH_MAX];
+-
+-  snprintf(file_path, sizeof(file_path), "%s%s%s%s", gimx_params.homedir, GIMX_DIR, CONFIG_DIR, gimx_params.config_file);
++  char* e = getenv("GIMXCONF"); if (e) { snprintf(file_path, sizeof(file_path), "%s/%s", e, gimx_params.config_file); }
++  else {
++    snprintf(file_path, sizeof(file_path), "%s%s%s%s", gimx_params.homedir, GIMX_DIR, CONFIG_DIR, gimx_params.config_file);
++  }
+ 
+   FILE * fp = gfile_fopen(file_path, "r");
+   if (fp == NULL)
diff --git a/nixpkgs/pkgs/games/gimx/variant.nix b/nixpkgs/pkgs/games/gimx/variant.nix
new file mode 100644
index 000000000000..8396f72b4e77
--- /dev/null
+++ b/nixpkgs/pkgs/games/gimx/variant.nix
@@ -0,0 +1,14 @@
+{
+  afterglow = ''
+    substituteInPlace ./shared/gimxcontroller/include/x360.h \
+      --replace "0x045e" "0x0e6f" --replace "0x028e" "0x0213"
+
+    HEX="./loader/firmware/EMU360.hex"
+    sed -i '34s|1B2100|1B2110|' "$HEX"
+    sed -i '38s|092100|092110|' "$HEX"
+    sed -i '40s|5E048E021001|6F0E13020001|' "$HEX"
+    sed -i '34s|1C\r|0C\r|' "$HEX"
+    sed -i '38s|FE\r|EE\r|' "$HEX"
+    sed -i '40s|6D\r|DD\r|' "$HEX"
+  '';
+}
diff --git a/nixpkgs/pkgs/games/gscrabble/default.nix b/nixpkgs/pkgs/games/gscrabble/default.nix
index 7d63510aa991..74411d63d3eb 100644
--- a/nixpkgs/pkgs/games/gscrabble/default.nix
+++ b/nixpkgs/pkgs/games/gscrabble/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildPythonApplication, fetchFromGitHub
+{ lib, buildPythonApplication, fetchFromGitHub
 , gtk3, wrapGAppsHook, gst_all_1, gobject-introspection
 , python3Packages, gnome3 }:
 
diff --git a/nixpkgs/pkgs/games/gshogi/default.nix b/nixpkgs/pkgs/games/gshogi/default.nix
index 5ed4bf5a3763..c3479f6758af 100644
--- a/nixpkgs/pkgs/games/gshogi/default.nix
+++ b/nixpkgs/pkgs/games/gshogi/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildPythonApplication, fetchFromGitHub
+{ lib, buildPythonApplication, fetchFromGitHub
 , gtk3, gobject-introspection
 , wrapGAppsHook, python3Packages }:
 
diff --git a/nixpkgs/pkgs/games/gzdoom/default.nix b/nixpkgs/pkgs/games/gzdoom/default.nix
index 9cf93176b9a6..8ab54468c001 100644
--- a/nixpkgs/pkgs/games/gzdoom/default.nix
+++ b/nixpkgs/pkgs/games/gzdoom/default.nix
@@ -6,12 +6,12 @@ let
   zmusic-src = fetchFromGitHub {
     owner = "coelckers";
     repo = "zmusic";
-    rev = "2d0ea861174f9e2031400ab29f5bcc8425521cc6";
-    sha256 = "1ac7lhbzwfr0fsyv7n70hvb8imzngxn1qyanmv9j26j0h90hhl8a";
+    rev = "bff02053bea30bd789e45f60b90db3ffc69c8cc8";
+    sha256 = "0vpr79gpdbhslg5qxyd1qxlv5akgli26skm1vb94yd8v69ymdcy2";
   };
   zmusic = stdenv.mkDerivation {
     pname = "zmusic";
-    version = "1.1.0";
+    version = "1.1.3";
 
     src = zmusic-src;
 
@@ -28,13 +28,13 @@ let
 
   gzdoom = stdenv.mkDerivation rec {
     pname = "gzdoom";
-    version = "4.4.2";
+    version = "4.5.0";
 
     src = fetchFromGitHub {
       owner = "coelckers";
       repo = "gzdoom";
       rev = "g${version}";
-      sha256 = "1xkkmbsdv64wyb9r2fv5mwyqw0bjryk528jghdrh47pndmjs9a38";
+      sha256 = "0kmqnyhdi5psi7zwrx9j3pz0cplypsvhg4cr8w2jbawh6jb71sk9";
       fetchSubmodules = true;
     };
 
diff --git a/nixpkgs/pkgs/games/harmonist/default.nix b/nixpkgs/pkgs/games/harmonist/default.nix
index 0705da6bfe94..4609f7d732cc 100644
--- a/nixpkgs/pkgs/games/harmonist/default.nix
+++ b/nixpkgs/pkgs/games/harmonist/default.nix
@@ -1,4 +1,4 @@
-{lib, stdenv, fetchurl, buildGoPackage}:
+{lib, fetchurl, buildGoPackage}:
 
 buildGoPackage rec {
 
diff --git a/nixpkgs/pkgs/games/hhexen/default.nix b/nixpkgs/pkgs/games/hhexen/default.nix
new file mode 100644
index 000000000000..0306c54ef4ee
--- /dev/null
+++ b/nixpkgs/pkgs/games/hhexen/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchurl, SDL, stdenv }:
+
+stdenv.mkDerivation rec {
+  name = "hhexen";
+  version = "1.6.3";
+  src = fetchurl {
+    url = "mirror://sourceforge/hhexen/hhexen-${version}-src.tgz";
+    sha256 = "1jwccqawbdn0rjn5p59j21rjy460jdhps7zwn2z0gq9biggw325b";
+  };
+
+  buildInputs = [ SDL ];
+  installPhase = ''
+    install -Dm755 hhexen-gl -t $out/bin
+  '';
+
+  meta = with lib; {
+    description = "Linux port of Raven Game's Hexen";
+    homepage = "http://hhexen.sourceforge.net/hhexen.html";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ djanatyn ];
+  };
+}
diff --git a/nixpkgs/pkgs/games/legendary-gl/default.nix b/nixpkgs/pkgs/games/legendary-gl/default.nix
index edf8b853c3c6..eb2f3f38cea4 100644
--- a/nixpkgs/pkgs/games/legendary-gl/default.nix
+++ b/nixpkgs/pkgs/games/legendary-gl/default.nix
@@ -7,23 +7,28 @@
 
 buildPythonApplication rec {
   pname = "legendary-gl"; # Name in pypi
-  version = "0.20.1";
+  version = "0.20.6";
 
   src = fetchFromGitHub {
     owner = "derrod";
     repo = "legendary";
     rev = version;
-    sha256 = "0kdrhdvh9gxq1zinh5w852f5fjls9902pcrkhkhm2c0vvq7jfass";
+    sha256 = "1v6jbnasz2ilcafs6qyl6na4a8cxy2lgwr0hqsja6d846rfqa8ad";
   };
 
   propagatedBuildInputs = [ requests ];
 
   disabled = pythonOlder "3.8";
 
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "legendary" ];
+
   meta = with lib; {
     description = "A free and open-source Epic Games Launcher alternative";
     homepage = "https://github.com/derrod/legendary";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ wchresta ];
+    maintainers = with maintainers; [ equirosa ];
   };
 }
diff --git a/nixpkgs/pkgs/games/lunar-client/default.nix b/nixpkgs/pkgs/games/lunar-client/default.nix
index f5c0e3faf77a..0635ab8aed83 100644
--- a/nixpkgs/pkgs/games/lunar-client/default.nix
+++ b/nixpkgs/pkgs/games/lunar-client/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, appimageTools, lib, fetchurl, makeDesktopItem }:
+{ appimageTools, lib, fetchurl, makeDesktopItem }:
 let
   name = "lunar-client";
   version = "2.4.0";
diff --git a/nixpkgs/pkgs/games/mindustry/default.nix b/nixpkgs/pkgs/games/mindustry/default.nix
index b9969b84fb76..6f3cdab9ab45 100644
--- a/nixpkgs/pkgs/games/mindustry/default.nix
+++ b/nixpkgs/pkgs/games/mindustry/default.nix
@@ -3,7 +3,6 @@
 , makeDesktopItem
 , copyDesktopItems
 , fetchFromGitHub
-, fetchpatch
 , gradleGen
 , jdk
 , perl
@@ -30,45 +29,31 @@ let
   # Note: when raising the version, ensure that all SNAPSHOT versions in
   # build.gradle are replaced by a fixed version
   # (the current one at the time of release) (see postPatch).
-  version = "122.1";
+  version = "124.1";
   buildVersion = makeBuildVersion version;
 
   Mindustry = fetchFromGitHub {
     owner = "Anuken";
     repo = "Mindustry";
     rev = "v${version}";
-    sha256 = "18m4s81cfb2cr2fj61nf6spiln7cbvx25g42w6fypfikflv3qd8y";
+    sha256 = "1k4k559y8l6wmj9m4980f7xmaaxzx84x86rqc77j4nd3y3x53546";
   };
   Arc = fetchFromGitHub {
     owner = "Anuken";
     repo = "Arc";
     rev = "v${version}";
-    sha256 = "0inzyj01442da7794cpxlaab7di9gv1snc97cbffqsdxgin16i7d";
+    sha256 = "08v929sgxy1pclzc00p7l7fak2h9l306447w5k5db3719kacj059";
   };
   soloud = fetchFromGitHub {
     owner = "Anuken";
     repo = "soloud";
     # this is never pinned in upstream, see https://github.com/Anuken/Arc/issues/39
-    rev = "8553049c6fb0d1eaa7f57c1793b96219c84e8ba5";
-    sha256 = "076vnjs2qxd65qq5i37gbmj5v5i04a1vw0kznq986gv9190jj531";
+    rev = "b33dfc5178fcb2613ee68136f4a4869cadc0b06a";
+    sha256 = "1vf68i3pnsixch37285ib7afkwmlrc05v783395jsdjzj9i67lj3";
   };
 
   patches = [
     ./0001-fix-include-path-for-SDL2-on-linux.patch
-    # upstream fix for https://github.com/Anuken/Arc/issues/40, remove on next release
-    (fetchpatch {
-      url = "https://github.com/Anuken/Arc/commit/b2f3d212c1a88a62f140f5cb04f4c86e61332d1c.patch";
-      sha256 = "1yjp4drv7lk3kinzy47g8jhb2qazr92b85vbc79vsqrs8sycskan";
-      extraPrefix = "Arc/";
-      stripLen = 1;
-    })
-    # add resolveDependencies task, remove when and if it gets added upstream in a future release
-    (fetchpatch {
-      url = "https://github.com/Anuken/Mindustry/pull/4302.patch";
-      sha256 = "0yp42sray4fxkajhpdljal0wss8jh9rvmclysw6cixsa94pw5khq";
-      extraPrefix = "Mindustry/";
-      stripLen = 1;
-    })
   ];
 
   unpackPhase = ''
@@ -103,7 +88,7 @@ let
   '';
 
   # The default one still uses jdk8 (#89731)
-  gradle_6 = (gradleGen.override (old: { java = jdk; })).gradle_6_7;
+  gradle_6 = (gradleGen.override (old: { java = jdk; })).gradle_6_8;
 
   # fake build to pre-download deps into fixed-output derivation
   deps = stdenv.mkDerivation {
@@ -129,7 +114,7 @@ let
     '';
     outputHashAlgo = "sha256";
     outputHashMode = "recursive";
-    outputHash = "09rwyrg2yv8r499b0dk1bzvymsf98d4j5b95bwd9s4xvrz71is3l";
+    outputHash = "18yfchv55f0fza6gdxd3f6gm0m4wy2a9jkw5wgl84id518jal6la";
   };
 
 in
diff --git a/nixpkgs/pkgs/games/minecraft/default.nix b/nixpkgs/pkgs/games/minecraft/default.nix
index 1c700de7b435..3d0b53035edd 100644
--- a/nixpkgs/pkgs/games/minecraft/default.nix
+++ b/nixpkgs/pkgs/games/minecraft/default.nix
@@ -88,11 +88,11 @@ in
 stdenv.mkDerivation rec {
   pname = "minecraft-launcher";
 
-  version = "2.2.1262";
+  version = "2.2.1441";
 
   src = fetchurl {
     url = "https://launcher.mojang.com/download/linux/x86_64/minecraft-launcher_${version}.tar.gz";
-    sha256 = "09fklcnqmpvwykbfwg4lgwl82khr2wimvgyz7ssficm802xkicnc";
+    sha256 = "03q579hvxnsh7d00j6lmfh53rixdpf33xb5zlz7659pvb9j5w0cm";
   };
 
   icon = fetchurl {
diff --git a/nixpkgs/pkgs/games/multimc/default.nix b/nixpkgs/pkgs/games/multimc/default.nix
index 81fc1b98f366..5a1f42ee130b 100644
--- a/nixpkgs/pkgs/games/multimc/default.nix
+++ b/nixpkgs/pkgs/games/multimc/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, mkDerivation, fetchFromGitHub, cmake, jdk8, zlib, file, makeWrapper, xorg, libpulseaudio, qtbase, libGL }:
+{ lib, mkDerivation, fetchFromGitHub, cmake, jdk8, zlib, file, makeWrapper, xorg, libpulseaudio, qtbase, libGL }:
 
 let
   jdk = jdk8;
diff --git a/nixpkgs/pkgs/games/openmw/default.nix b/nixpkgs/pkgs/games/openmw/default.nix
index 23572998d034..7c8f4990a619 100644
--- a/nixpkgs/pkgs/games/openmw/default.nix
+++ b/nixpkgs/pkgs/games/openmw/default.nix
@@ -6,6 +6,7 @@ let
     src = fetchFromGitHub {
       owner = "OpenMW";
       repo = "osg";
+      # commit does not exist on any branch on the target repository
       rev = "1556cd7966ebc1c80b6626988d2b25fb43a744cf";
       sha256 = "0d74hijzmj82nx3jkv5qmr3pkgvplra0b8fbjx1y3vmzxamb0axd";
     };
diff --git a/nixpkgs/pkgs/games/openra/common.nix b/nixpkgs/pkgs/games/openra/common.nix
index 306c5de3b43a..41c903e10116 100644
--- a/nixpkgs/pkgs/games/openra/common.nix
+++ b/nixpkgs/pkgs/games/openra/common.nix
@@ -1,7 +1,7 @@
 /*  The reusable code, and package attributes, between OpenRA engine packages (engine.nix)
     and out-of-tree mod packages (mod.nix).
 */
-{ lib, stdenv, makeSetupHook, curl, unzip, dos2unix, pkg-config, makeWrapper
+{ lib, makeSetupHook, curl, unzip, dos2unix, pkg-config, makeWrapper
 , lua, mono, dotnetPackages, python
 , libGL, freetype, openal, SDL2
 , zenity
diff --git a/nixpkgs/pkgs/games/openra/mods.nix b/nixpkgs/pkgs/games/openra/mods.nix
index 4a79125dc181..cf8cd433c294 100644
--- a/nixpkgs/pkgs/games/openra/mods.nix
+++ b/nixpkgs/pkgs/games/openra/mods.nix
@@ -123,6 +123,7 @@ in {
       src = fetchFromGitHub {
         owner = "IceReaper";
         repo = "OpenRA" ;
+        # commit does not exist on any branch on the target repository
         rev = "4e8eab4ca00d1910203c8a103dfd2c002714daa8";
         sha256 = "1yyqparf93x8yzy1f46gsymgkj5jls25v2yc7ighr3f7mi3igdvq";
         name = "engine";
diff --git a/nixpkgs/pkgs/games/osu-lazer/default.nix b/nixpkgs/pkgs/games/osu-lazer/default.nix
index b1437ac46af5..e3c22ae73283 100644
--- a/nixpkgs/pkgs/games/osu-lazer/default.nix
+++ b/nixpkgs/pkgs/games/osu-lazer/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchFromGitHub, fetchurl, makeWrapper, makeDesktopItem, linkFarmFromDrvs
-, dotnet-sdk, dotnet-netcore, dotnetPackages
+, dotnetCorePackages, dotnetPackages, cacert
 , ffmpeg_4, alsaLib, SDL2, lttng-ust, numactl, alsaPlugins
 }:
 
@@ -8,24 +8,31 @@ let
     ffmpeg_4 alsaLib SDL2 lttng-ust numactl
   ];
 
+  dotnet-sdk = dotnetCorePackages.sdk_5_0;
+  dotnet-net = dotnetCorePackages.net_5_0;
+
   # https://docs.microsoft.com/en-us/dotnet/core/rid-catalog#using-rids
   runtimeId = "linux-x64";
 
 in stdenv.mkDerivation rec {
   pname = "osu-lazer";
-  version = "2020.1225.0";
+  version = "2021.205.1";
 
   src = fetchFromGitHub {
     owner = "ppy";
     repo = "osu";
     rev = version;
-    sha256 = "BISczC4xYcF6m5l3ye/bdZxs/aK0Jz6sFVFOgNDo0v0=";
+    sha256 = "US8auytRXqtYGGNi+vxIzxCxpetWYeUkBRjgtJkPpMs=";
   };
 
   patches = [ ./bypass-tamper-detection.patch ];
   patchFlags = [ "--binary" "-p1" ];
 
-  nativeBuildInputs = [ dotnet-sdk dotnetPackages.Nuget makeWrapper ];
+  nativeBuildInputs = [
+    dotnet-sdk dotnetPackages.Nuget makeWrapper
+    # FIXME: Without `cacert`, we will suffer from https://github.com/NuGet/Announcements/issues/49
+    cacert
+  ];
 
   nugetDeps = linkFarmFromDrvs "${pname}-nuget-deps" (import ./deps.nix {
     fetchNuGet = { name, version, sha256 }: fetchurl {
@@ -75,7 +82,7 @@ in stdenv.mkDerivation rec {
       --output $out/lib/osu
 
     makeWrapper $out/lib/osu/osu\! $out/bin/osu\! \
-      --set DOTNET_ROOT "${dotnet-netcore}" \
+      --set DOTNET_ROOT "${dotnet-net}" \
       --suffix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeDeps}"
     for i in 16 32 48 64 96 128 256 512 1024; do
       install -D ./assets/lazer.png $out/share/icons/hicolor/''${i}x$i/apps/osu\!.png
diff --git a/nixpkgs/pkgs/games/osu-lazer/deps.nix b/nixpkgs/pkgs/games/osu-lazer/deps.nix
index cebdde1f7c6d..b670ce0c5ed8 100644
--- a/nixpkgs/pkgs/games/osu-lazer/deps.nix
+++ b/nixpkgs/pkgs/games/osu-lazer/deps.nix
@@ -1,10 +1,5 @@
 { fetchNuGet }: [
   (fetchNuGet {
-    name = "Dapper";
-    version = "2.0.78";
-    sha256 = "13xgi8prsa3y67hx644yflamwakjv8vsk5m15v407clsl2r4g0bp";
-  })
-  (fetchNuGet {
     name = "DeltaCompressionDotNet";
     version = "2.0.0.0";
     sha256 = "0zhj7m3zaf9wcg51385in9qg1xgkvp8yyzgq3r5k4sagm7y68aqy";
@@ -16,8 +11,8 @@
   })
   (fetchNuGet {
     name = "DiscordRichPresence";
-    version = "1.0.169";
-    sha256 = "0rs9fjr65432qckmzx4djlwsnc2yqwwwnjszqwnm3z2pv8dm7zrf";
+    version = "1.0.175";
+    sha256 = "180sax976327d70qbinv07f65g3w2zbw80n49hckg8wd4rw209vd";
   })
   (fetchNuGet {
     name = "FFmpeg.AutoGen";
@@ -25,6 +20,21 @@
     sha256 = "0n6x57mnnvcjnrs8zyvy07h5zm4bcfy9gh4n4bvd9fx5ys4pxkvv";
   })
   (fetchNuGet {
+    name = "Humanizer";
+    version = "2.8.26";
+    sha256 = "11kddzyzqpq9gkz0hmrblq494nh86va6wxx6z89xi6w1f4vj15ak";
+  })
+  (fetchNuGet {
+    name = "Humanizer.Core";
+    version = "2.2.0";
+    sha256 = "08mzg65y9d3zvq16rsmpapcdan71ggq2mpks6k777h3wlm2sh3p5";
+  })
+  (fetchNuGet {
+    name = "Humanizer.Core";
+    version = "2.8.26";
+    sha256 = "1v8xd12yms4qq1md4vh6faxicmqrvahqdd7sdkyzrphab9v44nsm";
+  })
+  (fetchNuGet {
     name = "Humanizer.Core.af";
     version = "2.8.26";
     sha256 = "0znrq4frlkq1qi20301hlzxa6mdc275fa1i1a1i8ldgk9cjq94k9";
@@ -85,14 +95,14 @@
     sha256 = "1pgs0j5ri50a6vhljplhrlc8jj1hrd9ggxkj60d9v5kk9xibzzyd";
   })
   (fetchNuGet {
-    name = "Humanizer.Core.fr-BE";
+    name = "Humanizer.Core.fr";
     version = "2.8.26";
-    sha256 = "13spcx07hph366qk073pz63s56nadaac7l4mr4a66gbpqd3814kb";
+    sha256 = "0kkhgy3yn8vfqlx3dhb9m3cazkgfxarknam4macng9y17l7wj83m";
   })
   (fetchNuGet {
-    name = "Humanizer.Core.fr";
+    name = "Humanizer.Core.fr-BE";
     version = "2.8.26";
-    sha256 = "0kkhgy3yn8vfqlx3dhb9m3cazkgfxarknam4macng9y17l7wj83m";
+    sha256 = "13spcx07hph366qk073pz63s56nadaac7l4mr4a66gbpqd3814kb";
   })
   (fetchNuGet {
     name = "Humanizer.Core.he";
@@ -145,14 +155,14 @@
     sha256 = "0iai35pzka9g6c3sgswki06fk6gdnq8kc88wyb4pcciivazz31px";
   })
   (fetchNuGet {
-    name = "Humanizer.Core.nb-NO";
+    name = "Humanizer.Core.nb";
     version = "2.8.26";
-    sha256 = "160c98wfh7d2xlvlra4x5rdj4klgcjwcy3gkb4ipg655byn2m1j2";
+    sha256 = "0xprhiyjyq6mpha2lrav59n1f48508ddvm9nmdk5sm5k26ff3l90";
   })
   (fetchNuGet {
-    name = "Humanizer.Core.nb";
+    name = "Humanizer.Core.nb-NO";
     version = "2.8.26";
-    sha256 = "0xprhiyjyq6mpha2lrav59n1f48508ddvm9nmdk5sm5k26ff3l90";
+    sha256 = "160c98wfh7d2xlvlra4x5rdj4klgcjwcy3gkb4ipg655byn2m1j2";
   })
   (fetchNuGet {
     name = "Humanizer.Core.nl";
@@ -190,14 +200,14 @@
     sha256 = "060xbzwb7p9ypbqfklih2zal2rh6h55gq4hv3i6alvlbd3vsx29n";
   })
   (fetchNuGet {
-    name = "Humanizer.Core.sr-Latn";
+    name = "Humanizer.Core.sr";
     version = "2.8.26";
-    sha256 = "1911a69sqssh9f007vmxbgyj4ym2ym4423xvw6cmbfhjcrhkfpbi";
+    sha256 = "0i2c24qmqnhp85b088qlbagxd48hcl0v1ly4m7hfbvx5s7fg8riv";
   })
   (fetchNuGet {
-    name = "Humanizer.Core.sr";
+    name = "Humanizer.Core.sr-Latn";
     version = "2.8.26";
-    sha256 = "0i2c24qmqnhp85b088qlbagxd48hcl0v1ly4m7hfbvx5s7fg8riv";
+    sha256 = "1911a69sqssh9f007vmxbgyj4ym2ym4423xvw6cmbfhjcrhkfpbi";
   })
   (fetchNuGet {
     name = "Humanizer.Core.sv";
@@ -245,29 +255,14 @@
     sha256 = "1rhzbiqbx04l3kvzjklix90fxyc6vvmmw0p564ajdiximivs0pbh";
   })
   (fetchNuGet {
-    name = "Humanizer.Core";
-    version = "2.2.0";
-    sha256 = "08mzg65y9d3zvq16rsmpapcdan71ggq2mpks6k777h3wlm2sh3p5";
-  })
-  (fetchNuGet {
-    name = "Humanizer.Core";
-    version = "2.8.26";
-    sha256 = "1v8xd12yms4qq1md4vh6faxicmqrvahqdd7sdkyzrphab9v44nsm";
-  })
-  (fetchNuGet {
-    name = "Humanizer";
-    version = "2.8.26";
-    sha256 = "11kddzyzqpq9gkz0hmrblq494nh86va6wxx6z89xi6w1f4vj15ak";
-  })
-  (fetchNuGet {
     name = "JetBrains.Annotations";
     version = "2020.3.0";
     sha256 = "04xlfqnfg3069f014q8f0vx7y70m8nldbf9fia4b50bp3rry2lv2";
   })
   (fetchNuGet {
-    name = "managed-midi";
-    version = "1.9.14";
-    sha256 = "025jh146zy98699y4civ7nxlkx312lwkl4sr8pha626q7q1kg89h";
+    name = "ManagedBass";
+    version = "2.0.4";
+    sha256 = "13hwd0yany4j52abbaaqsgq8lag2w9vjxxsj4qfbgwp4qs39x003";
   })
   (fetchNuGet {
     name = "ManagedBass.Fx";
@@ -275,69 +270,84 @@
     sha256 = "1rbjpgpm0ri7l2gqdy691rsv3visna2nbxawgvhdqljw068r8a8d";
   })
   (fetchNuGet {
-    name = "ManagedBass";
-    version = "2.0.4";
-    sha256 = "13hwd0yany4j52abbaaqsgq8lag2w9vjxxsj4qfbgwp4qs39x003";
+    name = "managed-midi";
+    version = "1.9.14";
+    sha256 = "025jh146zy98699y4civ7nxlkx312lwkl4sr8pha626q7q1kg89h";
   })
   (fetchNuGet {
     name = "Markdig";
-    version = "0.22.0";
-    sha256 = "0k7v4xlhfgyca8bb1g85062m22skmk6ay0hcyqlpi2cnvy7f61qf";
+    version = "0.22.1";
+    sha256 = "1m62kjwz93h323w8qvwmld2g8dy17a3ny5wyy29pwqj7ig4y8ymj";
+  })
+  (fetchNuGet {
+    name = "MessagePack";
+    version = "2.2.85";
+    sha256 = "1y0h8bd0drnlsqf1bvrdiv9j1892zqf1rmyclfjzs49klpf0xphk";
+  })
+  (fetchNuGet {
+    name = "MessagePack.Annotations";
+    version = "2.2.85";
+    sha256 = "00wajml6iy3wid8mixh3jmm6dapfjbccwq95m8qciika4pyd4lq9";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.App.Runtime.linux-x64";
-    version = "3.1.8";
-    sha256 = "140zr3nwkmf6xc52gq4iz6ycyh95fxy0jpgn637pkd9z423z8135";
+    version = "5.0.0";
+    sha256 = "14njzl0907wzcbsnxl62m4y6mv9pdirm68bj8qbbip0q5a6xgidw";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Connections.Abstractions";
-    version = "3.1.9";
-    sha256 = "0vsnc87fqh61mjl2zgv7nfx6wkrg055cq12ql6cxmcawv6qsl0lw";
+    version = "5.0.2";
+    sha256 = "0qy4wamhcpxi9aqwq9kivhsj4rvhbch2wfwv11610psygb5457vk";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Http.Connections.Client";
-    version = "3.1.9";
-    sha256 = "1m5w8pmm4bn7w1ml2xcs43kfr2hkicch46zr616ml8j6fsks6wmw";
+    version = "5.0.2";
+    sha256 = "0295a87ilrdg43sil5wli74x7jy4apibqdk1fxam8kzj99whl5sk";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Http.Connections.Common";
-    version = "3.1.9";
-    sha256 = "0ppzxfgnhn0jpn0rg72gcwb0hcjk1qbzpzk9aiykp8vnfvqlmb20";
+    version = "5.0.2";
+    sha256 = "094zjf6h5dh87kznmmz7w4s1y37rw52vaz2h4jk4i4ik7hpijd0w";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Http.Features";
-    version = "3.1.9";
-    sha256 = "0xg0psas8k38yfd72q7m5sm00yyxj51j1fqg473za2kxf8z4p2wx";
+    version = "5.0.2";
+    sha256 = "1rprpj1aw9z501rpb9415maqcqnk6pirbdl8yv5n9wpqgcnjizk8";
   })
   (fetchNuGet {
-    name = "Microsoft.AspNetCore.SignalR.Client.Core";
-    version = "3.1.9";
-    sha256 = "0ld7hch240z7zc7ckrppd4yrwwdhx3nbc8fgf4qql8ld8bih223y";
+    name = "Microsoft.AspNetCore.SignalR.Client";
+    version = "5.0.2";
+    sha256 = "18pdw4h1j93wzcvlj87jy7n5sxkwlj69nnb7a2qxkc40jvm18ran";
   })
   (fetchNuGet {
-    name = "Microsoft.AspNetCore.SignalR.Client";
-    version = "3.1.9";
-    sha256 = "1yn5y3b51jcpw7szj3pfz79hk84kmypy465cm22khh5z34wy41jx";
+    name = "Microsoft.AspNetCore.SignalR.Client.Core";
+    version = "5.0.2";
+    sha256 = "1rg3cpqr3yx5hn233c6cmmiry5v49fglfii7ryi1cf6rwqpdqn5l";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Common";
-    version = "3.1.9";
-    sha256 = "1kvp8y3fnhvfm7fpg1qsymwzch7jcfc9337zybwryfyzxjxq7aaj";
+    version = "5.0.2";
+    sha256 = "1sbwp00hq0ng891wdj6yhah8hr9hw34zvqr1xzs86g3gpmssgcj5";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Protocols.Json";
-    version = "3.1.9";
-    sha256 = "1gp6wjidhbbpibnam2fimm3pc5p70wv17zhis5qf6an49xvlmmmb";
+    version = "5.0.2";
+    sha256 = "0p9kv2iayhz8y68r30mhzssv0m087v243ai7aax7jd44rqiv1w5i";
+  })
+  (fetchNuGet {
+    name = "Microsoft.AspNetCore.SignalR.Protocols.MessagePack";
+    version = "5.0.2";
+    sha256 = "1f0mjw0swiaxk4iqf7n598d51w40lwdbap4nlc0sv0vw3nklnlzp";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson";
-    version = "3.1.9";
-    sha256 = "1hdmsfk5ymp2vi4saxiw19j83ykvz5jzv0f4060cgc8bafndakrr";
+    version = "5.0.2";
+    sha256 = "01wi2q5sjazvax8d4gbcggsr7n801m4cx6jcqljv0r4cmz4y478a";
   })
   (fetchNuGet {
     name = "Microsoft.Bcl.AsyncInterfaces";
-    version = "1.1.0";
-    sha256 = "1dq5yw7cy6s42193yl4iqscfw5vzkjkgv0zyy32scr4jza6ni1a1";
+    version = "1.0.0";
+    sha256 = "00dx5armvkqjxvkldz3invdlck9nj7w21dlsr2aqp1rqbyrbsbbh";
   })
   (fetchNuGet {
     name = "Microsoft.Bcl.AsyncInterfaces";
@@ -345,6 +355,11 @@
     sha256 = "0a1ahssqds2ympr7s4xcxv5y8jgxs7ahd6ah6fbgglj4rki1f1vw";
   })
   (fetchNuGet {
+    name = "Microsoft.Bcl.AsyncInterfaces";
+    version = "5.0.0";
+    sha256 = "0cp5jbax2mf6xr3dqiljzlwi05fv6n9a35z337s92jcljiq674kf";
+  })
+  (fetchNuGet {
     name = "Microsoft.Build.Framework";
     version = "15.3.409";
     sha256 = "1dhanwb9ihbfay85xj7cwn0byzmmdz94hqfi3q6r1ncwdjd8y1s2";
@@ -361,8 +376,8 @@
   })
   (fetchNuGet {
     name = "Microsoft.CodeAnalysis.BannedApiAnalyzers";
-    version = "3.3.1";
-    sha256 = "0xh23x91xg8qwfam70wsn039sn5li0pkay36lds9dl15p1vbfasm";
+    version = "3.3.2";
+    sha256 = "1r8mfbpfy8jdinhfviwhv2vjsz950wn2vwz17lfw5kya1n13nj56";
   })
   (fetchNuGet {
     name = "Microsoft.CodeAnalysis.Common";
@@ -370,24 +385,24 @@
     sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw";
   })
   (fetchNuGet {
-    name = "Microsoft.CodeAnalysis.CSharp.Workspaces";
+    name = "Microsoft.CodeAnalysis.CSharp";
     version = "3.8.0";
-    sha256 = "1jfbqfngwwjx3x1cyqaamf26s7j6wag86ig1n7bh99ny85gd78wb";
+    sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb";
   })
   (fetchNuGet {
-    name = "Microsoft.CodeAnalysis.CSharp";
+    name = "Microsoft.CodeAnalysis.CSharp.Workspaces";
     version = "3.8.0";
-    sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb";
+    sha256 = "1jfbqfngwwjx3x1cyqaamf26s7j6wag86ig1n7bh99ny85gd78wb";
   })
   (fetchNuGet {
     name = "Microsoft.CodeAnalysis.FxCopAnalyzers";
-    version = "3.3.1";
-    sha256 = "0wkrxymb9si2v0rzqnr8mdi89fi7swd1vbbclccjp8645ha1nif0";
+    version = "3.3.2";
+    sha256 = "02apz67f1gbp4p0wy7r593m10mhjm0rwp9q1n96p9avhdc3dwmv5";
   })
   (fetchNuGet {
     name = "Microsoft.CodeAnalysis.VersionCheckAnalyzer";
-    version = "3.3.1";
-    sha256 = "010fadvngp21yz1b4vk0bbx79p5yr6nji19w56ma9zp1hj7fn2y1";
+    version = "3.3.2";
+    sha256 = "1wxfkn16bqay7z64yxx50y9qkyznbfrv269h19fd60dy0vflwlfv";
   })
   (fetchNuGet {
     name = "Microsoft.CodeAnalysis.Workspaces.Common";
@@ -401,8 +416,8 @@
   })
   (fetchNuGet {
     name = "Microsoft.CodeQuality.Analyzers";
-    version = "3.3.1";
-    sha256 = "1ng91xf3shjl74xvckygh9aqccwqapia46gilddkb5kiqj847bik";
+    version = "3.3.2";
+    sha256 = "0hfsjqg4kz5ylx461ssvbx64wgaiy8gcalb760jc53lvbd8qrq5r";
   })
   (fetchNuGet {
     name = "Microsoft.CSharp";
@@ -426,8 +441,8 @@
   })
   (fetchNuGet {
     name = "Microsoft.Diagnostics.Runtime";
-    version = "2.0.156101";
-    sha256 = "1k9f6x95mscq484f4sywpb84016v9yb9bz6ha77wsjbsarl96my0";
+    version = "2.0.161401";
+    sha256 = "02qcm8nv1ch07g8b0i60ynrjn33b8y5ivyk4rxal3vd9zfi6pvwi";
   })
   (fetchNuGet {
     name = "Microsoft.DotNet.PlatformAbstractions";
@@ -435,6 +450,11 @@
     sha256 = "1qydvyyinj3b5mraazjal3n2k7jqhn05b6n1a2f3qjkqkxi63dmy";
   })
   (fetchNuGet {
+    name = "Microsoft.EntityFrameworkCore";
+    version = "2.2.6";
+    sha256 = "18j2cr50wsikwv7gy3vrjvmpdxckvv537qma8afdpr3yn2klayh5";
+  })
+  (fetchNuGet {
     name = "Microsoft.EntityFrameworkCore.Abstractions";
     version = "2.2.6";
     sha256 = "1dyxb5ibx24frlgbqy7zch0falq9p1189zvlbxgl94m0hvpml5j3";
@@ -455,19 +475,14 @@
     sha256 = "0c0z4mrqldjfslyxywb2ydk8hn9ybhkvz6lxx3idrfalq3ni5f1z";
   })
   (fetchNuGet {
-    name = "Microsoft.EntityFrameworkCore.Sqlite.Core";
-    version = "2.2.6";
-    sha256 = "0jzqw4672mzxjvzas09sl0zyzzayfgkv003a7bw5g2gjyiphf630";
-  })
-  (fetchNuGet {
     name = "Microsoft.EntityFrameworkCore.Sqlite";
     version = "2.2.6";
     sha256 = "0z8k5ns841imaqha5abb1ka0rsfzy90k6qkrvix11sp6k9i7lsam";
   })
   (fetchNuGet {
-    name = "Microsoft.EntityFrameworkCore";
+    name = "Microsoft.EntityFrameworkCore.Sqlite.Core";
     version = "2.2.6";
-    sha256 = "18j2cr50wsikwv7gy3vrjvmpdxckvv537qma8afdpr3yn2klayh5";
+    sha256 = "0jzqw4672mzxjvzas09sl0zyzzayfgkv003a7bw5g2gjyiphf630";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Caching.Abstractions";
@@ -480,14 +495,14 @@
     sha256 = "0bzrsn5vas86w66bd04xilnlb21nx4l6lz7d3acvy6y8ir2vb5dv";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Configuration.Abstractions";
+    name = "Microsoft.Extensions.Configuration";
     version = "2.2.0";
-    sha256 = "1fv5277hyhfqmc0gqszyqb1ilwnijm8kc9606yia6hwr8pxyg674";
+    sha256 = "02250qrs3jqqbggfvd0mkim82817f79x6jh8fx2i7r58d0m66qkl";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Configuration.Abstractions";
-    version = "3.1.9";
-    sha256 = "0skilj4gfzyn05mn74w2q4jp1ww2wwbsxw2i7v8bwk73nymsqpr8";
+    version = "2.2.0";
+    sha256 = "1fv5277hyhfqmc0gqszyqb1ilwnijm8kc9606yia6hwr8pxyg674";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Configuration.Binder";
@@ -495,19 +510,14 @@
     sha256 = "10qyjdkymdmag3r807kvbnwag4j3nz65i4cwikbd77jjvz92ya3j";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Configuration.Binder";
-    version = "3.1.9";
-    sha256 = "1n8fndd9vrd3d7041p42li8v129mgl3gi8sl1x8whhycy0ahqr78";
-  })
-  (fetchNuGet {
-    name = "Microsoft.Extensions.Configuration";
+    name = "Microsoft.Extensions.DependencyInjection";
     version = "2.2.0";
-    sha256 = "02250qrs3jqqbggfvd0mkim82817f79x6jh8fx2i7r58d0m66qkl";
+    sha256 = "0lvv45rvq1xbf47lz818rjydc776zk8mf7svpzh1dml4qwlx9zck";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Configuration";
-    version = "3.1.9";
-    sha256 = "01ci8nhv3ki93aa7a3vh9icl3jav7ikizq43kcgdjgsssi6xvdf9";
+    name = "Microsoft.Extensions.DependencyInjection";
+    version = "5.0.1";
+    sha256 = "06xig49mwyp3b2dvdx98j079ncg6p4c9x8yj4pzs6ppmi3jgaaqk";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.DependencyInjection.Abstractions";
@@ -516,18 +526,8 @@
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.DependencyInjection.Abstractions";
-    version = "3.1.9";
-    sha256 = "1l7ng71y18fwdlyq2ycl12hmv9wrf7k7knz2jwv9w9w7spmp8jv6";
-  })
-  (fetchNuGet {
-    name = "Microsoft.Extensions.DependencyInjection";
-    version = "2.2.0";
-    sha256 = "0lvv45rvq1xbf47lz818rjydc776zk8mf7svpzh1dml4qwlx9zck";
-  })
-  (fetchNuGet {
-    name = "Microsoft.Extensions.DependencyInjection";
-    version = "3.1.9";
-    sha256 = "1ifjjzwfvd5igxaaxm124qv8afs1nb06rgdqy7l3jcfqr30xykbb";
+    version = "5.0.0";
+    sha256 = "17cz6s80va0ch0a6nqa1wbbbp3p8sqxb96lj4qcw67ivkp2yxiyj";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.DependencyModel";
@@ -535,29 +535,29 @@
     sha256 = "0dl4qhjgifm6v3jsfzvzkvddyic77ggp9fq49ah661v45gk6ilgd";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Logging.Abstractions";
+    name = "Microsoft.Extensions.Logging";
     version = "2.2.0";
-    sha256 = "02w7hp6jicr7cl5p456k2cmrjvvhm6spg5kxnlncw3b72358m5wl";
+    sha256 = "0bx3ljyvvcbikradq2h583rl72h8bxdz33aghk026cxzpv2mm3wm";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Logging.Abstractions";
-    version = "3.1.9";
-    sha256 = "1i24mz3v677bmdysxklm9a3qc87j72lpkfp0l16gh6yqpmhwg7vp";
+    name = "Microsoft.Extensions.Logging";
+    version = "5.0.0";
+    sha256 = "1qa1l18q2jh9azya8gv1p8anzcdirjzd9dxxisb4911i9m1648i3";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Logging";
+    name = "Microsoft.Extensions.Logging.Abstractions";
     version = "2.2.0";
-    sha256 = "0bx3ljyvvcbikradq2h583rl72h8bxdz33aghk026cxzpv2mm3wm";
+    sha256 = "02w7hp6jicr7cl5p456k2cmrjvvhm6spg5kxnlncw3b72358m5wl";
   })
   (fetchNuGet {
-    name = "Microsoft.Extensions.Logging";
-    version = "3.1.9";
-    sha256 = "1x1bbkcq7ph9jgwv3yidipfqwdh6q3bsa2rxhfzmy64l7hc7r1wl";
+    name = "Microsoft.Extensions.Logging.Abstractions";
+    version = "5.0.0";
+    sha256 = "1yza38675dbv1qqnnhqm23alv2bbaqxp0pb7zinjmw8j2mr5r6wc";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.ObjectPool";
-    version = "5.0.0";
-    sha256 = "0m0r7avz4ygxa1pyj5sai25y0n42y7kz9iznl7m3146csxi1paf0";
+    version = "5.0.1";
+    sha256 = "012klayhnnygncdi9zzq32vballb2wbknk91g2ziz5mhdhg38lr8";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Options";
@@ -566,8 +566,8 @@
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Options";
-    version = "3.1.9";
-    sha256 = "0rpix172cmwwbddh4gm0647x1ql0ly5n68bpz71v915j97anwg90";
+    version = "5.0.0";
+    sha256 = "1rdmgpg770x8qwaaa6ryc27zh93p697fcyvn5vkxp0wimlhqkbay";
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Primitives";
@@ -576,18 +576,18 @@
   })
   (fetchNuGet {
     name = "Microsoft.Extensions.Primitives";
-    version = "3.1.9";
-    sha256 = "0538fvjz9c27nvc6kv83b0912qvc71wz2w60svl0mscj86ds49wc";
+    version = "5.0.0";
+    sha256 = "0swqcknyh87ns82w539z1mvy804pfwhgzs97cr3nwqk6g5s42gd6";
   })
   (fetchNuGet {
     name = "Microsoft.NetCore.Analyzers";
-    version = "3.3.1";
-    sha256 = "16cx0x5hcjs2ml5zjalfsp7n3rfyz75ihnvh1p10z96yaz43gdwn";
+    version = "3.3.2";
+    sha256 = "1h1bjiiw64qncs61p2idwxswv4kzq06bbl2rlghiagv6sbjk4pnq";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.App.Runtime.linux-x64";
-    version = "3.1.8";
-    sha256 = "1bv9n9wzsqf9g8h6z10p61xkcx8ad4nnip83qv8yyfvhr4kdmbsa";
+    version = "5.0.0";
+    sha256 = "1k9yxklzdnjfkqysg54dz0mr75yg29fhlls9alh5qlfpsfpk32yq";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Platforms";
@@ -606,28 +606,23 @@
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Platforms";
-    version = "3.1.1";
-    sha256 = "05hmaygd5131rnqi6ipv7agsbpi7ka18779vw45iw6b385l7n987";
-  })
-  (fetchNuGet {
-    name = "Microsoft.NETCore.Platforms";
     version = "5.0.0";
     sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Targets";
-    version = "1.0.1";
-    sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p";
+    version = "3.1.0";
+    sha256 = "04cc2wl90p7g9zscnxgyj55vzl7srrrjwadl2dxgicfb2x2499ca";
   })
   (fetchNuGet {
     name = "Microsoft.NETCore.Targets";
-    version = "1.1.0";
-    sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh";
+    version = "5.0.0";
+    sha256 = "0z3qyv7qal5irvabc8lmkh58zsl42mrzd1i0sssvzhv4q4kl3cg6";
   })
   (fetchNuGet {
     name = "Microsoft.NetFramework.Analyzers";
-    version = "3.3.1";
-    sha256 = "06vjmjmqhrmfc57ndsc8jaybc8np06s797nhg40bf44603bx6159";
+    version = "3.3.2";
+    sha256 = "0samfc6c3mm7c4g6b0m01c8c37ip5ywy1i2my02xsbf9vygkal89";
   })
   (fetchNuGet {
     name = "Microsoft.Win32.Primitives";
@@ -680,214 +675,89 @@
     sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r";
   })
   (fetchNuGet {
-    name = "NUnit";
-    version = "3.12.0";
-    sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2";
+    name = "NuGet.Common";
+    version = "5.8.0";
+    sha256 = "17l1gqxfcpazadg6wqgwkzg37x8c97sgmk9nr4f9yn3d50zj9hlm";
   })
   (fetchNuGet {
-    name = "ppy.osu.Framework.NativeLibs";
-    version = "2020.923.0";
-    sha256 = "1sy98s0dxcfxxslm1q503qhd9fl8d3idf47qi4561j5fds4dpdsv";
+    name = "NuGet.Configuration";
+    version = "5.8.0";
+    sha256 = "02cxqaaxmspv6x0xjwkqr1s0b858cw5gn6lgqa8zhsknnhs6rl41";
   })
   (fetchNuGet {
-    name = "ppy.osu.Framework";
-    version = "2020.1222.0";
-    sha256 = "0xdfgl4hykrbwhdmhhy7rxp055jhq1rwg2mldbbaf1v43s0vkyfj";
+    name = "NuGet.DependencyResolver.Core";
+    version = "5.8.0";
+    sha256 = "0w0hr10gzf0hvh400ybd6h606zal0mi0i1lq5q3yj7kdhy93wb6j";
   })
   (fetchNuGet {
-    name = "ppy.osu.Game.Resources";
-    version = "2020.1202.0";
-    sha256 = "1m5156gkyyhf52ii6y7yqmsgpwcxn6zgji3nnyny6lk9glmc9vvs";
-  })
-  (fetchNuGet {
-    name = "ppy.osuTK.NS20";
-    version = "1.0.165";
-    sha256 = "0ryb483i0jqy94mhvrh0xicv43h4r4amzgpmfrrmzrfvp9ajjar6";
-  })
-  (fetchNuGet {
-    name = "ppy.SDL2-CS";
-    version = "1.0.53";
-    sha256 = "0x52pq6xdg4qcgi8cnqlijifqjpszbi8z4nkmsym0xgd9m5bmd7k";
-  })
-  (fetchNuGet {
-    name = "ppy.squirrel.windows";
-    version = "1.9.0.4";
-    sha256 = "1m8shcmgs0fs225qd0navr1qr6csqjin9sg2x0d7xpfk04nd2hi7";
-  })
-  (fetchNuGet {
-    name = "Remotion.Linq";
-    version = "2.2.0";
-    sha256 = "1y46ni0xswmmiryp8sydjgryafwn458dr91f9xn653w73kdyk4xf";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Collections";
-    version = "4.0.11";
-    sha256 = "1x44bm1cgv28zmrp095wf9mn8a6a0ivnzp9v14dcbhx06igxzgg0";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Collections";
-    version = "4.3.0";
-    sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Diagnostics.Tools";
-    version = "4.0.1";
-    sha256 = "0qcpm90hrm9gx9pmxlvfml65jm0bwpr5dg3r7l7xm9nvmibvc7n7";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Diagnostics.Tools";
-    version = "4.3.0";
-    sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Diagnostics.Tracing";
-    version = "4.1.0";
-    sha256 = "041im8hmp1zdgrx6jzyrdch6kshvbddmkar7r2mlm1ksb5c5kwpq";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Diagnostics.Tracing";
-    version = "4.3.0";
-    sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Globalization.Calendars";
-    version = "4.0.1";
-    sha256 = "007iw5wnl046wznasbqxjxm949djdbsi9vwz6zhz4lmzviqcpl58";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Globalization.Calendars";
-    version = "4.3.0";
-    sha256 = "1ghhhk5psqxcg6w88sxkqrc35bxcz27zbqm2y5p5298pv3v7g201";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Globalization";
-    version = "4.0.11";
-    sha256 = "0240rp66pi5bw1xklmh421hj7arwcdmjmgfkiq1cbc6nrm8ah286";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Globalization";
-    version = "4.3.0";
-    sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.IO";
-    version = "4.1.0";
-    sha256 = "0kasfkjiml2kk8prnyn1990nhsahnjggvqwszqjdsfwfl43vpcb5";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.IO";
-    version = "4.3.0";
-    sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection.Extensions";
-    version = "4.0.1";
-    sha256 = "05k34ijz9g9csh0vbbv3g3lrxl163izwcfncmbcl7k073h32rzkr";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection.Extensions";
-    version = "4.3.0";
-    sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33";
+    name = "NuGet.Frameworks";
+    version = "5.8.0";
+    sha256 = "16awpn2p8sbzvqpri2hjbjzpnl3ad2klr8d82yd0hrd6s2yyii9j";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Reflection.Primitives";
-    version = "4.0.1";
-    sha256 = "1zxrpvixr5fqzkxpnin6g6gjq6xajy1snghz99ds2dwbhm276rhz";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection.Primitives";
-    version = "4.3.0";
-    sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection";
-    version = "4.1.0";
-    sha256 = "06kcs059d5czyakx75rvlwa2mr86156w18fs7chd03f7084l7mq6";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Reflection";
-    version = "4.3.0";
-    sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly";
+    name = "NuGet.LibraryModel";
+    version = "5.8.0";
+    sha256 = "1fwh6iam6cp9pgz4gqlwj287vfrz8nabmzfmgkbnylrxki0pnwi0";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Resources.ResourceManager";
-    version = "4.0.1";
-    sha256 = "1jmgs7hynb2rff48623wnyb37558bbh1q28k9c249j5r5sgsr5kr";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Resources.ResourceManager";
-    version = "4.3.0";
-    sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Runtime.Handles";
-    version = "4.0.1";
-    sha256 = "1kswgqhy34qvc49i981fk711s7knd6z13bp0rin8ms6axkh98nas";
+    name = "NuGet.Packaging";
+    version = "5.8.0";
+    sha256 = "05ba9aj6hyb5x28c7sn24b7fkzn7g1869x4b2xpbq8r37mfswfw9";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Runtime.Handles";
-    version = "4.3.0";
-    sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x";
+    name = "NuGet.ProjectModel";
+    version = "5.8.0";
+    sha256 = "1b2brybxg997095b9w2jbgnhadppdrxlkqmwx84dy6snq2blcwhc";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Runtime.InteropServices";
-    version = "4.1.0";
-    sha256 = "0gm8if0hcmp1qys1wmx4970k2x62pqvldgljsyzbjhiy5644vl8z";
+    name = "NuGet.Protocol";
+    version = "5.8.0";
+    sha256 = "151x6b085vsznfsi7ak97086hlc0g3d3mv9xdla974z1qyh6q5a9";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Runtime.InteropServices";
-    version = "4.3.0";
-    sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19";
+    name = "NuGet.Versioning";
+    version = "5.8.0";
+    sha256 = "16awcl6czs6nyhfaf0ixi25flka1y653q4bjmm4rnz3ssi832mi5";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Runtime";
-    version = "4.1.0";
-    sha256 = "0mjr2bi7wvnkphfjqgkyf8vfyvy15a829jz6mivl6jmksh2bx40m";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Runtime";
-    version = "4.3.0";
-    sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b";
-  })
-  (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding.Extensions";
-    version = "4.0.11";
-    sha256 = "0d1rxxpvg9v7wlibsfgz0r4hwigpadas822qf8m8fs1gma9gs877";
+    name = "NUnit";
+    version = "3.12.0";
+    sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding.Extensions";
-    version = "4.3.0";
-    sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8";
+    name = "ppy.osu.Framework";
+    version = "2021.128.0";
+    sha256 = "19c0bj9d0hjcyhaf04aapyzyd4yrzhc61k89z2il7y32841vnzg6";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding";
-    version = "4.0.11";
-    sha256 = "0m4vgmzi1ky8xlj0r7xcyazxln3j9dlialnk6d2gmgrfnzf8f9m7";
+    name = "ppy.osu.Framework.NativeLibs";
+    version = "2021.115.0";
+    sha256 = "00cxrnc78wb8l7d4x7m39g73y85kbgnsnx3qdvv0a9p77lf7lx7z";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Text.Encoding";
-    version = "4.3.0";
-    sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3";
+    name = "ppy.osu.Game.Resources";
+    version = "2020.1202.0";
+    sha256 = "1m5156gkyyhf52ii6y7yqmsgpwcxn6zgji3nnyny6lk9glmc9vvs";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Threading.Tasks";
-    version = "4.0.11";
-    sha256 = "1qzdp09qs8br5qxzlm1lgbjn4n57fk8vr1lzrmli2ysdg6x1xzvk";
+    name = "ppy.osuTK.NS20";
+    version = "1.0.173";
+    sha256 = "11rrxakrgq5lriv09qlz26189nyc9lh0fjidn5h70labyp2gpa4y";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Threading.Tasks";
-    version = "4.3.0";
-    sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va";
+    name = "ppy.SDL2-CS";
+    version = "1.0.53";
+    sha256 = "0x52pq6xdg4qcgi8cnqlijifqjpszbi8z4nkmsym0xgd9m5bmd7k";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Threading.Timer";
-    version = "4.0.1";
-    sha256 = "14p9qc9y8ay6kgz363xlxy5c75ilq3r7zw4ddx7348iir0m140ir";
+    name = "ppy.squirrel.windows";
+    version = "1.9.0.5";
+    sha256 = "0nmhrg3q6izapfpwdslq80fqkvjj12ad9r94pd0nr2xx1zw0x1zl";
   })
   (fetchNuGet {
-    name = "runtime.any.System.Threading.Timer";
-    version = "4.3.0";
-    sha256 = "0aw4phrhwqz9m61r79vyfl5la64bjxj8l34qnrcwb28v49fg2086";
+    name = "Remotion.Linq";
+    version = "2.2.0";
+    sha256 = "1y46ni0xswmmiryp8sydjgryafwn458dr91f9xn653w73kdyk4xf";
   })
   (fetchNuGet {
     name = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl";
@@ -905,6 +775,16 @@
     sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa";
   })
   (fetchNuGet {
+    name = "runtime.native.System";
+    version = "4.0.0";
+    sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
+  })
+  (fetchNuGet {
+    name = "runtime.native.System";
+    version = "4.3.0";
+    sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
+  })
+  (fetchNuGet {
     name = "runtime.native.System.IO.Compression";
     version = "4.1.0";
     sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk";
@@ -925,29 +805,19 @@
     sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk";
   })
   (fetchNuGet {
-    name = "runtime.native.System.Security.Cryptography.Apple";
-    version = "4.3.0";
-    sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q";
-  })
-  (fetchNuGet {
-    name = "runtime.native.System.Security.Cryptography.OpenSsl";
-    version = "4.3.0";
-    sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97";
-  })
-  (fetchNuGet {
     name = "runtime.native.System.Security.Cryptography";
     version = "4.0.0";
     sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9";
   })
   (fetchNuGet {
-    name = "runtime.native.System";
-    version = "4.0.0";
-    sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf";
+    name = "runtime.native.System.Security.Cryptography.Apple";
+    version = "4.3.0";
+    sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q";
   })
   (fetchNuGet {
-    name = "runtime.native.System";
+    name = "runtime.native.System.Security.Cryptography.OpenSsl";
     version = "4.3.0";
-    sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
+    sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97";
   })
   (fetchNuGet {
     name = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl";
@@ -990,99 +860,9 @@
     sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5";
   })
   (fetchNuGet {
-    name = "runtime.unix.Microsoft.Win32.Primitives";
-    version = "4.0.1";
-    sha256 = "1i47c440zlibzhyh2dr45jgbsmn3a7ki1paappdf9af4qrlaas63";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.Microsoft.Win32.Primitives";
-    version = "4.3.0";
-    sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Console";
-    version = "4.0.0";
-    sha256 = "0q96nlj42yj0b020j22z6j3qiza7lz7sb1r34dy4r1f3cq9s5zp6";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Console";
-    version = "4.3.0";
-    sha256 = "1pfpkvc6x2if8zbdzg9rnc5fx51yllprl8zkm5npni2k50lisy80";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Diagnostics.Debug";
-    version = "4.0.11";
-    sha256 = "05ndbai4vpqrry0ghbfgqc8xblmplwjgndxmdn1zklqimczwjg2d";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Diagnostics.Debug";
-    version = "4.3.0";
-    sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.IO.FileSystem";
-    version = "4.0.1";
-    sha256 = "02wnlydnbhai0zy7c3kihg0cis0l1b2z78kyi1ci47c5v0jklwha";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.IO.FileSystem";
-    version = "4.3.0";
-    sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Net.Primitives";
-    version = "4.0.11";
-    sha256 = "1fy9hy30bs3pv6jr2ci2vscgycz64r1bgl91s51psidzh64i1gp9";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Net.Primitives";
-    version = "4.3.0";
-    sha256 = "0bdnglg59pzx9394sy4ic66kmxhqp8q8bvmykdxcbs5mm0ipwwm4";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Net.Sockets";
-    version = "4.1.0";
-    sha256 = "0vj5n45mm2k2khayvrp1lbz5djnp5lac1dna37g5c0nh7pmzgc4f";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Net.Sockets";
-    version = "4.3.0";
-    sha256 = "03npdxzy8gfv035bv1b9rz7c7hv0rxl5904wjz51if491mw0xy12";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Private.Uri";
-    version = "4.0.1";
-    sha256 = "0ic5dgc45jkhcr1g9xmmzjm7ffiw4cymm0fprczlx4fnww4783nm";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Private.Uri";
-    version = "4.3.0";
-    sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Runtime.Extensions";
-    version = "4.1.0";
-    sha256 = "0x1cwd7cvifzmn5x1wafvj75zdxlk3mxy860igh3x1wx0s8167y4";
-  })
-  (fetchNuGet {
-    name = "runtime.unix.System.Runtime.Extensions";
-    version = "4.3.0";
-    sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p";
-  })
-  (fetchNuGet {
-    name = "Sentry.PlatformAbstractions";
-    version = "1.1.1";
-    sha256 = "10mxyxmyjpr0y1ik2j55pp7ifn101sw319cbpf28i2xbfp0cvcaj";
-  })
-  (fetchNuGet {
-    name = "Sentry.Protocol";
-    version = "2.1.8";
-    sha256 = "04baw4yxc5lbcl83sfcdyjg5225719bf3sxpa3kjmhf58bjr143l";
-  })
-  (fetchNuGet {
     name = "Sentry";
-    version = "2.1.8";
-    sha256 = "1ii62ynihr4j2v2agjizk38kfz3m9bdijkks9k7ydhcq1bcz7jbn";
+    version = "3.0.1";
+    sha256 = "1nmqwprp2xv9d8llfncyw94nfws9nwb7zj0sqrd6lv1mfgaxraql";
   })
   (fetchNuGet {
     name = "SharpCompress";
@@ -1091,8 +871,8 @@
   })
   (fetchNuGet {
     name = "SharpCompress";
-    version = "0.26.0";
-    sha256 = "03cygf8p44j1bfn6z9cn2xrw6zhvhq17xac1sph5rgq7vq2m5iq5";
+    version = "0.27.1";
+    sha256 = "1lhljszs94i1ssl831ik1a51n2pshf27nsjm78acnw1y1qnkm5pd";
   })
   (fetchNuGet {
     name = "SharpFNT";
@@ -1175,6 +955,16 @@
     sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3";
   })
   (fetchNuGet {
+    name = "System.Collections";
+    version = "4.0.11";
+    sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
+  })
+  (fetchNuGet {
+    name = "System.Collections";
+    version = "4.3.0";
+    sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
+  })
+  (fetchNuGet {
     name = "System.Collections.Concurrent";
     version = "4.0.12";
     sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc";
@@ -1200,16 +990,6 @@
     sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r";
   })
   (fetchNuGet {
-    name = "System.Collections";
-    version = "4.0.11";
-    sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
-  })
-  (fetchNuGet {
-    name = "System.Collections";
-    version = "4.3.0";
-    sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
-  })
-  (fetchNuGet {
     name = "System.ComponentModel.Annotations";
     version = "4.5.0";
     sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p";
@@ -1220,6 +1000,11 @@
     sha256 = "021h7x98lblq9avm1bgpa4i31c2kgsa7zn4sqhxf39g087ar756j";
   })
   (fetchNuGet {
+    name = "System.Composition";
+    version = "1.0.31";
+    sha256 = "0aa27jz73qb0xm6dyxv22qhfrmyyqjyn2dvvsd9asi82lcdh9i61";
+  })
+  (fetchNuGet {
     name = "System.Composition.AttributedModel";
     version = "1.0.31";
     sha256 = "1ipyb86hvw754kmk47vjmzyilvj5hymg9nqabz70sbgsz1fygrdv";
@@ -1245,11 +1030,6 @@
     sha256 = "1m4j19zx50lbbdx1xxbgpsd1dai2r3kzkyapw47kdvkb89qjkl63";
   })
   (fetchNuGet {
-    name = "System.Composition";
-    version = "1.0.31";
-    sha256 = "0aa27jz73qb0xm6dyxv22qhfrmyyqjyn2dvvsd9asi82lcdh9i61";
-  })
-  (fetchNuGet {
     name = "System.Console";
     version = "4.0.0";
     sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf";
@@ -1285,6 +1065,11 @@
     sha256 = "1y8m0p3127nak5yspapfnz25qc9x53gqpvwr3hdpsvrcd2r1pgyj";
   })
   (fetchNuGet {
+    name = "System.Diagnostics.DiagnosticSource";
+    version = "5.0.0";
+    sha256 = "0phd2qizshjvglhzws1jd0cq4m54gscz4ychzr3x6wbgl4vvfrga";
+  })
+  (fetchNuGet {
     name = "System.Diagnostics.Tools";
     version = "4.0.1";
     sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x";
@@ -1310,6 +1095,16 @@
     sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9";
   })
   (fetchNuGet {
+    name = "System.Globalization";
+    version = "4.0.11";
+    sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
+  })
+  (fetchNuGet {
+    name = "System.Globalization";
+    version = "4.3.0";
+    sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
+  })
+  (fetchNuGet {
     name = "System.Globalization.Calendars";
     version = "4.0.1";
     sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh";
@@ -1330,29 +1125,19 @@
     sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls";
   })
   (fetchNuGet {
-    name = "System.Globalization";
-    version = "4.0.11";
-    sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
-  })
-  (fetchNuGet {
-    name = "System.Globalization";
-    version = "4.3.0";
-    sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
-  })
-  (fetchNuGet {
     name = "System.Interactive.Async";
     version = "3.2.0";
     sha256 = "0y5r5y7dlccjpgg17rjrrzi3jya4ysyydamxs33qckkv4jb3534d";
   })
   (fetchNuGet {
-    name = "System.IO.Compression.ZipFile";
-    version = "4.0.1";
-    sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
+    name = "System.IO";
+    version = "4.1.0";
+    sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
   })
   (fetchNuGet {
-    name = "System.IO.Compression.ZipFile";
+    name = "System.IO";
     version = "4.3.0";
-    sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar";
+    sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
   })
   (fetchNuGet {
     name = "System.IO.Compression";
@@ -1365,14 +1150,14 @@
     sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz";
   })
   (fetchNuGet {
-    name = "System.IO.FileSystem.Primitives";
+    name = "System.IO.Compression.ZipFile";
     version = "4.0.1";
-    sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
+    sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82";
   })
   (fetchNuGet {
-    name = "System.IO.FileSystem.Primitives";
+    name = "System.IO.Compression.ZipFile";
     version = "4.3.0";
-    sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
+    sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar";
   })
   (fetchNuGet {
     name = "System.IO.FileSystem";
@@ -1385,24 +1170,34 @@
     sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw";
   })
   (fetchNuGet {
+    name = "System.IO.FileSystem.Primitives";
+    version = "4.0.1";
+    sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
+  })
+  (fetchNuGet {
+    name = "System.IO.FileSystem.Primitives";
+    version = "4.3.0";
+    sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
+  })
+  (fetchNuGet {
     name = "System.IO.Packaging";
     version = "5.0.0";
     sha256 = "08l85pi8jy65las973szqdnir2awxp0r16h21c0bgrz19gxhs11n";
   })
   (fetchNuGet {
     name = "System.IO.Pipelines";
-    version = "4.7.3";
-    sha256 = "0djp59x56klidi04xx8p5jc1nchv5zvd1d59diphqxwvgny3aawy";
+    version = "5.0.1";
+    sha256 = "1zvfcd2l1d5qxifsqd0cjyv57nr61a9ac2ca5jinyqmj32wgjd6v";
   })
   (fetchNuGet {
-    name = "System.IO";
+    name = "System.Linq";
     version = "4.1.0";
-    sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
+    sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5";
   })
   (fetchNuGet {
-    name = "System.IO";
+    name = "System.Linq";
     version = "4.3.0";
-    sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
+    sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
   })
   (fetchNuGet {
     name = "System.Linq.Expressions";
@@ -1420,27 +1215,12 @@
     sha256 = "11jn9k34g245yyf260gr3ldzvaqa9477w2c5nhb1p8vjx4xm3qaw";
   })
   (fetchNuGet {
-    name = "System.Linq";
-    version = "4.1.0";
-    sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5";
-  })
-  (fetchNuGet {
-    name = "System.Linq";
-    version = "4.3.0";
-    sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
-  })
-  (fetchNuGet {
     name = "System.Memory";
     version = "4.5.1";
     sha256 = "0f07d7hny38lq9w69wx4lxkn4wszrqf9m9js6fh9is645csm167c";
   })
   (fetchNuGet {
     name = "System.Memory";
-    version = "4.5.2";
-    sha256 = "1g24dwqfcmf4gpbgbhaw1j49xmpsz389l6bw2xxbsmnzvsf860ld";
-  })
-  (fetchNuGet {
-    name = "System.Memory";
     version = "4.5.3";
     sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a";
   })
@@ -1460,16 +1240,6 @@
     sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j";
   })
   (fetchNuGet {
-    name = "System.Net.NameResolution";
-    version = "4.0.0";
-    sha256 = "0dj3pvpv069nyia28gkl4a0fb7q33hbxz2dg25qvpah3l7pbl0qh";
-  })
-  (fetchNuGet {
-    name = "System.Net.NameResolution";
-    version = "4.3.0";
-    sha256 = "15r75pwc0rm3vvwsn8rvm2krf929mjfwliv0mpicjnii24470rkq";
-  })
-  (fetchNuGet {
     name = "System.Net.Primitives";
     version = "4.0.11";
     sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r";
@@ -1510,14 +1280,29 @@
     sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2";
   })
   (fetchNuGet {
-    name = "System.Private.Uri";
+    name = "System.Reflection";
+    version = "4.1.0";
+    sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
+  })
+  (fetchNuGet {
+    name = "System.Reflection";
+    version = "4.3.0";
+    sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
+  })
+  (fetchNuGet {
+    name = "System.Reflection.Emit";
     version = "4.0.1";
-    sha256 = "0k57qhawjysm4cpbfpc49kl4av7lji310kjcamkl23bwgij5ld9j";
+    sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
   })
   (fetchNuGet {
-    name = "System.Private.Uri";
+    name = "System.Reflection.Emit";
     version = "4.3.0";
-    sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx";
+    sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
+  })
+  (fetchNuGet {
+    name = "System.Reflection.Emit";
+    version = "4.6.0";
+    sha256 = "18h375q5bn9h7swxnk4krrxym1dxmi9bm26p89xps9ygrj4q6zqw";
   })
   (fetchNuGet {
     name = "System.Reflection.Emit.ILGeneration";
@@ -1541,18 +1326,8 @@
   })
   (fetchNuGet {
     name = "System.Reflection.Emit.Lightweight";
-    version = "4.7.0";
-    sha256 = "0mbjfajmafkca47zr8v36brvknzks5a7pgb49kfq2d188pyv6iap";
-  })
-  (fetchNuGet {
-    name = "System.Reflection.Emit";
-    version = "4.0.1";
-    sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
-  })
-  (fetchNuGet {
-    name = "System.Reflection.Emit";
-    version = "4.3.0";
-    sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
+    version = "4.6.0";
+    sha256 = "0hry2k6b7kicg4zxnq0hhn0ys52711pxy7l9v5sp7gvp9cicwpgp";
   })
   (fetchNuGet {
     name = "System.Reflection.Extensions";
@@ -1595,16 +1370,6 @@
     sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1";
   })
   (fetchNuGet {
-    name = "System.Reflection";
-    version = "4.1.0";
-    sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
-  })
-  (fetchNuGet {
-    name = "System.Reflection";
-    version = "4.3.0";
-    sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
-  })
-  (fetchNuGet {
     name = "System.Resources.ResourceManager";
     version = "4.0.1";
     sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi";
@@ -1615,6 +1380,16 @@
     sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49";
   })
   (fetchNuGet {
+    name = "System.Runtime";
+    version = "4.1.0";
+    sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
+  })
+  (fetchNuGet {
+    name = "System.Runtime";
+    version = "4.3.0";
+    sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
+  })
+  (fetchNuGet {
     name = "System.Runtime.CompilerServices.Unsafe";
     version = "4.5.1";
     sha256 = "1xcrjx5fwg284qdnxyi2d0lzdm5q4frlpkp0nf6vvkx1kdz2prrf";
@@ -1635,6 +1410,11 @@
     sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j";
   })
   (fetchNuGet {
+    name = "System.Runtime.CompilerServices.Unsafe";
+    version = "5.0.0";
+    sha256 = "02k25ivn50dmqx5jn8hawwmz24yf0454fjd823qk6lygj9513q4x";
+  })
+  (fetchNuGet {
     name = "System.Runtime.Extensions";
     version = "4.1.0";
     sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z";
@@ -1655,16 +1435,6 @@
     sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8";
   })
   (fetchNuGet {
-    name = "System.Runtime.InteropServices.RuntimeInformation";
-    version = "4.0.0";
-    sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
-  })
-  (fetchNuGet {
-    name = "System.Runtime.InteropServices.RuntimeInformation";
-    version = "4.3.0";
-    sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii";
-  })
-  (fetchNuGet {
     name = "System.Runtime.InteropServices";
     version = "4.1.0";
     sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
@@ -1675,6 +1445,16 @@
     sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
   })
   (fetchNuGet {
+    name = "System.Runtime.InteropServices.RuntimeInformation";
+    version = "4.0.0";
+    sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
+  })
+  (fetchNuGet {
+    name = "System.Runtime.InteropServices.RuntimeInformation";
+    version = "4.3.0";
+    sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii";
+  })
+  (fetchNuGet {
     name = "System.Runtime.Numerics";
     version = "4.0.1";
     sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn";
@@ -1690,31 +1470,11 @@
     sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k";
   })
   (fetchNuGet {
-    name = "System.Runtime";
-    version = "4.1.0";
-    sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
-  })
-  (fetchNuGet {
-    name = "System.Runtime";
-    version = "4.3.0";
-    sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
-  })
-  (fetchNuGet {
     name = "System.Security.AccessControl";
     version = "5.0.0";
     sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r";
   })
   (fetchNuGet {
-    name = "System.Security.Claims";
-    version = "4.0.1";
-    sha256 = "03dw0ls49bvsrffgwycyifjgz0qzr9r85skqhdyhfd51fqf398n6";
-  })
-  (fetchNuGet {
-    name = "System.Security.Claims";
-    version = "4.3.0";
-    sha256 = "0jvfn7j22l3mm28qjy3rcw287y9h65ha4m940waaxah07jnbzrhn";
-  })
-  (fetchNuGet {
     name = "System.Security.Cryptography.Algorithms";
     version = "4.2.0";
     sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85";
@@ -1735,6 +1495,11 @@
     sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv";
   })
   (fetchNuGet {
+    name = "System.Security.Cryptography.Cng";
+    version = "5.0.0-preview.3.20214.6";
+    sha256 = "050xx94ki5zmclplfns1v463wlf97ha2knwnxp08vqkgy0bdg1mv";
+  })
+  (fetchNuGet {
     name = "System.Security.Cryptography.Csp";
     version = "4.0.0";
     sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q";
@@ -1765,6 +1530,11 @@
     sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc";
   })
   (fetchNuGet {
+    name = "System.Security.Cryptography.Pkcs";
+    version = "5.0.0-preview.3.20214.6";
+    sha256 = "1q38rzpzhzpc8l75m06g6swq23qbl22ijzd9k76jfq08px3wq09k";
+  })
+  (fetchNuGet {
     name = "System.Security.Cryptography.Primitives";
     version = "4.0.0";
     sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh";
@@ -1775,6 +1545,11 @@
     sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby";
   })
   (fetchNuGet {
+    name = "System.Security.Cryptography.ProtectedData";
+    version = "4.4.0";
+    sha256 = "1q8ljvqhasyynp94a1d7jknk946m20lkwy2c3wa8zw2pc517fbj6";
+  })
+  (fetchNuGet {
     name = "System.Security.Cryptography.X509Certificates";
     version = "4.1.0";
     sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh";
@@ -1786,28 +1561,18 @@
   })
   (fetchNuGet {
     name = "System.Security.Principal.Windows";
-    version = "4.0.0";
-    sha256 = "1d3vc8i0zss9z8p4qprls4gbh7q4218l9845kclx7wvw41809k6z";
-  })
-  (fetchNuGet {
-    name = "System.Security.Principal.Windows";
-    version = "4.3.0";
-    sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr";
-  })
-  (fetchNuGet {
-    name = "System.Security.Principal.Windows";
     version = "5.0.0";
     sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8";
   })
   (fetchNuGet {
-    name = "System.Security.Principal";
-    version = "4.0.1";
-    sha256 = "1nbzdfqvzzbgsfdd5qsh94d7dbg2v4sw0yx6himyn52zf8z6007p";
+    name = "System.Text.Encoding";
+    version = "4.0.11";
+    sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
   })
   (fetchNuGet {
-    name = "System.Security.Principal";
+    name = "System.Text.Encoding";
     version = "4.3.0";
-    sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf";
+    sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
   })
   (fetchNuGet {
     name = "System.Text.Encoding.CodePages";
@@ -1816,8 +1581,8 @@
   })
   (fetchNuGet {
     name = "System.Text.Encoding.CodePages";
-    version = "4.7.1";
-    sha256 = "1y1hdap9qbl7vp74j8s9zcbh3v1rnrrvcc55wj1hl6has2v3qh1r";
+    version = "5.0.0";
+    sha256 = "1bn2pzaaq4wx9ixirr8151vm5hynn3lmrljcgjx9yghmm4k677k0";
   })
   (fetchNuGet {
     name = "System.Text.Encoding.Extensions";
@@ -1830,24 +1595,19 @@
     sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy";
   })
   (fetchNuGet {
-    name = "System.Text.Encoding";
-    version = "4.0.11";
-    sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
-  })
-  (fetchNuGet {
-    name = "System.Text.Encoding";
-    version = "4.3.0";
-    sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
+    name = "System.Text.Encodings.Web";
+    version = "5.0.0";
+    sha256 = "144pgy65jc3bkar7d4fg1c0rq6qmkx68gj9k1ldk97558w22v1r1";
   })
   (fetchNuGet {
-    name = "System.Text.Encodings.Web";
-    version = "4.7.1";
-    sha256 = "1wj7r07mjwbf9a79kapy2l9m8mcq8b3nbhg0zaprlsav09k85fmb";
+    name = "System.Text.Json";
+    version = "5.0.0";
+    sha256 = "1gpgl18z6qrgmqrikgh99xkjwzb1didrjp77bch7nrlra21gr4ks";
   })
   (fetchNuGet {
     name = "System.Text.Json";
-    version = "4.7.2";
-    sha256 = "10xj1pw2dgd42anikvj9qm23ccssrcp7dpznpj4j7xjp1ikhy3y4";
+    version = "5.0.1";
+    sha256 = "1j7via4spxy73ipng754wdz1nb882gsb9qh26jqlql66vzbbm3j3";
   })
   (fetchNuGet {
     name = "System.Text.RegularExpressions";
@@ -1860,24 +1620,19 @@
     sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l";
   })
   (fetchNuGet {
-    name = "System.Threading.Channels";
-    version = "4.7.1";
-    sha256 = "038fyrriypwzsj5fwgnkw79hm5ya0x63r724yizgahbxf512chr2";
-  })
-  (fetchNuGet {
-    name = "System.Threading.Tasks.Extensions";
-    version = "4.0.0";
-    sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
+    name = "System.Threading";
+    version = "4.0.11";
+    sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
   })
   (fetchNuGet {
-    name = "System.Threading.Tasks.Extensions";
+    name = "System.Threading";
     version = "4.3.0";
-    sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
+    sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
   })
   (fetchNuGet {
-    name = "System.Threading.Tasks.Extensions";
-    version = "4.5.4";
-    sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153";
+    name = "System.Threading.Channels";
+    version = "5.0.0";
+    sha256 = "11z28x3cawry60l5phkqrvavm0mshz84n4c79hrz0p65lq8jpxgs";
   })
   (fetchNuGet {
     name = "System.Threading.Tasks";
@@ -1890,19 +1645,29 @@
     sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7";
   })
   (fetchNuGet {
-    name = "System.Threading.Thread";
+    name = "System.Threading.Tasks.Extensions";
     version = "4.0.0";
-    sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc";
+    sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
   })
   (fetchNuGet {
-    name = "System.Threading.ThreadPool";
-    version = "4.0.10";
-    sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx";
+    name = "System.Threading.Tasks.Extensions";
+    version = "4.3.0";
+    sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
   })
   (fetchNuGet {
-    name = "System.Threading.ThreadPool";
-    version = "4.3.0";
-    sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1";
+    name = "System.Threading.Tasks.Extensions";
+    version = "4.5.3";
+    sha256 = "0g7r6hm572ax8v28axrdxz1gnsblg6kszq17g51pj14a5rn2af7i";
+  })
+  (fetchNuGet {
+    name = "System.Threading.Tasks.Extensions";
+    version = "4.5.4";
+    sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153";
+  })
+  (fetchNuGet {
+    name = "System.Threading.Thread";
+    version = "4.0.0";
+    sha256 = "1gxxm5fl36pjjpnx1k688dcw8m9l7nmf802nxis6swdaw8k54jzc";
   })
   (fetchNuGet {
     name = "System.Threading.Timer";
@@ -1915,16 +1680,6 @@
     sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56";
   })
   (fetchNuGet {
-    name = "System.Threading";
-    version = "4.0.11";
-    sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
-  })
-  (fetchNuGet {
-    name = "System.Threading";
-    version = "4.3.0";
-    sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
-  })
-  (fetchNuGet {
     name = "System.Xml.ReaderWriter";
     version = "4.0.11";
     sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5";
diff --git a/nixpkgs/pkgs/games/osu-lazer/osu.runtimeconfig.json b/nixpkgs/pkgs/games/osu-lazer/osu.runtimeconfig.json
index ec942fede66e..a1a197b1b671 100644
--- a/nixpkgs/pkgs/games/osu-lazer/osu.runtimeconfig.json
+++ b/nixpkgs/pkgs/games/osu-lazer/osu.runtimeconfig.json
@@ -1,9 +1,9 @@
 {
   "runtimeOptions": {
-    "tfm": "netcoreapp3.1",
+    "tfm": "net5.0",
     "framework": {
       "name": "Microsoft.NETCore.App",
-      "version": "3.1.0"
+      "version": "5.0.0"
     }
   }
 }
diff --git a/nixpkgs/pkgs/games/osu-lazer/update.sh b/nixpkgs/pkgs/games/osu-lazer/update.sh
index 3c78ae8a50a8..44a4bb3821db 100755
--- a/nixpkgs/pkgs/games/osu-lazer/update.sh
+++ b/nixpkgs/pkgs/games/osu-lazer/update.sh
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl jq common-updater-scripts dotnet-sdk_3
+#!nix-shell -i bash -p curl jq common-updater-scripts dotnet-sdk_5
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
diff --git a/nixpkgs/pkgs/games/papermc/default.nix b/nixpkgs/pkgs/games/papermc/default.nix
index f06d41495a81..e32ec946b2d7 100644
--- a/nixpkgs/pkgs/games/papermc/default.nix
+++ b/nixpkgs/pkgs/games/papermc/default.nix
@@ -1,10 +1,10 @@
 { lib, stdenv, fetchurl, bash, jre }:
 let
-  mcVersion = "1.16.4";
-  buildNum = "296";
+  mcVersion = "1.16.5";
+  buildNum = "457";
   jar = fetchurl {
     url = "https://papermc.io/api/v1/paper/${mcVersion}/${buildNum}/download";
-    sha256 = "0885417w7qahk2fwlzvggbwrhvwgpd7xas8lzzb7ar469vyvd9dz";
+    sha256 = "1xkjaj5wgm9rmzk8mz20n9vd674fynvdgqsy96c9bfifa03lsnmc";
   };
 in stdenv.mkDerivation {
   pname = "papermc";
@@ -31,6 +31,6 @@ in stdenv.mkDerivation {
     homepage    = "https://papermc.io/";
     license     = lib.licenses.gpl3Only;
     platforms   = lib.platforms.unix;
-    maintainers = with lib.maintainers; [ aaronjanse ];
+    maintainers = with lib.maintainers; [ aaronjanse neonfuz ];
   };
 }
diff --git a/nixpkgs/pkgs/games/performous/default.nix b/nixpkgs/pkgs/games/performous/default.nix
index b0fc9483629e..dce771faec17 100644
--- a/nixpkgs/pkgs/games/performous/default.nix
+++ b/nixpkgs/pkgs/games/performous/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub, cmake, pkg-config, gettext
 , glibmm, libxmlxx, pango, librsvg
-, SDL2, glew, boost, libav, portaudio, epoxy
+, SDL2, glew, boost, ffmpeg, portaudio, epoxy
 }:
 
 stdenv.mkDerivation rec {
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glibmm libxmlxx pango librsvg
-    SDL2 glew boost libav portaudio epoxy
+    SDL2 glew boost ffmpeg portaudio epoxy
   ];
 }
diff --git a/nixpkgs/pkgs/games/pioneer/default.nix b/nixpkgs/pkgs/games/pioneer/default.nix
index 0d348e3fa9e5..51eda72bdefc 100644
--- a/nixpkgs/pkgs/games/pioneer/default.nix
+++ b/nixpkgs/pkgs/games/pioneer/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pioneer";
-  version = "20200203";
+  version = "20210203";
 
   src = fetchFromGitHub{
     owner = "pioneerspacesim";
     repo = "pioneer";
     rev = version;
-    sha256 = "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8";
+    sha256 = "sha256-51HXbX15uB1Xf9Re7Qi41BnJ9OW+GeXQhylJ+HwP0f8=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/games/pokerth/default.nix b/nixpkgs/pkgs/games/pokerth/default.nix
index 56f0d5a47f2c..59555a8ac240 100644
--- a/nixpkgs/pkgs/games/pokerth/default.nix
+++ b/nixpkgs/pkgs/games/pokerth/default.nix
@@ -1,4 +1,4 @@
-{ lib, mkDerivation, stdenv, fetchFromGitHub, runCommand, fetchpatch, patchutils, qmake, qtbase
+{ lib, mkDerivation, fetchFromGitHub, runCommand, fetchpatch, patchutils, qmake, qtbase
 , SDL, SDL_mixer, boost, curl, gsasl, libgcrypt, libircclient, protobuf, sqlite
 , wrapQtAppsHook
 , tinyxml2, target ? "client" }:
diff --git a/nixpkgs/pkgs/games/portmod/default.nix b/nixpkgs/pkgs/games/portmod/default.nix
index 07451b8dc2a4..ef535991c23b 100644
--- a/nixpkgs/pkgs/games/portmod/default.nix
+++ b/nixpkgs/pkgs/games/portmod/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, callPackage, python3Packages, fetchFromGitLab, cacert,
+{ lib, callPackage, python3Packages, fetchFromGitLab, cacert,
   rustPlatform, bubblewrap, git, perlPackages, imagemagick7, fetchurl, fetchzip,
   jre, makeWrapper, tr-patcher, tes3cmd }:
 
diff --git a/nixpkgs/pkgs/games/pro-office-calculator/default.nix b/nixpkgs/pkgs/games/pro-office-calculator/default.nix
index dbe2db363ea1..381a6e8742b0 100644
--- a/nixpkgs/pkgs/games/pro-office-calculator/default.nix
+++ b/nixpkgs/pkgs/games/pro-office-calculator/default.nix
@@ -1,4 +1,4 @@
-{ mkDerivation, lib, stdenv, fetchFromGitHub, tinyxml-2, cmake, qtbase, qtmultimedia }:
+{ mkDerivation, lib, fetchFromGitHub, tinyxml-2, cmake, qtbase, qtmultimedia }:
 mkDerivation rec {
   version = "1.0.13";
   pname = "pro-office-calculator";
diff --git a/nixpkgs/pkgs/games/pysolfc/default.nix b/nixpkgs/pkgs/games/pysolfc/default.nix
index c765a1cbdf5b..925532bbbf53 100644
--- a/nixpkgs/pkgs/games/pysolfc/default.nix
+++ b/nixpkgs/pkgs/games/pysolfc/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchzip, buildPythonApplication, python3Packages
+{ lib, fetchzip, buildPythonApplication, python3Packages
   , desktop-file-utils, freecell-solver }:
 
 buildPythonApplication rec {
diff --git a/nixpkgs/pkgs/games/snipes/default.nix b/nixpkgs/pkgs/games/snipes/default.nix
index 66188ba0efe8..01b24ee434c3 100644
--- a/nixpkgs/pkgs/games/snipes/default.nix
+++ b/nixpkgs/pkgs/games/snipes/default.nix
@@ -13,13 +13,15 @@ in stdenv.mkDerivation {
   src = fetchFromGitHub {
     owner  = "Davidebyzero";
     repo   = "Snipes";
-    rev    = "343e14104b7848eb1f882401888e685b7918ef9f";
-    sha256 = "1rl70d5miak34warbwfv27z11vln4lvf7maqqc78z0gdc5zivdv2";
+    rev    = "594af45108e07aa4159c3babc9b5e53609c3fd6e";
+    sha256 = "0gmh38swm74jmljy0bq27ipqzb4h8y9rzwc1j6harbd9qqz5knac";
   };
 
   postPatch = ''
     substitute config-sample.h config.h \
       --replace SnipesConsole.ttf $out/share/snipes/SnipesConsole.ttf
+    substituteInPlace GNUmakefile \
+      --replace 'CFLAGS=-Werror -Wall' 'CFLAGS=-Wall'
   '';
 
   enableParallelBuilding = true;
diff --git a/nixpkgs/pkgs/games/steam/fhsenv.nix b/nixpkgs/pkgs/games/steam/fhsenv.nix
index 4fa8960726bc..924714d802a9 100644
--- a/nixpkgs/pkgs/games/steam/fhsenv.nix
+++ b/nixpkgs/pkgs/games/steam/fhsenv.nix
@@ -29,7 +29,7 @@ let
       # Needed by gdialog, including in the steam-runtime
       perl
       # Open URLs
-      xdg_utils
+      xdg-utils
       iana-etc
       # Steam Play / Proton
       python3
@@ -171,7 +171,7 @@ in buildFHSUserEnv rec {
     SDL2
     libusb1
     dbus-glib
-    libav
+    ffmpeg
     atk
     # Only libraries are needed from those two
     libudev0-shim
diff --git a/nixpkgs/pkgs/games/stockfish/default.nix b/nixpkgs/pkgs/games/stockfish/default.nix
index 075db08a5ce3..71c482fe7660 100644
--- a/nixpkgs/pkgs/games/stockfish/default.nix
+++ b/nixpkgs/pkgs/games/stockfish/default.nix
@@ -1,15 +1,22 @@
 { lib, stdenv, fetchurl }:
 
-let arch = if stdenv.isx86_64 then "x86-64" else
+with lib;
+
+let
+    # The x86-64-modern may need to be refined further in the future
+    # but stdenv.hostPlatform CPU flags do not currently work on Darwin
+    # https://discourse.nixos.org/t/darwin-system-and-stdenv-hostplatform-features/9745
+    archDarwin = if stdenv.isx86_64 then "x86-64-modern" else "x86-64";
+    arch = if stdenv.isDarwin then archDarwin else
+           if stdenv.isx86_64 then "x86-64" else
            if stdenv.isi686 then "x86-32" else
            "unknown";
-
     version = "12";
 
     nnueFile = "nn-82215d0fd0df.nnue";
     nnue = fetchurl {
       name = nnueFile;
-        url = "https://tests.stockfishchess.org/api/nn/${nnueFile}";
+      url = "https://tests.stockfishchess.org/api/nn/${nnueFile}";
       sha256 = "1r4yqrh4di05syyhl84hqcz84djpbd605b27zhbxwg6zs07ms8c2";
     };
 in
@@ -23,18 +30,24 @@ stdenv.mkDerivation {
     sha256 = "16980aicm5i6i9252239q4f9bcxg1gnqkv6nphrmpz4drg8i3v6i";
   };
 
+  # This addresses a linker issue with Darwin
+  # https://github.com/NixOS/nixpkgs/issues/19098
+  preBuild = optionalString stdenv.isDarwin ''
+    sed -i.orig '/^\#\#\# 3.*Link Time Optimization/,/^\#\#\# 3/d' Makefile
+  '';
+
   postUnpack = ''
     sourceRoot+=/src
     echo ${nnue}
     cp "${nnue}" "$sourceRoot/${nnueFile}"
   '';
 
-  makeFlags = [ "PREFIX=$(out)" "ARCH=${arch}" ];
+  makeFlags = [ "PREFIX=$(out)" "ARCH=${arch}" "CXX=${stdenv.cc.targetPrefix}c++" ];
   buildFlags = [ "build" ];
 
   enableParallelBuilding = true;
 
-  meta = with lib; {
+  meta = {
     homepage = "https://stockfishchess.org/";
     description = "Strong open source chess engine";
     longDescription = ''
@@ -42,7 +55,7 @@ stdenv.mkDerivation {
       much stronger than the best human chess grandmasters.
       '';
     maintainers = with maintainers; [ luispedro peti ];
-    platforms = ["x86_64-linux" "i686-linux"];
+    platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"];
     license = licenses.gpl2;
   };
 
diff --git a/nixpkgs/pkgs/games/super-tux-kart/default.nix b/nixpkgs/pkgs/games/super-tux-kart/default.nix
index 1729e2fc2853..961842e8701c 100644
--- a/nixpkgs/pkgs/games/super-tux-kart/default.nix
+++ b/nixpkgs/pkgs/games/super-tux-kart/default.nix
@@ -1,15 +1,34 @@
-{ lib, stdenv, fetchFromGitHub, fetchsvn, cmake, pkg-config, makeWrapper
-, SDL2, glew, openal, libvorbis, libogg, curl, freetype, bluez, libjpeg, libpng, enet, harfbuzz
-, mcpp, wiiuse, angelscript
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, fetchsvn
+, cmake
+, pkg-config
+, makeWrapper
+, SDL2
+, glew
+, openal
+, libvorbis
+, libogg
+, curl
+, freetype
+, bluez
+, libjpeg
+, libpng
+, enet
+, harfbuzz
+, mcpp
+, wiiuse
+, angelscript
 }:
-
 let
   dir = "stk-code";
   assets = fetchsvn {
-    url    = "https://svn.code.sf.net/p/supertuxkart/code/stk-assets";
-    rev    = "18218";
+    url = "https://svn.code.sf.net/p/supertuxkart/code/stk-assets";
+    rev = "18218";
     sha256 = "11iv3cqzvbjg33zz5i5gkl2syn6mlw9wqv0jc7h36vjnjqjv17xw";
-    name   = "stk-assets";
+    name = "stk-assets";
   };
 
   # List of bundled libraries in stk-code/lib to keep
@@ -36,19 +55,28 @@ let
     # Not packaged to this date
     "sheenbidi"
   ];
-in stdenv.mkDerivation rec {
+in
+stdenv.mkDerivation rec {
 
   pname = "supertuxkart";
   version = "1.2";
 
   src = fetchFromGitHub {
-    owner  = "supertuxkart";
-    repo   = "stk-code";
-    rev    = version;
+    owner = "supertuxkart";
+    repo = "stk-code";
+    rev = version;
     sha256 = "1f98whk0v45jgwcsbdsb1qfambvrnbbgwq0w28kjz4278hinwzq6";
-    name   = dir;
+    name = dir;
   };
 
+  patches = [
+    (fetchpatch {
+      # Fix build with SDL 2.0.14
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/games-action/supertuxkart/files/supertuxkart-1.2-new-sdl.patch?id=288360dc7ce2f968a2f12099edeace3f3ed1a705";
+      sha256 = "1jgab9393qan8qbqf5bf8cgw4mynlr5a6pggqhybzsmaczgnns3n";
+    })
+  ];
+
   # Deletes all bundled libs in stk-code/lib except those
   # That couldn't be replaced with system packages
   postPatch = ''
@@ -58,12 +86,25 @@ in stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake pkg-config makeWrapper ];
 
   buildInputs = [
-    SDL2 glew openal libvorbis libogg freetype curl bluez libjpeg libpng enet harfbuzz
-    mcpp wiiuse angelscript
+    SDL2
+    glew
+    openal
+    libvorbis
+    libogg
+    freetype
+    curl
+    bluez
+    libjpeg
+    libpng
+    enet
+    harfbuzz
+    mcpp
+    wiiuse
+    angelscript
   ];
 
   cmakeFlags = [
-    "-DBUILD_RECORDER=OFF"         # libopenglrecorder is not in nixpkgs
+    "-DBUILD_RECORDER=OFF" # libopenglrecorder is not in nixpkgs
     "-DUSE_SYSTEM_ANGELSCRIPT=OFF" # doesn't work with 2.31.2 or 2.32.0
     "-DCHECK_ASSETS=OFF"
     "-DUSE_SYSTEM_WIIUSE=ON"
diff --git a/nixpkgs/pkgs/games/the-butterfly-effect/default.nix b/nixpkgs/pkgs/games/the-butterfly-effect/default.nix
index c87d1bea1c73..f5330485eddc 100644
--- a/nixpkgs/pkgs/games/the-butterfly-effect/default.nix
+++ b/nixpkgs/pkgs/games/the-butterfly-effect/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, mkDerivation, fetchFromGitHub, qt5, box2d, which, cmake, gettext }:
+{ lib, mkDerivation, fetchFromGitHub, qt5, box2d, which, cmake, gettext }:
 
 mkDerivation rec {
   pname = "tbe";
diff --git a/nixpkgs/pkgs/games/trackballs/default.nix b/nixpkgs/pkgs/games/trackballs/default.nix
index 4c7d2ba6956e..8ebeab4b260b 100644
--- a/nixpkgs/pkgs/games/trackballs/default.nix
+++ b/nixpkgs/pkgs/games/trackballs/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
     homepage = "https://trackballs.github.io/";
     description = "3D Marble Madness clone";
     platforms = platforms.linux;
-    license = licenses.gpl2;
+    # Music is licensed under Ethymonics Free Music License.
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/nixpkgs/pkgs/games/ue4/default.nix b/nixpkgs/pkgs/games/ue4/default.nix
index 73b1cb38ca38..95f0d64f1975 100644
--- a/nixpkgs/pkgs/games/ue4/default.nix
+++ b/nixpkgs/pkgs/games/ue4/default.nix
@@ -1,8 +1,7 @@
-{ stdenv, writeScript, fetchurl, requireFile, unzip, clang, mono, which,
+{ lib, stdenv, writeScript, fetchurl, requireFile, unzip, clang, mono, which,
   xorg, xdg-user-dirs }:
 
 let
-  inherit (stdenv) lib;
   deps = import ./cdn-deps.nix { inherit fetchurl; };
   linkDeps = writeScript "link-deps.sh" (lib.concatMapStringsSep "\n" (hash:
     let prefix = lib.concatStrings (lib.take 2 (lib.stringToCharacters hash));
diff --git a/nixpkgs/pkgs/games/unciv/default.nix b/nixpkgs/pkgs/games/unciv/default.nix
index 917cf328e7ed..0f04ebfe4daf 100644
--- a/nixpkgs/pkgs/games/unciv/default.nix
+++ b/nixpkgs/pkgs/games/unciv/default.nix
@@ -25,11 +25,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "unciv";
-  version = "3.12.8";
+  version = "3.12.13-patch1";
 
   src = fetchurl {
     url = "https://github.com/yairm210/Unciv/releases/download/${version}/Unciv.jar";
-    sha256 = "178lasa6ahwg2s2hamm13yysg42qm13v6a9pgs6nm66np93nskc7";
+    sha256 = "sha256-OwS1rn5mfU6cA6pvpp7Q407Kw2wBGvpqWmqlajgHtCI=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/games/vitetris/default.nix b/nixpkgs/pkgs/games/vitetris/default.nix
index 2b9c77cd4679..99996ca5c324 100644
--- a/nixpkgs/pkgs/games/vitetris/default.nix
+++ b/nixpkgs/pkgs/games/vitetris/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "vitetris";
-  version = "0.58.0";
+  version = "0.59.1";
 
   src = fetchFromGitHub {
     owner = "vicgeralds";
     repo = "vitetris";
     rev = "v${version}";
-    sha256 = "1fvw9yqg1q25x6dlfi4bl3hrrcdgl6wwq29j89aycxwdfxrxs09w";
+    sha256 = "sha256-Rbfa2hD67RGmInfWwYD4SthL8lm5bGSBi3oudV5hAao=";
   };
 
   hardeningDisable = [ "format" ];
diff --git a/nixpkgs/pkgs/games/warzone2100/default.nix b/nixpkgs/pkgs/games/warzone2100/default.nix
index 1f6e2995a2ae..ce330536b751 100644
--- a/nixpkgs/pkgs/games/warzone2100/default.nix
+++ b/nixpkgs/pkgs/games/warzone2100/default.nix
@@ -1,6 +1,33 @@
-{ lib, stdenv, mkDerivation, fetchurl, autoconf, automake
-, perl, unzip, zip, which, pkg-config, qtbase, qtscript
-, SDL2, libtheora, openal, glew, physfs, fribidi, libXrandr
+{ lib
+, mkDerivation
+, fetchurl
+, cmake
+, ninja
+, zip, unzip
+, pkg-config
+, asciidoctor
+, gettext
+
+, qtbase
+, qtscript
+, SDL2
+, libtheora
+, libvorbis
+, openal
+, openalSoft
+, glew
+, physfs
+, fribidi
+, libXrandr
+, miniupnpc
+, libsodium
+, curl
+, libpng
+, freetype
+, harfbuzz
+, sqlite
+, which
+
 , withVideos ? false
 }:
 
@@ -14,38 +41,61 @@ in
 
 mkDerivation rec {
   inherit pname;
-  version  = "3.3.0";
+  version  = "3.4.1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/${pname}/releases/${version}/${pname}-${version}_src.tar.xz";
-    sha256 = "1s0n67rh32g0bgq72p4qzkcqjlw58gc70r4r6gl9k90pil9chj6c";
+    url = "mirror://sourceforge/${pname}/releases/${version}/${pname}_src.tar.xz";
+    sha256 = "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a";
   };
 
   buildInputs = [
-    qtbase qtscript SDL2 libtheora openal
-    glew physfs fribidi libXrandr
+    qtbase
+    qtscript
+    SDL2
+    libtheora
+    libvorbis
+    openal
+    openalSoft
+    glew
+    physfs
+    fribidi
+    libXrandr
+    miniupnpc
+    libsodium
+    curl
+    libpng
+    freetype
+    harfbuzz
+    sqlite
   ];
+
   nativeBuildInputs = [
-    perl zip unzip pkg-config autoconf automake
+    cmake
+    ninja
+    zip unzip
+    asciidoctor
+    gettext
   ];
 
-  preConfigure = "./autogen.sh";
-
   postPatch = ''
     substituteInPlace lib/exceptionhandler/dumpinfo.cpp \
-                      --replace "which %s" "${which}/bin/which %s"
+                      --replace '"which "' '"${which}/bin/which "'
     substituteInPlace lib/exceptionhandler/exceptionhandler.cpp \
                       --replace "which %s" "${which}/bin/which %s"
   '';
 
-  configureFlags = [ "--with-distributor=NixOS" ];
-
-  hardeningDisable = [ "format" ];
-
-  enableParallelBuilding = true;
+  cmakeFlags = [
+    "-DWZ_DISTRIBUTOR=NixOS"
+    # The cmake builder automatically sets CMAKE_INSTALL_BINDIR to an absolute
+    # path, but this results in an error.
+    # By resetting it, we let the CMakeLists set it to an accepted value
+    # based on prefix.
+    "-DCMAKE_INSTALL_BINDIR="
+  ];
 
-  postInstall = lib.optionalString withVideos
-    "cp ${sequences_src} $out/share/warzone2100/sequences.wz";
+  postInstall = lib.optionalString withVideos ''
+    cp ${sequences_src} $out/share/warzone2100/sequences.wz
+  '';
 
   meta = with lib; {
     description = "A free RTS game, originally developed by Pumpkin Studios";
@@ -62,7 +112,7 @@ mkDerivation rec {
     '';
     homepage = "http://wz2100.net";
     license = licenses.gpl2Plus;
-    maintainers = [ maintainers.astsmtl ];
+    maintainers = with maintainers; [ astsmtl fgaz ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/games/wesnoth/default.nix b/nixpkgs/pkgs/games/wesnoth/default.nix
index eda6dfb717c9..205937028a73 100644
--- a/nixpkgs/pkgs/games/wesnoth/default.nix
+++ b/nixpkgs/pkgs/games/wesnoth/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "wesnoth";
-  version = "1.14.14";
+  version = "1.14.15";
 
   src = fetchFromGitHub {
     rev = version;
     owner = "wesnoth";
     repo = "wesnoth";
-    sha256 = "0rawcm3d1qwf4wxqcbjipl6h30sfv7z70viji28q4givi5hysvka";
+    sha256 = "sha256-HbQy5yhNe6HFydipqh2wWcyLfIjbdRjcBQaqAOtBJsY=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/games/widelands/default.nix b/nixpkgs/pkgs/games/widelands/default.nix
index ba7ce241b868..8b96dcc04e2e 100644
--- a/nixpkgs/pkgs/games/widelands/default.nix
+++ b/nixpkgs/pkgs/games/widelands/default.nix
@@ -5,7 +5,7 @@
 
 stdenv.mkDerivation rec {
   pname = "widelands";
-  version = "20";
+  version = "21";
 
   meta = with lib; {
     description = "RTS with multiple-goods economy";
@@ -26,8 +26,8 @@ stdenv.mkDerivation rec {
   ];
 
   src = fetchurl {
-    url = "https://launchpad.net/widelands/build${version}/build${version}/+download/widelands-build${version}.tar.bz2";
-    sha256 = "1cmwfwk7j6yi2pwmm4rm57s23sdzasqf53nx6567sdagqyc4sn9q";
+    url = "https://launchpad.net/widelands/build${version}/build${version}/+download/widelands-build${version}-source.tar.gz";
+    sha256 = "sha256-YB4OTG+Rs/sOzizRuD7PsCNEobkZT7tw7z9w4GmU41c=";
   };
 
   preConfigure = ''
@@ -45,12 +45,8 @@ stdenv.mkDerivation rec {
     SDL2 SDL2_image SDL2_mixer SDL2_net SDL2_ttf
   ];
 
-  prePatch = ''
-    substituteInPlace ./debian/org.widelands.widelands.desktop --replace "/usr/share/games/widelands/data/" "$out/share/widelands/"
-  '';
-
   postInstall = ''
     mkdir -p "$out/share/applications/"
-    cp -v "../debian/org.widelands.widelands.desktop" "$out/share/applications/"
+    cp -v "../xdg/org.widelands.Widelands.desktop" "$out/share/applications/"
   '';
 }
diff --git a/nixpkgs/pkgs/games/wyvern/default.nix b/nixpkgs/pkgs/games/wyvern/default.nix
index 5a6bc34fea5e..f99faa282fdc 100644
--- a/nixpkgs/pkgs/games/wyvern/default.nix
+++ b/nixpkgs/pkgs/games/wyvern/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv
+{ lib
 , fetchgit
 , rustPlatform
 , unzip