about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-06-30 13:44:37 +0000
committerAlyssa Ross <hi@alyssa.is>2021-06-30 13:44:37 +0000
commit16f676d6bbd4f930b0017ccb20cebe5a29e17545 (patch)
tree0d554b4f16bdef502035b743457fc29ffcc5e7f7 /nixpkgs/pkgs/games
parente7caacc4c122b7641bb66a4c2595289347a4996c (diff)
parent3a8d7958a610cd3fec3a6f424480f91a1b259185 (diff)
downloadnixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.tar
nixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.tar.gz
nixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.tar.bz2
nixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.tar.lz
nixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.tar.xz
nixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.tar.zst
nixlib-16f676d6bbd4f930b0017ccb20cebe5a29e17545.zip
Merge commit '3a8d7958a610cd3fec3a6f424480f91a1b259185'
Diffstat (limited to 'nixpkgs/pkgs/games')
-rw-r--r--nixpkgs/pkgs/games/andyetitmoves/default.nix13
-rw-r--r--nixpkgs/pkgs/games/arena/default.nix15
-rw-r--r--nixpkgs/pkgs/games/asc/default.nix5
-rw-r--r--nixpkgs/pkgs/games/ball-and-paddle/default.nix5
-rw-r--r--nixpkgs/pkgs/games/beret/default.nix3
-rw-r--r--nixpkgs/pkgs/games/bitsnbots/default.nix9
-rw-r--r--nixpkgs/pkgs/games/bsdgames/default.nix7
-rw-r--r--nixpkgs/pkgs/games/chessdb/default.nix7
-rw-r--r--nixpkgs/pkgs/games/crack-attack/default.nix7
-rw-r--r--nixpkgs/pkgs/games/duckmarines/default.nix7
-rw-r--r--nixpkgs/pkgs/games/eboard/default.nix7
-rw-r--r--nixpkgs/pkgs/games/eduke32/default.nix10
-rw-r--r--nixpkgs/pkgs/games/endless-sky/default.nix8
-rw-r--r--nixpkgs/pkgs/games/exult/default.nix5
-rw-r--r--nixpkgs/pkgs/games/fsg/default.nix9
-rw-r--r--nixpkgs/pkgs/games/gav/default.nix7
-rw-r--r--nixpkgs/pkgs/games/gemrb/default.nix66
-rw-r--r--nixpkgs/pkgs/games/gltron/default.nix5
-rw-r--r--nixpkgs/pkgs/games/gmad/default.nix3
-rw-r--r--nixpkgs/pkgs/games/grapejuice/default.nix95
-rw-r--r--nixpkgs/pkgs/games/gtetrinet/default.nix3
-rw-r--r--nixpkgs/pkgs/games/icbm3d/default.nix7
-rw-r--r--nixpkgs/pkgs/games/kobodeluxe/default.nix7
-rw-r--r--nixpkgs/pkgs/games/macopix/default.nix5
-rw-r--r--nixpkgs/pkgs/games/multimc/0001-pick-latest-java-first.patch48
-rw-r--r--nixpkgs/pkgs/games/multimc/default.nix24
-rw-r--r--nixpkgs/pkgs/games/neverball/default.nix5
-rw-r--r--nixpkgs/pkgs/games/njam/default.nix7
-rw-r--r--nixpkgs/pkgs/games/openlierox/default.nix5
-rw-r--r--nixpkgs/pkgs/games/openra/engine.nix1
-rw-r--r--nixpkgs/pkgs/games/orthorobot/default.nix28
-rw-r--r--nixpkgs/pkgs/games/pokerth/default.nix2
-rw-r--r--nixpkgs/pkgs/games/pong3d/default.nix7
-rw-r--r--nixpkgs/pkgs/games/prboom/default.nix5
-rw-r--r--nixpkgs/pkgs/games/quake2/yquake2/games.nix2
-rw-r--r--nixpkgs/pkgs/games/racer/default.nix9
-rw-r--r--nixpkgs/pkgs/games/rili/default.nix7
-rw-r--r--nixpkgs/pkgs/games/rimshot/default.nix17
-rw-r--r--nixpkgs/pkgs/games/rocksndiamonds/default.nix5
-rw-r--r--nixpkgs/pkgs/games/rogue/default.nix11
-rw-r--r--nixpkgs/pkgs/games/rpg-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/games/scrolls/default.nix3
-rw-r--r--nixpkgs/pkgs/games/sgt-puzzles/default.nix2
-rw-r--r--nixpkgs/pkgs/games/sienna/default.nix16
-rw-r--r--nixpkgs/pkgs/games/snake4/default.nix5
-rw-r--r--nixpkgs/pkgs/games/steam/fonts.nix3
-rw-r--r--nixpkgs/pkgs/games/tcl2048/default.nix7
-rw-r--r--nixpkgs/pkgs/games/teetertorture/default.nix7
-rw-r--r--nixpkgs/pkgs/games/tennix/default.nix5
-rw-r--r--nixpkgs/pkgs/games/tibia/default.nix7
-rw-r--r--nixpkgs/pkgs/games/tintin/default.nix5
-rw-r--r--nixpkgs/pkgs/games/tome4/default.nix17
-rw-r--r--nixpkgs/pkgs/games/torcs/default.nix5
-rw-r--r--nixpkgs/pkgs/games/torus-trooper/default.nix4
-rw-r--r--nixpkgs/pkgs/games/tumiki-fighters/default.nix4
-rw-r--r--nixpkgs/pkgs/games/typespeed/default.nix7
-rw-r--r--nixpkgs/pkgs/games/ufoai/default.nix7
-rw-r--r--nixpkgs/pkgs/games/uhexen2/default.nix2
-rw-r--r--nixpkgs/pkgs/games/ultimatestunts/default.nix7
-rw-r--r--nixpkgs/pkgs/games/unvanquished/default.nix12
-rw-r--r--nixpkgs/pkgs/games/vectoroids/default.nix7
-rw-r--r--nixpkgs/pkgs/games/vessel/default.nix7
-rw-r--r--nixpkgs/pkgs/games/widelands/default.nix108
-rw-r--r--nixpkgs/pkgs/games/xbomb/default.nix5
-rw-r--r--nixpkgs/pkgs/games/xonotic/default.nix6
-rw-r--r--nixpkgs/pkgs/games/zandronum/sqlite.nix3
-rw-r--r--nixpkgs/pkgs/games/zdoom/bcc-git.nix3
-rw-r--r--nixpkgs/pkgs/games/zod/default.nix8
-rw-r--r--nixpkgs/pkgs/games/zoom/default.nix5
69 files changed, 508 insertions, 273 deletions
diff --git a/nixpkgs/pkgs/games/andyetitmoves/default.nix b/nixpkgs/pkgs/games/andyetitmoves/default.nix
index f939f5b2bac9..9eb1c7594a10 100644
--- a/nixpkgs/pkgs/games/andyetitmoves/default.nix
+++ b/nixpkgs/pkgs/games/andyetitmoves/default.nix
@@ -1,17 +1,14 @@
 { lib, stdenv, fetchurl, libvorbis, libogg, libtheora, SDL, libXft, SDL_image, zlib, libX11, libpng, openal, runtimeShell, requireFile, commercialVersion ? false }:
 
-let plainName = "andyetitmoves";
-    version   = "1.2.2";
-in
-
-stdenv.mkDerivation {
-  name = "${plainName}-${version}";
+stdenv.mkDerivation rec {
+  pname = "andyetitmoves";
+  version   = "1.2.2";
 
   src = if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux"
     then
       let postfix        = if stdenv.hostPlatform.system == "i686-linux" then "i386" else "x86_64";
-          commercialName = "${plainName}-${version}_${postfix}.tar.gz";
-          demoUrl        = "http://www.andyetitmoves.net/demo/${plainName}Demo-${version}_${postfix}.tar.gz";
+          commercialName = "${pname}-${version}_${postfix}.tar.gz";
+          demoUrl        = "http://www.andyetitmoves.net/demo/${pname}Demo-${version}_${postfix}.tar.gz";
       in
       if commercialVersion
         then requireFile {
diff --git a/nixpkgs/pkgs/games/arena/default.nix b/nixpkgs/pkgs/games/arena/default.nix
index 7320a405bb1c..16553a5f8ea6 100644
--- a/nixpkgs/pkgs/games/arena/default.nix
+++ b/nixpkgs/pkgs/games/arena/default.nix
@@ -12,10 +12,11 @@ let
 
 in
 stdenv.mkDerivation rec {
-  name = "arena-3.10-beta";
+  pname = "arena";
+  version = "3.10-beta";
 
   src = fetchurl {
-    url = "http://www.playwitharena.de/downloads/arenalinux_64bit_3.10beta.tar.gz";
+    url = "http://www.playwitharena.de/downloads/arenalinux_64bit_${lib.replaceStrings ["-"] [""] version}.tar.gz";
     sha256 = "1pzb9sg4lzbbi4gbldvlb85p8xyl9xnplxwyb9pkk2mwzvvxkf0d";
   };
 
@@ -25,19 +26,19 @@ stdenv.mkDerivation rec {
   unpackPhase = ''
     # This is is a tar bomb, i.e. it extract a dozen files and directories to
     # the top-level, so we must create a sub-directory first.
-    mkdir -p $out/lib/${name}
-    tar -C $out/lib/${name} -xf ${src}
+    mkdir -p $out/lib/${pname}-${version}
+    tar -C $out/lib/${pname}-${version} -xf ${src}
 
     # Remove executable bits from data files. This matters for the find command
     # we'll use below to find all bundled engines.
-    chmod -x $out/lib/${name}/Engines/*/*.{txt,bin,bmp,zip}
+    chmod -x $out/lib/${pname}-${version}/Engines/*/*.{txt,bin,bmp,zip}
   '';
 
   buildPhase = ''
     # Arena has (at least) two executables plus a couple of bundled chess
     # engines that we need to patch.
     exes=( $(find $out -name '*x86_64_linux')
-           $(find $out/lib/${name}/Engines -type f -perm /u+x)
+           $(find $out/lib/${pname}-${version}/Engines -type f -perm /u+x)
          )
     for i in "''${exes[@]}"; do
       # Arminius is statically linked.
@@ -52,7 +53,7 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     mkdir -p $out/bin
-    ln -s $out/lib/${name}/Arena_x86_64_linux $out/bin/arena
+    ln -s $out/lib/${pname}-${version}/Arena_x86_64_linux $out/bin/arena
   '';
 
   dontStrip = true;
diff --git a/nixpkgs/pkgs/games/asc/default.nix b/nixpkgs/pkgs/games/asc/default.nix
index 778f5224d2d8..af3f9f403100 100644
--- a/nixpkgs/pkgs/games/asc/default.nix
+++ b/nixpkgs/pkgs/games/asc/default.nix
@@ -3,10 +3,11 @@
 , libpng, libtiff, fluidsynth, libmikmod, libvorbis, flac, libogg }:
 
 stdenv.mkDerivation rec {
-  name = "asc-2.6.0.0";
+  pname = "asc";
+  version = "2.6.0.0";
 
   src = fetchurl {
-    url = "mirror://sourceforge/asc-hq/${name}.tar.bz2";
+    url = "mirror://sourceforge/asc-hq/asc-${version}.tar.bz2";
     sha256 = "1fybasb6srqfg6pqbvh0s0vvzjq9r0n6aq0z44hs7n68kmaam775";
   };
 
diff --git a/nixpkgs/pkgs/games/ball-and-paddle/default.nix b/nixpkgs/pkgs/games/ball-and-paddle/default.nix
index 7fe74dc47d93..a935f3d46863 100644
--- a/nixpkgs/pkgs/games/ball-and-paddle/default.nix
+++ b/nixpkgs/pkgs/games/ball-and-paddle/default.nix
@@ -1,10 +1,11 @@
 { fetchurl, lib, stdenv, SDL, SDL_image, SDL_mixer, SDL_ttf, guile, gettext }:
 
 stdenv.mkDerivation rec {
-  name = "ballandpaddle-0.8.1";
+  pname = "ballandpaddle";
+  version = "0.8.1";
 
   src = fetchurl {
-    url = "mirror://gnu/ballandpaddle/${name}.tar.gz";
+    url = "mirror://gnu/ballandpaddle/ballandpaddle-${version}.tar.gz";
     sha256 = "0zgpydad0mj7fbkippw3n9hlda6nac084dq5xfbsks9jn1xd30ny";
   };
 
diff --git a/nixpkgs/pkgs/games/beret/default.nix b/nixpkgs/pkgs/games/beret/default.nix
index e59fc7eb2740..5d1bf0dd47c8 100644
--- a/nixpkgs/pkgs/games/beret/default.nix
+++ b/nixpkgs/pkgs/games/beret/default.nix
@@ -1,7 +1,8 @@
 { lib, stdenv, fetchurl, SDL, SDL_image, SDL_ttf, SDL_mixer }:
 
 stdenv.mkDerivation {
-  name = "beret-1.2.0";
+  pname = "beret";
+  version = "1.2.0";
 
   buildInputs = [ SDL SDL_image SDL_ttf SDL_mixer ];
 
diff --git a/nixpkgs/pkgs/games/bitsnbots/default.nix b/nixpkgs/pkgs/games/bitsnbots/default.nix
index a3bd399a5ffd..e5e718e3ca5b 100644
--- a/nixpkgs/pkgs/games/bitsnbots/default.nix
+++ b/nixpkgs/pkgs/games/bitsnbots/default.nix
@@ -1,7 +1,8 @@
 { lib, stdenv, fetchurl, SDL, lua, libGLU, libGL }:
 
 stdenv.mkDerivation rec {
-  name = "bitsnbots-20111230";
+  pname = "bitsnbots";
+  version = "20111230";
 
   src = fetchurl {
     url = "http://moikmellah.org/downloads/bitsnbots/bitsnbots.source.tgz";
@@ -19,10 +20,10 @@ stdenv.mkDerivation rec {
   NIX_LDFLAGS = "-lGL";
 
   installPhase = ''
-    mkdir -p $out/share/${name}
-    cp -R bitsnbots resource scripts README $out/share/${name}
+    mkdir -p $out/share/${pname}-${version}
+    cp -R bitsnbots resource scripts README $out/share/${pname}-${version}
     mkdir -p $out/bin
-    ln -s $out/share/${name}/bitsnbots $out/bin
+    ln -s $out/share/${pname}-${version}/bitsnbots $out/bin
   '';
 
   buildInputs = [ SDL lua libGLU libGL ];
diff --git a/nixpkgs/pkgs/games/bsdgames/default.nix b/nixpkgs/pkgs/games/bsdgames/default.nix
index 04a86c0b83cf..837fb4e17682 100644
--- a/nixpkgs/pkgs/games/bsdgames/default.nix
+++ b/nixpkgs/pkgs/games/bsdgames/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, ncurses, openssl, flex, bison, less, miscfiles }:
 
-stdenv.mkDerivation {
-  name = "bsd-games-2.17";
+stdenv.mkDerivation rec {
+  pname = "bsd-games";
+  version = "2.17";
 
   src = fetchurl {
-    url = "ftp://metalab.unc.edu/pub/Linux/games/bsd-games-2.17.tar.gz";
+    url = "ftp://metalab.unc.edu/pub/Linux/games/bsd-games-${version}.tar.gz";
     sha256 = "0q7zdyyfvn15y0w4g54kq3gza89h61py727m8slmw73cxx594vq6";
   };
 
diff --git a/nixpkgs/pkgs/games/chessdb/default.nix b/nixpkgs/pkgs/games/chessdb/default.nix
index 40f90e75ff82..6de8726722ec 100644
--- a/nixpkgs/pkgs/games/chessdb/default.nix
+++ b/nixpkgs/pkgs/games/chessdb/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, tcl, tk, libX11, makeWrapper }:
 
-stdenv.mkDerivation {
-  name = "chessdb-3.6.19-beta-1";
+stdenv.mkDerivation rec {
+  pname = "chessdb";
+  version = "3.6.19-beta-1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/chessdb/ChessDB-3.6.19-beta-1.tar.gz";
+    url = "mirror://sourceforge/chessdb/ChessDB-${version}.tar.gz";
     sha256 = "0brc3wln3bxp979iqj2w1zxpfd0pch8zzazhdmwf7acww4hrsz62";
   };
 
diff --git a/nixpkgs/pkgs/games/crack-attack/default.nix b/nixpkgs/pkgs/games/crack-attack/default.nix
index f5296e8ce6b9..fb13ce8c1638 100644
--- a/nixpkgs/pkgs/games/crack-attack/default.nix
+++ b/nixpkgs/pkgs/games/crack-attack/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, pkg-config, gtk2, freeglut, SDL, SDL_mixer, libGLU, libGL, libXi, libXmu }:
 
-stdenv.mkDerivation {
-  name = "crack-attack-1.1.14";
+stdenv.mkDerivation rec {
+  pname = "crack-attack";
+  version = "1.1.14";
 
   src = fetchurl {
-    url = "mirror://savannah/crack-attack/crack-attack-1.1.14.tar.gz";
+    url = "mirror://savannah/crack-attack/crack-attack-${version}.tar.gz";
     sha256 = "1sakj9a2q05brpd7lkqxi8q30bccycdzd96ns00s6jbxrzjlijkm";
   };
 
diff --git a/nixpkgs/pkgs/games/duckmarines/default.nix b/nixpkgs/pkgs/games/duckmarines/default.nix
index 013ebcc7ec5f..ca2a74391416 100644
--- a/nixpkgs/pkgs/games/duckmarines/default.nix
+++ b/nixpkgs/pkgs/games/duckmarines/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
 
-let
+stdenv.mkDerivation rec {
   pname = "duckmarines";
   version = "1.0c";
 
@@ -19,11 +19,6 @@ let
     categories = "Game;";
   };
 
-in
-
-stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
-
   src = fetchurl {
     url = "https://github.com/SimonLarsen/${pname}/releases/download/v${version}/${pname}-1.0c.love";
     sha256 = "1rvgpkvi4h9zhc4fwb4knhsa789yjcx4a14fi4vqfdyybhvg5sh9";
diff --git a/nixpkgs/pkgs/games/eboard/default.nix b/nixpkgs/pkgs/games/eboard/default.nix
index 67d7d38018e8..293811e9b040 100644
--- a/nixpkgs/pkgs/games/eboard/default.nix
+++ b/nixpkgs/pkgs/games/eboard/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, perl, pkg-config, gtk2 }:
 
-stdenv.mkDerivation {
-  name = "eboard-1.1.1";
+stdenv.mkDerivation rec {
+  pname = "eboard";
+  version = "1.1.1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/eboard/eboard-1.1.1.tar.bz2";
+    url = "mirror://sourceforge/eboard/eboard-${version}.tar.bz2";
     sha256 = "0vm25j1s2zg1lipwjv9qrcm877ikfmk1yh34i8f5l3bwd63115xd";
   };
 
diff --git a/nixpkgs/pkgs/games/eduke32/default.nix b/nixpkgs/pkgs/games/eduke32/default.nix
index 3fb8236947f4..e15cf241f759 100644
--- a/nixpkgs/pkgs/games/eduke32/default.nix
+++ b/nixpkgs/pkgs/games/eduke32/default.nix
@@ -3,10 +3,6 @@
 , SDL2, SDL2_mixer }:
 
 let
-  version = "20200907";
-  rev = "9257";
-  revExtra = "93f62bbad";
-
   desktopItem = makeDesktopItem {
     name = "eduke32";
     exec = "@out@/bin/${wrapper}";
@@ -18,9 +14,11 @@ let
 
   wrapper = "eduke32-wrapper";
 
-in stdenv.mkDerivation {
+in stdenv.mkDerivation rec {
   pname = "eduke32";
-  inherit version;
+  version = "20200907";
+  rev = "9257";
+  revExtra = "93f62bbad";
 
   src = fetchurl {
     url = "http://dukeworld.duke4.net/eduke32/synthesis/latest/eduke32_src_${version}-${rev}-${revExtra}.tar.xz";
diff --git a/nixpkgs/pkgs/games/endless-sky/default.nix b/nixpkgs/pkgs/games/endless-sky/default.nix
index 010f90a049bd..0c9871037f85 100644
--- a/nixpkgs/pkgs/games/endless-sky/default.nix
+++ b/nixpkgs/pkgs/games/endless-sky/default.nix
@@ -2,13 +2,9 @@
 , SDL2, libpng, libjpeg, glew, openal, scons, libmad
 }:
 
-let
-  version = "0.9.12";
-
-in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "endless-sky";
-  inherit version;
+  version = "0.9.12";
 
   src = fetchFromGitHub {
     owner = "endless-sky";
diff --git a/nixpkgs/pkgs/games/exult/default.nix b/nixpkgs/pkgs/games/exult/default.nix
index 40d7300e9c5a..fe401a627b5b 100644
--- a/nixpkgs/pkgs/games/exult/default.nix
+++ b/nixpkgs/pkgs/games/exult/default.nix
@@ -12,10 +12,11 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "exult-1.6";
+  pname = "exult";
+  version = "1.6";
 
   src = fetchurl {
-    url = "mirror://sourceforge/exult/${name}.tar.gz";
+    url = "mirror://sourceforge/exult/exult-${version}.tar.gz";
     sha256 = "1dm27qkxj30567zb70q4acddsizn0xyi3z87hg7lysxdkyv49s3s";
   };
 
diff --git a/nixpkgs/pkgs/games/fsg/default.nix b/nixpkgs/pkgs/games/fsg/default.nix
index dd6d46ec6a29..3869ad988494 100644
--- a/nixpkgs/pkgs/games/fsg/default.nix
+++ b/nixpkgs/pkgs/games/fsg/default.nix
@@ -1,12 +1,13 @@
 { lib, stdenv, fetchurl, gtk2, glib, pkg-config, libGLU, libGL, wxGTK, libX11, xorgproto
 , runtimeShell }:
 
-stdenv.mkDerivation {
-  name = "fsg-4.4";
+stdenv.mkDerivation rec {
+  pname = "fsg";
+  version = "4.4";
 
   src = fetchurl {
-    name = "fsg-src-4.4.tar.gz";
-    url = "https://github.com/ctrlcctrlv/wxsand/blob/master/fsg-src-4.4-ORIGINAL.tar.gz?raw=true";
+    name = "fsg-src-${version}.tar.gz";
+    url = "https://github.com/ctrlcctrlv/wxsand/blob/master/fsg-src-${version}-ORIGINAL.tar.gz?raw=true";
     sha256 = "1756y01rkvd3f1pkj88jqh83fqcfl2fy0c48mcq53pjzln9ycv8c";
   };
 
diff --git a/nixpkgs/pkgs/games/gav/default.nix b/nixpkgs/pkgs/games/gav/default.nix
index b8390455377b..e94b73d763c5 100644
--- a/nixpkgs/pkgs/games/gav/default.nix
+++ b/nixpkgs/pkgs/games/gav/default.nix
@@ -1,10 +1,11 @@
 {lib, stdenv, fetchurl, SDL, SDL_image, SDL_mixer, SDL_net} :
 
-stdenv.mkDerivation {
-  name = "gav-0.9.0";
+stdenv.mkDerivation rec {
+  pname = "gav";
+  version = "0.9.0";
 
   src = fetchurl {
-    url = "mirror://sourceforge/gav/gav-0.9.0.tar.gz";
+    url = "mirror://sourceforge/gav/gav-${version}.tar.gz";
     sha256 = "8f0deb8b2cd775b339229054f4f282583a4cfbcba9d27a6213cf910bab944f3e";
   };
 
diff --git a/nixpkgs/pkgs/games/gemrb/default.nix b/nixpkgs/pkgs/games/gemrb/default.nix
index 9c5744f7291a..77c9c7adaf9f 100644
--- a/nixpkgs/pkgs/games/gemrb/default.nix
+++ b/nixpkgs/pkgs/games/gemrb/default.nix
@@ -1,32 +1,71 @@
-{ lib, stdenv, fetchFromGitHub, cmake
-, freetype, SDL2, SDL2_mixer, openal, zlib, libpng, python2, libvorbis
-, libiconv }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, SDL2
+, SDL2_mixer
+, freetype
+, libGL
+, libiconv
+, libpng
+, libvlc
+, libvorbis
+, openal
+, python2 # 0.9.0 crashes after character generation with py3, so stick to py2 for now
+, zlib
+}:
 
+let
+  # the GLES backend on rpi is untested as I don't have the hardware
+  backend =
+    if (stdenv.isx86_32 || stdenv.isx86_64) then "OpenGL" else "GLES";
+
+in
 stdenv.mkDerivation rec {
   pname = "gemrb";
-  version = "0.8.7";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "gemrb";
     repo = "gemrb";
     rev = "v${version}";
-    sha256 = "14j9mhrbi4gnrbv25nlsvcxzkylijzrnwbqqnrg7pr452lb3srpb";
+    sha256 = "sha256-h/dNPY0QZ2m7aYgRla3r1E8APJqO99ePa2ABhhh3Aoc=";
   };
 
-  # TODO: make libpng, libvorbis, sdl_mixer, freetype, vlc, glew (and other gl
-  # reqs) optional
-  buildInputs = [ freetype python2 openal SDL2 SDL2_mixer zlib libpng libvorbis libiconv ];
+  buildInputs = [
+    SDL2
+    SDL2_mixer
+    freetype
+    libGL
+    libiconv
+    libpng
+    libvlc
+    libvorbis
+    openal
+    python2
+    zlib
+  ];
 
   nativeBuildInputs = [ cmake ];
 
-  # TODO: add proper OpenGL support. We are currently (0.8.7) getting a shader
-  # error on execution when enabled.
+  LIBVLC_INCLUDE_PATH = "${lib.getDev libvlc}/include";
+  LIBVLC_LIBRARY_PATH = "${lib.getLib libvlc}/lib";
+
   cmakeFlags = [
+    # use the Mesa drivers for video on ARM (harmless on x86)
+    "-DDISABLE_VIDEOCORE=ON"
     "-DLAYOUT=opt"
-    # "-DOPENGL_BACKEND=GLES"
-    # "-DOpenGL_GL_PREFERENCE=GLVND"
+    "-DOPENGL_BACKEND=${backend}"
+    "-DOpenGL_GL_PREFERENCE=GLVND"
   ];
 
+  postInstall = ''
+    for s in 36 48 72 96 144; do
+      install -Dm444 ../artwork/gemrb-logo-glow-''${s}px.png $out/share/icons/hicolor/''${s}x''${s}/gemrb.png
+    done
+    install -Dm444 ../artwork/gemrb-logo.png $out/share/icons/gemrb.png
+  '';
+
   meta = with lib; {
     description = "A reimplementation of the Infinity Engine, used by games such as Baldur's Gate";
     longDescription = ''
@@ -36,8 +75,7 @@ stdenv.mkDerivation rec {
       ruleset (Baldur's Gate and Icewind Dale series, Planescape: Torment).
     '';
     homepage = "https://gemrb.org/";
-    license = licenses.gpl2;
+    license = licenses.gpl2Only;
     maintainers = with maintainers; [ peterhoeg ];
-    platforms = platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/games/gltron/default.nix b/nixpkgs/pkgs/games/gltron/default.nix
index 45267579c9b9..540170c49b21 100644
--- a/nixpkgs/pkgs/games/gltron/default.nix
+++ b/nixpkgs/pkgs/games/gltron/default.nix
@@ -1,9 +1,10 @@
 {lib, stdenv, fetchurl, SDL, libGLU, libGL, zlib, libpng, libvorbis, libmikmod, SDL_sound } :
 
 stdenv.mkDerivation rec {
-  name = "gltron-0.70";
+  pname = "gltron";
+  version = "0.70";
   src = fetchurl {
-    url = "mirror://sourceforge/gltron/${name}-source.tar.gz";
+    url = "mirror://sourceforge/gltron/gltron-${version}-source.tar.gz";
     sha256 = "e0c8ebb41a18a1f8d7302a9c2cb466f5b1dd63e9a9966c769075e6b6bdad8bb0";
   };
 
diff --git a/nixpkgs/pkgs/games/gmad/default.nix b/nixpkgs/pkgs/games/gmad/default.nix
index eb893882ff58..8f43c75f06a8 100644
--- a/nixpkgs/pkgs/games/gmad/default.nix
+++ b/nixpkgs/pkgs/games/gmad/default.nix
@@ -1,7 +1,8 @@
 { lib, stdenv, fetchFromGitHub, premake4, bootil }:
 
 stdenv.mkDerivation rec {
-  name = "gmad-unstable-2015-04-16";
+  pname = "gmad";
+  version = "unstable-2015-04-16";
 
   meta = {
     description = "Garry's Mod Addon Creator and Extractor";
diff --git a/nixpkgs/pkgs/games/grapejuice/default.nix b/nixpkgs/pkgs/games/grapejuice/default.nix
new file mode 100644
index 000000000000..1cb27f7b8c52
--- /dev/null
+++ b/nixpkgs/pkgs/games/grapejuice/default.nix
@@ -0,0 +1,95 @@
+{ lib
+, fetchFromGitLab
+, gobject-introspection
+, python3Packages
+, gtk3
+, wrapGAppsHook
+, glib
+, cairo
+, desktop-file-utils
+, xdg-utils
+, xdg-user-dirs
+, wine
+, winetricks
+}:
+
+python3Packages.buildPythonApplication rec  {
+  pname = "grapejuice";
+  version = "3.12.5";
+
+  src = fetchFromGitLab {
+    owner = "BrinkerVII";
+    repo = "grapejuice";
+    rev = "v${version}";
+    sha256 = "1xgxyfwwghy9l17i6y40axdrpp4fgxgdr5y97flwmfivif01ifs1";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    desktop-file-utils
+    glib
+    gtk3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    cairo
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    requests
+    pygobject3
+    dbus-python
+    packaging
+    psutil
+    setuptools
+  ];
+
+  dontWrapGApps = true;
+
+  makeWrapperArgs = [
+    "\${gappsWrapperArgs[@]}"
+    "--prefix PATH : ${lib.makeBinPath [ xdg-user-dirs xdg-utils wine (winetricks.override { wine = wine; }) ]}"
+  ];
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "PyGObject-stubs" ""
+
+    substituteInPlace src/grapejuice_common/assets/desktop/grapejuice.desktop \
+      --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \
+      --replace \$GRAPEJUICE_ICON grapejuice
+
+    substituteInPlace src/grapejuice_common/assets/desktop/roblox-player.desktop \
+      --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \
+      --replace \$PLAYER_ICON "grapejuice-roblox-player"
+
+    substituteInPlace src/grapejuice_common/assets/desktop/roblox-app.desktop \
+      --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \
+      --replace \$PLAYER_ICON "grapejuice-roblox-player"
+
+    substituteInPlace src/grapejuice_common/assets/desktop/roblox-studio.desktop \
+      --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \
+      --replace \$STUDIO_ICON "grapejuice-roblox-studio"
+  '';
+
+  postInstall = ''
+    mkdir -p "$out/share/icons" "$out/share/applications" "$out/share/mime/packages"
+    cp -r src/grapejuice_common/assets/desktop/* $out/share/applications/
+    cp -r src/grapejuice_common/assets/icons $out/share/
+    cp src/grapejuice_common/assets/mime_xml/*.xml $out/share/mime/packages/
+  '';
+
+  # No tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "grapejuice" ];
+
+  meta = with lib; {
+    homepage = "https://gitlab.com/brinkervii/grapejuice";
+    description = "Simple Wine+Roblox management tool";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ artturin ];
+  };
+}
diff --git a/nixpkgs/pkgs/games/gtetrinet/default.nix b/nixpkgs/pkgs/games/gtetrinet/default.nix
index 32ee954408da..d34b3775bd1b 100644
--- a/nixpkgs/pkgs/games/gtetrinet/default.nix
+++ b/nixpkgs/pkgs/games/gtetrinet/default.nix
@@ -1,7 +1,8 @@
 { fetchFromGitHub, lib, stdenv, autoreconfHook, intltool, pkg-config, libgnome, libgnomeui, GConf }:
 
 stdenv.mkDerivation {
-  name = "gtetrinet-0.7.11";
+  pname = "gtetrinet";
+  version = "0.7.11";
 
   src = fetchFromGitHub {
     owner = "GNOME";
diff --git a/nixpkgs/pkgs/games/icbm3d/default.nix b/nixpkgs/pkgs/games/icbm3d/default.nix
index 7edf7cd477e1..a166b4f83f2b 100644
--- a/nixpkgs/pkgs/games/icbm3d/default.nix
+++ b/nixpkgs/pkgs/games/icbm3d/default.nix
@@ -1,9 +1,10 @@
 {lib, stdenv, fetchurl, libX11}:
 
-stdenv.mkDerivation {
-  name = "icbm3d-0.4";
+stdenv.mkDerivation rec {
+  pname = "icbm3d";
+  version = "0.4";
   src = fetchurl {
-    url = "ftp://ftp.tuxpaint.org/unix/x/icbm3d/icbm3d.0.4.tar.gz";
+    url = "ftp://ftp.tuxpaint.org/unix/x/icbm3d/icbm3d.${version}.tar.gz";
     sha256 = "1z9q01mj0v9qbwby5cajjc9wpvdw2ma5v1r639vraxpl9qairm4s";
   };
 
diff --git a/nixpkgs/pkgs/games/kobodeluxe/default.nix b/nixpkgs/pkgs/games/kobodeluxe/default.nix
index cd5dc3cc2bc7..9dea90824204 100644
--- a/nixpkgs/pkgs/games/kobodeluxe/default.nix
+++ b/nixpkgs/pkgs/games/kobodeluxe/default.nix
@@ -1,9 +1,10 @@
 {lib, stdenv, fetchurl, SDL, SDL_image, libGLU, libGL} :
 
-stdenv.mkDerivation {
-  name = "kobodeluxe-0.5.1";
+stdenv.mkDerivation rec {
+  pname = "kobodeluxe";
+  version = "0.5.1";
   src = fetchurl {
-    url = "http://olofson.net/kobodl/download/KoboDeluxe-0.5.1.tar.bz2";
+    url = "http://olofson.net/kobodl/download/KoboDeluxe-${version}.tar.bz2";
     sha256 = "0f7b910a399d985437564af8c5d81d6dcf22b96b26b01488d72baa6a6fdb5c2c";
   };
 
diff --git a/nixpkgs/pkgs/games/macopix/default.nix b/nixpkgs/pkgs/games/macopix/default.nix
index bb91891a6826..8f226f3cef06 100644
--- a/nixpkgs/pkgs/games/macopix/default.nix
+++ b/nixpkgs/pkgs/games/macopix/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, pkg-config, gtk, openssl }:
 
 stdenv.mkDerivation rec {
-  name = "macopix-1.7.4";
+  pname = "macopix";
+  version = "1.7.4";
 
   src = fetchurl {
-    url = "http://rosegray.sakura.ne.jp/macopix/${name}.tar.bz2";
+    url = "http://rosegray.sakura.ne.jp/macopix/macopix-${version}.tar.bz2";
     sha256 = "0sgnr0wrw3hglcnsyvipll7icfv69ssmyw584zfhk1rgramlkzyb";
   };
 
diff --git a/nixpkgs/pkgs/games/multimc/0001-pick-latest-java-first.patch b/nixpkgs/pkgs/games/multimc/0001-pick-latest-java-first.patch
new file mode 100644
index 000000000000..31ab0497f8df
--- /dev/null
+++ b/nixpkgs/pkgs/games/multimc/0001-pick-latest-java-first.patch
@@ -0,0 +1,48 @@
+From 44e1b2a19a869b907b40e56c85c8a47aa6c22097 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Mustafa=20=C3=87al=C4=B1=C5=9Fkan?= <musfay@protonmail.com>
+Date: Tue, 22 Jun 2021 21:50:11 +0300
+Subject: [PATCH] pick latest java first
+
+---
+ api/logic/java/JavaInstallList.cpp | 4 ++--
+ api/logic/java/JavaUtils.cpp       | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/api/logic/java/JavaInstallList.cpp b/api/logic/java/JavaInstallList.cpp
+index 0bded03c..40898e20 100644
+--- a/api/logic/java/JavaInstallList.cpp
++++ b/api/logic/java/JavaInstallList.cpp
+@@ -120,8 +120,8 @@ void JavaInstallList::updateListData(QList<BaseVersionPtr> versions)
+ 
+ bool sortJavas(BaseVersionPtr left, BaseVersionPtr right)
+ {
+-    auto rleft = std::dynamic_pointer_cast<JavaInstall>(left);
+-    auto rright = std::dynamic_pointer_cast<JavaInstall>(right);
++    auto rleft = std::dynamic_pointer_cast<JavaInstall>(right);
++    auto rright = std::dynamic_pointer_cast<JavaInstall>(left);
+     return (*rleft) > (*rright);
+ }
+ 
+diff --git a/api/logic/java/JavaUtils.cpp b/api/logic/java/JavaUtils.cpp
+index 5f004a10..6d633631 100644
+--- a/api/logic/java/JavaUtils.cpp
++++ b/api/logic/java/JavaUtils.cpp
+@@ -350,7 +350,6 @@ QList<QString> JavaUtils::FindJavaPaths()
+     qDebug() << "Linux Java detection incomplete - defaulting to \"java\"";
+ 
+     QList<QString> javas;
+-    javas.append(this->GetDefaultJava()->path);
+     auto scanJavaDir = [&](const QString & dirPath)
+     {
+         QDir dir(dirPath);
+@@ -379,6 +378,7 @@ QList<QString> JavaUtils::FindJavaPaths()
+     // general locations used by distro packaging
+     scanJavaDir("/usr/lib/jvm");
+     scanJavaDir("/usr/lib32/jvm");
++    javas.append(this->GetDefaultJava()->path);
+     // javas stored in MultiMC's folder
+     scanJavaDir("java");
+     return javas;
+-- 
+2.31.1
+
diff --git a/nixpkgs/pkgs/games/multimc/default.nix b/nixpkgs/pkgs/games/multimc/default.nix
index bedf78102b66..aa32efaa9402 100644
--- a/nixpkgs/pkgs/games/multimc/default.nix
+++ b/nixpkgs/pkgs/games/multimc/default.nix
@@ -1,20 +1,28 @@
-{ lib, mkDerivation, fetchFromGitHub, cmake, jdk8, zlib, file, makeWrapper, xorg, libpulseaudio, qtbase, libGL }:
+{ lib, mkDerivation, fetchFromGitHub, cmake, jdk8, jdk, zlib, file, makeWrapper, xorg, libpulseaudio, qtbase, libGL }:
 
 let
-  jdk = jdk8;
   libpath = with xorg; lib.makeLibraryPath [ libX11 libXext libXcursor libXrandr libXxf86vm libpulseaudio libGL ];
 in mkDerivation rec {
   pname = "multimc";
-  version = "0.6.12";
+  version = "unstable-2021-06-21";
   src = fetchFromGitHub {
     owner = "MultiMC";
     repo = "MultiMC5";
-    rev = version;
-    sha256 = "h2T023vrqemWhHiA2/gFleuUhIOucjwTgoExliFiYig=";
+    rev = "8179a89103833805d5374399d80a4305be1b8355";
+    sha256 = "lPz6ZM7TjaixfwWMPaXijKZJQKFPrCegBhvbJ8Xg4P8=";
     fetchSubmodules = true;
   };
   nativeBuildInputs = [ cmake file makeWrapper ];
-  buildInputs = [ qtbase jdk zlib ];
+  buildInputs = [ qtbase jdk8 zlib ];
+
+  patches = [ ./0001-pick-latest-java-first.patch ];
+
+  postPatch = ''
+    # hardcode jdk paths
+    substituteInPlace api/logic/java/JavaUtils.cpp \
+      --replace 'scanJavaDir("/usr/lib/jvm")' 'javas.append("${jdk}/lib/openjdk/bin/java")' \
+      --replace 'scanJavaDir("/usr/lib32/jvm")' 'javas.append("${jdk8}/lib/openjdk/bin/java")'
+  '';
 
   cmakeFlags = [ "-DMultiMC_LAYOUT=lin-system" ];
 
@@ -23,7 +31,9 @@ in mkDerivation rec {
     install -Dm755 ../application/package/linux/multimc.desktop $out/share/applications/multimc.desktop
 
     # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
-    wrapProgram $out/bin/multimc --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${libpath} --prefix PATH : ${jdk}/bin/:${xorg.xrandr}/bin/
+    wrapProgram $out/bin/multimc \
+      --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${libpath} \
+      --prefix PATH : ${lib.makeBinPath [ xorg.xrandr ]}
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/games/neverball/default.nix b/nixpkgs/pkgs/games/neverball/default.nix
index 431dfd58a81c..ba1d403207a9 100644
--- a/nixpkgs/pkgs/games/neverball/default.nix
+++ b/nixpkgs/pkgs/games/neverball/default.nix
@@ -2,9 +2,10 @@
 , physfs }:
 
 stdenv.mkDerivation rec {
-  name = "neverball-1.6.0";
+  pname = "neverball";
+  version = "1.6.0";
   src = fetchurl {
-    url = "https://neverball.org/${name}.tar.gz";
+    url = "https://neverball.org/neverball-${version}.tar.gz";
     sha256 = "184gm36c6p6vaa6gwrfzmfh86klhnb03pl40ahsjsvprlk667zkk";
   };
 
diff --git a/nixpkgs/pkgs/games/njam/default.nix b/nixpkgs/pkgs/games/njam/default.nix
index 1833840d2e35..6fbffc37d034 100644
--- a/nixpkgs/pkgs/games/njam/default.nix
+++ b/nixpkgs/pkgs/games/njam/default.nix
@@ -1,10 +1,11 @@
 {lib, stdenv, fetchurl, SDL, SDL_image, SDL_mixer, SDL_net }:
 
-stdenv.mkDerivation {
-  name = "njam-1.25";
+stdenv.mkDerivation rec {
+  pname = "njam";
+  version = "1.25";
 
   src = fetchurl {
-    url = "mirror://sourceforge/njam/njam-1.25-src.tar.gz";
+    url = "mirror://sourceforge/njam/njam-${version}-src.tar.gz";
     sha256 = "0ysvqw017xkvddj957pdfmbmji7qi20nyr7f0zxvcvm6c7d3cc7s";
   };
 
diff --git a/nixpkgs/pkgs/games/openlierox/default.nix b/nixpkgs/pkgs/games/openlierox/default.nix
index fefac190b0a3..12d00f28ffc1 100644
--- a/nixpkgs/pkgs/games/openlierox/default.nix
+++ b/nixpkgs/pkgs/games/openlierox/default.nix
@@ -1,8 +1,9 @@
 { lib, stdenv, fetchurl, libX11, xorgproto, gd, SDL, SDL_image, SDL_mixer, zlib
 , libxml2, pkg-config, curl, cmake, libzip }:
 
-stdenv.mkDerivation {
-  name = "openlierox-0.58rc3";
+stdenv.mkDerivation rec {
+  pname = "openlierox";
+  version = "0.58rc3";
 
   src = fetchurl {
     url = "mirror://sourceforge/openlierox/OpenLieroX_0.58_rc3.src.tar.bz2";
diff --git a/nixpkgs/pkgs/games/openra/engine.nix b/nixpkgs/pkgs/games/openra/engine.nix
index 365dc3d26793..adc1bf76e005 100644
--- a/nixpkgs/pkgs/games/openra/engine.nix
+++ b/nixpkgs/pkgs/games/openra/engine.nix
@@ -17,7 +17,6 @@
 with lib;
 
 stdenv.mkDerivation (recursiveUpdate packageAttrs rec {
-  name = "${pname}-${version}";
   pname = "openra";
   version = "${engine.name}-${engine.version}";
 
diff --git a/nixpkgs/pkgs/games/orthorobot/default.nix b/nixpkgs/pkgs/games/orthorobot/default.nix
index e1067645b620..c168af81ad6b 100644
--- a/nixpkgs/pkgs/games/orthorobot/default.nix
+++ b/nixpkgs/pkgs/games/orthorobot/default.nix
@@ -1,9 +1,15 @@
 { lib, stdenv, fetchurl, fetchFromGitHub, zip, love, lua, makeWrapper, makeDesktopItem }:
-
-let
+stdenv.mkDerivation rec {
   pname = "orthorobot";
   version = "1.1.1";
 
+  src = fetchFromGitHub {
+    owner = "Stabyourself";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ca6hvd890kxmamsmsfiqzw15ngsvb4lkihjb6kabgmss61a6s5p";
+  };
+
   icon = fetchurl {
     url = "http://stabyourself.net/images/screenshots/orthorobot-5.png";
     sha256 = "13fa4divdqz4vpdij1lcs5kf6w2c4jm3cc9q6bz5h7lkng31jzi6";
@@ -19,25 +25,12 @@ let
     categories = "Game;";
   };
 
-in
-
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-
-  src = fetchFromGitHub {
-    owner = "Stabyourself";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1ca6hvd890kxmamsmsfiqzw15ngsvb4lkihjb6kabgmss61a6s5p";
-  };
-
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ lua love zip ];
 
-  phases = [ "unpackPhase" "installPhase" ];
+  dontBuild = true;
 
-  installPhase =
-  ''
+  installPhase = ''
     mkdir -p $out/bin $out/share/games/lovegames $out/share/applications
     zip -9 -r ${pname}.love ./*
     mv ${pname}.love $out/share/games/lovegames/${pname}.love
@@ -53,5 +46,4 @@ stdenv.mkDerivation {
     license = licenses.free;
     downloadPage = "http://stabyourself.net/orthorobot/";
   };
-
 }
diff --git a/nixpkgs/pkgs/games/pokerth/default.nix b/nixpkgs/pkgs/games/pokerth/default.nix
index 59555a8ac240..349dd5d85cba 100644
--- a/nixpkgs/pkgs/games/pokerth/default.nix
+++ b/nixpkgs/pkgs/games/pokerth/default.nix
@@ -15,7 +15,7 @@ let
 in
 
 mkDerivation rec {
-  name = "pokerth-${target}-${version}";
+  pname = "pokerth-${target}";
   version = "1.1.2";
 
   src = fetchFromGitHub {
diff --git a/nixpkgs/pkgs/games/pong3d/default.nix b/nixpkgs/pkgs/games/pong3d/default.nix
index 3cd017e8d3b1..9e965c95482a 100644
--- a/nixpkgs/pkgs/games/pong3d/default.nix
+++ b/nixpkgs/pkgs/games/pong3d/default.nix
@@ -1,9 +1,10 @@
 {lib, stdenv, fetchurl, libX11}:
 
-stdenv.mkDerivation {
-  name = "3dpong-0.5";
+stdenv.mkDerivation rec {
+  pname = "3dpong";
+  version = "0.5";
   src = fetchurl {
-    url = "ftp://ftp.tuxpaint.org/unix/x/3dpong/src/3dpong-0.5.tar.gz";
+    url = "ftp://ftp.tuxpaint.org/unix/x/3dpong/src/3dpong-${version}.tar.gz";
     sha256 = "1ibb79sbzlbn4ra3n0qk22gqr6fg7q0jy6cm0wg2qj4z64c7hmdi";
   };
 
diff --git a/nixpkgs/pkgs/games/prboom/default.nix b/nixpkgs/pkgs/games/prboom/default.nix
index 4bd59c9e39d1..8adc9645b7ae 100644
--- a/nixpkgs/pkgs/games/prboom/default.nix
+++ b/nixpkgs/pkgs/games/prboom/default.nix
@@ -7,9 +7,10 @@
 assert useOpenGL -> libGL != null && libGLU != null;
 
 stdenv.mkDerivation rec {
-  name = "prboom-2.5.0";
+  pname = "prboom";
+  version = "2.5.0";
   src = fetchurl {
-    url = "mirror://sourceforge/prboom/prboom-2.5.0.tar.gz";
+    url = "mirror://sourceforge/prboom/prboom-${version}.tar.gz";
     sha256 = "1bjb04q8dk232956k30qlpq6q0hxb904yh1nflr87jcc1x3iqv12";
   };
 
diff --git a/nixpkgs/pkgs/games/quake2/yquake2/games.nix b/nixpkgs/pkgs/games/quake2/yquake2/games.nix
index 02b130489115..0c9b24963ba7 100644
--- a/nixpkgs/pkgs/games/quake2/yquake2/games.nix
+++ b/nixpkgs/pkgs/games/quake2/yquake2/games.nix
@@ -28,7 +28,7 @@ let
     inherit (data) id version description sha256;
     inherit title;
 
-    name = "yquake2-${title}-${version}";
+    pname = "yquake2-${title}";
 
     src = fetchFromGitHub {
       inherit sha256;
diff --git a/nixpkgs/pkgs/games/racer/default.nix b/nixpkgs/pkgs/games/racer/default.nix
index 16507fa219e0..bdb56c85dbff 100644
--- a/nixpkgs/pkgs/games/racer/default.nix
+++ b/nixpkgs/pkgs/games/racer/default.nix
@@ -1,13 +1,14 @@
 { fetchurl, lib, stdenv, allegro, libjpeg, makeWrapper }:
 
-stdenv.mkDerivation {
-  name = "racer-1.1";
+stdenv.mkDerivation rec {
+  pname = "racer";
+  version = "1.1";
 
   src = if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
-    url = "http://hippo.nipax.cz/src/racer-1.1.tar.gz";
+    url = "http://hippo.nipax.cz/src/racer-${version}.tar.gz";
     sha256 = "0fll1qkqfcjq87k0jzsilcw701z92lfxn2y5ga1n038772lymxl9";
   } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl {
-    url = "https://hippo.nipax.cz/src/racer-1.1.64.tar.gz";
+    url = "https://hippo.nipax.cz/src/racer-${version}.64.tar.gz";
     sha256 = "0rjy3gmlhwfkb9zs58j0mc0dar0livwpbc19r6zw5r2k6r7xdan0";
   } else
     throw "System not supported";
diff --git a/nixpkgs/pkgs/games/rili/default.nix b/nixpkgs/pkgs/games/rili/default.nix
index 0e3fa9b8cc88..a0082d28d506 100644
--- a/nixpkgs/pkgs/games/rili/default.nix
+++ b/nixpkgs/pkgs/games/rili/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, SDL_mixer, SDL, autoreconfHook }:
 
-stdenv.mkDerivation {
-  name = "ri_li-2.0.1";
+stdenv.mkDerivation rec {
+  pname = "ri_li";
+  version = "2.0.1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/ri-li/Ri-li-2.0.1.tar.bz2";
+    url = "mirror://sourceforge/ri-li/Ri-li-${version}.tar.bz2";
     sha256 = "f71ccc20c37c601358d963e087ac0d524de8c68e96df09c3aac1ae65edd38dbd";
   };
 
diff --git a/nixpkgs/pkgs/games/rimshot/default.nix b/nixpkgs/pkgs/games/rimshot/default.nix
index e7f2f2e781a4..1f4efa5097bd 100644
--- a/nixpkgs/pkgs/games/rimshot/default.nix
+++ b/nixpkgs/pkgs/games/rimshot/default.nix
@@ -1,9 +1,14 @@
 { lib, stdenv, fetchurl, unzip, love, lua, makeWrapper, makeDesktopItem }:
 
-let
+stdenv.mkDerivation rec {
   pname = "rimshot";
   version = "1.0";
 
+  src = fetchurl {
+    url = "https://stabyourself.net/dl.php?file=${pname}/${pname}-source.zip";
+    sha256 = "08pdkyvki92549605m9bqnr24ipkbwkp5nkr5aagdqnr8ai4rgmi";
+  };
+
   icon = fetchurl {
     url = "http://stabyourself.net/images/screenshots/rimshot-2.png";
     sha256 = "08fyiqym3gcpq2vgb5dvafkban42fsbzfcr3iiyw03hz99q53psd";
@@ -19,16 +24,6 @@ let
     categories = "Audio;AudioVideo;Music";
   };
 
-in
-
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-
-  src = fetchurl {
-    url = "http://stabyourself.net/dl.php?file=${pname}/${pname}-source.zip";
-    sha256 = "08pdkyvki92549605m9bqnr24ipkbwkp5nkr5aagdqnr8ai4rgmi";
-  };
-
   nativeBuildInputs = [ makeWrapper unzip ];
   buildInputs = [ lua love ];
 
diff --git a/nixpkgs/pkgs/games/rocksndiamonds/default.nix b/nixpkgs/pkgs/games/rocksndiamonds/default.nix
index c31bf78a3552..fd570e4d7c63 100644
--- a/nixpkgs/pkgs/games/rocksndiamonds/default.nix
+++ b/nixpkgs/pkgs/games/rocksndiamonds/default.nix
@@ -1,12 +1,11 @@
 { lib, stdenv, fetchurl, makeDesktopItem, SDL2, SDL2_image, SDL2_mixer, SDL2_net }:
 
 stdenv.mkDerivation rec {
-  name = "${project}-${version}";
-  project = "rocksndiamonds";
+  pname = "rocksndiamonds";
   version = "4.1.1.0";
 
   src = fetchurl {
-    url = "https://www.artsoft.org/RELEASES/unix/${project}/${name}.tar.gz";
+    url = "https://www.artsoft.org/RELEASES/unix/${pname}/rocksndiamonds-${version}.tar.gz";
     sha256 = "1k0m6l5g886d9mwwh6q0gw75qsb85mpf8i0rglh047app56nsk72";
   };
 
diff --git a/nixpkgs/pkgs/games/rogue/default.nix b/nixpkgs/pkgs/games/rogue/default.nix
index 1e215c813b53..127d65ff362f 100644
--- a/nixpkgs/pkgs/games/rogue/default.nix
+++ b/nixpkgs/pkgs/games/rogue/default.nix
@@ -1,13 +1,14 @@
 {lib, stdenv, fetchurl, ncurses}:
 
-stdenv.mkDerivation {
-  name = "rogue-5.4.4";
+stdenv.mkDerivation rec {
+  pname = "rogue";
+  version = "5.4.4";
 
   src = fetchurl {
     urls = [
-      "https://src.fedoraproject.org/repo/pkgs/rogue/rogue5.4.4-src.tar.gz/033288f46444b06814c81ea69d96e075/rogue5.4.4-src.tar.gz"
-      "http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/slitaz/sources/packages-cooking/r/rogue5.4.4-src.tar.gz"
-      "http://rogue.rogueforge.net/files/rogue5.4/rogue5.4.4-src.tar.gz"
+      "https://src.fedoraproject.org/repo/pkgs/rogue/rogue${version}-src.tar.gz/033288f46444b06814c81ea69d96e075/rogue${version}-src.tar.gz"
+      "http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/slitaz/sources/packages-cooking/r/rogue${version}-src.tar.gz"
+      "http://rogue.rogueforge.net/files/rogue${lib.versions.majorMinor version}/rogue${version}-src.tar.gz"
     ];
     sha256 = "18g81274d0f7sr04p7h7irz0d53j6kd9j1y3zbka1gcqq0gscdvx";
   };
diff --git a/nixpkgs/pkgs/games/rpg-cli/default.nix b/nixpkgs/pkgs/games/rpg-cli/default.nix
index 6a4e27d86916..44e35c3787d7 100644
--- a/nixpkgs/pkgs/games/rpg-cli/default.nix
+++ b/nixpkgs/pkgs/games/rpg-cli/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rpg-cli";
-  version = "0.4.1";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "facundoolano";
     repo = pname;
     rev = version;
-    sha256 = "07ar7almaz005jch7zm63kxyxvk3bphi2gl88xsb2rk5srkbb2s2";
+    sha256 = "sha256-LRTHnYxjPraVISAERT6XJGKIA3YJIilgEwU6olq2CRc=";
   };
 
-  cargoSha256 = "sha256-wJPRI3jfV+v/XpIU9+j1jXlyfjkFCEHZdFJx/KMNT9o=";
+  cargoSha256 = "sha256-ZlQy/JiYKDKPCEWrAFvKV6WsAkk2zsPpfJADB+kPyuo=";
 
   # tests assume the authors macbook, and thus fail
   doCheck = false;
diff --git a/nixpkgs/pkgs/games/scrolls/default.nix b/nixpkgs/pkgs/games/scrolls/default.nix
index 13079e159840..cdeab7b10d35 100644
--- a/nixpkgs/pkgs/games/scrolls/default.nix
+++ b/nixpkgs/pkgs/games/scrolls/default.nix
@@ -2,7 +2,8 @@
 , libGLU, libX11, libXext, libXcursor, libpulseaudio
 }:
 stdenv.mkDerivation {
-  name = "scrolls-2015-10-13";
+  pname = "scrolls";
+  version = "2015-10-13";
 
   meta = {
     description = "A strategy collectible card game";
diff --git a/nixpkgs/pkgs/games/sgt-puzzles/default.nix b/nixpkgs/pkgs/games/sgt-puzzles/default.nix
index 2582161eee4b..1c0b7aeda493 100644
--- a/nixpkgs/pkgs/games/sgt-puzzles/default.nix
+++ b/nixpkgs/pkgs/games/sgt-puzzles/default.nix
@@ -4,7 +4,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "sgt-puzzles-r${version}";
+  pname = "sgt-puzzles";
   version = "20200610.9aa7b7c";
 
   src = fetchurl {
diff --git a/nixpkgs/pkgs/games/sienna/default.nix b/nixpkgs/pkgs/games/sienna/default.nix
index 1a1e82b7d64d..24f5fc088769 100644
--- a/nixpkgs/pkgs/games/sienna/default.nix
+++ b/nixpkgs/pkgs/games/sienna/default.nix
@@ -1,8 +1,12 @@
 { lib, stdenv, fetchurl, love, lua, makeWrapper, makeDesktopItem }:
 
-let
+stdenv.mkDerivation rec {
   pname = "sienna";
   version = "1.0c";
+  src = fetchurl {
+    url = "https://github.com/SimonLarsen/${pname}/releases/download/v${version}/${pname}-${version}.love";
+    sha256 = "1x15276fhqspgrrv8fzkp032i2qa8piywc0yy061x59mxhdndzj6";
+  };
 
   icon = fetchurl {
     url = "http://tangramgames.dk/img/thumb/sienna.png";
@@ -19,16 +23,6 @@ let
     categories = "Game;";
   };
 
-in
-
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-
-  src = fetchurl {
-    url = "https://github.com/SimonLarsen/${pname}/releases/download/v${version}/${pname}-${version}.love";
-    sha256 = "1x15276fhqspgrrv8fzkp032i2qa8piywc0yy061x59mxhdndzj6";
-  };
-
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ lua love ];
 
diff --git a/nixpkgs/pkgs/games/snake4/default.nix b/nixpkgs/pkgs/games/snake4/default.nix
index c0cad5f05d33..aee8b9e0810c 100644
--- a/nixpkgs/pkgs/games/snake4/default.nix
+++ b/nixpkgs/pkgs/games/snake4/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, shhmsg, shhopt, xorg }:
 
 stdenv.mkDerivation rec {
-  name = "snake4-1.0.14";
+  pname = "snake4";
+  version = "1.0.14";
 
   src = fetchurl {
-    url = "https://shh.thathost.com/pub-unix/files/${name}.tar.gz";
+    url = "https://shh.thathost.com/pub-unix/files/snake4-${version}.tar.gz";
     sha256 = "14cng9l857np42zixp440mbc8y5675frb6lhsds53j1cws9cncw9";
   };
 
diff --git a/nixpkgs/pkgs/games/steam/fonts.nix b/nixpkgs/pkgs/games/steam/fonts.nix
index 9cf68f2c29b0..65efd42a22a4 100644
--- a/nixpkgs/pkgs/games/steam/fonts.nix
+++ b/nixpkgs/pkgs/games/steam/fonts.nix
@@ -1,7 +1,8 @@
 { stdenv, fetchurl, unzip }:
 
 stdenv.mkDerivation {
-  name = "steam-fonts-1";
+  pname = "steam-fonts";
+  version = "1";
 
   src = fetchurl {
     url = "https://support.steampowered.com/downloads/1974-YFKL-4947/SteamFonts.zip";
diff --git a/nixpkgs/pkgs/games/tcl2048/default.nix b/nixpkgs/pkgs/games/tcl2048/default.nix
index dbc429746846..93286058b49c 100644
--- a/nixpkgs/pkgs/games/tcl2048/default.nix
+++ b/nixpkgs/pkgs/games/tcl2048/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, tcl, tcllib, runtimeShell }:
 
-tcl.mkTclDerivation {
-  name = "tcl2048-0.4.0";
+tcl.mkTclDerivation rec {
+  pname = "tcl2048";
+  version = "0.4.0";
 
   src = fetchurl {
-    url = "https://raw.githubusercontent.com/dbohdan/2048.tcl/v0.4.0/2048.tcl";
+    url = "https://raw.githubusercontent.com/dbohdan/2048.tcl/v${version}/2048.tcl";
     sha256 = "53f5503efd7f029b2614b0f9b1e3aac6c0342735a3c9b811d74a5135fee3e89e";
   };
 
diff --git a/nixpkgs/pkgs/games/teetertorture/default.nix b/nixpkgs/pkgs/games/teetertorture/default.nix
index 9df0843c5e47..6e18dbae07b2 100644
--- a/nixpkgs/pkgs/games/teetertorture/default.nix
+++ b/nixpkgs/pkgs/games/teetertorture/default.nix
@@ -1,9 +1,10 @@
 { lib, stdenv, fetchurl, SDL, SDL_image, SDL_mixer }:
 
-stdenv.mkDerivation {
-  name = "teeter-torture-20051018";
+stdenv.mkDerivation rec {
+  pname = "teeter-torture";
+  version = "2005-10-18";
   src = fetchurl {
-    url = "ftp://ftp.tuxpaint.org/unix/x/teetertorture/source/teetertorture-2005-10-18.tar.gz";
+    url = "ftp://ftp.tuxpaint.org/unix/x/teetertorture/source/teetertorture-${version}.tar.gz";
     sha256 = "175gdbkx3m82icyzvwpyzs4v2fd69c695k5n8ca0lnjv81wnw2hr";
   };
 
diff --git a/nixpkgs/pkgs/games/tennix/default.nix b/nixpkgs/pkgs/games/tennix/default.nix
index c8b2a415923f..f81ddb7edf95 100644
--- a/nixpkgs/pkgs/games/tennix/default.nix
+++ b/nixpkgs/pkgs/games/tennix/default.nix
@@ -1,9 +1,10 @@
 {lib, stdenv, fetchurl, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_net, python } :
 
 stdenv.mkDerivation rec {
-  name = "tennix-1.1";
+  pname = "tennix";
+  version = "1.1";
   src = fetchurl {
-    url = "https://icculus.org/tennix/downloads/${name}.tar.gz";
+    url = "https://icculus.org/tennix/downloads/tennix-${version}.tar.gz";
     sha256 = "0np5kw1y7i0z0dsqx4r2nvmq86qj8hv3mmgavm3hxraqnds5z8cm";
   };
 
diff --git a/nixpkgs/pkgs/games/tibia/default.nix b/nixpkgs/pkgs/games/tibia/default.nix
index 0892dc2dedd8..0fee9ce6c6cb 100644
--- a/nixpkgs/pkgs/games/tibia/default.nix
+++ b/nixpkgs/pkgs/games/tibia/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, glibc, libX11, runtimeShell, libGLU, libGL }:
 
-stdenv.mkDerivation {
-  name = "tibia-10.90";
+stdenv.mkDerivation rec {
+  pname = "tibia";
+  version = "10.90";
 
   src = fetchurl {
-    url = "http://static.tibia.com/download/tibia1090.tgz";
+    url = "http://static.tibia.com/download/tibia${lib.replaceStrings ["."] [""] version}.tgz";
     sha256 = "11mkh2dynmbpay51yfaxm5dmcys3rnpk579s9ypfkhblsrchbkhx";
   };
 
diff --git a/nixpkgs/pkgs/games/tintin/default.nix b/nixpkgs/pkgs/games/tintin/default.nix
index 29c41d2d787e..73070db244f0 100644
--- a/nixpkgs/pkgs/games/tintin/default.nix
+++ b/nixpkgs/pkgs/games/tintin/default.nix
@@ -6,10 +6,11 @@
 assert tlsSupport -> gnutls != null;
 
 stdenv.mkDerivation rec {
-  name = "tintin-2.02.05";
+  pname = "tintin";
+  version = "2.02.05";
 
   src = fetchurl {
-    url    = "mirror://sourceforge/tintin/${name}.tar.gz";
+    url    = "mirror://sourceforge/tintin/tintin-${version}.tar.gz";
     sha256 = "sha256-Y6cAUhItJNade8ASOVdF8aBBLf/UVqjoqrhXBNRL1aE=";
   };
 
diff --git a/nixpkgs/pkgs/games/tome4/default.nix b/nixpkgs/pkgs/games/tome4/default.nix
index 70a032171582..ace9b384663e 100644
--- a/nixpkgs/pkgs/games/tome4/default.nix
+++ b/nixpkgs/pkgs/games/tome4/default.nix
@@ -1,8 +1,14 @@
 { lib, stdenv, fetchurl, makeDesktopItem, makeWrapper, premake4, unzip
 , openal, libpng, libvorbis, libGLU, SDL2, SDL2_image, SDL2_ttf }:
 
-let
+stdenv.mkDerivation rec {
   pname = "tome4";
+  version = "1.6.7";
+
+  src = fetchurl {
+    url = "https://te4.org/dl/t-engine/t-engine4-src-${version}.tar.bz2";
+    sha256 = "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68";
+  };
 
   desktop = makeDesktopItem {
     desktopName = pname;
@@ -16,15 +22,6 @@ let
     genericName = pname;
   };
 
-in stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
-  version = "1.6.7";
-
-  src = fetchurl {
-    url = "https://te4.org/dl/t-engine/t-engine4-src-${version}.tar.bz2";
-    sha256 = "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68";
-  };
-
   prePatch = ''
     # http://forums.te4.org/viewtopic.php?f=42&t=49478&view=next#p234354
     sed -i 's|#include <GL/glext.h>||' src/tgl.h
diff --git a/nixpkgs/pkgs/games/torcs/default.nix b/nixpkgs/pkgs/games/torcs/default.nix
index d1dafb85ce3f..e3ec82b549ae 100644
--- a/nixpkgs/pkgs/games/torcs/default.nix
+++ b/nixpkgs/pkgs/games/torcs/default.nix
@@ -3,10 +3,11 @@ libXext, libSM, libICE, libXi, libXt, libXrender, libXxf86vm, libvorbis,
 libpng, zlib, makeWrapper }:
 
 stdenv.mkDerivation rec {
-  name = "torcs-1.3.7";
+  pname = "torcs";
+  version = "1.3.7";
 
   src = fetchurl {
-    url = "mirror://sourceforge/torcs/${name}.tar.bz2";
+    url = "mirror://sourceforge/torcs/torcs-${version}.tar.bz2";
     sha256 = "0kdq0sc7dsfzlr0ggbxggcbkivc6yp30nqwjwcaxg9295s3b06wa";
   };
 
diff --git a/nixpkgs/pkgs/games/torus-trooper/default.nix b/nixpkgs/pkgs/games/torus-trooper/default.nix
index 441cffbdf04d..645abc76c807 100644
--- a/nixpkgs/pkgs/games/torus-trooper/default.nix
+++ b/nixpkgs/pkgs/games/torus-trooper/default.nix
@@ -16,12 +16,12 @@ debianPatch = patchname: hash: fetchpatch {
   sha256 = hash;
 };
 
-in stdenv.mkDerivation {
+in stdenv.mkDerivation rec {
   pname = "torus-trooper";
   version = "0.22";
 
   src = fetchurl {
-    url = "http://abagames.sakura.ne.jp/windows/tt0_22.zip";
+    url = "http://abagames.sakura.ne.jp/windows/tt${lib.replaceStrings ["."] ["_"] version}.zip";
     sha256 = "1yhki1fdp3fi4y2iq12vca69f6k38dqjaw9z4lwcxky5kbgb7jvg";
   };
 
diff --git a/nixpkgs/pkgs/games/tumiki-fighters/default.nix b/nixpkgs/pkgs/games/tumiki-fighters/default.nix
index 2f3cf869f8db..b4becea65756 100644
--- a/nixpkgs/pkgs/games/tumiki-fighters/default.nix
+++ b/nixpkgs/pkgs/games/tumiki-fighters/default.nix
@@ -16,12 +16,12 @@ debianPatch = patchname: hash: fetchpatch {
   sha256 = hash;
 };
 
-in stdenv.mkDerivation {
+in stdenv.mkDerivation rec {
   pname = "tumiki-fighters";
   version = "0.21";
 
   src = fetchurl {
-    url = "http://abagames.sakura.ne.jp/windows/tf0_21.zip";
+    url = "http://abagames.sakura.ne.jp/windows/tf${lib.replaceStrings ["."] ["_"] version}.zip";
     sha256 = "0djykfc1r8ysapklm621h89ana1c4qzc1m5nr9bqw4iccnmvwk3p";
   };
 
diff --git a/nixpkgs/pkgs/games/typespeed/default.nix b/nixpkgs/pkgs/games/typespeed/default.nix
index 396e41c46714..1581ab138945 100644
--- a/nixpkgs/pkgs/games/typespeed/default.nix
+++ b/nixpkgs/pkgs/games/typespeed/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, ncurses }:
 
-stdenv.mkDerivation {
-  name = "typespeed-0.6.5";
+stdenv.mkDerivation rec {
+  pname = "typespeed";
+  version = "0.6.5";
   buildInputs = [ ncurses ];
   src = fetchurl {
-    url = "http://typespeed.sourceforge.net/typespeed-0.6.5.tar.gz";
+    url = "http://typespeed.sourceforge.net/typespeed-${version}.tar.gz";
     sha256 = "5c860385ceed8a60f13217cc0192c4c2b4705c3e80f9866f7d72ff306eb72961";
   };
 
diff --git a/nixpkgs/pkgs/games/ufoai/default.nix b/nixpkgs/pkgs/games/ufoai/default.nix
index 7694821d44f5..89f8f5ec91bf 100644
--- a/nixpkgs/pkgs/games/ufoai/default.nix
+++ b/nixpkgs/pkgs/games/ufoai/default.nix
@@ -2,14 +2,15 @@
 , curl, libjpeg, libpng, gettext, cunit, enableEditor?false }:
 
 stdenv.mkDerivation rec {
-  name = "ufoai-2.4";
+  pname = "ufoai";
+  version = "2.4";
   src = fetchurl {
-    url = "mirror://sourceforge/ufoai/${name}-source.tar.bz2";
+    url = "mirror://sourceforge/ufoai/ufoai-${version}-source.tar.bz2";
     sha256 = "0kxrbcjrharcwz319s90m789i4my9285ihp5ax6kfhgif2vn2ji5";
   };
 
   srcData = fetchurl {
-    url = "mirror://sourceforge/ufoai/${name}-data.tar";
+    url = "mirror://sourceforge/ufoai/ufoai-${version}-data.tar";
     sha256 = "1drhh08cqqkwv1yz3z4ngkplr23pqqrdx6cp8c3isy320gy25cvb";
   };
 
diff --git a/nixpkgs/pkgs/games/uhexen2/default.nix b/nixpkgs/pkgs/games/uhexen2/default.nix
index dac081cd7b44..78c38753f790 100644
--- a/nixpkgs/pkgs/games/uhexen2/default.nix
+++ b/nixpkgs/pkgs/games/uhexen2/default.nix
@@ -1,7 +1,7 @@
 { lib, fetchgit, SDL, stdenv, libogg, libvorbis, libmad, xdelta }:
 
 stdenv.mkDerivation rec {
-  name = "uhexen2";
+  pname = "uhexen2";
   version = "1.5.9";
 
   src = fetchgit {
diff --git a/nixpkgs/pkgs/games/ultimatestunts/default.nix b/nixpkgs/pkgs/games/ultimatestunts/default.nix
index 9f38e43222c1..2e3d54459186 100644
--- a/nixpkgs/pkgs/games/ultimatestunts/default.nix
+++ b/nixpkgs/pkgs/games/ultimatestunts/default.nix
@@ -1,10 +1,11 @@
 {lib, stdenv, fetchurl, SDL, libGLU, libGL, SDL_image, freealut, openal, libvorbis,
 pkg-config}:
 
-stdenv.mkDerivation {
-  name = "ultimate-stunts-0.7.6.1";
+stdenv.mkDerivation rec {
+  pname = "ultimate-stunts";
+  version = "0.7.6.1";
   src = fetchurl {
-    url = "mirror://sourceforge/ultimatestunts/ultimatestunts-srcdata-0761.tar.gz";
+    url = "mirror://sourceforge/ultimatestunts/ultimatestunts-srcdata-${lib.replaceStrings ["."] [""] version}.tar.gz";
     sha256 = "0rd565ml6l927gyq158klhni7myw8mgllhv0xl1fg9m8hlzssgrv";
   };
 
diff --git a/nixpkgs/pkgs/games/unvanquished/default.nix b/nixpkgs/pkgs/games/unvanquished/default.nix
index 6bbdc42d9f25..f3f8c1413dbc 100644
--- a/nixpkgs/pkgs/games/unvanquished/default.nix
+++ b/nixpkgs/pkgs/games/unvanquished/default.nix
@@ -6,7 +6,7 @@
 }:
 
 let
-  version = "0.52.0";
+  version = "0.52.1";
   binary-deps-version = "5";
 
   src = fetchFromGitHub {
@@ -14,7 +14,7 @@ let
     repo = "Unvanquished";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "1acda1559q6zwmhg3x00nai88hy83i5hcfli2bqfab7slr95lm27";
+    sha256 = "1fiqn9f6nsh4cfjy7gfsv950hphwi9ca0ddgsjvn77g7yc0arp6c";
   };
 
   unvanquished-binary-deps = stdenv.mkDerivation rec {
@@ -77,15 +77,14 @@ let
     chmod +x $out/bin/${wrappername}
   '';
 
-
   unvanquished-assets = stdenv.mkDerivation {
     pname = "unvanquished-assets";
     inherit version src;
 
-    outputHash = "sha256:1fy85cjnjk9rrqkhgx5701inff2yv14hnxglzx3209c553gn31n7";
+    outputHash = "sha256:084jdisb48xyk9agjifn0nlnsdnjgg32si8zd1khsywd0kffplzx";
     outputHashMode = "recursive";
     nativeBuildInputs = [ aria2 cacert ];
-    buildCommand = "bash $src/download-paks $out";
+    buildCommand = "bash $src/download-paks --cache=$(pwd) --version=${version} $out";
   };
 
 # this really is the daemon game engine, the game itself is in the assets
@@ -186,7 +185,8 @@ in stdenv.mkDerivation rec {
     # don't replace the following lib.licenses.zlib with just "zlib",
     # or you would end up with the package instead
     license = with lib.licenses; [
-      mit gpl3Only lib.licenses.zlib cc-by-sa-25
+      mit gpl3Plus lib.licenses.zlib bsd3 # engine
+      cc-by-sa-25 cc-by-sa-30 cc-by-30 cc-by-sa-40 cc0 # assets
     ];
   };
 }
diff --git a/nixpkgs/pkgs/games/vectoroids/default.nix b/nixpkgs/pkgs/games/vectoroids/default.nix
index e0b7e13c91ea..765f21465805 100644
--- a/nixpkgs/pkgs/games/vectoroids/default.nix
+++ b/nixpkgs/pkgs/games/vectoroids/default.nix
@@ -1,9 +1,10 @@
 {lib, stdenv, fetchurl, SDL, SDL_image, SDL_mixer}:
 
-stdenv.mkDerivation {
-  name = "vectoroids-1.1.0";
+stdenv.mkDerivation rec {
+  pname = "vectoroids";
+  version = "1.1.0";
   src = fetchurl {
-    url = "ftp://ftp.tuxpaint.org/unix/x/vectoroids/src/vectoroids-1.1.0.tar.gz";
+    url = "ftp://ftp.tuxpaint.org/unix/x/vectoroids/src/vectoroids-${version}.tar.gz";
     sha256 = "0bkvd4a1v496w0vlvqyi1a6p25ssgpkchxxxi8899sb72wlds54d";
   };
 
diff --git a/nixpkgs/pkgs/games/vessel/default.nix b/nixpkgs/pkgs/games/vessel/default.nix
index 4a25d26f8cc5..7c535cb323ec 100644
--- a/nixpkgs/pkgs/games/vessel/default.nix
+++ b/nixpkgs/pkgs/games/vessel/default.nix
@@ -1,19 +1,20 @@
 { lib, stdenv, requireFile, SDL, libpulseaudio, alsa-lib, runtimeShell }:
 
 stdenv.mkDerivation rec {
-  name = "vessel-12082012";
+  pname = "vessel";
+  version = "12082012";
 
   goBuyItNow = ''
     We cannot download the full version automatically, as you require a license.
     Once you bought a license, you need to add your downloaded version to the nix store.
-    You can do this by using "nix-prefetch-url file://\$PWD/${name}-bin" in the
+    You can do this by using "nix-prefetch-url file://\$PWD/vessel-${version}-bin" in the
     directory where you saved it.
   '';
 
   src = if (stdenv.isi686) then
     requireFile {
       message = goBuyItNow;
-      name = "${name}-bin";
+      name = "vessel-${version}-bin";
       sha256 = "1vpwcrjiln2mx43h7ib3jnccyr3chk7a5x2bw9kb4lw8ycygvg96";
     } else throw "unsupported platform ${stdenv.hostPlatform.system} only i686-linux supported for now.";
 
diff --git a/nixpkgs/pkgs/games/widelands/default.nix b/nixpkgs/pkgs/games/widelands/default.nix
index 8b96dcc04e2e..f094c7cd5961 100644
--- a/nixpkgs/pkgs/games/widelands/default.nix
+++ b/nixpkgs/pkgs/games/widelands/default.nix
@@ -1,52 +1,90 @@
-{ lib, stdenv, fetchurl, cmake, python, gettext
-, boost, libpng, zlib, glew, lua, doxygen, icu
-, SDL2, SDL2_image, SDL2_mixer, SDL2_net, SDL2_ttf
+{ lib
+, stdenv
+, fetchFromGitHub
+, SDL2
+, SDL2_image
+, SDL2_mixer
+, SDL2_net
+, SDL2_ttf
+, boost
+, cmake
+, curl
+, doxygen
+, gettext
+, glew
+, graphviz
+, icu
+, installShellFiles
+, libpng
+, lua
+, python3
+, zlib
 }:
 
 stdenv.mkDerivation rec {
   pname = "widelands";
-  version = "21";
+  version = "1.0";
 
-  meta = with lib; {
-    description = "RTS with multiple-goods economy";
-    homepage    = "http://widelands.org/";
-    longDescription = ''
-      Widelands is a real time strategy game based on "The Settlers" and "The
-      Settlers II". It has a single player campaign mode, as well as a networked
-      multiplayer mode.
-    '';
-    license        = licenses.gpl2Plus;
-    platforms      = platforms.linux;
-    maintainers    = with maintainers; [ raskin jcumming ];
-    hydraPlatforms = [];
+  src = fetchFromGitHub {
+    owner = "widelands";
+    repo = "widelands";
+    rev = "v${version}";
+    sha256 = "sha256-gNumYoeKePaxiAzrqEPKibMxFwv9vyBrCSoua+MKhcM=";
   };
 
-  patches = [
-    ./bincmake.patch
-  ];
-
-  src = fetchurl {
-    url = "https://launchpad.net/widelands/build${version}/build${version}/+download/widelands-build${version}-source.tar.gz";
-    sha256 = "sha256-YB4OTG+Rs/sOzizRuD7PsCNEobkZT7tw7z9w4GmU41c=";
-  };
+  patches = [ ./bincmake.patch ];
 
-  preConfigure = ''
-    cmakeFlags="
-      -DWL_INSTALL_BASEDIR=$out
-      -DWL_INSTALL_DATADIR=$out/share/widelands
-      -DWL_INSTALL_BINARY=$out/bin
-    "
+  postPatch = ''
+    substituteInPlace xdg/org.widelands.Widelands.desktop \
+      --replace 'Exec=widelands' "Exec=$out/bin/widelands"
   '';
 
-  nativeBuildInputs = [ cmake python gettext ];
+  cmakeFlags = [
+    "-Wno-dev" # dev warnings are only needed for upstream development
+    "-DWL_INSTALL_BASEDIR=${placeholder "out"}"
+    "-DWL_INSTALL_DATADIR=${placeholder "out"}/share/widelands"
+    "-DWL_INSTALL_BINARY=${placeholder "out"}/bin"
+  ];
+
+  nativeBuildInputs = [ cmake doxygen gettext graphviz installShellFiles ];
 
   buildInputs = [
-    boost libpng zlib glew lua doxygen icu
-    SDL2 SDL2_image SDL2_mixer SDL2_net SDL2_ttf
+    SDL2
+    SDL2_image
+    SDL2_mixer
+    SDL2_net
+    SDL2_ttf
+    boost
+    curl
+    glew
+    icu
+    libpng
+    lua
+    python3
+    zlib
   ];
 
   postInstall = ''
-    mkdir -p "$out/share/applications/"
-    cp -v "../xdg/org.widelands.Widelands.desktop" "$out/share/applications/"
+    install -Dm444 -t $out/share/applications ../xdg/org.widelands.Widelands.desktop
+
+    for s in 16 32 48 64 128; do
+      install -Dm444 ../data/images/logos/wl-ico-''${s}.png $out/share/icons/hicolor/''${s}x''${s}/org.widelands.Widelands.png
+    done
+
+    installManPage ../xdg/widelands.6
   '';
+
+  meta = with lib; {
+    description = "RTS with multiple-goods economy";
+    homepage = "https://widelands.org/";
+    longDescription = ''
+      Widelands is a real time strategy game based on "The Settlers" and "The
+      Settlers II". It has a single player campaign mode, as well as a networked
+      multiplayer mode.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ raskin jcumming ];
+    platforms = platforms.linux;
+    hydraPlatforms = [ ];
+  };
 }
diff --git a/nixpkgs/pkgs/games/xbomb/default.nix b/nixpkgs/pkgs/games/xbomb/default.nix
index 2d9f57d1e73f..093f822a7e31 100644
--- a/nixpkgs/pkgs/games/xbomb/default.nix
+++ b/nixpkgs/pkgs/games/xbomb/default.nix
@@ -1,9 +1,10 @@
 { lib, stdenv, fetchurl, libX11, libXaw }:
 
 stdenv.mkDerivation rec {
-  name = "xbomb-2.2b";
+  pname = "xbomb";
+  version = "2.2b";
   src = fetchurl {
-    url    = "https://www.gedanken.org.uk/software/xbomb/download/${name}.tgz";
+    url    = "https://www.gedanken.org.uk/software/xbomb/download/xbomb-${version}.tgz";
     sha256 = "0692gjw28qvh8wj9l58scjw6kxj7jdyb3yzgcgs9wcznq11q839m";
   };
 
diff --git a/nixpkgs/pkgs/games/xonotic/default.nix b/nixpkgs/pkgs/games/xonotic/default.nix
index 38a0450168ef..0a5a58885d0f 100644
--- a/nixpkgs/pkgs/games/xonotic/default.nix
+++ b/nixpkgs/pkgs/games/xonotic/default.nix
@@ -58,7 +58,7 @@ let
     inherit version;
 
     src = fetchurl {
-      url = "https://dl.xonotic.org/${name}-source.zip";
+      url = "https://dl.xonotic.org/${pname}-${version}-source.zip";
       sha256 = "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay";
     };
 
@@ -119,8 +119,8 @@ let
 
 in rec {
   xonotic-data = fetchzip {
-    name = "xonotic-data-${version}";
-    url = "https://dl.xonotic.org/${name}.zip";
+    name = "xonotic-data";
+    url = "https://dl.xonotic.org/xonotic-data-${version}.zip";
     sha256 = "1ygkh0v68y4sd1w5vpk8dgb65h5jm599hwszdfgjp3ax4d3ml81x";
     extraPostFetch = ''
       cd $out
diff --git a/nixpkgs/pkgs/games/zandronum/sqlite.nix b/nixpkgs/pkgs/games/zandronum/sqlite.nix
index 48dd2be9973a..c9baefcf0af6 100644
--- a/nixpkgs/pkgs/games/zandronum/sqlite.nix
+++ b/nixpkgs/pkgs/games/zandronum/sqlite.nix
@@ -1,7 +1,8 @@
 { lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation {
-  name = "sqlite-zandronum-3.0";
+  pname = "sqlite-zandronum";
+  version = "3.0";
 
   src = fetchurl {
     url = "https://www.sqlite.org/2017/sqlite-autoconf-3180000.tar.gz";
diff --git a/nixpkgs/pkgs/games/zdoom/bcc-git.nix b/nixpkgs/pkgs/games/zdoom/bcc-git.nix
index 2e9f1a9c2b91..aa3fdeca183a 100644
--- a/nixpkgs/pkgs/games/zdoom/bcc-git.nix
+++ b/nixpkgs/pkgs/games/zdoom/bcc-git.nix
@@ -1,7 +1,8 @@
 { lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation {
-  name = "doom-bcc-git-0.8.0.2018.01.04";
+  pname = "doom-bcc";
+  version = "unstable-2018-01-04";
 
   src = fetchFromGitHub {
     owner = "wormt";
diff --git a/nixpkgs/pkgs/games/zod/default.nix b/nixpkgs/pkgs/games/zod/default.nix
index f7d7a5612d82..6bf24ed6cb9f 100644
--- a/nixpkgs/pkgs/games/zod/default.nix
+++ b/nixpkgs/pkgs/games/zod/default.nix
@@ -16,8 +16,8 @@
 , substituteAll
 }:
 let
+  name = "zod-engine";
   version = "2011-09-06";
-  name = "zod-engine-${version}";
   src = fetchzip {
     url = "mirror://sourceforge/zod/linux_releases/zod_linux-${version}.tar.gz";
     sha256 = "017v96aflrv07g8j8zk9mq8f8rqxl5228rjff5blq8dxpsv1sx7h";
@@ -37,7 +37,7 @@ let
   hardeningDisable = [ "format" ];
   NIX_LDFLAGS = "-L${libmysqlclient}/lib/mysql";
   zod_engine = stdenv.mkDerivation {
-    inherit name version src nativeBuildInputs buildInputs hardeningDisable NIX_LDFLAGS;
+    inherit version src nativeBuildInputs buildInputs hardeningDisable NIX_LDFLAGS;
     pname = "${name}-engine";
     enableParallelBuilding = true;
     preBuild = "cd zod_src";
@@ -48,7 +48,7 @@ let
     '';
   };
   zod_map_editor = stdenv.mkDerivation {
-    inherit name version src nativeBuildInputs buildInputs hardeningDisable NIX_LDFLAGS;
+    inherit version src nativeBuildInputs buildInputs hardeningDisable NIX_LDFLAGS;
     pname = "${name}-map_editor";
     enableParallelBuilding = true;
     preBuild = "cd zod_src";
@@ -60,7 +60,7 @@ let
     '';
   };
   zod_launcher = stdenv.mkDerivation {
-      inherit name version src nativeBuildInputs buildInputs zod_engine zod_map_editor;
+      inherit version src nativeBuildInputs buildInputs zod_engine zod_map_editor;
       pname = "${name}-launcher";
       # This is necessary because the zod_launcher has terrible fixed-width window
       # the Idea is to apply the scalingFactor to all positions and sizes and I tested 1,2,3 and 4
diff --git a/nixpkgs/pkgs/games/zoom/default.nix b/nixpkgs/pkgs/games/zoom/default.nix
index 086d860872c7..02cfc28ebeef 100644
--- a/nixpkgs/pkgs/games/zoom/default.nix
+++ b/nixpkgs/pkgs/games/zoom/default.nix
@@ -3,10 +3,11 @@
 # !!! assert freetype == xorg.freetype
 
 stdenv.mkDerivation rec {
-  name = "zoom-1.1.5";
+  pname = "zoom";
+  version = "1.1.5";
 
   src = fetchurl {
-    url = "https://www.logicalshift.co.uk/unix/zoom/${name}.tar.gz";
+    url = "https://www.logicalshift.co.uk/unix/zoom/zoom-${version}.tar.gz";
     sha256 = "1g6van7f7sg3zfcz80mncnnbccyg2hnm0hq4x558vpsm0lf7z5pj";
   };