about summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/acl2/default.nix13
-rw-r--r--pkgs/development/interpreters/bats/default.nix14
-rw-r--r--pkgs/development/interpreters/ceptre/default.nix4
-rw-r--r--pkgs/development/interpreters/chibi/default.nix2
-rw-r--r--pkgs/development/interpreters/clips/default.nix2
-rw-r--r--pkgs/development/interpreters/clisp/default.nix2
-rw-r--r--pkgs/development/interpreters/clisp/hg.nix2
-rw-r--r--pkgs/development/interpreters/clojure/babashka.nix84
-rw-r--r--pkgs/development/interpreters/clojure/clooj.nix2
-rw-r--r--pkgs/development/interpreters/clojure/default.nix2
-rw-r--r--pkgs/development/interpreters/clojurescript/lumo/default.nix2
-rw-r--r--pkgs/development/interpreters/clojurescript/lumo/package.json2
-rw-r--r--pkgs/development/interpreters/dart/default.nix28
-rw-r--r--pkgs/development/interpreters/dhall/build-dhall-package.nix19
-rw-r--r--pkgs/development/interpreters/duktape/default.nix4
-rw-r--r--pkgs/development/interpreters/eff/default.nix2
-rw-r--r--pkgs/development/interpreters/elixir/1.10.nix4
-rw-r--r--pkgs/development/interpreters/elixir/generic-builder.nix4
-rw-r--r--pkgs/development/interpreters/erlang/R16B02-basho.nix2
-rw-r--r--pkgs/development/interpreters/erlang/generic-builder.nix4
-rw-r--r--pkgs/development/interpreters/evcxr/default.nix8
-rw-r--r--pkgs/development/interpreters/gauche/default.nix2
-rw-r--r--pkgs/development/interpreters/gnu-apl/default.nix2
-rw-r--r--pkgs/development/interpreters/groovy/default.nix6
-rw-r--r--pkgs/development/interpreters/guile/1.8.nix2
-rw-r--r--pkgs/development/interpreters/guile/2.0.nix2
-rw-r--r--pkgs/development/interpreters/hugs/default.nix6
-rw-r--r--pkgs/development/interpreters/hy/default.nix21
-rw-r--r--pkgs/development/interpreters/icon-lang/default.nix2
-rw-r--r--pkgs/development/interpreters/io/default.nix2
-rw-r--r--pkgs/development/interpreters/j/default.nix52
-rw-r--r--pkgs/development/interpreters/janet/default.nix6
-rw-r--r--pkgs/development/interpreters/jelly/default.nix28
-rw-r--r--pkgs/development/interpreters/joker/default.nix8
-rw-r--r--pkgs/development/interpreters/jruby/default.nix4
-rw-r--r--pkgs/development/interpreters/kona/default.nix2
-rw-r--r--pkgs/development/interpreters/lolcode/default.nix2
-rw-r--r--pkgs/development/interpreters/love/0.10.nix2
-rw-r--r--pkgs/development/interpreters/love/0.7.nix2
-rw-r--r--pkgs/development/interpreters/love/0.9.nix2
-rw-r--r--pkgs/development/interpreters/love/11.1.nix2
-rw-r--r--pkgs/development/interpreters/lua-5/filesystem.nix2
-rw-r--r--pkgs/development/interpreters/lua-5/interpreter.nix2
-rw-r--r--pkgs/development/interpreters/lua-5/sockets.nix2
-rw-r--r--pkgs/development/interpreters/luajit/2.0.nix5
-rw-r--r--pkgs/development/interpreters/luajit/2.1.nix5
-rw-r--r--pkgs/development/interpreters/luajit/default.nix14
-rw-r--r--pkgs/development/interpreters/maude/default.nix2
-rw-r--r--pkgs/development/interpreters/metamath/default.nix14
-rw-r--r--pkgs/development/interpreters/mujs/default.nix6
-rw-r--r--pkgs/development/interpreters/nix-exec/default.nix2
-rw-r--r--pkgs/development/interpreters/octave/default.nix25
-rw-r--r--pkgs/development/interpreters/perl/default.nix18
-rw-r--r--pkgs/development/interpreters/php/default.nix569
-rw-r--r--pkgs/development/interpreters/picoc/default.nix6
-rw-r--r--pkgs/development/interpreters/picolisp/default.nix2
-rw-r--r--pkgs/development/interpreters/pixie/default.nix2
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.5.nix2
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.6.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/default.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/3.7/fix-hardcoded-path-checking-for-rpmbuild.patch30
-rw-r--r--pkgs/development/interpreters/python/cpython/default.nix16
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/2.7-html.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/2.7-text.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/3.7-html.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/3.7-pdf-a4.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/3.7-pdf-letter.nix2
-rw-r--r--pkgs/development/interpreters/python/cpython/docs/3.7-text.nix2
-rw-r--r--pkgs/development/interpreters/python/default.nix17
-rw-r--r--pkgs/development/interpreters/python/hooks/default.nix8
-rw-r--r--pkgs/development/interpreters/python/hooks/pytest-check-hook.sh12
-rw-r--r--pkgs/development/interpreters/python/hooks/python-namespaces-hook.sh40
-rw-r--r--pkgs/development/interpreters/python/hooks/venv-shell-hook.sh6
-rw-r--r--pkgs/development/interpreters/python/mk-python-derivation.nix4
-rw-r--r--pkgs/development/interpreters/python/pypy/default.nix6
-rw-r--r--pkgs/development/interpreters/python/pypy/prebuilt.nix2
-rw-r--r--pkgs/development/interpreters/python/sitecustomize.py19
-rw-r--r--pkgs/development/interpreters/python/tests.nix45
-rw-r--r--pkgs/development/interpreters/python/tests/test_nix_pythonprefix/default.nix25
-rw-r--r--pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix13
-rw-r--r--pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/setup.py18
-rw-r--r--pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/__init__.py0
-rw-r--r--pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/py.typed0
-rw-r--r--pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/util.py2
-rw-r--r--pkgs/development/interpreters/python/tests/test_python.py11
-rw-r--r--pkgs/development/interpreters/python/wrapper.nix2
-rw-r--r--pkgs/development/interpreters/qnial/default.nix2
-rw-r--r--pkgs/development/interpreters/racket/default.nix6
-rw-r--r--pkgs/development/interpreters/racket/minimal.nix2
-rw-r--r--pkgs/development/interpreters/rakudo/default.nix6
-rw-r--r--pkgs/development/interpreters/rakudo/moarvm.nix4
-rw-r--r--pkgs/development/interpreters/rakudo/nqp.nix4
-rw-r--r--pkgs/development/interpreters/rakudo/zef.nix4
-rw-r--r--pkgs/development/interpreters/rascal/default.nix2
-rw-r--r--pkgs/development/interpreters/rebol/default.nix2
-rw-r--r--pkgs/development/interpreters/red/default.nix2
-rw-r--r--pkgs/development/interpreters/renpy/default.nix2
-rw-r--r--pkgs/development/interpreters/ruby/default.nix20
-rw-r--r--pkgs/development/interpreters/ruby/patchsets.nix14
-rw-r--r--pkgs/development/interpreters/ruby/rubygems/default.nix2
-rw-r--r--pkgs/development/interpreters/ruby/rvm-patchsets.nix4
-rw-r--r--pkgs/development/interpreters/scheme48/default.nix5
-rw-r--r--pkgs/development/interpreters/scsh/default.nix2
-rw-r--r--pkgs/development/interpreters/self/default.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/1.8.5.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/38.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/60.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/68.nix95
-rw-r--r--pkgs/development/interpreters/supercollider/default.nix4
-rw-r--r--pkgs/development/interpreters/tcl/generic.nix2
-rw-r--r--pkgs/development/interpreters/tinyscheme/default.nix2
-rw-r--r--pkgs/development/interpreters/unicon-lang/default.nix2
-rw-r--r--pkgs/development/interpreters/wasmer/default.nix6
-rw-r--r--pkgs/development/interpreters/wasmtime/default.nix12
116 files changed, 968 insertions, 581 deletions
diff --git a/pkgs/development/interpreters/acl2/default.nix b/pkgs/development/interpreters/acl2/default.nix
index 8d93492209c6..39b243a0ce6a 100644
--- a/pkgs/development/interpreters/acl2/default.nix
+++ b/pkgs/development/interpreters/acl2/default.nix
@@ -4,15 +4,15 @@
 
 let hashes = {
   "8.0" = "1x1giy2c1y6krg3kf8pf9wrmvk981shv0pxcwi483yjqm90xng4r";
-  "8.2" = "1x33kv6w9cbqzvyrihn61pzmqlvnk3drm8ksd5v0arg38i95awi3";
+  "8.3" = "0c0wimaf16nrr3d6cxq6p7nr7rxffvpmn66hkpwc1m6zpcipf0y5";
 };
 revs = {
   "8.0" = "8.0";
-  "8.2" = "8.2";
+  "8.3" = "8.3";
 };
 in stdenv.mkDerivation rec {
   pname = "acl2";
-  version = "8.2";
+  version = "8.3";
 
   src = fetchFromGitHub {
     owner = "acl2-devel";
@@ -62,8 +62,8 @@ in stdenv.mkDerivation rec {
       ACL2 have been removed because it is not currently possible to
       build them with Nix.
     '';
-    homepage = http://www.cs.utexas.edu/users/moore/acl2/;
-    downloadPage = https://github.com/acl2-devel/acl2-devel/releases;
+    homepage = "http://www.cs.utexas.edu/users/moore/acl2/";
+    downloadPage = "https://github.com/acl2-devel/acl2-devel/releases";
     # There are a bunch of licenses in the community books, but since
     # they currently get deleted during the build, we don't mention
     # their licenses here.  ACL2 proper is released under a BSD
@@ -72,6 +72,7 @@ in stdenv.mkDerivation rec {
     #[ free bsd3 mit gpl2 llgpl21 cc0 publicDomain ];
     license = stdenv.lib.licenses.bsd3;
     maintainers = with stdenv.lib.maintainers; [ kini raskin ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.all;
+    broken = stdenv.isAarch64 && stdenv.isLinux;
   };
 }
diff --git a/pkgs/development/interpreters/bats/default.nix b/pkgs/development/interpreters/bats/default.nix
index 744106bce5d0..bbc38e515424 100644
--- a/pkgs/development/interpreters/bats/default.nix
+++ b/pkgs/development/interpreters/bats/default.nix
@@ -1,23 +1,27 @@
-{ stdenv, fetchzip, gnugrep }:
+{ stdenv, fetchzip, coreutils, gnugrep }:
 
 stdenv.mkDerivation rec {
   pname = "bats";
-  version = "1.1.0";
+  version = "1.2.0";
 
   src = fetchzip {
     url = "https://github.com/bats-core/bats-core/archive/v${version}.tar.gz";
-    sha256 = "1kkh0j2alql3xiyhw9wsvcc3xclv52g0ivgyk8h85q9fn3qdqakz";
+    sha256 = "0f59zh4d4pa1a7ybs5zl6h0csbqqv11lbnq0jl1dgwm1s6p49bsq";
   };
 
   patchPhase = ''
     patchShebangs ./install.sh
-    substituteInPlace ./libexec/bats-core/bats-format-tap-stream --replace grep ${gnugrep}/bin/grep
+
+    substituteInPlace ./libexec/bats-core/bats \
+        --replace 'type -p greadlink readlink' 'type -p ${coreutils}/bin/readlink'
+    substituteInPlace ./libexec/bats-core/bats-format-tap-stream \
+        --replace grep ${gnugrep}/bin/grep
   '';
 
   installPhase = "./install.sh $out";
 
   meta = with stdenv.lib; {
-    homepage = https://github.com/bats-core/bats-core;
+    homepage = "https://github.com/bats-core/bats-core";
     description = "Bash Automated Testing System";
     maintainers = [ maintainers.lnl7 ];
     license = licenses.mit;
diff --git a/pkgs/development/interpreters/ceptre/default.nix b/pkgs/development/interpreters/ceptre/default.nix
index cde9146f78c6..de12185b96f0 100644
--- a/pkgs/development/interpreters/ceptre/default.nix
+++ b/pkgs/development/interpreters/ceptre/default.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation {
   name = "ceptre-2016-11-27";
 
   src = fetchgit {
-    url = https://github.com/chrisamaphone/interactive-lp;
+    url = "https://github.com/chrisamaphone/interactive-lp";
     rev = "e436fda2ccd44e9c9d226feced9d204311deacf5";
     sha256 = "174pxfnw3qyn2w8qxmx45fa68iddf106mkfi0kcmyqxzsc9jprh8";
   };
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     description = "A linear logic programming language for modeling generative interactive systems";
-    homepage = https://github.com/chrisamaphone/interactive-lp;
+    homepage = "https://github.com/chrisamaphone/interactive-lp";
     maintainers = with maintainers; [ pSub ];
     platforms = with platforms; linux;
   };
diff --git a/pkgs/development/interpreters/chibi/default.nix b/pkgs/development/interpreters/chibi/default.nix
index 2ad0bc0285e5..f0de3f640918 100644
--- a/pkgs/development/interpreters/chibi/default.nix
+++ b/pkgs/development/interpreters/chibi/default.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
   inherit name;
 
   meta = {
-    homepage = https://github.com/ashinn/chibi-scheme;
+    homepage = "https://github.com/ashinn/chibi-scheme";
     description = "Small Footprint Scheme for use as a C Extension Language";
     platforms = stdenv.lib.platforms.all;
     license = stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/interpreters/clips/default.nix b/pkgs/development/interpreters/clips/default.nix
index c70bfd9406e0..cf0710f36a1a 100644
--- a/pkgs/development/interpreters/clips/default.nix
+++ b/pkgs/development/interpreters/clips/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   '';
   meta = with stdenv.lib; {
     description = "A Tool for Building Expert Systems";
-    homepage = http://www.clipsrules.net/;
+    homepage = "http://www.clipsrules.net/";
     longDescription = ''
       Developed at NASA's Johnson Space Center from 1985 to 1996,
       CLIPS is a rule-based programming language useful for creating
diff --git a/pkgs/development/interpreters/clisp/default.nix b/pkgs/development/interpreters/clisp/default.nix
index 5dcfa42c92fc..1b7ff2c8cba3 100644
--- a/pkgs/development/interpreters/clisp/default.nix
+++ b/pkgs/development/interpreters/clisp/default.nix
@@ -94,7 +94,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "ANSI Common Lisp Implementation";
-    homepage = http://clisp.cons.org;
+    homepage = "http://clisp.cons.org";
     maintainers = with stdenv.lib.maintainers; [raskin tohl];
     platforms = stdenv.lib.platforms.unix;
     # problems on Darwin: https://github.com/NixOS/nixpkgs/issues/20062
diff --git a/pkgs/development/interpreters/clisp/hg.nix b/pkgs/development/interpreters/clisp/hg.nix
index 550535f30aee..6898f84669f7 100644
--- a/pkgs/development/interpreters/clisp/hg.nix
+++ b/pkgs/development/interpreters/clisp/hg.nix
@@ -90,7 +90,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "ANSI Common Lisp Implementation";
-    homepage = http://clisp.cons.org;
+    homepage = "http://clisp.cons.org";
     maintainers = with stdenv.lib.maintainers; [raskin tohl];
     # problems on Darwin: https://github.com/NixOS/nixpkgs/issues/20062
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix
new file mode 100644
index 000000000000..c023aa65fdaa
--- /dev/null
+++ b/pkgs/development/interpreters/clojure/babashka.nix
@@ -0,0 +1,84 @@
+{ stdenv, fetchurl, graalvm8, glibcLocales }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "babashka";
+  version = "0.0.97";
+
+  reflectionJson = fetchurl {
+    name = "reflection.json";
+    url = "https://github.com/borkdude/${pname}/releases/download/v${version}/${pname}-${version}-reflection.json";
+    sha256 = "1gd9ih9l02n1j9qkbxb36d3cb5sddwvxiw8kkicgc4xig77lsa7z";
+  };
+
+  src = fetchurl {
+    url = "https://github.com/borkdude/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar";
+    sha256 = "08py6bawfrhg90fbcnv2mq4c91g5wa1q2q6zdjy2i1b9q4x1654r";
+  };
+
+  dontUnpack = true;
+
+  LC_ALL = "en_US.UTF-8";
+  nativeBuildInputs = [ graalvm8 glibcLocales ];
+
+  buildPhase = ''
+    native-image \
+      -jar ${src} \
+      -H:Name=bb \
+      -H:+ReportExceptionStackTraces \
+      -J-Dclojure.spec.skip-macros=true \
+      -J-Dclojure.compiler.direct-linking=true \
+      "-H:IncludeResources=BABASHKA_VERSION" \
+      "-H:IncludeResources=SCI_VERSION" \
+      -H:ReflectionConfigurationFiles=${reflectionJson} \
+      --initialize-at-run-time=java.lang.Math\$RandomNumberGeneratorHolder \
+      --initialize-at-build-time \
+      -H:Log=registerResource: \
+      -H:EnableURLProtocols=http,https \
+      --enable-all-security-services \
+      -H:+JNI \
+      --verbose \
+      --no-fallback \
+      --no-server \
+      --report-unsupported-elements-at-runtime \
+      "--initialize-at-run-time=org.postgresql.sspi.SSPIClient" \
+      "-J-Xmx4500m"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bb $out/bin/bb
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Clojure babushka for the grey areas of Bash";
+    longDescription = ''
+      The main idea behind babashka is to leverage Clojure in places where you
+      would be using bash otherwise.
+
+      As one user described it:
+
+          I’m quite at home in Bash most of the time, but there’s a substantial
+          grey area of things that are too complicated to be simple in bash, but
+          too simple to be worth writing a clj/s script for. Babashka really
+          seems to hit the sweet spot for those cases.
+
+    Goals:
+
+    - Low latency Clojure scripting alternative to JVM Clojure.
+    - Easy installation: grab the self-contained binary and run. No JVM needed.
+    - Familiarity and portability:
+      - Scripts should be compatible with JVM Clojure as much as possible
+      - Scripts should be platform-independent as much as possible. Babashka
+        offers support for linux, macOS and Windows.
+    - Allow interop with commonly used classes like java.io.File and System
+    - Multi-threading support (pmap, future, core.async)
+    - Batteries included (tools.cli, cheshire, ...)
+    - Library support via popular tools like the clojure CLI
+    '';
+    homepage = "https://github.com/borkdude/babashka";
+    license = licenses.epl10;
+    platforms = graalvm8.meta.platforms;
+    maintainers = with maintainers; [ bandresen bhougland DerGuteMoritz jlesquembre ];
+  };
+}
diff --git a/pkgs/development/interpreters/clojure/clooj.nix b/pkgs/development/interpreters/clojure/clooj.nix
index 369d84708dc4..d51fa76003b2 100644
--- a/pkgs/development/interpreters/clojure/clooj.nix
+++ b/pkgs/development/interpreters/clojure/clooj.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A lightweight IDE for Clojure";
-    homepage = https://github.com/arthuredelstein/clooj;
+    homepage = "https://github.com/arthuredelstein/clooj";
     license = stdenv.lib.licenses.bsd3;
   };
 }
diff --git a/pkgs/development/interpreters/clojure/default.nix b/pkgs/development/interpreters/clojure/default.nix
index 01fba17f104f..e8c3e7b098ab 100644
--- a/pkgs/development/interpreters/clojure/default.nix
+++ b/pkgs/development/interpreters/clojure/default.nix
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
   '';
   meta = with stdenv.lib; {
     description = "A Lisp dialect for the JVM";
-    homepage = https://clojure.org/;
+    homepage = "https://clojure.org/";
     license = licenses.epl10;
     longDescription = ''
       Clojure is a dynamic programming language that targets the Java
diff --git a/pkgs/development/interpreters/clojurescript/lumo/default.nix b/pkgs/development/interpreters/clojurescript/lumo/default.nix
index d6252a7506aa..122831e80cc0 100644
--- a/pkgs/development/interpreters/clojurescript/lumo/default.nix
+++ b/pkgs/development/interpreters/clojurescript/lumo/default.nix
@@ -279,7 +279,7 @@ stdenv.mkDerivation {
       Thanks to V8's custom startup snapshots, Lumo starts up instantaneously,
       making it the fastest Clojure REPL in existence.
     '';
-    homepage = https://github.com/anmonteiro/lumo;
+    homepage = "https://github.com/anmonteiro/lumo";
     license = stdenv.lib.licenses.epl10;
     maintainers = [ stdenv.lib.maintainers.hlolli ];
     platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
diff --git a/pkgs/development/interpreters/clojurescript/lumo/package.json b/pkgs/development/interpreters/clojurescript/lumo/package.json
index 6ab3f9616c78..acfd5c4ed498 100644
--- a/pkgs/development/interpreters/clojurescript/lumo/package.json
+++ b/pkgs/development/interpreters/clojurescript/lumo/package.json
@@ -27,7 +27,7 @@
     "glob": "^7.1.3",
     "gunzip-maybe": "^1.4.1",
     "insert-module-globals": "^7.2.0",
-    "jszip": "github:anmonteiro/jszip#patch-1",
+    "jszip": "2.x",
     "mkdirp": "^1.0.3",
     "ncp": "^2.0.0",
     "node-fetch": "^2.2.1",
diff --git a/pkgs/development/interpreters/dart/default.nix b/pkgs/development/interpreters/dart/default.nix
index cff1885e2798..050e7f14979c 100644
--- a/pkgs/development/interpreters/dart/default.nix
+++ b/pkgs/development/interpreters/dart/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, version ? "2.7.1" }:
+{ stdenv, fetchurl, unzip, version ? "2.7.2" }:
 
 let
 
@@ -24,29 +24,29 @@ let
       url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip";
       sha256 = "1p5bn04gr91chcszgmw5ng8mlzgwsrdr2v7k7ppwr1slkx97fsrh";
     };
-    "2.7.1-x86_64-linux" = fetchurl {
+    "2.7.2-x86_64-linux" = fetchurl {
       url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip";
-      sha256 = "1zjd9hxxg1dsyzkzgqjvl933kprf8h143z5qi4mj1iczxv7zp27a";
+      sha256 = "0vvsgda1smqdjn35yiq9pxx8f5haxb4hqnspcsfs6sn5c36k854v";
     };
-    "2.7.1-i686-linux" = fetchurl {
+    "2.7.2-i686-linux" = fetchurl {
       url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip";
-      sha256 = "0cggr1jbhzahmazlhba0vw2chz9zxd98jgk6zxvxdnw5hvkx8si1";
+      sha256 = "0dj01d2wwrp3cc5x73vs6fzhs6db60gkbjlrw3w9j04wcx69i38m";
     };
-    "2.7.1-aarch64-linux" = fetchurl {
+    "2.7.2-aarch64-linux" = fetchurl {
       url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip";
-      sha256 = "0m4qlc3zy87habr61npykvpclggn5k4hadl59v2b0ymvxa4h5zfh";
+      sha256 = "1p66fkdh1kv0ypmadmg67c3y3li3aaf1lahqh2g6r6qrzbh5da2p";
     };
-    "2.8.0-dev.10.0-x86_64-linux" = fetchurl {
+    "2.9.0-4.0.dev-x86_64-linux" = fetchurl {
       url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip";
-      sha256 = "17x0q94zampm99dd2sn6q1644lfwcl0ig2rdlmfzd9i4llj2ddbl";
+      sha256 = "16d9842fb3qbc0hy0zmimav9zndfkq96glgykj20xssc88qpjk2r";
     };
-    "2.8.0-dev.10.0-i686-linux" = fetchurl {
+    "2.9.0-4.0.dev-i686-linux" = fetchurl {
       url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip";
-      sha256 = "0hmkg4jrffzh8x2mxn8nbf7dl7k0v2vacbmxgpsl382vw9wwj96j";
+      sha256 = "105wgyxmi491c7qw0z3zhn4lv52h80ngyz4ch9dyj0sq8nndz2rc";
     };
-    "2.8.0-dev.10.0-aarch64-linux" = fetchurl {
+    "2.9.0-4.0.dev-aarch64-linux" = fetchurl {
       url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip";
-      sha256 = "185ipcmr9h76g44kzlj5pyj99cljlap82rhd1c2larfklyj5ryvv";
+      sha256 = "1x6mlmc4hccmx42k7srhma18faxpxvghjwqahna80508rdpljwgc";
     };
   };
 
@@ -79,7 +79,7 @@ stdenv.mkDerivation {
   dontStrip = true;
 
   meta = {
-    homepage = https://www.dartlang.org/;
+    homepage = "https://www.dartlang.org/";
     maintainers = with maintainers; [ grburst ];
     description = "Scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps";
     longDescription = ''
diff --git a/pkgs/development/interpreters/dhall/build-dhall-package.nix b/pkgs/development/interpreters/dhall/build-dhall-package.nix
index 739dc9b3d52e..9303244eb885 100644
--- a/pkgs/development/interpreters/dhall/build-dhall-package.nix
+++ b/pkgs/development/interpreters/dhall/build-dhall-package.nix
@@ -1,4 +1,4 @@
-{ haskell, haskellPackages, lib, lndir, runCommand, writeText }:
+{ dhall, haskell, lib, lndir, runCommand, writeText }:
 
 { name
 
@@ -34,18 +34,9 @@
 }:
 
 let
-  # `buildDhallPackage` requires version 1.25.0 or newer of the Haskell
-  # interpreter for Dhall.  Given that the default version is 1.24.0 we choose
-  # the latest available version instead until the default is upgraded.
-  #
   # HTTP support is disabled in order to force that HTTP dependencies are built
   # using Nix instead of using Dhall's support for HTTP imports.
-  dhall =
-    haskell.lib.justStaticExecutables
-      (haskell.lib.appendConfigureFlag
-        haskellPackages.dhall_1_29_0
-        "-f-with-http"
-      );
+  dhallNoHTTP = haskell.lib.appendConfigureFlag dhall "-f-with-http";
 
   file = writeText "${name}.dhall" code;
 
@@ -69,13 +60,13 @@ in
 
     mkdir -p $out/${cacheDhall}
 
-    ${dhall}/bin/dhall --alpha --file '${file}' > $out/${sourceFile}
+    ${dhallNoHTTP}/bin/dhall --alpha --file '${file}' > $out/${sourceFile}
 
-    SHA_HASH=$(${dhall}/bin/dhall hash <<< $out/${sourceFile})
+    SHA_HASH=$(${dhallNoHTTP}/bin/dhall hash <<< $out/${sourceFile})
 
     HASH_FILE="''${SHA_HASH/sha256:/1220}"
 
-    ${dhall}/bin/dhall encode --file $out/${sourceFile} > $out/${cacheDhall}/$HASH_FILE
+    ${dhallNoHTTP}/bin/dhall encode --file $out/${sourceFile} > $out/${cacheDhall}/$HASH_FILE
 
     echo "missing $SHA_HASH" > $out/binary.dhall
 
diff --git a/pkgs/development/interpreters/duktape/default.nix b/pkgs/development/interpreters/duktape/default.nix
index 369c3840b874..53cbbad8e553 100644
--- a/pkgs/development/interpreters/duktape/default.nix
+++ b/pkgs/development/interpreters/duktape/default.nix
@@ -23,8 +23,8 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "An embeddable Javascript engine, with a focus on portability and compact footprint";
-    homepage = https://duktape.org/;
-    downloadPage = https://duktape.org/download.html;
+    homepage = "https://duktape.org/";
+    downloadPage = "https://duktape.org/download.html";
     license = licenses.mit;
     maintainers = [ maintainers.fgaz ];
     platforms = platforms.linux;
diff --git a/pkgs/development/interpreters/eff/default.nix b/pkgs/development/interpreters/eff/default.nix
index 9da2b0d899d7..c848ebc60479 100644
--- a/pkgs/development/interpreters/eff/default.nix
+++ b/pkgs/development/interpreters/eff/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
   checkTarget = "test";
 
   meta = with stdenv.lib; {
-    homepage = https://www.eff-lang.org;
+    homepage = "https://www.eff-lang.org";
     description = "A functional programming language based on algebraic effects and their handlers";
     longDescription = ''
       Eff is a functional language with handlers of not only exceptions,
diff --git a/pkgs/development/interpreters/elixir/1.10.nix b/pkgs/development/interpreters/elixir/1.10.nix
index afab770da353..d63a94d98d6d 100644
--- a/pkgs/development/interpreters/elixir/1.10.nix
+++ b/pkgs/development/interpreters/elixir/1.10.nix
@@ -3,7 +3,7 @@
 # How to obtain `sha256`:
 # nix-prefetch-url --unpack https://github.com/elixir-lang/elixir/archive/v${version}.tar.gz
 mkDerivation {
-  version = "1.10.2";
-  sha256 = "04yi1hljq7ii9flh6pmb5411z7q1bdq9f9sq8323k9hm1f5jwkx6";
+  version = "1.10.3";
+  sha256 = "18bqqqzvhr1zj491wc3d36a310mg1wcs12npp70zfmgqrc60q65a";
   minimumOTPVersion = "21";
 }
diff --git a/pkgs/development/interpreters/elixir/generic-builder.nix b/pkgs/development/interpreters/elixir/generic-builder.nix
index 571f39203f8f..54b046beaab2 100644
--- a/pkgs/development/interpreters/elixir/generic-builder.nix
+++ b/pkgs/development/interpreters/elixir/generic-builder.nix
@@ -60,7 +60,7 @@ in
 
     pos = builtins.unsafeGetAttrPos "sha256" args;
     meta = with stdenv.lib; {
-      homepage = https://elixir-lang.org/;
+      homepage = "https://elixir-lang.org/";
       description = "A functional, meta-programming aware language built on top of the Erlang VM";
 
       longDescription = ''
@@ -73,6 +73,6 @@ in
 
       license = licenses.epl10;
       platforms = platforms.unix;
-      maintainers = with maintainers; [ the-kenny havvy couchemar ankhers filalex77 ];
+      maintainers = with maintainers; [ havvy couchemar ankhers filalex77 ];
     };
   })
diff --git a/pkgs/development/interpreters/erlang/R16B02-basho.nix b/pkgs/development/interpreters/erlang/R16B02-basho.nix
index 11637868ed0f..c94528e674f4 100644
--- a/pkgs/development/interpreters/erlang/R16B02-basho.nix
+++ b/pkgs/development/interpreters/erlang/R16B02-basho.nix
@@ -42,7 +42,7 @@ mkDerivation {
   '';
 
   meta = {
-    homepage = https://github.com/basho/otp/;
+    homepage = "https://github.com/basho/otp/";
     description = "Programming language used for massively scalable soft real-time systems, Basho fork";
 
     longDescription = ''
diff --git a/pkgs/development/interpreters/erlang/generic-builder.nix b/pkgs/development/interpreters/erlang/generic-builder.nix
index c0203e5915f7..f80e1f344f7f 100644
--- a/pkgs/development/interpreters/erlang/generic-builder.nix
+++ b/pkgs/development/interpreters/erlang/generic-builder.nix
@@ -108,7 +108,7 @@ in stdenv.mkDerivation ({
   setupHook = ./setup-hook.sh;
 
   meta = with stdenv.lib; ({
-    homepage = https://www.erlang.org/;
+    homepage = "https://www.erlang.org/";
     downloadPage = "https://www.erlang.org/download.html";
     description = "Programming language used for massively scalable soft real-time systems";
 
@@ -122,7 +122,7 @@ in stdenv.mkDerivation ({
     '';
 
     platforms = platforms.unix;
-    maintainers = with maintainers; [ the-kenny sjmackenzie couchemar gleber ];
+    maintainers = with maintainers; [ sjmackenzie couchemar gleber ];
     license = licenses.asl20;
   } // meta);
 }
diff --git a/pkgs/development/interpreters/evcxr/default.nix b/pkgs/development/interpreters/evcxr/default.nix
index fa8050a21ff0..4430298beb5f 100644
--- a/pkgs/development/interpreters/evcxr/default.nix
+++ b/pkgs/development/interpreters/evcxr/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "evcxr";
-  version = "0.5.0";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "evcxr";
-    rev = "239e431c58d04c641da22af791e4d3e1b894365e";
-    sha256 = "0vkcis06gwsqfwvrl8xcf74mfcs6j77b9fhcz5rrh77mwl7ixsdc";
+    rev = "582ce09f216d4812f7d152f6eedf0b034fc4dbbd";
+    sha256 = "12hlqgh74z8vmd7fkxh4vk3dqp8hlhzkxnbyywk6nphi562n6w5w";
   };
 
-  cargoSha256 = "0pamwqhw3sj4anqc1112l5cayhqzibdhqjc28apfrkf2m63cclzi";
+  cargoSha256 = "0yr8vwlpfsg47sg0032yrsdcgxyky0hy4963zkh0pmjykbyqkb3h";
 
   nativeBuildInputs = [ pkgconfig makeWrapper cmake ];
   buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
diff --git a/pkgs/development/interpreters/gauche/default.nix b/pkgs/development/interpreters/gauche/default.nix
index 9b38d1e4ad54..26a30ef2cd3c 100644
--- a/pkgs/development/interpreters/gauche/default.nix
+++ b/pkgs/development/interpreters/gauche/default.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "R7RS Scheme scripting engine";
-    homepage = https://practical-scheme.net/gauche/;
+    homepage = "https://practical-scheme.net/gauche/";
     maintainers = with maintainers; [ mnacamura ];
     license = licenses.bsd3;
     platforms = platforms.unix;
diff --git a/pkgs/development/interpreters/gnu-apl/default.nix b/pkgs/development/interpreters/gnu-apl/default.nix
index c2a3556cfea2..f01cfc2444bc 100644
--- a/pkgs/development/interpreters/gnu-apl/default.nix
+++ b/pkgs/development/interpreters/gnu-apl/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Free interpreter for the APL programming language";
-    homepage    = https://www.gnu.org/software/apl/;
+    homepage    = "https://www.gnu.org/software/apl/";
     license     = licenses.gpl3Plus;
     maintainers = [ maintainers.kovirobi ];
     platforms   = with platforms; linux ++ darwin;
diff --git a/pkgs/development/interpreters/groovy/default.nix b/pkgs/development/interpreters/groovy/default.nix
index e1d404a6b15d..1572f5e4be2c 100644
--- a/pkgs/development/interpreters/groovy/default.nix
+++ b/pkgs/development/interpreters/groovy/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "groovy";
-  version = "3.0.0";
+  version = "3.0.2";
 
   src = fetchurl {
     url = "http://dl.bintray.com/groovy/maven/apache-groovy-binary-${version}.zip";
-    sha256 = "10nn04hfky4x75nss33vvslw958pjvhw35lcfb3lxvaifqg23cpl";
+    sha256 = "1ddw3fqrmwh4w6z6xgck4jhmq33rwgbmpjw07g12ri1vgw4xks9w";
   };
 
   buildInputs = [ unzip makeWrapper ];
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "An agile dynamic language for the Java Platform";
-    homepage = http://groovy-lang.org/;
+    homepage = "http://groovy-lang.org/";
     license = licenses.asl20;
     maintainers = with maintainers; [ pSub ];
     platforms = with platforms; unix;
diff --git a/pkgs/development/interpreters/guile/1.8.nix b/pkgs/development/interpreters/guile/1.8.nix
index 158987d4e0ef..6057480476f2 100644
--- a/pkgs/development/interpreters/guile/1.8.nix
+++ b/pkgs/development/interpreters/guile/1.8.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Embeddable Scheme implementation";
-    homepage    = https://www.gnu.org/software/guile/;
+    homepage    = "https://www.gnu.org/software/guile/";
     license     = stdenv.lib.licenses.lgpl2Plus;
     maintainers = [ stdenv.lib.maintainers.ludo ];
     platforms   = stdenv.lib.platforms.unix;
diff --git a/pkgs/development/interpreters/guile/2.0.nix b/pkgs/development/interpreters/guile/2.0.nix
index af71d5cc80d7..b5b83e180254 100644
--- a/pkgs/development/interpreters/guile/2.0.nix
+++ b/pkgs/development/interpreters/guile/2.0.nix
@@ -101,7 +101,7 @@
 
   meta = {
     description = "Embeddable Scheme implementation";
-    homepage    = https://www.gnu.org/software/guile/;
+    homepage    = "https://www.gnu.org/software/guile/";
     license     = stdenv.lib.licenses.lgpl3Plus;
     maintainers = with stdenv.lib.maintainers; [ ludo lovek323 ];
     platforms   = stdenv.lib.platforms.all;
diff --git a/pkgs/development/interpreters/hugs/default.nix b/pkgs/development/interpreters/hugs/default.nix
index 2177ae22db56..35463b161572 100644
--- a/pkgs/development/interpreters/hugs/default.nix
+++ b/pkgs/development/interpreters/hugs/default.nix
@@ -5,13 +5,13 @@ stdenv.mkDerivation {
   name = "hugs98-200609";
 
   src = fetchurl {
-    url = http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-Sep2006.tar.gz;
+    url = "http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-Sep2006.tar.gz";
     sha256 = "1dj65c39zpy6qqvvrwns2hzj6ipnd4ih655xj7kgyk2nfdvd5x1w";
   };
 
   patches =
     [ (fetchurl {
-        url = https://aur.archlinux.org/cgit/aur.git/plain/hsbase_inline.patch?h=hugs;
+        url = "https://aur.archlinux.org/cgit/aur.git/plain/hsbase_inline.patch?h=hugs";
         name = "hsbase_inline.patch";
         sha256 = "1h0sp16d17hlm6gj7zdbgwrjwi2l4q02m8p0wd60dp4gn9i9js0v";
       })
@@ -40,7 +40,7 @@ stdenv.mkDerivation {
   ];
 
   meta = with stdenv.lib; {
-    homepage = https://www.haskell.org/hugs;
+    homepage = "https://www.haskell.org/hugs";
     description = "Haskell interpreter";
     maintainers = with maintainers; [ joachifm ];
     license = licenses.bsd3;
diff --git a/pkgs/development/interpreters/hy/default.nix b/pkgs/development/interpreters/hy/default.nix
index 5816b3a175c6..a3aca532b0f3 100644
--- a/pkgs/development/interpreters/hy/default.nix
+++ b/pkgs/development/interpreters/hy/default.nix
@@ -1,23 +1,32 @@
-{ stdenv, fetchurl, python2Packages }:
+{ stdenv, python3Packages }:
 
-python2Packages.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   pname = "hy";
-  version = "0.17.0";
+  version = "0.18.0";
 
-  src = python2Packages.fetchPypi {
+  src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "1gdbqsirsdxj320wnp7my5awzs1kfs6m4fqmkzbd1zd47qzj0zfi";
+    sha256 = "04dfwm336gw61fmgwikvh0cnxk682p19b4w555wl5d7mlym4rwj2";
   };
 
-  propagatedBuildInputs = with python2Packages; [
+  checkInputs = with python3Packages; [ flake8 pytest ];
+
+  propagatedBuildInputs = with python3Packages; [
     appdirs
     astor
     clint
+    colorama
     fastentrypoints
     funcparserlib
     rply
+    pygments
   ];
 
+  # Hy does not include tests in the source distribution from PyPI, so only test executable.
+  checkPhase = ''
+    $out/bin/hy --help > /dev/null
+  '';
+
   meta = with stdenv.lib; {
     description = "A LISP dialect embedded in Python";
     homepage = "http://hylang.org/";
diff --git a/pkgs/development/interpreters/icon-lang/default.nix b/pkgs/development/interpreters/icon-lang/default.nix
index d243ae9bc580..d85448a9677c 100644
--- a/pkgs/development/interpreters/icon-lang/default.nix
+++ b/pkgs/development/interpreters/icon-lang/default.nix
@@ -41,6 +41,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ vrthra yurrriq ];
     platforms = with platforms; linux ++ darwin;
     license = licenses.publicDomain;
-    homepage = https://www.cs.arizona.edu/icon/;
+    homepage = "https://www.cs.arizona.edu/icon/";
   };
 }
diff --git a/pkgs/development/interpreters/io/default.nix b/pkgs/development/interpreters/io/default.nix
index f763274c15d7..42af3cc427b4 100644
--- a/pkgs/development/interpreters/io/default.nix
+++ b/pkgs/development/interpreters/io/default.nix
@@ -39,7 +39,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     description = "Io programming language";
-    homepage = http://iolanguage.org/;
+    homepage = "http://iolanguage.org/";
     license = licenses.bsd3;
 
     maintainers = with maintainers; [
diff --git a/pkgs/development/interpreters/j/default.nix b/pkgs/development/interpreters/j/default.nix
index 791ac6dd3381..8e6b434281eb 100644
--- a/pkgs/development/interpreters/j/default.nix
+++ b/pkgs/development/interpreters/j/default.nix
@@ -1,14 +1,17 @@
-{ stdenv, fetchFromGitHub, readline, libedit, bc }:
+{ stdenv, fetchFromGitHub, readline, libedit, bc
+, avxSupport ? false
+}:
 
 stdenv.mkDerivation rec {
   pname = "j";
-  version = "807";
-  jtype = "release";
+  version = "901";
+  jtype = "release-e";
   src = fetchFromGitHub {
     owner = "jsoftware";
     repo = "jsource";
     rev = "j${version}-${jtype}";
-    sha256 = "1qciw2yg9x996zglvj2461qby038x89xcmfb3qyrh3myn8m1nq2n";
+    sha256 = "13ky37rrl6mc66fckrdnrw64gmvq1qlv6skzd513lab4d0wigshw";
+    name = "jsource";
   };
 
   buildInputs = [ readline libedit bc ];
@@ -18,6 +21,9 @@ stdenv.mkDerivation rec {
     if stdenv.isLinux then "linux" else
     if stdenv.isDarwin then "darwin" else
     "unknown";
+  variant = if stdenv.isx86_64 && avxSupport then "avx" else "";
+
+  j64x="j${bits}${variant}";
 
   doCheck = true;
 
@@ -26,57 +32,33 @@ stdenv.mkDerivation rec {
     export HOME=$TMPDIR
     export JLIB=$SOURCE_DIR/jlibrary
 
-    export jbld=$HOME/bld
-    export jplatform=${platform}
-    export jmake=$SOURCE_DIR/make
-    export jgit=$SOURCE_DIR
-    export JBIN=$jbld/j${bits}/bin
-    mkdir -p $JBIN
-
     echo $OUT_DIR
 
-    cd make
+    cd make2
 
     patchShebangs .
-    sed -i jvars.sh -e "
-      s@~/git/jsource@$SOURCE_DIR@;
-      s@~/jbld@$HOME@;
-      "
-
     sed -i $JLIB/bin/profile.ijs -e "s@'/usr/share/j/.*'@'$out/share/j'@;"
 
-    # For future versions, watch
-    # https://github.com/jsoftware/jsource/pull/4
-    cp ./jvars.sh $HOME
+    j64x="${j64x}" ./build_all.sh
 
-    echo '
-      #define jversion   "${version}"
-      #define jplatform  "${platform}"
-      #define jtype      "${jtype}"         // release,beta,...
-      #define jlicense   "GPL3"
-      #define jbuilder   "nixpkgs"  // website or email
-      ' > ../jsrc/jversion.h
-
-    ./build_jconsole.sh j${bits}
-    ./build_libj.sh j${bits}
+    cp $SOURCE_DIR/bin/${platform}/j${bits}*/* "$JLIB/bin"
   '';
 
   checkPhase = ''
-    echo 'i. 5' | $JBIN/jconsole | fgrep "0 1 2 3 4"
+
+    echo 'i. 5' | $JLIB/bin/jconsole | fgrep "0 1 2 3 4"
 
     # Now run the real tests
     cd $SOURCE_DIR/test
     for f in *.ijs
     do
       echo $f
-      $JBIN/jconsole < $f > /dev/null || echo FAIL && echo PASS
+      $JLIB/bin/jconsole < $f > /dev/null || echo FAIL && echo PASS
     done
   '';
 
   installPhase = ''
     mkdir -p "$out"
-    cp -r $JBIN "$out/bin"
-    rm $out/bin/*.txt # Remove logs from the bin folder
 
     mkdir -p "$out/share/j"
     cp -r $JLIB/{addons,system} "$out/share/j"
@@ -88,6 +70,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ raskin synthetica ];
     platforms = with platforms; linux ++ darwin;
     license = licenses.gpl3Plus;
-    homepage = http://jsoftware.com/;
+    homepage = "http://jsoftware.com/";
   };
 }
diff --git a/pkgs/development/interpreters/janet/default.nix b/pkgs/development/interpreters/janet/default.nix
index 0fc6928c1aba..f6f4e36532ec 100644
--- a/pkgs/development/interpreters/janet/default.nix
+++ b/pkgs/development/interpreters/janet/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "janet";
-  version = "1.7.0";
+  version = "1.9.1";
 
   src = fetchFromGitHub {
     owner = "janet-lang";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1z7r4ddgwxgxy1pp36p2wchcmzjqfyki3a4kicnr23ldflqv9ycc";
+    sha256 = "1zdiwddnppwg5zrizy2ypd449zj4mivib76h73xhvr1syl7dk7sc";
   };
 
   nativeBuildInputs = [ meson ninja ];
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Janet programming language";
-    homepage = https://janet-lang.org/;
+    homepage = "https://janet-lang.org/";
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ andrewchambers ];
diff --git a/pkgs/development/interpreters/jelly/default.nix b/pkgs/development/interpreters/jelly/default.nix
new file mode 100644
index 000000000000..a317f35d2a78
--- /dev/null
+++ b/pkgs/development/interpreters/jelly/default.nix
@@ -0,0 +1,28 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication {
+  pname = "jelly";
+  version = "0.1.31";
+
+  src = fetchFromGitHub {
+    owner = "DennisMitchell";
+    repo = "jellylanguage";
+    rev = "70c9fd93ab009c05dc396f8cc091f72b212fb188";
+    sha256 = "1rpclqagvigp5qhvgnjavvy463f1drshnc1mfxm6z7ygzs0l0yz6";
+  };
+
+  propagatedBuildInputs = [ python3Packages.sympy ];
+
+  # checks are disabled because jelly has no tests, and the default is to run
+  # the output binary with no arguments, which exits with status 1 and causes
+  # the build to fail
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A recreational programming language inspired by J";
+    homepage    = https://github.com/DennisMitchell/jellylanguage;
+    license     = licenses.mit;
+    maintainers = [ maintainers.tckmn ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/pkgs/development/interpreters/joker/default.nix b/pkgs/development/interpreters/joker/default.nix
index ed82f76eec24..789816c34d04 100644
--- a/pkgs/development/interpreters/joker/default.nix
+++ b/pkgs/development/interpreters/joker/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "joker";
-  version = "0.14.2";
+  version = "0.15.3";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "candid82";
     repo = "joker";
-    sha256 = "1wi80sr8h9fwh4xipff0y6qdzrliwyk2w1bmi33ncykxd9r2g7nk";
+    sha256 = "1pxj6flyhf522zjab1dfvxfajyx3v3rzs7l8ma7ma6b8zmwp2wdn";
   };
 
-  modSha256 = "0i16vf7n1xfz5kp9w3fvyc9y9wgz4h396glgpdaznpxjr12rb43j";
+  vendorSha256 = "1rn8ijq3v3fzlbyvm7g4i3qpwcl3vrl4rbcvlbzv05wxrgcw9iqb";
 
   preBuild = ''
     go generate ./...
@@ -26,4 +26,4 @@ buildGoModule rec {
     platforms = platforms.all;
     maintainers = with maintainers; [ andrestylianos ];
   };
-}
+}
\ No newline at end of file
diff --git a/pkgs/development/interpreters/jruby/default.nix b/pkgs/development/interpreters/jruby/default.nix
index 3784b6ab282f..79cb1c7154b5 100644
--- a/pkgs/development/interpreters/jruby/default.nix
+++ b/pkgs/development/interpreters/jruby/default.nix
@@ -6,11 +6,11 @@ rubyVersion = callPackage ../ruby/ruby-version.nix {} "2" "3" "3" "";
 jruby = stdenv.mkDerivation rec {
   pname = "jruby";
 
-  version = "9.2.11.0";
+  version = "9.2.11.1";
 
   src = fetchurl {
     url = "https://s3.amazonaws.com/jruby.org/downloads/${version}/jruby-bin-${version}.tar.gz";
-    sha256 = "01yzpasnpqqm0vfc0ki8vkxbzijjfws135jw8k0r50b5lahjvs4a";
+    sha256 = "1p4ml5rqidqllc7z85zn2q4pyyih71j0gb71wl43j4v74p44j17i";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/development/interpreters/kona/default.nix b/pkgs/development/interpreters/kona/default.nix
index 9b7f36f4c874..041616cc1f63 100644
--- a/pkgs/development/interpreters/kona/default.nix
+++ b/pkgs/development/interpreters/kona/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "An interpreter of K, APL-like programming language";
-    homepage = https://github.com/kevinlawler/kona/;
+    homepage = "https://github.com/kevinlawler/kona/";
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.all;
     license = licenses.isc;
diff --git a/pkgs/development/interpreters/lolcode/default.nix b/pkgs/development/interpreters/lolcode/default.nix
index 3ef239e89a9a..bd4b93b835fc 100644
--- a/pkgs/development/interpreters/lolcode/default.nix
+++ b/pkgs/development/interpreters/lolcode/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   postInstall = "mv $out/bin/lci $out/bin/lolcode-lci";
 
   meta = {
-    homepage = http://lolcode.org;
+    homepage = "http://lolcode.org";
     description = "An esoteric programming language";
     longDescription = ''
       LOLCODE is a funny esoteric  programming language, a bit Pascal-like,
diff --git a/pkgs/development/interpreters/love/0.10.nix b/pkgs/development/interpreters/love/0.10.nix
index e1ca3ded2083..dbe3f6fa2df0 100644
--- a/pkgs/development/interpreters/love/0.10.nix
+++ b/pkgs/development/interpreters/love/0.10.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
   NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
 
   meta = {
-    homepage = http://love2d.org;
+    homepage = "http://love2d.org";
     description = "A Lua-based 2D game engine/scripting language";
     license = stdenv.lib.licenses.zlib;
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/interpreters/love/0.7.nix b/pkgs/development/interpreters/love/0.7.nix
index 3bf8aee0d07b..6f09c0764412 100644
--- a/pkgs/development/interpreters/love/0.7.nix
+++ b/pkgs/development/interpreters/love/0.7.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    homepage = http://love2d.org;
+    homepage = "http://love2d.org";
     description = "A Lua-based 2D game engine/scripting language";
     license = stdenv.lib.licenses.zlib;
 
diff --git a/pkgs/development/interpreters/love/0.9.nix b/pkgs/development/interpreters/love/0.9.nix
index a2182f454361..79b83f0643f1 100644
--- a/pkgs/development/interpreters/love/0.9.nix
+++ b/pkgs/development/interpreters/love/0.9.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3
 
   meta = {
-    homepage = http://love2d.org;
+    homepage = "http://love2d.org";
     description = "A Lua-based 2D game engine/scripting language";
     license = stdenv.lib.licenses.zlib;
 
diff --git a/pkgs/development/interpreters/love/11.1.nix b/pkgs/development/interpreters/love/11.1.nix
index 3629345baf6a..2ef3a4ca05a4 100644
--- a/pkgs/development/interpreters/love/11.1.nix
+++ b/pkgs/development/interpreters/love/11.1.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
   NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
 
   meta = {
-    homepage = http://love2d.org;
+    homepage = "http://love2d.org";
     description = "A Lua-based 2D game engine/scripting language";
     license = stdenv.lib.licenses.zlib;
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/interpreters/lua-5/filesystem.nix b/pkgs/development/interpreters/lua-5/filesystem.nix
index 64050ea95f87..a3e633bbab17 100644
--- a/pkgs/development/interpreters/lua-5/filesystem.nix
+++ b/pkgs/development/interpreters/lua-5/filesystem.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
   '';
 
   meta = {
-    homepage = https://github.com/keplerproject/luafilesystem;
+    homepage = "https://github.com/keplerproject/luafilesystem";
     hydraPlatforms = stdenv.lib.platforms.linux;
     maintainers = [ ];
   };
diff --git a/pkgs/development/interpreters/lua-5/interpreter.nix b/pkgs/development/interpreters/lua-5/interpreter.nix
index 6fc2e53b9617..98e4684e0921 100644
--- a/pkgs/development/interpreters/lua-5/interpreter.nix
+++ b/pkgs/development/interpreters/lua-5/interpreter.nix
@@ -97,7 +97,7 @@ self = stdenv.mkDerivation rec {
   };
 
   meta = {
-    homepage = http://www.lua.org;
+    homepage = "http://www.lua.org";
     description = "Powerful, fast, lightweight, embeddable scripting language";
     longDescription = ''
       Lua combines simple procedural syntax with powerful data
diff --git a/pkgs/development/interpreters/lua-5/sockets.nix b/pkgs/development/interpreters/lua-5/sockets.nix
index f0eb1becc578..73fbbc3e66a6 100644
--- a/pkgs/development/interpreters/lua-5/sockets.nix
+++ b/pkgs/development/interpreters/lua-5/sockets.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ lua5 ];
 
   meta = {
-    homepage = http://w3.impa.br/~diego/software/luasocket/;
+    homepage = "http://w3.impa.br/~diego/software/luasocket/";
     hydraPlatforms = stdenv.lib.platforms.linux;
     maintainers = [ ];
   };
diff --git a/pkgs/development/interpreters/luajit/2.0.nix b/pkgs/development/interpreters/luajit/2.0.nix
index 7db3830447f7..3f0fa7303ebb 100644
--- a/pkgs/development/interpreters/luajit/2.0.nix
+++ b/pkgs/development/interpreters/luajit/2.0.nix
@@ -1,9 +1,10 @@
 { self, callPackage, lib }:
 callPackage ./default.nix {
   inherit self;
-  version = "2.0.5";
+  version = "2.0.5-2020-03-20";
+  rev = "e613105";
   isStable = true;
-  sha256 = "0yg9q4q6v028bgh85317ykc9whgxgysp76qzaqgq55y6jy11yjw7";
+  sha256 = "0k843z90s4hi0qhri6ixy8sv21nig8jwbznpqgqg845ji530kqj7";
   extraMeta = { # this isn't precise but it at least stops the useless Hydra build
     platforms = with lib; filter (p: p != "aarch64-linux")
       (platforms.linux ++ platforms.darwin);
diff --git a/pkgs/development/interpreters/luajit/2.1.nix b/pkgs/development/interpreters/luajit/2.1.nix
index e8f1b8b338c4..b5a7894e98d9 100644
--- a/pkgs/development/interpreters/luajit/2.1.nix
+++ b/pkgs/development/interpreters/luajit/2.1.nix
@@ -1,7 +1,8 @@
 { self, callPackage }:
 callPackage ./default.nix {
   inherit self;
-  version = "2.1.0-beta3";
+  version = "2.1.0-2020-03-20";
+  rev = "9143e86";
   isStable = false;
-  sha256 = "1hyrhpkwjqsv54hnnx4cl8vk44h9d6c9w0fz1jfjz00w255y7lhs";
+  sha256 = "1zw1yr0375d6jr5x20zvkvk76hkaqamjynbswpl604w6r6id070b";
 }
diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix
index 08c0564847c5..9bc76c44937f 100644
--- a/pkgs/development/interpreters/luajit/default.nix
+++ b/pkgs/development/interpreters/luajit/default.nix
@@ -1,7 +1,8 @@
-{ stdenv, fetchurl, buildPackages
+{ stdenv, fetchFromGitHub, buildPackages
 , name ? "luajit-${version}"
 , isStable
 , sha256
+, rev
 , version
 , extraMeta ? {}
 , callPackage
@@ -10,6 +11,7 @@
 , enableFFI ? true
 , enableJIT ? true
 , enableJITDebugModule ? enableJIT
+, enableGC64 ? stdenv.hostPlatform.isAarch64
 , enable52Compat ? false
 , enableValgrindSupport ? false
 , valgrind ? null
@@ -28,6 +30,7 @@ let
      optional (!enableFFI) "-DLUAJIT_DISABLE_FFI"
   ++ optional (!enableJIT) "-DLUAJIT_DISABLE_JIT"
   ++ optional enable52Compat "-DLUAJIT_ENABLE_LUA52COMPAT"
+  ++ optional (!enableGC64) "-DLUAJIT_DISABLE_GC64"
   ++ optional useSystemMalloc "-DLUAJIT_USE_SYSMALLOC"
   ++ optional enableValgrindSupport "-DLUAJIT_USE_VALGRIND"
   ++ optional enableGDBJITSupport "-DLUAJIT_USE_GDBJIT"
@@ -37,9 +40,10 @@ let
 in
 stdenv.mkDerivation rec {
   inherit name version;
-  src = fetchurl {
-    url = "http://luajit.org/download/LuaJIT-${version}.tar.gz";
-    inherit sha256;
+  src = fetchFromGitHub {
+    owner  = "LuaJIT";
+    repo   = "LuaJIT";
+    inherit sha256 rev;
   };
 
   luaversion = "5.1";
@@ -97,7 +101,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "High-performance JIT compiler for Lua 5.1";
-    homepage    = http://luajit.org;
+    homepage    = "http://luajit.org";
     license     = licenses.mit;
     platforms   = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ thoughtpolice smironov vcunat andir ];
diff --git a/pkgs/development/interpreters/maude/default.nix b/pkgs/development/interpreters/maude/default.nix
index 721cfe388655..e4e984fc4ac6 100644
--- a/pkgs/development/interpreters/maude/default.nix
+++ b/pkgs/development/interpreters/maude/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation {
   enableParallelBuilding = false;
 
   meta = {
-    homepage = http://maude.cs.illinois.edu/;
+    homepage = "http://maude.cs.illinois.edu/";
     description = "High-level specification language";
     license = stdenv.lib.licenses.gpl2Plus;
 
diff --git a/pkgs/development/interpreters/metamath/default.nix b/pkgs/development/interpreters/metamath/default.nix
index 42b95f341ba9..66352cfdda4b 100644
--- a/pkgs/development/interpreters/metamath/default.nix
+++ b/pkgs/development/interpreters/metamath/default.nix
@@ -2,23 +2,17 @@
 
 stdenv.mkDerivation {
   pname = "metamath";
-  version = "0.181";
+  version = "0.182";
 
   buildInputs = [ autoreconfHook ];
 
   src = fetchFromGitHub {
     owner = "metamath";
     repo = "metamath-exe";
-    rev = "67cbfa8468deb6f8ad5bedafc6399bee59064764";
-    sha256 = "1mk3g41qz26j38j68i9qmnl8khkd8jwrzj4vxkb855h4b819s000";
+    rev = "5df616efe4119ff88daf77e7041d45b6fa39c578";
+    sha256 = "0amjdgy42c7jypf6sz98iczlxcyl9bqx67ws1q8w2zdqk2izsyjp";
   };
 
-  # the files necessary to build the DATA target are not in this distribution
-  # luckily, they're not really needed so we don't build it.
-  makeFlags = [ "DATA=" ];
-
-  installTargets = [ "install-exec" ];
-
   meta = with stdenv.lib; {
     description = "Interpreter for the metamath proof language";
     longDescription = ''
@@ -27,7 +21,7 @@ stdenv.mkDerivation {
       in the Metamath Proof Explorer, and it generated its web pages. The *.mm
       ASCII databases (set.mm and others) are also included in this derivation.
     '';
-    homepage = http://us.metamath.org;
+    homepage = "http://us.metamath.org";
     downloadPage = "http://us.metamath.org/#downloads";
     license = licenses.gpl2;
     maintainers = [ maintainers.taneb ];
diff --git a/pkgs/development/interpreters/mujs/default.nix b/pkgs/development/interpreters/mujs/default.nix
index aef23ad6881d..692aed3e4ee6 100644
--- a/pkgs/development/interpreters/mujs/default.nix
+++ b/pkgs/development/interpreters/mujs/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mujs";
-  version = "1.0.6";
+  version = "1.0.7";
 
   src = fetchurl {
     url = "https://mujs.com/downloads/mujs-${version}.tar.xz";
-    sha256 = "1q9w2dcspfp580pzx7sw7x9gbn8j0ak6dvj75wd1ml3f3q3i43df";
+    sha256 = "1ilhay15z4k7mlzs6g2d00snivin7vp72dfw5wwpmc0x70jr31l2";
   };
 
   buildInputs = [ readline ];
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   makeFlags = [ "prefix=$(out)" ];
 
   meta = with stdenv.lib; {
-    homepage = https://mujs.com/;
+    homepage = "https://mujs.com/";
     description = "A lightweight, embeddable Javascript interpreter";
     platforms = platforms.unix;
     maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/development/interpreters/nix-exec/default.nix b/pkgs/development/interpreters/nix-exec/default.nix
index bde2f5d9fa96..0c976f2f0b05 100644
--- a/pkgs/development/interpreters/nix-exec/default.nix
+++ b/pkgs/development/interpreters/nix-exec/default.nix
@@ -16,7 +16,7 @@ in stdenv.mkDerivation {
 
   meta = {
     description = "Run programs defined in nix expressions";
-    homepage = https://github.com/shlevy/nix-exec;
+    homepage = "https://github.com/shlevy/nix-exec";
     license = stdenv.lib.licenses.mit;
     platforms = nix.meta.platforms;
     broken = true;
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix
index 4a63d1862014..06d69ed8117f 100644
--- a/pkgs/development/interpreters/octave/default.nix
+++ b/pkgs/development/interpreters/octave/default.nix
@@ -21,7 +21,7 @@
 , zlib
 , curl
 , qrupdate
-, openblas
+, blas, lapack
 , arpack
 , libwebp
 , gl2ps
@@ -53,17 +53,7 @@
 , darwin
 }:
 
-let
-  suitesparseOrig = suitesparse;
-  qrupdateOrig = qrupdate;
-in
-# integer width is determined by openblas, so all dependencies must be built
-# with exactly the same openblas
-let
-  suitesparse =
-    if suitesparseOrig != null then suitesparseOrig.override { inherit openblas; } else null;
-  qrupdate = if qrupdateOrig != null then qrupdateOrig.override { inherit openblas; } else null;
-in
+assert (!blas.isILP64) && (!lapack.isILP64);
 
 stdenv.mkDerivation rec {
   version = "5.2.0";
@@ -85,7 +75,8 @@ stdenv.mkDerivation rec {
     fltk
     zlib
     curl
-    openblas
+    blas
+    lapack
     libsndfile
     fftw
     fftwSinglePrec
@@ -134,15 +125,15 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   # See https://savannah.gnu.org/bugs/?50339
-  F77_INTEGER_8_FLAG = if openblas.blas64 then "-fdefault-integer-8" else "";
+  F77_INTEGER_8_FLAG = if blas.isILP64 then "-fdefault-integer-8" else "";
 
   configureFlags = [
-    "--with-blas=openblas"
-    "--with-lapack=openblas"
+    "--with-blas=blas"
+    "--with-lapack=lapack"
+    (if blas.isILP64 then "--enable-64" else "--disable-64")
   ]
     ++ (if stdenv.isDarwin then [ "--enable-link-all-dependencies" ] else [ ])
     ++ stdenv.lib.optionals enableReadline [ "--enable-readline" ]
-    ++ stdenv.lib.optionals openblas.blas64 [ "--enable-64" ]
     ++ stdenv.lib.optionals stdenv.isDarwin [ "--with-x=no" ]
     ++ stdenv.lib.optionals enableQt [ "--with-qt=5" ]
     ++ stdenv.lib.optionals enableJIT [ "--enable-jit" ]
diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix
index 8f8b63a261e5..9690dfac2f20 100644
--- a/pkgs/development/interpreters/perl/default.nix
+++ b/pkgs/development/interpreters/perl/default.nix
@@ -162,7 +162,7 @@ let
       ''; # */
 
     meta = {
-      homepage = https://www.perl.org/;
+      homepage = "https://www.perl.org/";
       description = "The standard implementation of the Perl 5 programmming language";
       license = licenses.artistic1;
       maintainers = [ maintainers.eelco ];
@@ -170,11 +170,11 @@ let
       priority = 6; # in `buildEnv' (including the one inside `perl.withPackages') the library files will have priority over files in `perl`
     };
   } // optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) rec {
-    crossVersion = "ba90816ef2c24dc06fd6cd2c854abcfa1aae00a3"; # Nov 22, 2019
+    crossVersion = "1.3.4"; # Jun 2, 2020
 
     perl-cross-src = fetchurl {
       url = "https://github.com/arsv/perl-cross/archive/${crossVersion}.tar.gz";
-      sha256 = "19jq5fz6l64s0v6j64n5mkk5v2srpyfn9sc09hwbpkp9n74q82j4";
+      sha256 = "15wvlafhpsh9h66s3vazhx46hf8ik75473acrvf6722ijd1wpz45";
     };
 
     depsBuildBuild = [ buildPackages.stdenv.cc makeWrapper ];
@@ -194,23 +194,23 @@ in {
   perl528 = common {
     perl = pkgs.perl528;
     buildPerl = buildPackages.perl528;
-    version = "5.28.2";
-    sha256 = "1iynpsxdym4h76kgndmn3ykvwxhqz444xvaz8z2irsxkvmnlb5da";
+    version = "5.28.3";
+    sha256 = "052if351m81yhaab429i1kv77v9b15qm0g48kr6y2yjrc7bc3jdg";
   };
 
   # Maint version
   perl530 = common {
     perl = pkgs.perl530;
     buildPerl = buildPackages.perl530;
-    version = "5.30.1";
-    sha256 = "0r7r8a7pkgxp3w5lza559ahxczw6hzpwvhkpc4c99vpi3xbjagdz";
+    version = "5.30.3";
+    sha256 = "0vs0wwwlw47sswxaflkk4hw0y45cmc7arxx788kwpbminy5lrq1j";
   };
 
   # the latest Devel version
   perldevel = common {
     perl = pkgs.perldevel;
     buildPerl = buildPackages.perldevel;
-    version = "5.31.6";
-    sha256 = "08n3c8xm1brxpckqy8i1xgjrpl4afrhcva9bhxswr938n675x71k";
+    version = "5.32.0-RC0";
+    sha256 = "02i6n1xa4j0ksp014yy8q0j7scjcy5mr0yd4iash2ryrrfv5yw5k";
   };
 }
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index 497a1d87f557..6ab682d97e6c 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -1,299 +1,296 @@
-# pcre functionality is tested in nixos/tests/php-pcre.nix
-{ config, lib, stdenv, fetchurl
-, autoconf, automake, bison, file, flex, libtool, pkgconfig, re2c
-, libxml2, readline, zlib, curl, postgresql, gettext
-, openssl, pcre, pcre2, sqlite
-, libxslt, bzip2, icu, openldap, cyrus_sasl, unixODBC
-, uwimap, pam, gmp, apacheHttpd, libiconv, systemd, libsodium, html-tidy, libargon2
-, gd, freetype, libXpm, libjpeg, libpng, libwebp
-, libzip, valgrind, oniguruma, symlinkJoin, writeText
-, makeWrapper, callPackage
-}:
+# We have tests for PCRE and PHP-FPM in nixos/tests/php/ or
+# both in the same attribute named nixosTests.php
+
+{ callPackage, lib, stdenv, nixosTests }@_args:
 
 let
   generic =
-  { version
-  , sha256
-  , extraPatches ? []
-  , withSystemd ? config.php.systemd or stdenv.isLinux
-  , imapSupport ? config.php.imap or (!stdenv.isDarwin)
-  , ldapSupport ? config.php.ldap or true
-  , mysqlndSupport ? config.php.mysqlnd or true
-  , mysqliSupport ? (config.php.mysqli or true) && (mysqlndSupport)
-  , pdo_mysqlSupport ? (config.php.pdo_mysql or true) && (mysqlndSupport)
-  , libxml2Support ? config.php.libxml2 or true
-  , apxs2Support ? config.php.apxs2 or (!stdenv.isDarwin)
-  , embedSupport ? config.php.embed or false
-  , bcmathSupport ? config.php.bcmath or true
-  , socketsSupport ? config.php.sockets or true
-  , curlSupport ? config.php.curl or true
-  , gettextSupport ? config.php.gettext or true
-  , pcntlSupport ? config.php.pcntl or true
-  , pdo_odbcSupport ? config.php.pdo_odbc or true
-  , postgresqlSupport ? config.php.postgresql or true
-  , pdo_pgsqlSupport ? config.php.pdo_pgsql or true
-  , readlineSupport ? config.php.readline or true
-  , sqliteSupport ? config.php.sqlite or true
-  , soapSupport ? (config.php.soap or true) && (libxml2Support)
-  , zlibSupport ? config.php.zlib or true
-  , opensslSupport ? config.php.openssl or true
-  , mbstringSupport ? config.php.mbstring or true
-  , gdSupport ? config.php.gd or true
-  , intlSupport ? config.php.intl or true
-  , exifSupport ? config.php.exif or true
-  , xslSupport ? config.php.xsl or false
-  , bz2Support ? config.php.bz2 or false
-  , zipSupport ? config.php.zip or true
-  , ftpSupport ? config.php.ftp or true
-  , fpmSupport ? config.php.fpm or true
-  , gmpSupport ? config.php.gmp or true
-  , ztsSupport ? (config.php.zts or false) || (apxs2Support)
-  , calendarSupport ? config.php.calendar or true
-  , sodiumSupport ? (config.php.sodium or true) && (lib.versionAtLeast version "7.2")
-  , tidySupport ? (config.php.tidy or false)
-  , argon2Support ? (config.php.argon2 or true) && (lib.versionAtLeast version "7.2")
-  , libzipSupport ? (config.php.libzip or true) && (lib.versionAtLeast version "7.2")
-  , phpdbgSupport ? config.php.phpdbg or true
-  , cgiSupport ? config.php.cgi or true
-  , cliSupport ? config.php.cli or true
-  , pharSupport ? config.php.phar or true
-  , xmlrpcSupport ? (config.php.xmlrpc or false) && (libxml2Support)
-  , cgotoSupport ? config.php.cgoto or false
-  , valgrindSupport ? (config.php.valgrind or true) && (lib.versionAtLeast version "7.2")
-  , ipv6Support ? config.php.ipv6 or true
-  , pearSupport ? (config.php.pear or true) && (libxml2Support)
-  }: stdenv.mkDerivation {
-    pname = "php";
-
-    inherit version;
-
-    enableParallelBuilding = true;
-
-    nativeBuildInputs = [ autoconf automake bison file flex libtool pkgconfig re2c ];
-
-    buildInputs = [ ]
-      ++ lib.optional (lib.versionOlder version "7.3") pcre
-      ++ lib.optional (lib.versionAtLeast version "7.3") pcre2
-      ++ lib.optional (lib.versionAtLeast version "7.4") oniguruma
-      ++ lib.optional withSystemd systemd
-      ++ lib.optionals imapSupport [ uwimap openssl pam ]
-      ++ lib.optionals curlSupport [ curl openssl ]
-      ++ lib.optionals ldapSupport [ openldap openssl ]
-      ++ lib.optionals gdSupport [ gd freetype libXpm libjpeg libpng libwebp ]
-      ++ lib.optionals opensslSupport [ openssl openssl.dev ]
-      ++ lib.optional apxs2Support apacheHttpd
-      ++ lib.optional (ldapSupport && stdenv.isLinux) cyrus_sasl
-      ++ lib.optional zlibSupport zlib
-      ++ lib.optional libxml2Support libxml2
-      ++ lib.optional readlineSupport readline
-      ++ lib.optional sqliteSupport sqlite
-      ++ lib.optional postgresqlSupport postgresql
-      ++ lib.optional pdo_odbcSupport unixODBC
-      ++ lib.optional pdo_pgsqlSupport postgresql
-      ++ lib.optional gmpSupport gmp
-      ++ lib.optional gettextSupport gettext
-      ++ lib.optional intlSupport icu
-      ++ lib.optional xslSupport libxslt
-      ++ lib.optional bz2Support bzip2
-      ++ lib.optional sodiumSupport libsodium
-      ++ lib.optional tidySupport html-tidy
-      ++ lib.optional argon2Support libargon2
-      ++ lib.optional libzipSupport libzip
-      ++ lib.optional valgrindSupport valgrind;
-
-    CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
-
-    configureFlags = [ "--with-config-file-scan-dir=/etc/php.d" ]
-      ++ lib.optionals (lib.versionOlder version "7.3") [ "--with-pcre-regex=${pcre.dev}" "PCRE_LIBDIR=${pcre}" ]
-      ++ lib.optionals (lib.versions.majorMinor version == "7.3") [ "--with-pcre-regex=${pcre2.dev}" "PCRE_LIBDIR=${pcre2}" ]
-      ++ lib.optionals (lib.versionAtLeast version "7.4") [ "--with-external-pcre=${pcre2.dev}" "PCRE_LIBDIR=${pcre2}" ]
-      ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}"
-      ++ lib.optional withSystemd "--with-fpm-systemd"
-      ++ lib.optionals imapSupport [
-        "--with-imap=${uwimap}"
-        "--with-imap-ssl"
-      ]
-      ++ lib.optionals ldapSupport [
-        "--with-ldap=/invalid/path"
-        "LDAP_DIR=${openldap.dev}"
-        "LDAP_INCDIR=${openldap.dev}/include"
-        "LDAP_LIBDIR=${openldap.out}/lib"
-      ]
-      ++ lib.optional (ldapSupport && stdenv.isLinux) "--with-ldap-sasl=${cyrus_sasl.dev}"
-      ++ lib.optional apxs2Support "--with-apxs2=${apacheHttpd.dev}/bin/apxs"
-      ++ lib.optional embedSupport "--enable-embed"
-      ++ lib.optional curlSupport "--with-curl=${curl.dev}"
-      ++ lib.optional zlibSupport "--with-zlib=${zlib.dev}"
-      ++ lib.optional (libxml2Support && (lib.versionOlder version "7.4")) "--with-libxml-dir=${libxml2.dev}"
-      ++ lib.optional (!libxml2Support) [
-        "--disable-dom"
-        (if (lib.versionOlder version "7.4") then "--disable-libxml" else "--without-libxml")
-        "--disable-simplexml"
-        "--disable-xml"
-        "--disable-xmlreader"
-        "--disable-xmlwriter"
-        "--without-pear"
-      ]
-      ++ lib.optional pcntlSupport "--enable-pcntl"
-      ++ lib.optional readlineSupport "--with-readline=${readline.dev}"
-      ++ lib.optional sqliteSupport "--with-pdo-sqlite=${sqlite.dev}"
-      ++ lib.optional postgresqlSupport "--with-pgsql=${postgresql}"
-      ++ lib.optional pdo_odbcSupport "--with-pdo-odbc=unixODBC,${unixODBC}"
-      ++ lib.optional pdo_pgsqlSupport "--with-pdo-pgsql=${postgresql}"
-      ++ lib.optional (pdo_mysqlSupport && mysqlndSupport) "--with-pdo-mysql=mysqlnd"
-      ++ lib.optional (mysqliSupport && mysqlndSupport) "--with-mysqli=mysqlnd"
-      ++ lib.optional (pdo_mysqlSupport || mysqliSupport) "--with-mysql-sock=/run/mysqld/mysqld.sock"
-      ++ lib.optional bcmathSupport "--enable-bcmath"
-      ++ lib.optionals (gdSupport && lib.versionAtLeast version "7.4") [
-        "--enable-gd"
-        "--with-external-gd=${gd.dev}"
-        "--with-webp=${libwebp}"
-        "--with-jpeg=${libjpeg.dev}"
-        "--with-xpm=${libXpm.dev}"
-        "--with-freetype=${freetype.dev}"
-        "--enable-gd-jis-conv"
-      ] ++ lib.optionals (gdSupport && lib.versionOlder version "7.4") [
-        "--with-gd=${gd.dev}"
-        "--with-webp-dir=${libwebp}"
-        "--with-jpeg-dir=${libjpeg.dev}"
-        "--with-png-dir=${libpng.dev}"
-        "--with-freetype-dir=${freetype.dev}"
-        "--with-xpm-dir=${libXpm.dev}"
-        "--enable-gd-jis-conv"
-      ]
-      ++ lib.optional gmpSupport "--with-gmp=${gmp.dev}"
-      ++ lib.optional soapSupport "--enable-soap"
-      ++ lib.optional socketsSupport "--enable-sockets"
-      ++ lib.optional opensslSupport "--with-openssl"
-      ++ lib.optional mbstringSupport "--enable-mbstring"
-      ++ lib.optional gettextSupport "--with-gettext=${gettext}"
-      ++ lib.optional intlSupport "--enable-intl"
-      ++ lib.optional exifSupport "--enable-exif"
-      ++ lib.optional xslSupport "--with-xsl=${libxslt.dev}"
-      ++ lib.optional bz2Support "--with-bz2=${bzip2.dev}"
-      ++ lib.optional (zipSupport && (lib.versionOlder version "7.4")) "--enable-zip"
-      ++ lib.optional (zipSupport && (lib.versionAtLeast version "7.4")) "--with-zip"
-      ++ lib.optional ftpSupport "--enable-ftp"
-      ++ lib.optional fpmSupport "--enable-fpm"
-      ++ lib.optional ztsSupport "--enable-maintainer-zts"
-      ++ lib.optional calendarSupport "--enable-calendar"
-      ++ lib.optional sodiumSupport "--with-sodium=${libsodium.dev}"
-      ++ lib.optional tidySupport "--with-tidy=${html-tidy}"
-      ++ lib.optional argon2Support "--with-password-argon2=${libargon2}"
-      ++ lib.optional (libzipSupport && (lib.versionOlder version "7.4")) "--with-libzip=${libzip.dev}"
-      ++ lib.optional phpdbgSupport "--enable-phpdbg"
-      ++ lib.optional (!phpdbgSupport) "--disable-phpdbg"
-      ++ lib.optional (!cgiSupport) "--disable-cgi"
-      ++ lib.optional (!cliSupport) "--disable-cli"
-      ++ lib.optional (!pharSupport) "--disable-phar"
-      ++ lib.optional xmlrpcSupport "--with-xmlrpc"
-      ++ lib.optional cgotoSupport "--enable-re2c-cgoto"
-      ++ lib.optional valgrindSupport "--with-valgrind=${valgrind.dev}"
-      ++ lib.optional (!ipv6Support) "--disable-ipv6"
-      ++ lib.optional (pearSupport && libxml2Support) "--with-pear=$(out)/lib/php/pear";
-
-    hardeningDisable = [ "bindnow" ];
-
-    preConfigure = ''
-      # Don't record the configure flags since this causes unnecessary
-      # runtime dependencies
-      for i in main/build-defs.h.in scripts/php-config.in; do
-        substituteInPlace $i \
-          --replace '@CONFIGURE_COMMAND@' '(omitted)' \
-          --replace '@CONFIGURE_OPTIONS@' "" \
-          --replace '@PHP_LDFLAGS@' ""
-      done
-
-      substituteInPlace ./build/libtool.m4 --replace /usr/bin/file ${file}/bin/file
-
-      export EXTENSION_DIR=$out/lib/php/extensions
-
-      ./buildconf --copy --force
-
-      if test -f $src/genfiles; then
-        ./genfiles
-      fi
-    '' + lib.optionalString stdenv.isDarwin ''
-      substituteInPlace configure --replace "-lstdc++" "-lc++"
-    '';
-
-    postInstall = ''
-      test -d $out/etc || mkdir $out/etc
-      cp php.ini-production $out/etc/php.ini
-    '';
-
-    postFixup = ''
-      mkdir -p $dev/bin $dev/share/man/man1
-      mv $out/bin/phpize $out/bin/php-config $dev/bin/
-      mv $out/share/man/man1/phpize.1.gz \
-         $out/share/man/man1/php-config.1.gz \
-         $dev/share/man/man1/
-    '';
-
-    src = fetchurl {
-      url = "https://www.php.net/distributions/php-${version}.tar.bz2";
-      inherit sha256;
-    };
-
-    meta = with stdenv.lib; {
-      description = "An HTML-embedded scripting language";
-      homepage = "https://www.php.net/";
-      license = licenses.php301;
-      maintainers = with maintainers; [ globin etu ma27 ];
-      platforms = platforms.all;
-      outputsToInstall = [ "out" "dev" ];
-    };
-
-    patches = [ ./fix-paths-php7.patch ] ++ extraPatches;
-
-    stripDebugList = "bin sbin lib modules";
-
-    outputs = [ "out" "dev" ];
-  };
-
-  generic' = { version, sha256, ... }@args: let php = generic args; in php.overrideAttrs (_: {
-    passthru.buildEnv = { exts ? (_: []), extraConfig ? "" }: let
-      extraInit = writeText "custom-php.ini" ''
-        ${extraConfig}
-        ${lib.concatMapStringsSep "\n" (ext: let
-          extName = lib.removePrefix "php-" (builtins.parseDrvName ext.name).name;
-          type = "${lib.optionalString (ext.zendExtension or false) "zend_"}extension";
-        in ''
-          ${type}=${ext}/lib/php/extensions/${extName}.so
-        '') (exts (callPackage ../../../top-level/php-packages.nix { inherit php; }))}
-      '';
-    in symlinkJoin {
-      name = "php-custom-${version}";
-      nativeBuildInputs = [ makeWrapper ];
-      paths = [ php ];
-      postBuild = ''
-        wrapProgram $out/bin/php \
-          --add-flags "-c ${extraInit}"
-        wrapProgram $out/bin/php-fpm \
-          --add-flags "-c ${extraInit}"
-      '';
-    };
-  });
+    { callPackage, lib, stdenv, nixosTests, config, fetchurl, makeWrapper
+    , symlinkJoin, writeText, autoconf, automake, bison, flex, libtool
+    , pkgconfig, re2c, apacheHttpd, libargon2, libxml2, pcre, pcre2
+    , systemd, valgrind
+
+    , version
+    , sha256
+    , extraPatches ? []
+
+    # Sapi flags
+    , cgiSupport ? true
+    , cliSupport ? true
+    , fpmSupport ? true
+    , pearSupport ? true
+    , pharSupport ? true
+    , phpdbgSupport ? true
+
+    # Misc flags
+    , apxs2Support ? !stdenv.isDarwin
+    , argon2Support ? true
+    , cgotoSupport ? false
+    , embedSupport ? false
+    , ipv6Support ? true
+    , systemdSupport ? stdenv.isLinux
+    , valgrindSupport ? true
+    , ztsSupport ? apxs2Support
+    }@args:
+      let
+        # buildEnv wraps php to provide additional extensions and
+        # configuration. Its usage is documented in
+        # doc/languages-frameworks/php.section.md.
+        #
+        # Create a buildEnv with earlier overridden values and
+        # extensions functions in its closure. This is necessary for
+        # consecutive calls to buildEnv and overrides to work as
+        # expected.
+        mkBuildEnv = prevArgs: prevExtensionFunctions: lib.makeOverridable (
+          { extensions ? ({ enabled, ... }: enabled), extraConfig ? "", ... }@innerArgs:
+            let
+              allArgs = args // prevArgs // innerArgs;
+              filteredArgs = builtins.removeAttrs allArgs [ "extensions" "extraConfig" ];
+              php = generic filteredArgs;
+
+              php-packages = (callPackage ../../../top-level/php-packages.nix {
+                php = phpWithExtensions;
+              });
+
+              allExtensionFunctions = prevExtensionFunctions ++ [ extensions ];
+              enabledExtensions =
+                builtins.foldl'
+                  (enabled: f:
+                    f { inherit enabled; all = php-packages.extensions; })
+                  []
+                  allExtensionFunctions;
+
+              getExtName = ext: lib.removePrefix "php-" (builtins.parseDrvName ext.name).name;
+
+              # Recursively get a list of all internal dependencies
+              # for a list of extensions.
+              getDepsRecursively = extensions:
+                let
+                  deps = lib.concatMap
+                           (ext: (ext.internalDeps or []) ++ (ext.peclDeps or []))
+                           extensions;
+                in
+                  if ! (deps == []) then
+                    deps ++ (getDepsRecursively deps)
+                  else
+                    deps;
+
+              # Generate extension load configuration snippets from the
+              # extension parameter. This is an attrset suitable for use
+              # with textClosureList, which is used to put the strings in
+              # the right order - if a plugin which is dependent on
+              # another plugin is placed before its dependency, it will
+              # fail to load.
+              extensionTexts =
+                lib.listToAttrs
+                  (map (ext:
+                    let
+                      extName = getExtName ext;
+                      phpDeps = (ext.internalDeps or []) ++ (ext.peclDeps or []);
+                      type = "${lib.optionalString (ext.zendExtension or false) "zend_"}extension";
+                    in
+                      lib.nameValuePair extName {
+                        text = "${type}=${ext}/lib/php/extensions/${extName}.so";
+                        deps = map getExtName phpDeps;
+                      })
+                    (enabledExtensions ++ (getDepsRecursively enabledExtensions)));
+
+              extNames = map getExtName enabledExtensions;
+              extraInit = writeText "php.ini" ''
+                ${lib.concatStringsSep "\n"
+                  (lib.textClosureList extensionTexts extNames)}
+                ${extraConfig}
+              '';
+
+              phpWithExtensions = symlinkJoin rec {
+                name = "php-with-extensions-${version}";
+                inherit (php) version;
+                nativeBuildInputs = [ makeWrapper ];
+                passthru = {
+                  buildEnv = mkBuildEnv allArgs allExtensionFunctions;
+                  withExtensions = mkWithExtensions allArgs allExtensionFunctions;
+                  phpIni = "${phpWithExtensions}/lib/php.ini";
+                  unwrapped = php;
+                  tests = nixosTests.php;
+                  inherit (php-packages) packages extensions buildPecl;
+                  meta = php.meta // {
+                    outputsToInstall = [ "out" ];
+                  };
+                };
+                paths = [ php ];
+                postBuild = ''
+                  cp ${extraInit} $out/lib/php.ini
+
+                  wrapProgram $out/bin/php --set PHP_INI_SCAN_DIR $out/lib
+
+                  if test -e $out/bin/php-fpm; then
+                    wrapProgram $out/bin/php-fpm --set PHP_INI_SCAN_DIR $out/lib
+                  fi
+                '';
+              };
+            in
+              phpWithExtensions);
+
+        mkWithExtensions = prevArgs: prevExtensionFunctions: extensions:
+          mkBuildEnv prevArgs prevExtensionFunctions { inherit extensions; };
+
+        pcre' = if (lib.versionAtLeast version "7.3") then pcre2 else pcre;
+      in
+        stdenv.mkDerivation {
+          pname = "php";
+
+          inherit version;
+
+          enableParallelBuilding = true;
+
+          nativeBuildInputs = [ autoconf automake bison flex libtool pkgconfig re2c ];
+
+          buildInputs =
+            # PCRE extension
+            [ pcre' ]
+
+            # Enable sapis
+            ++ lib.optional pearSupport [ libxml2.dev ]
+
+            # Misc deps
+            ++ lib.optional apxs2Support apacheHttpd
+            ++ lib.optional argon2Support libargon2
+            ++ lib.optional systemdSupport systemd
+            ++ lib.optional valgrindSupport valgrind
+          ;
+
+          CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
+
+          configureFlags =
+            # Disable all extensions
+            [ "--disable-all" ]
+
+            # PCRE
+            ++ lib.optionals (lib.versionAtLeast version "7.4") [ "--with-external-pcre=${pcre'.dev}" ]
+            ++ lib.optionals (lib.versions.majorMinor version == "7.3") [ "--with-pcre-regex=${pcre'.dev}" ]
+            ++ lib.optionals (lib.versionOlder version "7.3") [ "--with-pcre-regex=${pcre'.dev}" ]
+            ++ [ "PCRE_LIBDIR=${pcre'}" ]
 
-in {
-  php72 = generic' {
-    version = "7.2.28";
-    sha256 = "18sjvl67z5a2x5s2a36g6ls1r3m4hbrsw52hqr2qsgfvg5dkm5bw";
+
+            # Enable sapis
+            ++ lib.optional (!cgiSupport) "--disable-cgi"
+            ++ lib.optional (!cliSupport) "--disable-cli"
+            ++ lib.optional fpmSupport    "--enable-fpm"
+            ++ lib.optional pearSupport [ "--with-pear=$(out)/lib/php/pear" "--enable-xml" "--with-libxml" ]
+            ++ lib.optional (pearSupport && (lib.versionOlder version "7.4")) "--enable-libxml"
+            ++ lib.optional pharSupport   "--enable-phar"
+            ++ lib.optional phpdbgSupport "--enable-phpdbg"
+
+
+            # Misc flags
+            ++ lib.optional apxs2Support "--with-apxs2=${apacheHttpd.dev}/bin/apxs"
+            ++ lib.optional argon2Support "--with-password-argon2=${libargon2}"
+            ++ lib.optional cgotoSupport "--enable-re2c-cgoto"
+            ++ lib.optional embedSupport "--enable-embed"
+            ++ lib.optional (!ipv6Support) "--disable-ipv6"
+            ++ lib.optional systemdSupport "--with-fpm-systemd"
+            ++ lib.optional valgrindSupport "--with-valgrind=${valgrind.dev}"
+            ++ lib.optional ztsSupport "--enable-maintainer-zts"
+          ;
+
+          hardeningDisable = [ "bindnow" ];
+
+          preConfigure = ''
+            # Don't record the configure flags since this causes unnecessary
+            # runtime dependencies
+            for i in main/build-defs.h.in scripts/php-config.in; do
+              substituteInPlace $i \
+                --replace '@CONFIGURE_COMMAND@' '(omitted)' \
+                --replace '@CONFIGURE_OPTIONS@' "" \
+                --replace '@PHP_LDFLAGS@' ""
+            done
+
+            export EXTENSION_DIR=$out/lib/php/extensions
+
+            ./buildconf --copy --force
+
+            if test -f $src/genfiles; then
+              ./genfiles
+            fi
+          '' + lib.optionalString stdenv.isDarwin ''
+            substituteInPlace configure --replace "-lstdc++" "-lc++"
+          '';
+
+          postInstall = ''
+            test -d $out/etc || mkdir $out/etc
+            cp php.ini-production $out/etc/php.ini
+          '';
+
+          postFixup = ''
+            mkdir -p $dev/bin $dev/share/man/man1
+            mv $out/bin/phpize $out/bin/php-config $dev/bin/
+            mv $out/share/man/man1/phpize.1.gz \
+               $out/share/man/man1/php-config.1.gz \
+               $dev/share/man/man1/
+          '';
+
+          src = fetchurl {
+            url = "https://www.php.net/distributions/php-${version}.tar.bz2";
+            inherit sha256;
+          };
+
+          patches = [ ./fix-paths-php7.patch ] ++ extraPatches;
+
+          separateDebugInfo = true;
+
+          outputs = [ "out" "dev" ];
+
+          passthru = {
+            buildEnv = mkBuildEnv {} [];
+            withExtensions = mkWithExtensions {} [];
+          };
+
+          meta = with stdenv.lib; {
+            description = "An HTML-embedded scripting language";
+            homepage = "https://www.php.net/";
+            license = licenses.php301;
+            maintainers = teams.php.members;
+            platforms = platforms.all;
+            outputsToInstall = [ "out" "dev" ];
+          };
+        };
+
+  php72base = callPackage generic (_args // {
+    version = "7.2.29";
+    sha256 = "08xry2fgqgg8s0ym1hh11wkbr36av3zq1bn4krbciw1b7x8gb8ga";
 
     # https://bugs.php.net/bug.php?id=76826
     extraPatches = lib.optional stdenv.isDarwin ./php72-darwin-isfinite.patch;
-  };
+  });
 
-  php73 = generic' {
-    version = "7.3.15";
-    sha256 = "0g84hws15s8gh8iq4h6q747dyfazx47vh3da3whz8d80x83ibgld";
+  php73base = callPackage generic (_args // {
+    version = "7.3.16";
+    sha256 = "0bh499v9dfgh9k51w4rird1slb9rh9whp5h37fb84c98d992s1xq";
 
     # https://bugs.php.net/bug.php?id=76826
     extraPatches = lib.optional stdenv.isDarwin ./php73-darwin-isfinite.patch;
-  };
+  });
 
-  php74 = generic' {
-    version = "7.4.3";
-    sha256 = "wVF7pJV4+y3MZMc6Ptx21PxQfEp6xjmYFYTMfTtMbRQ=";
-  };
+  php74base = callPackage generic (_args // {
+    version = "7.4.6";
+    sha256 = "0j133pfwa823d4jhx2hkrrzjl4hswvz00b1z58r5c82xd5sr9vd6";
+  });
+
+  defaultPhpExtensions = { all, ... }: with all; ([
+    bcmath calendar curl ctype dom exif fileinfo filter ftp gd
+    gettext gmp iconv intl json ldap mbstring mysqli mysqlnd opcache
+    openssl pcntl pdo pdo_mysql pdo_odbc pdo_pgsql pdo_sqlite pgsql
+    posix readline session simplexml sockets soap sodium sqlite3
+    tokenizer xmlreader xmlwriter zip zlib
+  ] ++ lib.optionals (!stdenv.isDarwin) [ imap ]);
+
+  defaultPhpExtensionsWithHash = { all, ... }:
+    (defaultPhpExtensions { inherit all; }) ++ [ all.hash ];
+
+  php74 = php74base.withExtensions defaultPhpExtensions;
+  php73 = php73base.withExtensions defaultPhpExtensionsWithHash;
+  php72 = php72base.withExtensions defaultPhpExtensionsWithHash;
+
+in {
+  inherit php72 php73 php74;
 }
diff --git a/pkgs/development/interpreters/picoc/default.nix b/pkgs/development/interpreters/picoc/default.nix
index 6e57ad250bb4..f7343f6e4d60 100644
--- a/pkgs/development/interpreters/picoc/default.nix
+++ b/pkgs/development/interpreters/picoc/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   # Tests are currently broken on i686 see
-  # http://hydra.nixos.org/build/24003763/nixlog/1
+  # https://hydra.nixos.org/build/24003763/nixlog/1
   doCheck = if stdenv.isi686 then false else true;
   checkTarget = "test";
 
@@ -43,8 +43,8 @@ stdenv.mkDerivation rec {
       very sparing of data space. This means it can work well in small embedded
       devices.
     '';
-    homepage = https://github.com/zsaleeba/picoc;
-    downloadPage = https://code.google.com/p/picoc/downloads/list;
+    homepage = "https://github.com/zsaleeba/picoc";
+    downloadPage = "https://code.google.com/p/picoc/downloads/list";
     license = licenses.bsd3;
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/interpreters/picolisp/default.nix b/pkgs/development/interpreters/picolisp/default.nix
index 1a0a781b9188..c49437717c15 100644
--- a/pkgs/development/interpreters/picolisp/default.nix
+++ b/pkgs/development/interpreters/picolisp/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A simple Lisp with an integrated database";
-    homepage = https://picolisp.com/;
+    homepage = "https://picolisp.com/";
     license = licenses.mit;
     platforms = platforms.all;
     broken = stdenv.isDarwin; # times out
diff --git a/pkgs/development/interpreters/pixie/default.nix b/pkgs/development/interpreters/pixie/default.nix
index 02f6d34a0305..9b57e153aa05 100644
--- a/pkgs/development/interpreters/pixie/default.nix
+++ b/pkgs/development/interpreters/pixie/default.nix
@@ -84,7 +84,7 @@ let
     '';
     meta = {
       description = "A clojure-like lisp, built with the pypy vm toolkit";
-      homepage = https://github.com/pixie-lang/pixie;
+      homepage = "https://github.com/pixie-lang/pixie";
       license = stdenv.lib.licenses.lgpl3;
       platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"];
       maintainers = with stdenv.lib.maintainers; [ bendlas ];
diff --git a/pkgs/development/interpreters/pyrex/0.9.5.nix b/pkgs/development/interpreters/pyrex/0.9.5.nix
index 30a601ef8dfd..40eb1daf49c8 100644
--- a/pkgs/development/interpreters/pyrex/0.9.5.nix
+++ b/pkgs/development/interpreters/pyrex/0.9.5.nix
@@ -14,7 +14,7 @@ python2Packages.buildPythonPackage {
   doCheck = false;
 
   meta = {
-    homepage = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/;
+    homepage = "http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/";
     description = "A language for writing Python extension modules";
     license = stdenv.lib.licenses.asl20;
   };
diff --git a/pkgs/development/interpreters/pyrex/0.9.6.nix b/pkgs/development/interpreters/pyrex/0.9.6.nix
index 69a930891885..e518edba1b39 100644
--- a/pkgs/development/interpreters/pyrex/0.9.6.nix
+++ b/pkgs/development/interpreters/pyrex/0.9.6.nix
@@ -14,7 +14,7 @@ python2Packages.buildPythonPackage {
   doCheck = false;
 
   meta = {
-    homepage = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/;
+    homepage = "http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/";
     description = "A language for writing Python extension modules";
     license = stdenv.lib.licenses.asl20;
   };
diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix
index ca4fae51269c..0e9a790237fe 100644
--- a/pkgs/development/interpreters/python/cpython/2.7/default.nix
+++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix
@@ -276,7 +276,7 @@ in with passthru; stdenv.mkDerivation ({
     doCheck = false; # expensive, and fails
 
     meta = {
-      homepage = http://python.org;
+      homepage = "http://python.org";
       description = "A high-level dynamically-typed programming language";
       longDescription = ''
         Python is a remarkably powerful dynamic programming language that
diff --git a/pkgs/development/interpreters/python/cpython/3.7/fix-hardcoded-path-checking-for-rpmbuild.patch b/pkgs/development/interpreters/python/cpython/3.7/fix-hardcoded-path-checking-for-rpmbuild.patch
new file mode 100644
index 000000000000..bb3d992612d3
--- /dev/null
+++ b/pkgs/development/interpreters/python/cpython/3.7/fix-hardcoded-path-checking-for-rpmbuild.patch
@@ -0,0 +1,30 @@
+From a612c481f6116955d420db5ae1fe4c1eb93eb2f2 Mon Sep 17 00:00:00 2001
+From: Marcin Niemira <marcin.niemira@gmail.com>
+Date: Sun, 9 Jun 2019 07:05:06 +1000
+Subject: [PATCH] bpo-11122: fix hardcoded path checking for rpmbuild in
+ bdist_rpm.py (GH-10594) (cherry picked from commit
+ 45a14942c969ed508b35abd5e116cb18f84ce5b4)
+
+Co-authored-by: Marcin Niemira <marcin.niemira@gmail.com>
+---
+ Lib/distutils/command/bdist_rpm.py                           | 5 +----
+ .../next/Library/2018-11-12-19-08-50.bpo-11122.Gj7BQn.rst    | 1 +
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+ create mode 100644 Misc/NEWS.d/next/Library/2018-11-12-19-08-50.bpo-11122.Gj7BQn.rst
+
+diff --git a/Lib/distutils/command/bdist_rpm.py b/Lib/distutils/command/bdist_rpm.py
+index 20ca7ac6dcffa..74381cc69a6ce 100644
+--- a/Lib/distutils/command/bdist_rpm.py
++++ b/Lib/distutils/command/bdist_rpm.py
+@@ -309,10 +309,7 @@ def run(self):
+ 
+         # build package
+         log.info("building RPMs")
+-        rpm_cmd = ['rpm']
+-        if os.path.exists('/usr/bin/rpmbuild') or \
+-           os.path.exists('/bin/rpmbuild'):
+-            rpm_cmd = ['rpmbuild']
++        rpm_cmd = ['rpmbuild']
+ 
+         if self.source_only: # what kind of RPMs?
+             rpm_cmd.append('-bs')
diff --git a/pkgs/development/interpreters/python/cpython/default.nix b/pkgs/development/interpreters/python/cpython/default.nix
index dc3997481be3..34ffc9b32d09 100644
--- a/pkgs/development/interpreters/python/cpython/default.nix
+++ b/pkgs/development/interpreters/python/cpython/default.nix
@@ -29,6 +29,8 @@
 , stripTkinter ? false
 , rebuildBytecode ? true
 , stripBytecode ? false
+, includeSiteCustomize ? true
+, static ? false
 }:
 
 assert x11Support -> tcl != null
@@ -128,6 +130,10 @@ in with passthru; stdenv.mkDerivation {
   ] ++ optionals isPy35 [
     # Backports support for LD_LIBRARY_PATH from 3.6
     ./3.5/ld_library_path.patch
+  ] ++ optionals (isPy35 || isPy36 || isPy37) [
+    # Backport a fix for discovering `rpmbuild` command when doing `python setup.py bdist_rpm` to 3.5, 3.6, 3.7.
+    # See: https://bugs.python.org/issue11122
+    ./3.7/fix-hardcoded-path-checking-for-rpmbuild.patch
   ] ++ optionals (isPy37 || isPy38) [
     # Fix darwin build https://bugs.python.org/issue34027
     ./3.7/darwin-libutil.patch
@@ -165,7 +171,7 @@ in with passthru; stdenv.mkDerivation {
   CPPFLAGS = concatStringsSep " " (map (p: "-I${getDev p}/include") buildInputs);
   LDFLAGS = concatStringsSep " " (map (p: "-L${getLib p}/lib") buildInputs);
   LIBS = "${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}";
-  NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s";
+  NIX_LDFLAGS = optionalString (stdenv.isLinux && !stdenv.hostPlatform.isMusl) "-lgcc_s" + optionalString stdenv.hostPlatform.isMusl "-lgcc_eh";
   # Determinism: We fix the hashes of str, bytes and datetime objects.
   PYTHONHASHSEED=0;
 
@@ -207,7 +213,7 @@ in with passthru; stdenv.mkDerivation {
     # Never even try to use lchmod on linux,
     # don't rely on detecting glibc-isms.
     "ac_cv_func_lchmod=no"
-  ];
+  ] ++ optional static "LDFLAGS=-static";
 
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
@@ -275,7 +281,7 @@ in with passthru; stdenv.mkDerivation {
     '' + optionalString stripTests ''
     # Strip tests
     rm -R $out/lib/python*/test $out/lib/python*/**/test{,s}
-    '' + ''
+    '' + optionalString includeSiteCustomize ''
     # Include a sitecustomize.py file
     cp ${../sitecustomize.py} $out/${sitePackages}/sitecustomize.py
     '' + optionalString rebuildBytecode ''
@@ -300,7 +306,7 @@ in with passthru; stdenv.mkDerivation {
   # Enforce that we don't have references to the OpenSSL -dev package, which we
   # explicitly specify in our configure flags above.
   disallowedReferences =
-    stdenv.lib.optionals (openssl != null) [ openssl.dev ]
+    stdenv.lib.optionals (openssl != null && !static) [ openssl.dev ]
     ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
     # Ensure we don't have references to build-time packages.
     # These typically end up in shebangs.
@@ -312,7 +318,7 @@ in with passthru; stdenv.mkDerivation {
   enableParallelBuilding = true;
 
   meta = {
-    homepage = http://python.org;
+    homepage = "http://python.org";
     description = "A high-level dynamically-typed programming language";
     longDescription = ''
       Python is a remarkably powerful dynamic programming language that
diff --git a/pkgs/development/interpreters/python/cpython/docs/2.7-html.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-html.nix
index e27959c05e8d..e033858acc01 100644
--- a/pkgs/development/interpreters/python/cpython/docs/2.7-html.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/2.7-html.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python27-docs-html-2.7.16";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-html.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-html.tar.bz2";
     sha256 = "1razs1grzhai65ihaiyph8kz6ncjkgp1gsn3c8v7kanf13lqim02";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix
index 0226f7cd8809..c9a770a6fcf1 100644
--- a/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-a4.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python27-docs-pdf-a4-2.7.16";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-pdf-a4.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-pdf-a4.tar.bz2";
     sha256 = "14ml1ynrlbhg43737bdsb8k5y39wsffqj4iwhylhb8n8l5dplfdq";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix
index 88d1a6931668..e03d031bae48 100644
--- a/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/2.7-pdf-letter.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python27-docs-pdf-letter-2.7.16";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-pdf-letter.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-pdf-letter.tar.bz2";
     sha256 = "019i8n48m71mn31v8d85kkwyqfgcgqnqh506y4a7fcgf656bajs0";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/2.7-text.nix b/pkgs/development/interpreters/python/cpython/docs/2.7-text.nix
index ea35e9fb6a35..d19d7be19357 100644
--- a/pkgs/development/interpreters/python/cpython/docs/2.7-text.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/2.7-text.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python27-docs-text-2.7.16";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-text.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/2.7.16/python-2.7.16-docs-text.tar.bz2";
     sha256 = "1da7swlykvc013684nywycinfz3v8dqkcmv0zj8p7l5lyi5mq03r";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/3.7-html.nix b/pkgs/development/interpreters/python/cpython/docs/3.7-html.nix
index 45783eb82632..a83363b5c473 100644
--- a/pkgs/development/interpreters/python/cpython/docs/3.7-html.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/3.7-html.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python37-docs-html-3.7.2";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-html.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-html.tar.bz2";
     sha256 = "19wbrawpdam09fmyipfy92sxwn1rl93v8jkfqsfx028qhvzf0422";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-a4.nix b/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-a4.nix
index 998af644c718..e60032f71bf8 100644
--- a/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-a4.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-a4.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python37-docs-pdf-a4-3.7.2";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-pdf-a4.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-pdf-a4.tar.bz2";
     sha256 = "0vdx762m30hjaabn6w88awcj2qpbz0b6z59zn9wmamd35k59lfba";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-letter.nix b/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-letter.nix
index 1c6aea5ee3c1..b737a1e32995 100644
--- a/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-letter.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/3.7-pdf-letter.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python37-docs-pdf-letter-3.7.2";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-pdf-letter.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-pdf-letter.tar.bz2";
     sha256 = "17g57vlyvqx0k916q84q2pcx7y8myw0fda9fvg9kh0ph930c837x";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/cpython/docs/3.7-text.nix b/pkgs/development/interpreters/python/cpython/docs/3.7-text.nix
index 32388780f6ff..2897042ec04a 100644
--- a/pkgs/development/interpreters/python/cpython/docs/3.7-text.nix
+++ b/pkgs/development/interpreters/python/cpython/docs/3.7-text.nix
@@ -5,7 +5,7 @@
 stdenv.mkDerivation {
   name = "python37-docs-text-3.7.2";
   src = fetchurl {
-    url = http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-text.tar.bz2;
+    url = "http://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-text.tar.bz2";
     sha256 = "0h50rlr8jclwfxa106b42q2vn2ynp219c4zsy5qz65n5m3b7y1g2";
   };
   installPhase = ''
diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix
index 94f04b73f498..6da7abc876e7 100644
--- a/pkgs/development/interpreters/python/default.nix
+++ b/pkgs/development/interpreters/python/default.nix
@@ -23,8 +23,6 @@ with pkgs;
       };
     in rec {
         isPy27 = pythonVersion == "2.7";
-        isPy33 = pythonVersion == "3.3"; # TODO: remove
-        isPy34 = pythonVersion == "3.4"; # TODO: remove
         isPy35 = pythonVersion == "3.5";
         isPy36 = pythonVersion == "3.6";
         isPy37 = pythonVersion == "3.7";
@@ -57,10 +55,10 @@ in {
     sourceVersion = {
       major = "2";
       minor = "7";
-      patch = "17";
+      patch = "18";
       suffix = "";
     };
-    sha256 = "0hds28cg226m8j8sr394nm9yc4gxhvlv109w0avsf2mxrlrz0hsd";
+    sha256 = "0hzgxl94hnflis0d6m4szjx0b52gah7wpmcg5g00q7am6xwhwb5n";
     inherit (darwin) configd;
     inherit passthruFun;
   };
@@ -96,10 +94,10 @@ in {
     sourceVersion = {
       major = "3";
       minor = "7";
-      patch = "6";
+      patch = "7";
       suffix = "";
     };
-    sha256 = "0gskry19ylw91p38pdq36qcgk6h3x5i4ia0ik977kw2943kwr8jm";
+    sha256 = "0di1y2cna823qgk6sd2lvpjdm3g2qikdd50i2bjd330dpzqsk806";
     inherit (darwin) configd;
     inherit passthruFun;
   };
@@ -109,10 +107,10 @@ in {
     sourceVersion = {
       major = "3";
       minor = "8";
-      patch = "2";
+      patch = "3";
       suffix = "";
     };
-    sha256 = "1ps5v323cp5czfshqjmbsqw7nvrdpcbk06f62jbzaqik4gfffii6";
+    sha256 = "0r2qg4pdvv52ld5dd95fl6lzzsxxxhbsxmymwcphh6624g3mxayz";
     inherit (darwin) configd;
     inherit passthruFun;
   };
@@ -131,7 +129,7 @@ in {
   };
 
   # Minimal versions of Python (built without optional dependencies)
-  python3Minimal = (python37.override {
+  python3Minimal = (python3.override {
     self = python3Minimal;
     pythonForBuild = pkgs.buildPackages.python3Minimal;
     # strip down that python version as much as possible
@@ -147,6 +145,7 @@ in {
     stripTkinter = true;
     rebuildBytecode = false;
     stripBytecode = true;
+    includeSiteCustomize = false;
   }).overrideAttrs(old: {
     pname = "python3-minimal";
     meta = old.meta // {
diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix
index 47690320e81e..4d736426f3bf 100644
--- a/pkgs/development/interpreters/python/hooks/default.nix
+++ b/pkgs/development/interpreters/python/hooks/default.nix
@@ -89,6 +89,14 @@ in rec {
       };
     } ./python-imports-check-hook.sh) {};
 
+  pythonNamespacesHook = callPackage ({}:
+    makeSetupHook {
+      name = "python-namespaces-hook.sh";
+      substitutions = {
+        inherit pythonSitePackages;
+      };
+    } ./python-namespaces-hook.sh) {};
+
   pythonRemoveBinBytecodeHook = callPackage ({ }:
     makeSetupHook {
       name = "python-remove-bin-bytecode-hook";
diff --git a/pkgs/development/interpreters/python/hooks/pytest-check-hook.sh b/pkgs/development/interpreters/python/hooks/pytest-check-hook.sh
index 18f05b6d218c..bfd2bfa75836 100644
--- a/pkgs/development/interpreters/python/hooks/pytest-check-hook.sh
+++ b/pkgs/development/interpreters/python/hooks/pytest-check-hook.sh
@@ -46,4 +46,16 @@ function pytestCheckPhase() {
 if [ -z "${dontUsePytestCheck-}" ] && [ -z "${installCheckPhase-}" ]; then
     echo "Using pytestCheckPhase"
     preDistPhases+=" pytestCheckPhase"
+
+    # It's almost always the case that setuptoolsCheckPhase should not be ran
+    # when the pytestCheckHook is being ran
+    if [ -z "${useSetuptoolsCheck-}" ]; then
+        dontUseSetuptoolsCheck=1
+
+        # Remove command if already injected into preDistPhases
+        if [[ "$preDistPhases" =~ "setuptoolsCheckPhase" ]]; then
+            echo "Removing setuptoolsCheckPhase"
+            preDistPhases=${preDistPhases/setuptoolsCheckPhase/}
+        fi
+    fi
 fi
diff --git a/pkgs/development/interpreters/python/hooks/python-namespaces-hook.sh b/pkgs/development/interpreters/python/hooks/python-namespaces-hook.sh
new file mode 100644
index 000000000000..50f21819d176
--- /dev/null
+++ b/pkgs/development/interpreters/python/hooks/python-namespaces-hook.sh
@@ -0,0 +1,40 @@
+# Clean up __init__.py's found in namespace directories
+echo "Sourcing python-namespaces-hook"
+
+pythonNamespacesHook() {
+    echo "Executing pythonNamespacesHook"
+
+    for namespace in ${pythonNamespaces[@]}; do
+        echo "Enforcing PEP420 namespace: ${namespace}"
+
+        # split namespace into segments. "azure.mgmt" -> "azure mgmt"
+        IFS='.' read -ra pathSegments <<< $namespace
+        constructedPath=$out/@pythonSitePackages@
+
+        # Need to remove the __init__.py at each namespace level
+        # E.g `azure/__init__.py` and `azure/mgmt/__init__.py`
+        # The __pycache__ entry also needs to be removed
+        for pathSegment in ${pathSegments[@]}; do
+            constructedPath=${constructedPath}/${pathSegment}
+            pathToRemove=${constructedPath}/__init__.py
+            pycachePath=${constructedPath}/__pycache__/__init__*
+
+            if [ -f "$pathToRemove" ]; then
+                echo "Removing $pathToRemove"
+                rm "$pathToRemove"
+            fi
+
+            if [ -f "$pycachePath" ]; then
+                echo "Removing $pycachePath"
+                rm "$pycachePath"
+            fi
+        done
+    done
+
+    echo "Finished executing pythonNamespacesHook"
+}
+
+if [ -z "${dontUsePythonNamespacesHook-}" -a -n "${pythonNamespaces-}" ]; then
+    postFixupHooks+=(pythonNamespacesHook)
+fi
+
diff --git a/pkgs/development/interpreters/python/hooks/venv-shell-hook.sh b/pkgs/development/interpreters/python/hooks/venv-shell-hook.sh
index 3185b1f9fae9..1fcc0bbd4b13 100644
--- a/pkgs/development/interpreters/python/hooks/venv-shell-hook.sh
+++ b/pkgs/development/interpreters/python/hooks/venv-shell-hook.sh
@@ -4,12 +4,14 @@ venvShellHook() {
 
     if [ -d "${venvDir}" ]; then
       echo "Skipping venv creation, '${venvDir}' already exists"
+      source "${venvDir}/bin/activate"
     else
       echo "Creating new venv environment in path: '${venvDir}'"
       @pythonInterpreter@ -m venv "${venvDir}"
-    fi
 
-    source "${venvDir}/bin/activate"
+      source "${venvDir}/bin/activate"
+      runHook postVenvCreation
+    fi
 
     runHook postShellHook
     echo "Finished executing venvShellHook"
diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix
index 180bc63857c2..22938a455852 100644
--- a/pkgs/development/interpreters/python/mk-python-derivation.nix
+++ b/pkgs/development/interpreters/python/mk-python-derivation.nix
@@ -16,6 +16,7 @@
 , pipInstallHook
 , pythonCatchConflictsHook
 , pythonImportsCheckHook
+, pythonNamespacesHook
 , pythonRemoveBinBytecodeHook
 , pythonRemoveTestsDirHook
 , setuptoolsBuildHook
@@ -131,6 +132,9 @@ let
   ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
     # This is a test, however, it should be ran independent of the checkPhase and checkInputs
     pythonImportsCheckHook
+  ] ++ lib.optionals (python.pythonAtLeast "3.3") [
+    # Optionally enforce PEP420 for python3
+    pythonNamespacesHook
   ] ++ nativeBuildInputs;
 
   buildInputs = buildInputs ++ pythonPath;
diff --git a/pkgs/development/interpreters/python/pypy/default.nix b/pkgs/development/interpreters/python/pypy/default.nix
index 54400ae3e0a4..e5828fdd3740 100644
--- a/pkgs/development/interpreters/python/pypy/default.nix
+++ b/pkgs/development/interpreters/python/pypy/default.nix
@@ -53,6 +53,10 @@ in with passthru; stdenv.mkDerivation rec {
 
   hardeningDisable = optional stdenv.isi686 "pic";
 
+  # Remove bootstrap python from closure
+  dontPatchShebangs = true;
+  disallowedReferences = [ python ];
+
   C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" buildInputs;
   LIBRARY_PATH = makeLibraryPath buildInputs;
   LD_LIBRARY_PATH = makeLibraryPath (filter (x : x.outPath != stdenv.cc.libc.outPath or "") buildInputs);
@@ -151,7 +155,7 @@ in with passthru; stdenv.mkDerivation rec {
   enableParallelBuilding = true;  # almost no parallelization without STM
 
   meta = with stdenv.lib; {
-    homepage = http://pypy.org/;
+    homepage = "http://pypy.org/";
     description = "Fast, compliant alternative implementation of the Python language (${pythonVersion})";
     license = licenses.mit;
     platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
diff --git a/pkgs/development/interpreters/python/pypy/prebuilt.nix b/pkgs/development/interpreters/python/pypy/prebuilt.nix
index 7ac8037293ff..0ebd33648343 100644
--- a/pkgs/development/interpreters/python/pypy/prebuilt.nix
+++ b/pkgs/development/interpreters/python/pypy/prebuilt.nix
@@ -117,7 +117,7 @@ in with passthru; stdenv.mkDerivation {
   inherit passthru;
 
   meta = with stdenv.lib; {
-    homepage = http://pypy.org/;
+    homepage = "http://pypy.org/";
     description = "Fast, compliant alternative implementation of the Python language (${pythonVersion})";
     license = licenses.mit;
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/development/interpreters/python/sitecustomize.py b/pkgs/development/interpreters/python/sitecustomize.py
index e03b244dbc04..d79a4696d8ea 100644
--- a/pkgs/development/interpreters/python/sitecustomize.py
+++ b/pkgs/development/interpreters/python/sitecustomize.py
@@ -21,6 +21,19 @@ paths = os.environ.pop('NIX_PYTHONPATH', None)
 if paths:
     functools.reduce(lambda k, p: site.addsitedir(p, k), paths.split(':'), site._init_pathinfo())
 
-executable = os.environ.pop('NIX_PYTHONEXECUTABLE', None)
-if 'PYTHONEXECUTABLE' not in os.environ and executable:
-    sys.executable = executable
+# Check whether we are in a venv or virtualenv. 
+# For Python 3 we check whether our `base_prefix` is different from our current `prefix`.
+# For Python 2 we check whether the non-standard `real_prefix` is set.
+# https://stackoverflow.com/questions/1871549/determine-if-python-is-running-inside-virtualenv
+in_venv = (sys.version_info.major == 3 and sys.prefix != sys.base_prefix) or (sys.version_info.major == 2 and hasattr(sys, "real_prefix"))
+
+if not in_venv:
+    executable = os.environ.pop('NIX_PYTHONEXECUTABLE', None)
+    prefix = os.environ.pop('NIX_PYTHONPREFIX', None)
+
+    if 'PYTHONEXECUTABLE' not in os.environ and executable is not None:
+        sys.executable = executable
+    if prefix is not None:
+        # Sysconfig does not like it when sys.prefix is set to None
+        sys.prefix = sys.exec_prefix = prefix
+        site.PREFIXES.insert(0, prefix)
diff --git a/pkgs/development/interpreters/python/tests.nix b/pkgs/development/interpreters/python/tests.nix
index 37fbe6701148..03a3b9537090 100644
--- a/pkgs/development/interpreters/python/tests.nix
+++ b/pkgs/development/interpreters/python/tests.nix
@@ -2,12 +2,14 @@
 , runCommand
 , substituteAll
 , lib
+, callPackage
 }:
 
 let
   envs = let
     inherit python;
     pythonEnv = python.withPackages(ps: with ps; [ ]);
+    pythonVirtualEnv = python.withPackages(ps: with ps; [ virtualenv ]);
   in {
     # Plain Python interpreter
     plain = rec {
@@ -15,6 +17,18 @@ let
       interpreter = env.interpreter;
       is_venv = "False";
       is_nixenv = "False";
+      is_virtualenv = "False";
+    };
+  } // lib.optionalAttrs (!python.isPyPy) {
+    # Use virtualenv from a Nix env.
+    nixenv-virtualenv = rec {
+      env = runCommand "${python.name}-virtualenv" {} ''
+        ${pythonVirtualEnv.interpreter} -m virtualenv $out
+      '';
+      interpreter = "${env}/bin/${python.executable}";
+      is_venv = "False";
+      is_nixenv = "True";
+      is_virtualenv = "True";
     };
   } // lib.optionalAttrs (python.implementation != "graal") {
     # Python Nix environment (python.buildEnv)
@@ -23,6 +37,7 @@ let
       interpreter = env.interpreter;
       is_venv = "False";
       is_nixenv = "True";
+      is_virtualenv = "False";
     };
   } // lib.optionalAttrs (python.isPy3k && (!python.isPyPy)) rec {
     # Venv built using plain Python
@@ -35,18 +50,30 @@ let
       interpreter = "${env}/bin/${python.executable}";
       is_venv = "True";
       is_nixenv = "False";
+      is_virtualenv = "False";
     };
+
+  } // lib.optionalAttrs (python.pythonAtLeast "3.8") {
     # Venv built using Python Nix environment (python.buildEnv)
     # TODO: Cannot create venv from a  nix env
     # Error: Command '['/nix/store/ddc8nqx73pda86ibvhzdmvdsqmwnbjf7-python3-3.7.6-venv/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
-    # nixenv-venv = rec {
-    #   env = runCommand "${python.name}-venv" {} ''
-    #     ${pythonEnv.interpreter} -m venv $out
-    #   '';
-    #   interpreter = "${env}/bin/${pythonEnv.executable}";
-    #   is_venv = "True";
-    #   is_nixenv = "True";
-    # };
+    nixenv-venv = rec {
+      env = runCommand "${python.name}-venv" {} ''
+        ${pythonEnv.interpreter} -m venv $out
+      '';
+      interpreter = "${env}/bin/${pythonEnv.executable}";
+      is_venv = "True";
+      is_nixenv = "True";
+      is_virtualenv = "False";
+    };
+  };
+
+  # All PyPy package builds are broken at the moment
+  integrationTests = lib.optionalAttrs (python.pythonAtLeast "3.7"  && (!python.isPyPy)) rec {
+    # Before the addition of NIX_PYTHONPREFIX mypy was broken with typed packages
+    nix-pythonprefix-mypy = callPackage ./tests/test_nix_pythonprefix {
+      interpreter = python;
+    };
   };
 
   testfun = name: attrs: runCommand "${python.name}-tests-${name}" ({
@@ -60,4 +87,4 @@ let
     touch $out/success
   '';
 
-in lib.mapAttrs testfun envs 
\ No newline at end of file
+in lib.mapAttrs testfun envs // integrationTests
diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/default.nix b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/default.nix
new file mode 100644
index 000000000000..05798cbaf1b8
--- /dev/null
+++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/default.nix
@@ -0,0 +1,25 @@
+{ interpreter, writeText, runCommandNoCC }:
+
+let
+
+  python = let
+    packageOverrides = self: super: {
+      typeddep = super.callPackage ./typeddep {};
+    };
+  in interpreter.override {inherit packageOverrides; self = python;};
+
+  pythonEnv = python.withPackages(ps: [
+    ps.typeddep
+    ps.mypy
+  ]);
+
+  pythonScript = writeText "myscript.py" ''
+    from typeddep import util
+    s: str = util.echo("hello")
+    print(s)
+  '';
+
+in runCommandNoCC "${interpreter.name}-site-prefix-mypy-test" {} ''
+  ${pythonEnv}/bin/mypy ${pythonScript}
+  touch $out
+''
diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix
new file mode 100644
index 000000000000..8d330fcdbfc9
--- /dev/null
+++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, pythonOlder }:
+
+
+buildPythonPackage {
+
+  pname = "typeddep";
+  version = "1.3.3.7";
+
+  src = ./.;
+
+  disabled = pythonOlder "3.7";
+
+}
diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/setup.py b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/setup.py
new file mode 100644
index 000000000000..25bac69ea09a
--- /dev/null
+++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/setup.py
@@ -0,0 +1,18 @@
+from setuptools import setup
+
+setup(**{
+    'name': 'typeddep',
+    'version': '1.3.3.7',
+    'description': 'Minimal repro to test mypy and site prefixes with Nix',
+    'long_description': None,
+    'author': 'adisbladis',
+    'author_email': 'adisbladis@gmail.com',
+    'maintainer': None,
+    'maintainer_email': None,
+    'url': None,
+    'packages': ['typeddep'],
+    'package_data': {'': ['*']},
+    'install_requires': [],
+    'entry_points': {},
+    'python_requires': '>=3.7,<4.0',
+})
diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/__init__.py b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/__init__.py
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/__init__.py
diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/py.typed b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/py.typed
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/py.typed
diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/util.py b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/util.py
new file mode 100644
index 000000000000..c1c3ffe74777
--- /dev/null
+++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/typeddep/util.py
@@ -0,0 +1,2 @@
+def echo(s: str) -> str:
+    return s
diff --git a/pkgs/development/interpreters/python/tests/test_python.py b/pkgs/development/interpreters/python/tests/test_python.py
index f631a172ccc6..0fc4b8a9e91c 100644
--- a/pkgs/development/interpreters/python/tests/test_python.py
+++ b/pkgs/development/interpreters/python/tests/test_python.py
@@ -16,6 +16,7 @@ ENV = "@env@"
 INTERPRETER = "@interpreter@"
 PYTHON_VERSION = "@pythonVersion@"
 
+IS_VIRTUALENV = @is_virtualenv@
 IS_VENV = @is_venv@
 IS_NIXENV = @is_nixenv@
 IS_PYPY = platform.python_implementation() == "PyPy"
@@ -27,7 +28,7 @@ class TestCasePython(unittest.TestCase):
     def test_interpreter(self):
         self.assertEqual(sys.executable, INTERPRETER)
 
-    @unittest.skipIf(IS_NIXENV or IS_PYPY, "Prefix is incorrect and needs to be fixed.")
+    @unittest.skipIf(IS_PYPY, "Prefix is incorrect and needs to be fixed.")
     def test_prefix(self):
         self.assertEqual(sys.prefix, ENV)
         self.assertEqual(sys.prefix, sys.exec_prefix)
@@ -35,13 +36,17 @@ class TestCasePython(unittest.TestCase):
     def test_site_prefix(self):
         self.assertTrue(sys.prefix in site.PREFIXES)
 
-    @unittest.skipIf(sys.version_info.major==2, "Python 2 does not have base_prefix")
+    @unittest.skipIf(IS_PYPY or sys.version_info.major==2, "Python 2 does not have base_prefix")
     def test_base_prefix(self):
-        if IS_VENV:
+        if IS_VENV or IS_NIXENV or IS_VIRTUALENV:
             self.assertNotEqual(sys.prefix, sys.base_prefix)
         else:
             self.assertEqual(sys.prefix, sys.base_prefix)
 
+    @unittest.skipIf(sys.version_info.major==3, "sys.real_prefix is only set by virtualenv in case of Python 2.")
+    def test_real_prefix(self):
+        self.assertTrue(hasattr(sys, "real_prefix") == IS_VIRTUALENV)
+
     def test_python_version(self):
         self.assertTrue(platform.python_version().startswith(PYTHON_VERSION))
 
diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix
index b437584024fe..dffad6b98f5e 100644
--- a/pkgs/development/interpreters/python/wrapper.nix
+++ b/pkgs/development/interpreters/python/wrapper.nix
@@ -37,7 +37,7 @@ let
             if [ -f "$prg" ]; then
               rm -f "$out/bin/$prg"
               if [ -x "$prg" ]; then
-                makeWrapper "$path/bin/$prg" "$out/bin/$prg" --set NIX_PYTHONEXECUTABLE ${pythonExecutable} --set NIX_PYTHONPATH ${pythonPath} ${if permitUserSite then "" else ''--set PYTHONNOUSERSITE "true"''} ${stdenv.lib.concatStringsSep " " makeWrapperArgs}
+                makeWrapper "$path/bin/$prg" "$out/bin/$prg" --set NIX_PYTHONPREFIX "$out" --set NIX_PYTHONEXECUTABLE ${pythonExecutable} --set NIX_PYTHONPATH ${pythonPath} ${if permitUserSite then "" else ''--set PYTHONNOUSERSITE "true"''} ${stdenv.lib.concatStringsSep " " makeWrapperArgs}
               fi
             fi
           done
diff --git a/pkgs/development/interpreters/qnial/default.nix b/pkgs/development/interpreters/qnial/default.nix
index d49886da8f54..1762edbbdb7d 100644
--- a/pkgs/development/interpreters/qnial/default.nix
+++ b/pkgs/development/interpreters/qnial/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "An array language from Nial Systems";
-    homepage = https://github.com/vrthra/qnial;
+    homepage = "https://github.com/vrthra/qnial";
     license = stdenv.lib.licenses.artistic1;
     maintainers = [ stdenv.lib.maintainers.vrthra ];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/interpreters/racket/default.nix b/pkgs/development/interpreters/racket/default.nix
index 8e66bf96e8ca..1db01c0d7758 100644
--- a/pkgs/development/interpreters/racket/default.nix
+++ b/pkgs/development/interpreters/racket/default.nix
@@ -46,7 +46,7 @@ in
 
 stdenv.mkDerivation rec {
   pname = "racket";
-  version = "7.6"; # always change at once with ./minimal.nix
+  version = "7.7"; # always change at once with ./minimal.nix
 
   src = (stdenv.lib.makeOverridable ({ name, sha256 }:
     fetchurl {
@@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
     }
   )) {
     name = "${pname}-${version}";
-    sha256 = "0yagy7qrnz96gwafnj3whh2vs54788k1ci3vkm100h68gsw638b8";
+    sha256 = "0cx5h3k0n58cb442qzp3jlc7n1b9dbaxv9blg2rjil2rn119yrb2";
   };
 
   FONTCONFIG_FILE = fontsConf;
@@ -102,7 +102,7 @@ stdenv.mkDerivation rec {
       libraries support applications from web servers and databases to
       GUIs and charts.
     '';
-    homepage = https://racket-lang.org/;
+    homepage = "https://racket-lang.org/";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ kkallio henrytill vrthra ];
     platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" ];
diff --git a/pkgs/development/interpreters/racket/minimal.nix b/pkgs/development/interpreters/racket/minimal.nix
index 9e817b760003..a4a7a5c12cd4 100644
--- a/pkgs/development/interpreters/racket/minimal.nix
+++ b/pkgs/development/interpreters/racket/minimal.nix
@@ -5,7 +5,7 @@ racket.overrideAttrs (oldAttrs: rec {
   name = "racket-minimal-${oldAttrs.version}";
   src = oldAttrs.src.override {
     inherit name;
-    sha256 = "0id094q9024hj2n3907l7dblp3iix1v5289xzskmh5c26xfygp9y";
+    sha256 = "1lxcd4ix8q3089xql48hwccxvcpkinfxwxnc6fhcjdgzqcyxh3ln";
   };
 
   meta = oldAttrs.meta // {
diff --git a/pkgs/development/interpreters/rakudo/default.nix b/pkgs/development/interpreters/rakudo/default.nix
index 9d0f47d90d2a..2833a4d5673a 100644
--- a/pkgs/development/interpreters/rakudo/default.nix
+++ b/pkgs/development/interpreters/rakudo/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "rakudo";
-  version = "2020.02.1";
+  version = "2020.05.1";
 
   src = fetchurl {
     url    = "https://www.rakudo.org/dl/rakudo/rakudo-${version}.tar.gz";
-    sha256 = "1qfaiqfclqd6zz04xl90yiqkvmm610r905nnbd6gszgyq1k77ckv";
+    sha256 = "1m4xpghhgi7iijbzvr7bzkay7k93bwpvdg58jp31csrwdzz4q5z1";
   };
 
   buildInputs = [ icu zlib gmp perl ];
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Raku implementation on top of Moar virtual machine";
-    homepage    = https://www.rakudo.org;
+    homepage    = "https://www.rakudo.org";
     license     = licenses.artistic2;
     platforms   = platforms.unix;
     maintainers = with maintainers; [ thoughtpolice vrthra sgo ];
diff --git a/pkgs/development/interpreters/rakudo/moarvm.nix b/pkgs/development/interpreters/rakudo/moarvm.nix
index ade97b56a648..a7b57c9287ac 100644
--- a/pkgs/development/interpreters/rakudo/moarvm.nix
+++ b/pkgs/development/interpreters/rakudo/moarvm.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "moarvm";
-  version = "2020.02.1";
+  version = "2020.05";
 
   src = fetchurl {
     url = "https://www.moarvm.org/releases/MoarVM-${version}.tar.gz";
-    sha256 = "0cnnyjyci24pbws2cic80xdr7a5g3qvrsi221c6bpbnpkar81jw2";
+    sha256 = "0jw29846nky7gz129knjcx58qr7nbn8j7hs8k92i11zaj73d4s4k";
    };
 
   buildInputs = [ perl ] ++ stdenv.lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ];
diff --git a/pkgs/development/interpreters/rakudo/nqp.nix b/pkgs/development/interpreters/rakudo/nqp.nix
index f12e60b14f06..40133287f9e0 100644
--- a/pkgs/development/interpreters/rakudo/nqp.nix
+++ b/pkgs/development/interpreters/rakudo/nqp.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "nqp";
-  version = "2020.02.1";
+  version = "2020.05";
 
   src = fetchurl {
     url    = "https://github.com/perl6/nqp/releases/download/${version}/nqp-${version}.tar.gz";
-    sha256 = "0zw3g7viyq4n4qwy0laww2mzz6wrzkfcq4fm82scy1mh65r7bdgj";
+    sha256 = "0xxm0vlra1g467cxc5v65p8pc46w7r9wkcddjl8nk2lnvgcr46r9";
   };
 
   buildInputs = [ perl ];
diff --git a/pkgs/development/interpreters/rakudo/zef.nix b/pkgs/development/interpreters/rakudo/zef.nix
index 9a8c11324a21..5c8fe16408b4 100644
--- a/pkgs/development/interpreters/rakudo/zef.nix
+++ b/pkgs/development/interpreters/rakudo/zef.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "zef";
-  version = "0.8.3";
+  version = "0.8.4";
 
   src = fetchFromGitHub {
     owner = "ugexe";
     repo = "zef";
     rev = "v${version}";
-    sha256 = "1fscv8fbaa5l8dcwclmq3hvg3c59l4dvyjqb316mgnc5anxpzy2f";
+    sha256 = "02a3awnjr1mgb9275xvp3xms80vcxkq55ffi8sbjzxpwyadj5y5k";
   };
 
   buildInputs = [ rakudo makeWrapper ];
diff --git a/pkgs/development/interpreters/rascal/default.nix b/pkgs/development/interpreters/rascal/default.nix
index 22eee0f6ead8..8b802043fe3f 100644
--- a/pkgs/development/interpreters/rascal/default.nix
+++ b/pkgs/development/interpreters/rascal/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     '';
 
   meta = {
-    homepage = https://www.rascal-mpl.org/;
+    homepage = "https://www.rascal-mpl.org/";
     description = "Command-line REPL for the Rascal metaprogramming language";
     license = stdenv.lib.licenses.epl10;
     maintainers = [ stdenv.lib.maintainers.eelco ];
diff --git a/pkgs/development/interpreters/rebol/default.nix b/pkgs/development/interpreters/rebol/default.nix
index 274b70b2c798..b26af7f0b1b7 100644
--- a/pkgs/development/interpreters/rebol/default.nix
+++ b/pkgs/development/interpreters/rebol/default.nix
@@ -38,6 +38,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ vrthra ];
     platforms = [ "x86_64-linux" ];
     license = licenses.asl20;
-    homepage = http://www.rebol.com/;
+    homepage = "http://www.rebol.com/";
   };
 }
diff --git a/pkgs/development/interpreters/red/default.nix b/pkgs/development/interpreters/red/default.nix
index 2121f54a3b11..e1460ec51a22 100644
--- a/pkgs/development/interpreters/red/default.nix
+++ b/pkgs/development/interpreters/red/default.nix
@@ -87,6 +87,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ uralbash ];
     platforms = [ "i686-linux" "x86_64-linux" ];
     license = licenses.bsd3;
-    homepage = https://www.red-lang.org/;
+    homepage = "https://www.red-lang.org/";
   };
 }
diff --git a/pkgs/development/interpreters/renpy/default.nix b/pkgs/development/interpreters/renpy/default.nix
index 759a44b5760f..d09d150bd79c 100644
--- a/pkgs/development/interpreters/renpy/default.nix
+++ b/pkgs/development/interpreters/renpy/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Ren'Py Visual Novel Engine";
-    homepage = https://renpy.org/;
+    homepage = "https://renpy.org/";
     license = licenses.mit;
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix
index 8ddd19bb40cc..1756c13b53d1 100644
--- a/pkgs/development/interpreters/ruby/default.nix
+++ b/pkgs/development/interpreters/ruby/default.nix
@@ -190,7 +190,7 @@ let
 
         meta = with stdenv.lib; {
           description = "The Ruby language";
-          homepage    = http://www.ruby-lang.org/en/;
+          homepage    = "http://www.ruby-lang.org/en/";
           license     = licenses.ruby;
           maintainers = with maintainers; [ vrthra manveru ];
           platforms   = platforms.all;
@@ -224,26 +224,26 @@ let
 
 in {
   ruby_2_5 = generic {
-    version = rubyVersion "2" "5" "7" "";
+    version = rubyVersion "2" "5" "8" "";
     sha256 = {
-      src = "1m6nmnj9shifp8g3yh7aimac01vl035bzcc19x2spdji6ig0sb8b";
-      git = "0wppf82c9ccdbnvj30mppr5a3mc7sxm05diahjdw7hhk29n43knp";
+      src = "16md4jspjwixjlbhx3pnd5iwpca07p23ghkxkqd82sbchw3xy2vc";
+      git = "19gkk3q9l33cwkfsp5k8f8fipq7gkyqkqirm9farbvy425519rv2";
     };
   };
 
   ruby_2_6 = generic {
-    version = rubyVersion "2" "6" "5" "";
+    version = rubyVersion "2" "6" "6" "";
     sha256 = {
-      src = "0zgdrgylq6avbblf78kpaf0k2xnkpc3jng3wkd7x67ycdrqnp5v6";
-      git = "0pay6ic22ag3bnvxffhgwp7z6clkd0p93944a1l4lvc5hxc8v77j";
+      src = "1492x795qzgp3zhpl580kd1sdp50n5hfsmpbfhdsq2rnxwyi8jrn";
+      git = "1jr9v99a7awssqmw7531afbx4a8i9x5yfqyffha545g7r4s7kj50";
     };
   };
 
   ruby_2_7 = generic {
-    version = rubyVersion "2" "7" "0" "";
+    version = rubyVersion "2" "7" "1" "";
     sha256 = {
-      src = "1glc3zpnih6h8mrgfcak0aa7cgmi4zyvxfyi6y2brwg2nn9sm6cc";
-      git = "11iz64k95czs273mb10195d1j75mmbcgddfdx1vay5876ffw81dq";
+      src = "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l";
+      git = "0qk729kr5wm67xmwpljpdprwhp5wvn5y4ikqy00p1zcgwlwdcs33";
     };
   };
 }
diff --git a/pkgs/development/interpreters/ruby/patchsets.nix b/pkgs/development/interpreters/ruby/patchsets.nix
index 4838a1a09e54..b0c26e19e13b 100644
--- a/pkgs/development/interpreters/ruby/patchsets.nix
+++ b/pkgs/development/interpreters/ruby/patchsets.nix
@@ -1,21 +1,19 @@
 { patchSet, useRailsExpress, ops, patchLevel, fetchpatch }:
 
 {
-  "2.4.9" = ops useRailsExpress [
-    "${patchSet}/patches/ruby/2.4/head/railsexpress/01-skip-broken-tests.patch"
-    "${patchSet}/patches/ruby/2.4/head/railsexpress/02-improve-gc-stats.patch"
-    "${patchSet}/patches/ruby/2.4/head/railsexpress/03-display-more-detailed-stack-trace.patch"
-  ];
-  "2.5.7" = ops useRailsExpress [
+  "2.5.8" = ops useRailsExpress [
     "${patchSet}/patches/ruby/2.5/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
     "${patchSet}/patches/ruby/2.5/head/railsexpress/02-improve-gc-stats.patch"
     "${patchSet}/patches/ruby/2.5/head/railsexpress/03-more-detailed-stacktrace.patch"
   ];
-  "2.6.5" = ops useRailsExpress [
+  "2.6.6" = ops useRailsExpress [
     "${patchSet}/patches/ruby/2.6/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
     "${patchSet}/patches/ruby/2.6/head/railsexpress/02-improve-gc-stats.patch"
     "${patchSet}/patches/ruby/2.6/head/railsexpress/03-more-detailed-stacktrace.patch"
   ];
-  "2.7.0" = ops useRailsExpress [ # no patches yet (2019-12-25)
+  "2.7.1" = ops useRailsExpress [
+    "${patchSet}/patches/ruby/2.7/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
+    "${patchSet}/patches/ruby/2.7/head/railsexpress/02-improve-gc-stats.patch"
+    "${patchSet}/patches/ruby/2.7/head/railsexpress/03-more-detailed-stacktrace.patch"
   ];
 }
diff --git a/pkgs/development/interpreters/ruby/rubygems/default.nix b/pkgs/development/interpreters/ruby/rubygems/default.nix
index 3caac2447e2e..0bbcadba3f51 100644
--- a/pkgs/development/interpreters/ruby/rubygems/default.nix
+++ b/pkgs/development/interpreters/ruby/rubygems/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Package management framework for Ruby";
-    homepage = https://rubygems.org/;
+    homepage = "https://rubygems.org/";
     license = with licenses; [ mit /* or */ ruby ];
     maintainers = with maintainers; [ qyliss zimbatm ];
   };
diff --git a/pkgs/development/interpreters/ruby/rvm-patchsets.nix b/pkgs/development/interpreters/ruby/rvm-patchsets.nix
index 883987683b0a..331dda5d0503 100644
--- a/pkgs/development/interpreters/ruby/rvm-patchsets.nix
+++ b/pkgs/development/interpreters/ruby/rvm-patchsets.nix
@@ -3,6 +3,6 @@
 fetchFromGitHub {
   owner  = "skaes";
   repo   = "rvm-patchsets";
-  rev    = "58f72dccc8bb4dc9b1035f6af903d21f2465367a";
-  sha256 = "00gbrhvnf05g6zmfim472ld0l1lp100dy4pi3lixm6ry9iw9m4ag";
+  rev    = "6d8888d34a321198f7fd9253343b78c209efb046";
+  sha256 = "0xczl0nng1649km3bcbjn6zrr591l6m2kkwgnknh1fnwmmrdaya7";
 }
diff --git a/pkgs/development/interpreters/scheme48/default.nix b/pkgs/development/interpreters/scheme48/default.nix
index e01aef98303c..5a1e3f265b24 100644
--- a/pkgs/development/interpreters/scheme48/default.nix
+++ b/pkgs/development/interpreters/scheme48/default.nix
@@ -4,15 +4,14 @@ stdenv.mkDerivation {
   name = "scheme48-1.9.2";
 
   meta = {
-    homepage = http://s48.org/;
+    homepage = "http://s48.org/";
     description = "Scheme 48";
-    maintainers = with stdenv.lib.maintainers; [ the-kenny ];
     platforms = with stdenv.lib.platforms; unix;
     license = stdenv.lib.licenses.bsd3;
   };
 
   src = fetchurl {
-    url = http://s48.org/1.9.2/scheme48-1.9.2.tgz;
+    url = "http://s48.org/1.9.2/scheme48-1.9.2.tgz";
     sha256 = "1x4xfm3lyz2piqcw1h01vbs1iq89zq7wrsfjgh3fxnlm1slj2jcw";
   };
 }
diff --git a/pkgs/development/interpreters/scsh/default.nix b/pkgs/development/interpreters/scsh/default.nix
index 85c9434f0813..bb4f418f502a 100644
--- a/pkgs/development/interpreters/scsh/default.nix
+++ b/pkgs/development/interpreters/scsh/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     description = "A Scheme shell";
-    homepage = http://www.scsh.net/;
+    homepage = "http://www.scsh.net/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ joachifm ];
     platforms = with platforms; unix;
diff --git a/pkgs/development/interpreters/self/default.nix b/pkgs/development/interpreters/self/default.nix
index 43f5758e4c49..ccf85f1d1c4d 100644
--- a/pkgs/development/interpreters/self/default.nix
+++ b/pkgs/development/interpreters/self/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A prototype-based dynamic object-oriented programming language, environment, and virtual machine";
-    homepage = http://selflanguage.org/;
+    homepage = "http://selflanguage.org/";
     license = stdenv.lib.licenses.bsd3;
     maintainers = [ stdenv.lib.maintainers.doublec ];
     platforms = with stdenv.lib.platforms; linux;
diff --git a/pkgs/development/interpreters/spidermonkey/1.8.5.nix b/pkgs/development/interpreters/spidermonkey/1.8.5.nix
index fe77a27d449a..37efeba3f9b6 100644
--- a/pkgs/development/interpreters/spidermonkey/1.8.5.nix
+++ b/pkgs/development/interpreters/spidermonkey/1.8.5.nix
@@ -69,7 +69,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     description = "Mozilla's JavaScript engine written in C/C++";
-    homepage = https://developer.mozilla.org/en/SpiderMonkey;
+    homepage = "https://developer.mozilla.org/en/SpiderMonkey";
     # TODO: MPL/GPL/LGPL tri-license.
     maintainers = [ maintainers.goibhniu ];
     platforms = platforms.linux;
diff --git a/pkgs/development/interpreters/spidermonkey/38.nix b/pkgs/development/interpreters/spidermonkey/38.nix
index 89bbd713a5c6..d2aabfe64d9a 100644
--- a/pkgs/development/interpreters/spidermonkey/38.nix
+++ b/pkgs/development/interpreters/spidermonkey/38.nix
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Mozilla's JavaScript engine written in C/C++";
-    homepage = https://developer.mozilla.org/en/SpiderMonkey;
+    homepage = "https://developer.mozilla.org/en/SpiderMonkey";
     # TODO: MPL/GPL/LGPL tri-license.
 
     maintainers = [ maintainers.abbradar ];
diff --git a/pkgs/development/interpreters/spidermonkey/60.nix b/pkgs/development/interpreters/spidermonkey/60.nix
index f6a4483edba7..42731421d81d 100644
--- a/pkgs/development/interpreters/spidermonkey/60.nix
+++ b/pkgs/development/interpreters/spidermonkey/60.nix
@@ -75,7 +75,7 @@ in stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     description = "Mozilla's JavaScript engine written in C/C++";
-    homepage = https://developer.mozilla.org/en/SpiderMonkey;
+    homepage = "https://developer.mozilla.org/en/SpiderMonkey";
     license = licenses.gpl2; # TODO: MPL/GPL/LGPL tri-license.
     maintainers = [ maintainers.abbradar ];
     platforms = platforms.linux;
diff --git a/pkgs/development/interpreters/spidermonkey/68.nix b/pkgs/development/interpreters/spidermonkey/68.nix
new file mode 100644
index 000000000000..7100a730a61b
--- /dev/null
+++ b/pkgs/development/interpreters/spidermonkey/68.nix
@@ -0,0 +1,95 @@
+{ stdenv, fetchurl, fetchpatch, autoconf213, pkgconfig, perl, python2, python3, zip, buildPackages
+, which, readline, zlib, icu, cargo, rustc, llvmPackages }:
+
+with stdenv.lib;
+
+let
+  python3Env = buildPackages.python3.withPackages (p: [p.six]);
+in stdenv.mkDerivation rec {
+  pname = "spidermonkey";
+  version = "68.7.0";
+
+  src = fetchurl {
+    url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
+    sha256 = "0w3mad0r4khcd7hfmm3xix9x6mp5yp8g8kyh18vanfnjqdls0gmd";
+  };
+
+  outputs = [ "out" "dev" ];
+  setOutputFlags = false; # Configure script only understands --includedir
+
+  nativeBuildInputs = [
+    autoconf213
+    pkgconfig
+    perl
+    which
+    python2
+    zip
+    cargo
+    rustc
+    llvmPackages.llvm
+  ];
+
+  buildInputs = [
+    readline
+    zlib
+    icu
+  ];
+
+  preConfigure = ''
+    export CXXFLAGS="-fpermissive"
+    export LIBXUL_DIST=$out
+    export PYTHON3="${python3Env.interpreter}"
+
+    # We can't build in js/src/, so create a build dir
+    mkdir obj
+    cd obj/
+    configureScript=../js/src/configure
+  '';
+
+  configureFlags = [
+    # Reccommended by gjs upstream
+    "--disable-jemalloc"
+    "--enable-unaligned-private-values"
+    "--with-intl-api"
+    "--enable-posix-nspr-emulation"
+    "--with-system-zlib"
+    "--with-system-icu"
+
+    "--with-libclang-path=${llvmPackages.libclang}/lib"
+    "--with-clang-path=${llvmPackages.clang}/bin/clang"
+
+    "--enable-shared-js"
+    "--enable-readline"
+    # Fedora and Arch disable optimize, but it doesn't seme to be necessary
+    # It turns on -O3 which some gcc version had a problem with:
+    # https://src.fedoraproject.org/rpms/mozjs38/c/761399aba092bcb1299bb4fccfd60f370ab4216e
+    "--enable-optimize"
+    "--enable-release"
+  ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+    # Spidermonkey seems to use different host/build terminology for cross
+    # compilation here.
+    "--host=${stdenv.buildPlatform.config}"
+    "--target=${stdenv.hostPlatform.config}"
+  ];
+
+  configurePlatforms = [];
+
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+
+  # Remove unnecessary static lib
+  preFixup = ''
+    moveToOutput bin/js60-config "$dev"
+    rm $out/lib/libjs_static.ajs
+    ln -s $out/bin/js60 $out/bin/js
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Mozilla's JavaScript engine written in C/C++";
+    homepage = "https://developer.mozilla.org/en/SpiderMonkey";
+    license = licenses.gpl2; # TODO: MPL/GPL/LGPL tri-license.
+    maintainers = [ maintainers.abbradar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/interpreters/supercollider/default.nix b/pkgs/development/interpreters/supercollider/default.nix
index 67a7f8975f12..eed0bdc5807e 100644
--- a/pkgs/development/interpreters/supercollider/default.nix
+++ b/pkgs/development/interpreters/supercollider/default.nix
@@ -9,12 +9,12 @@ in
 
 mkDerivation rec {
   pname = "supercollider";
-  version = "3.10.4";
+  version = "3.11.0";
 
 
   src = fetchurl {
     url = "https://github.com/supercollider/supercollider/releases/download/Version-${version}/SuperCollider-${version}-Source.tar.bz2";
-    sha256 = "168r0c0axgajsdzc1caklydrnagy4flv7i7jcyqwpc9agsqy0nnf";
+    sha256 = "0l5j7sqrjlm85ql91ybcrvdykfkkwfqd7w3m4llbymw720r2ln9p";
   };
 
   hardeningDisable = [ "stackprotector" ];
diff --git a/pkgs/development/interpreters/tcl/generic.nix b/pkgs/development/interpreters/tcl/generic.nix
index fd84d93ba756..9aaf8223837d 100644
--- a/pkgs/development/interpreters/tcl/generic.nix
+++ b/pkgs/development/interpreters/tcl/generic.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     description = "The Tcl scripting language";
-    homepage = https://www.tcl.tk/;
+    homepage = "https://www.tcl.tk/";
     license = licenses.tcltk;
     platforms = platforms.all;
     maintainers = with maintainers; [ vrthra ];
diff --git a/pkgs/development/interpreters/tinyscheme/default.nix b/pkgs/development/interpreters/tinyscheme/default.nix
index ca897ec692c1..b49a37a72856 100644
--- a/pkgs/development/interpreters/tinyscheme/default.nix
+++ b/pkgs/development/interpreters/tinyscheme/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
       TinyScheme is a lightweight Scheme interpreter that implements as large a
       subset of R5RS as was possible without getting very large and complicated.
     '';
-    homepage = http://tinyscheme.sourceforge.net/;
+    homepage = "http://tinyscheme.sourceforge.net/";
     license = licenses.bsdOriginal;
     maintainers = [ maintainers.ebzzry ];
     platforms = platforms.unix;
diff --git a/pkgs/development/interpreters/unicon-lang/default.nix b/pkgs/development/interpreters/unicon-lang/default.nix
index bb4a2d01499d..d908346f1962 100644
--- a/pkgs/development/interpreters/unicon-lang/default.nix
+++ b/pkgs/development/interpreters/unicon-lang/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ vrthra ];
     platforms = platforms.linux;
     license = licenses.gpl2;
-    homepage = http://unicon.org;
+    homepage = "http://unicon.org";
   };
 }
 
diff --git a/pkgs/development/interpreters/wasmer/default.nix b/pkgs/development/interpreters/wasmer/default.nix
index d3d9cf87207d..404c0731c349 100644
--- a/pkgs/development/interpreters/wasmer/default.nix
+++ b/pkgs/development/interpreters/wasmer/default.nix
@@ -8,17 +8,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wasmer";
-  version = "0.16.2";
+  version = "0.17.0";
 
   src = fetchFromGitHub {
     owner = "wasmerio";
     repo = pname;
     rev = version;
-    sha256 = "124zq772kz9a7n3qpxgmp4awqj41l8mhhwc0y3r77i1q02i1sy7z";
+    sha256 = "05g4h0xkqd14wnmijiiwmhk6l909fjxr6a2zplrjfxk5bypdalpm";
     fetchSubmodules = true;
   };
 
-  cargoSha256 = "1qqysvcviimpm2zhzsbn8vhy91rxzaknh9hv75y38xd5ggnnh9m6";
+  cargoSha256 = "1ssmgx9fjvkq7ycyzjanqmlm5b80akllq6qyv3mj0k5fvs659wcq";
 
   nativeBuildInputs = [ cmake pkg-config ];
 
diff --git a/pkgs/development/interpreters/wasmtime/default.nix b/pkgs/development/interpreters/wasmtime/default.nix
index eaecd1eb89b9..dd6e3eb4a7f4 100644
--- a/pkgs/development/interpreters/wasmtime/default.nix
+++ b/pkgs/development/interpreters/wasmtime/default.nix
@@ -2,28 +2,28 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wasmtime";
-  version = "v0.12.0";
+  version = "0.16.0";
 
   src = fetchFromGitHub {
     owner = "bytecodealliance";
     repo = "${pname}";
-    rev = "${version}";
-    sha256 = "08dhk5s8rv41mjqbwfqwqmp6p6p9y7qc5yc76ljjd9l7j1phl7mr";
+    rev = "v${version}";
+    sha256 = "1zlljqkkcw8h94ff1w47sqn9pn0zal06s06i8nciv5i2d1xaqg5n";
     fetchSubmodules = true;
   };
 
-  cargoSha256 = "0wqd2yy6ih1rcz1fq7x3aiqq1ma2nmif1w8r8x0vpxjxk395zil9";
+  cargoSha256 = "1hb7l7a76lgbji0qm9qd80m35cp346hyi4rphfk6p80v142cw8hh";
 
   nativeBuildInputs = [ python cmake clang ];
   buildInputs = [ llvmPackages.libclang ] ++
    lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
   LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
 
-  doCheck = false; # https://github.com/bytecodealliance/wasmtime/issues/1197
+  doCheck = true;
 
   meta = with lib; {
     description = "Standalone JIT-style runtime for WebAssembly, using Cranelift";
-    homepage = https://github.com/CraneStation/wasmtime;
+    homepage = "https://github.com/CraneStation/wasmtime";
     license = licenses.asl20;
     maintainers = [ maintainers.matthewbauer ];
     platforms = platforms.unix;