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.nix4
-rw-r--r--pkgs/development/interpreters/bats/default.nix46
-rw-r--r--pkgs/development/interpreters/clojure/babashka.nix4
-rw-r--r--pkgs/development/interpreters/clojure/default.nix4
-rw-r--r--pkgs/development/interpreters/clojure/obb.nix83
-rw-r--r--pkgs/development/interpreters/clojurescript/lumo/default.nix4
-rw-r--r--pkgs/development/interpreters/cyclone/default.nix6
-rw-r--r--pkgs/development/interpreters/dart/default.nix14
-rw-r--r--pkgs/development/interpreters/elixir/1.13.nix4
-rw-r--r--pkgs/development/interpreters/erlang/R22.nix4
-rw-r--r--pkgs/development/interpreters/erlang/R23.nix4
-rw-r--r--pkgs/development/interpreters/erlang/R24.nix4
-rw-r--r--pkgs/development/interpreters/guile/3.0.nix5
-rw-r--r--pkgs/development/interpreters/ivy/default.nix24
-rw-r--r--pkgs/development/interpreters/janet/darwin-remove-net-test.patch20
-rw-r--r--pkgs/development/interpreters/janet/default.nix19
-rw-r--r--pkgs/development/interpreters/janet/jpm.nix59
-rw-r--r--pkgs/development/interpreters/joker/default.nix4
-rw-r--r--pkgs/development/interpreters/jruby/default.nix4
-rw-r--r--pkgs/development/interpreters/lolcode/default.nix10
-rw-r--r--pkgs/development/interpreters/love/0.10.nix22
-rw-r--r--pkgs/development/interpreters/love/0.7.nix58
-rw-r--r--pkgs/development/interpreters/love/0.8.nix55
-rw-r--r--pkgs/development/interpreters/love/0.9.nix37
-rw-r--r--pkgs/development/interpreters/love/11.nix (renamed from pkgs/development/interpreters/love/11.1.nix)22
-rw-r--r--pkgs/development/interpreters/luajit/default.nix2
-rw-r--r--pkgs/development/interpreters/lunatic/default.nix6
-rw-r--r--pkgs/development/interpreters/micropython/default.nix6
-rw-r--r--pkgs/development/interpreters/nextflow/default.nix56
-rw-r--r--pkgs/development/interpreters/php/7.4.nix4
-rw-r--r--pkgs/development/interpreters/php/8.0.nix4
-rw-r--r--pkgs/development/interpreters/php/8.1.nix4
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.5.nix19
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.6.nix19
-rw-r--r--pkgs/development/interpreters/python/cpython/default.nix12
-rw-r--r--pkgs/development/interpreters/python/default.nix45
-rw-r--r--pkgs/development/interpreters/python/pypy/prebuilt.nix20
-rw-r--r--pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix132
-rwxr-xr-xpkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py36
-rw-r--r--pkgs/development/interpreters/quickjs/default.nix1
-rw-r--r--pkgs/development/interpreters/racket/default.nix44
-rw-r--r--pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch11
-rw-r--r--pkgs/development/interpreters/racket/minimal.nix4
-rw-r--r--pkgs/development/interpreters/rakudo/default.nix4
-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/regina/default.upstream5
-rw-r--r--pkgs/development/interpreters/renpy/default.nix62
-rw-r--r--pkgs/development/interpreters/renpy/launcherenv.patch14
-rw-r--r--pkgs/development/interpreters/ruby/default.nix76
-rw-r--r--pkgs/development/interpreters/ruby/patchsets.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/68.nix102
-rw-r--r--pkgs/development/interpreters/spidermonkey/78.nix15
-rw-r--r--pkgs/development/interpreters/spidermonkey/91.nix8
-rw-r--r--pkgs/development/interpreters/spidermonkey/add-riscv64-support.patch123
-rw-r--r--pkgs/development/interpreters/supercollider/default.nix4
-rw-r--r--pkgs/development/interpreters/trealla/default.nix4
-rw-r--r--pkgs/development/interpreters/wasmtime/default.nix4
-rw-r--r--pkgs/development/interpreters/yex-lang/default.nix24
60 files changed, 835 insertions, 569 deletions
diff --git a/pkgs/development/interpreters/acl2/default.nix b/pkgs/development/interpreters/acl2/default.nix
index a1b59b8bf69de..51b1cfa11414a 100644
--- a/pkgs/development/interpreters/acl2/default.nix
+++ b/pkgs/development/interpreters/acl2/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, callPackage, fetchFromGitHub, runCommandLocal, makeWrapper, substituteAll
 , sbcl, bash, which, perl, hostname
-, openssl, glucose, minisat, abc-verifier, z3, python
+, openssl, glucose, minisat, abc-verifier, z3, python2
 , certifyBooks ? true
 } @ args:
 
@@ -48,7 +48,7 @@ in stdenv.mkDerivation rec {
     which perl hostname makeWrapper
     # Some of the books require one or more of these external tools:
     openssl.out glucose minisat abc-verifier libipasir
-    z3 (python.withPackages (ps: [ ps.z3 ]))
+    z3 (python2.withPackages (ps: [ ps.z3 ]))
   ];
 
   # NOTE: Parallel building can be memory-intensive depending on the number of
diff --git a/pkgs/development/interpreters/bats/default.nix b/pkgs/development/interpreters/bats/default.nix
index 1412985a247e1..9cdde90c41d3f 100644
--- a/pkgs/development/interpreters/bats/default.nix
+++ b/pkgs/development/interpreters/bats/default.nix
@@ -1,28 +1,52 @@
-{ stdenv, lib, fetchzip, bash, makeWrapper, coreutils, gnugrep, ncurses, doCheck ? true }:
+{ resholvePackage
+, lib
+, fetchFromGitHub
+, bash
+, coreutils
+, gnugrep
+, ncurses
+, doInstallCheck ? true
+}:
 
-stdenv.mkDerivation rec {
+resholvePackage rec {
   pname = "bats";
   version = "1.5.0";
 
-  src = fetchzip {
-    url = "https://github.com/bats-core/bats-core/archive/v${version}.tar.gz";
-    hash = "sha256-MEkMi2w8G9FZhE3JvzzbqObcErQ9WFXy5mtKwQOoxbk=";
+  src = fetchFromGitHub {
+    owner = "bats-core";
+    repo = "bats-core";
+    rev = "v${version}";
+    sha256 = "sha256-MEkMi2w8G9FZhE3JvzzbqObcErQ9WFXy5mtKwQOoxbk=";
   };
 
-  nativeBuildInputs = [ makeWrapper ];
-
   patchPhase = ''
     patchShebangs .
   '';
 
   installPhase = ''
     ./install.sh $out
-    wrapProgram $out/bin/bats --suffix PATH : "${lib.makeBinPath [ bash coreutils gnugrep ]}"
   '';
 
-  inherit doCheck;
-  checkInputs = [ ncurses ];
-  checkPhase = ''
+  solutions = {
+    bats = {
+      scripts = [ "bin/bats" ];
+      interpreter = "${bash}/bin/bash";
+      inputs = [ bash coreutils gnugrep ];
+      fake = {
+        external = [ "greadlink" ];
+      };
+      fix = {
+        "$BATS_ROOT" = [ "${placeholder "out"}" ];
+      };
+      keep = {
+        "${placeholder "out"}/libexec/bats-core/bats" = true;
+      };
+    };
+  };
+
+  inherit doInstallCheck;
+  installCheckInputs = [ ncurses ];
+  installCheckPhase = ''
     # TODO: cut if https://github.com/bats-core/bats-core/issues/418 allows
     sed -i '/test works even if PATH is reset/a skip' test/bats.bats
 
diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix
index 93755e83a3d69..ca2391ebd25d2 100644
--- a/pkgs/development/interpreters/clojure/babashka.nix
+++ b/pkgs/development/interpreters/clojure/babashka.nix
@@ -2,11 +2,11 @@
 
 buildGraalvmNativeImage rec {
   pname = "babashka";
-  version = "0.7.3";
+  version = "0.7.5";
 
   src = fetchurl {
     url = "https://github.com/babashka/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar";
-    sha256 = "sha256-zbxFMc02hbsU2ERlUzqMBHwHYfORB7TkMINrKC52PPU=";
+    sha256 = "sha256-ap6YCRUqtIgh36eTIk5BSjUildvYhqkC48Y4dxNMU8c=";
   };
 
   executable = "bb";
diff --git a/pkgs/development/interpreters/clojure/default.nix b/pkgs/development/interpreters/clojure/default.nix
index 9fba39d70c7ff..a66f0422b6db2 100644
--- a/pkgs/development/interpreters/clojure/default.nix
+++ b/pkgs/development/interpreters/clojure/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "clojure";
-  version = "1.10.3.1053";
+  version = "1.10.3.1082";
 
   src = fetchurl {
     # https://clojure.org/releases/tools
     url = "https://download.clojure.org/install/clojure-tools-${version}.tar.gz";
-    sha256 = "p91+Ylx8HQL/o3Pq4Pd1c9GAMiOXvJSw+09LGYLj5Wo=";
+    sha256 = "sha256-8hW8zgP+D72MtXYFPXx9FfkThQuCBo1Y6CU5w7xPE7c=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/interpreters/clojure/obb.nix b/pkgs/development/interpreters/clojure/obb.nix
new file mode 100644
index 0000000000000..adb7a92617396
--- /dev/null
+++ b/pkgs/development/interpreters/clojure/obb.nix
@@ -0,0 +1,83 @@
+{ lib
+, stdenv
+, fetchurl
+, babashka
+, cacert
+, clojure
+, git
+, jdk
+, obb
+, fetchFromGitHub
+, makeWrapper
+, runCommand }:
+
+stdenv.mkDerivation rec {
+  pname = "obb";
+  version = "0.0.2";
+
+  src = fetchFromGitHub {
+    owner = "babashka";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1Gxh4IMtytQCuPS+BWOc5AgjEBxa43ebYfDsxLSPeY0=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ babashka cacert git jdk ];
+
+  configurePhase = ''
+    runHook preConfigure
+
+    mkdir -p .m2
+    substituteInPlace deps.edn --replace ':paths' ':mvn/local-repo "./.m2" :paths'
+    substituteInPlace bb.edn --replace ':paths' ':mvn/local-repo "./.m2" :paths'
+    echo deps.edn
+
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    export DEPS_CLJ_TOOLS_DIR=${clojure}
+    export DEPS_CLJ_TOOLS_VERSION=${clojure.version}
+    mkdir -p .gitlibs
+    mkdir -p .cpcache
+    export GITLIBS=.gitlibs
+    export CLJ_CACHE=.cpcache
+
+    bb build
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    ln -s /usr/bin/osascript $out/bin/osascript
+
+    install -Dm755 "out/bin/obb" "$out/bin/obb"
+    wrapProgram $out/bin/obb --prefix PATH : $out/bin
+
+    runHook postInstall
+  '';
+
+  passthru.tests = {
+    simple = runCommand "${pname}-test" {} ''
+      [ $(${obb}/bin/obb -e '(+ 1 2)') = '3' ]
+      touch $out
+    '';
+  };
+
+  meta = with lib; {
+    description = "Ad-hoc ClojureScript scripting of Mac applications via Apple's Open Scripting Architecture";
+    homepage = "https://github.com/babashka/obb";
+    license = licenses.epl10;
+    maintainers = with maintainers; [
+      willcohen
+    ];
+    platforms = platforms.darwin;
+  };
+}
diff --git a/pkgs/development/interpreters/clojurescript/lumo/default.nix b/pkgs/development/interpreters/clojurescript/lumo/default.nix
index 7bd3913260d48..d8fa630c30dfc 100644
--- a/pkgs/development/interpreters/clojurescript/lumo/default.nix
+++ b/pkgs/development/interpreters/clojurescript/lumo/default.nix
@@ -8,7 +8,7 @@
 , unzip
 , nodePackages
 , xcbuild
-, python
+, python2
 , openssl
 , pkgs
 , fetchgit
@@ -154,7 +154,7 @@ stdenv.mkDerivation {
     nodejs
     clojure
     jre
-    python
+    python2
     openssl
     gnutar
     nodePackages."lumo-build-deps-../interpreters/clojurescript/lumo"
diff --git a/pkgs/development/interpreters/cyclone/default.nix b/pkgs/development/interpreters/cyclone/default.nix
index 0d2984904d852..7364cf7d4400c 100644
--- a/pkgs/development/interpreters/cyclone/default.nix
+++ b/pkgs/development/interpreters/cyclone/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchFromGitHub, libck, darwin }:
 
 let
-  version = "0.30.0";
+  version = "0.34.0";
   bootstrap = stdenv.mkDerivation {
     pname = "cyclone-bootstrap";
     inherit version;
@@ -10,7 +10,7 @@ let
       owner = "justinethier";
       repo = "cyclone-bootstrap";
       rev = "v${version}";
-      sha256 = "sha256-/zAcCBdJ7YQXsspdjrMca1Oj9SUUFXQKLwZPoZLhHYg=";
+      sha256 = "sha256-kJBPb0Ej32HveY/vdGpH2gyxSwq8Xq7muneFIw3Y7hM=";
     };
 
     enableParallelBuilding = true;
@@ -30,7 +30,7 @@ stdenv.mkDerivation {
     owner = "justinethier";
     repo = "cyclone";
     rev = "v${version}";
-    sha256 = "sha256-a3wiqKlIbnvIhyrI0lyVGciQiM7KSuYH5iUfGFrgOuM=";
+    sha256 = "sha256-4U/uOTbFpPTC9BmO6Wkhy4PY8UCFVt5eHSGqrOlKT/U=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/dart/default.nix b/pkgs/development/interpreters/dart/default.nix
index 452d0edc3e0a8..366b7df3edd44 100644
--- a/pkgs/development/interpreters/dart/default.nix
+++ b/pkgs/development/interpreters/dart/default.nix
@@ -2,7 +2,7 @@
 , lib
 , fetchurl
 , unzip
-, version ? "2.14.3"
+, version ? "2.15.1"
 , sources ? let
     base = "https://storage.googleapis.com/dart-archive/channels";
     x86_64 = "x64";
@@ -10,24 +10,24 @@
     aarch64 = "arm64";
     # Make sure that if the user overrides version parameter they're
     # also need to override sources, to avoid mistakes
-    version = "2.14.3";
+    version = "2.15.1";
   in
   {
     "${version}-x86_64-darwin" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip";
-      sha256 = "0is4gz99i06yb4jisxcz2c15jqkaz6ayhg9b8zb3s0s8yp59r2iq";
+      sha256 = "sha256-s6bkwh2m5KdRr/WxWXwItO9YaDpp/HI3xjnS2UHmN+I=";
     };
     "${version}-x86_64-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip";
-      sha256 = "0wg1mnj4qrv22z510032jnwb3z39gvzlrv5wic2ci5mg7316xlya";
+      sha256 = "sha256-D0XcqlO0CQtpsne4heqaTLOkFYnJEZET4bl4rVXOM18=";
     };
     "${version}-i686-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${i686}-release.zip";
-      sha256 = "0gnjk3lh63m0naaw67g9w7wys5cgx2ipzd1dznqnlvxp2vj1gj5p";
+      sha256 = "sha256-SRq5TtxS+bwCqVxa0U2Zhn8J1Wtm4Onq+3uQS+951sw=";
     };
     "${version}-aarch64-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip";
-      sha256 = "1j7snnf3a0jly85njq8npqikrdhz9lkirhvik1hkpd9sv7qfbvd6";
+      sha256 = "sha256-iDbClCNDUsxT6K6koc4EQuu7dppTbOfzCVedpQIKI5U=";
     };
   }
 }:
@@ -56,7 +56,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     homepage = "https://www.dartlang.org/";
-    maintainers = with maintainers; [ grburst thiagokokada flexagoon ];
+    maintainers = with maintainers; [ grburst flexagoon ];
     description = "Scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps";
     longDescription = ''
       Dart is a class-based, single inheritance, object-oriented language
diff --git a/pkgs/development/interpreters/elixir/1.13.nix b/pkgs/development/interpreters/elixir/1.13.nix
index 78a7458443e91..0e1ddcc19bf0c 100644
--- a/pkgs/development/interpreters/elixir/1.13.nix
+++ b/pkgs/development/interpreters/elixir/1.13.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.13.1";
-  sha256 = "0z0b1w2vvw4vsnb99779c2jgn9bgslg7b1pmd9vlbv02nza9qj5p";
+  version = "1.13.3";
+  sha256 = "sha256-xOIGMpjemPi1xLiYmFpQR4FD6PzeFBxSJP4QpNnEUSE=";
   minimumOTPVersion = "22";
 }
diff --git a/pkgs/development/interpreters/erlang/R22.nix b/pkgs/development/interpreters/erlang/R22.nix
index 9236ea428948e..9685835434065 100644
--- a/pkgs/development/interpreters/erlang/R22.nix
+++ b/pkgs/development/interpreters/erlang/R22.nix
@@ -3,6 +3,6 @@
 # How to obtain `sha256`:
 # nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
 mkDerivation {
-  version = "22.3.4.20";
-  sha256 = "sha256-EUErOCW16eUb/p5dLpFV7sQ3mXlCF/OgOvGAAyYEvLo=";
+  version = "22.3.4.24";
+  sha256 = "0c9713xa8sjw7nr55hysgcnbvj7gzbrpzdl94y1nqn7vw4ni8is3";
 }
diff --git a/pkgs/development/interpreters/erlang/R23.nix b/pkgs/development/interpreters/erlang/R23.nix
index 3d0a2b1600651..a0d831d631f47 100644
--- a/pkgs/development/interpreters/erlang/R23.nix
+++ b/pkgs/development/interpreters/erlang/R23.nix
@@ -3,6 +3,6 @@
 # How to obtain `sha256`:
 # nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
 mkDerivation {
-  version = "23.3.4.5";
-  sha256 = "2u/w8IPKHEZ+rZ3T7Wn9+Ggxe6JY8cHz8q/N0RjbrNU=";
+  version = "23.3.4.10";
+  sha256 = "0sfz7n748hvhmcygnvb6h31ag35p59aaa9h8gdpqsh6p4hnjh1mf";
 }
diff --git a/pkgs/development/interpreters/erlang/R24.nix b/pkgs/development/interpreters/erlang/R24.nix
index b59626e70671f..b86667ec1e761 100644
--- a/pkgs/development/interpreters/erlang/R24.nix
+++ b/pkgs/development/interpreters/erlang/R24.nix
@@ -3,6 +3,6 @@
 # How to obtain `sha256`:
 # nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
 mkDerivation {
-  version = "24.1.7";
-  sha256 = "sha256-R4rZVMn9AGvOy31eA1dsz2CFMKOG/cXkbLaJtT7zBrU=";
+  version = "24.2";
+  sha256 = "10s57v2i2qqyg3gddm85n3crzrkikl4zfwgzqmxjzdynsyb4xg68";
 }
diff --git a/pkgs/development/interpreters/guile/3.0.nix b/pkgs/development/interpreters/guile/3.0.nix
index 5241c03a954e1..76aa0c4404fc9 100644
--- a/pkgs/development/interpreters/guile/3.0.nix
+++ b/pkgs/development/interpreters/guile/3.0.nix
@@ -99,7 +99,10 @@ builder rec {
 
     # See below.
     "--without-threads"
-  ];
+  ]
+  # Disable JIT on Apple Silicon, as it is not yet supported
+  # https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44505";
+  ++ lib.optional (stdenv.isDarwin && stdenv.isAarch64) "--enable-jit=no";
 
   postInstall = ''
     wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
diff --git a/pkgs/development/interpreters/ivy/default.nix b/pkgs/development/interpreters/ivy/default.nix
new file mode 100644
index 0000000000000..1e994a7a603e9
--- /dev/null
+++ b/pkgs/development/interpreters/ivy/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "ivy";
+  version = "0.1.13";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "robpike";
+    repo = "ivy";
+    sha256 = "sha256-IiQrmmHitKUItm/ZSTQ3jGO3ls8vPPexyOtUvfq3yeU=";
+  };
+
+  vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
+
+  subPackages = [ "." ];
+
+  meta = with lib; {
+    homepage = "https://github.com/robpike/ivy";
+    description = "ivy, an APL-like calculator";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ smasher164 ];
+  };
+}
diff --git a/pkgs/development/interpreters/janet/darwin-remove-net-test.patch b/pkgs/development/interpreters/janet/darwin-remove-net-test.patch
new file mode 100644
index 0000000000000..b2a66d5465ea1
--- /dev/null
+++ b/pkgs/development/interpreters/janet/darwin-remove-net-test.patch
@@ -0,0 +1,20 @@
+diff --git a/test/suite0009.janet b/test/suite0009.janet
+index 6095bc60..25360d60 100644
+--- a/test/suite0009.janet
++++ b/test/suite0009.janet
+@@ -174,15 +174,6 @@
+   (defer (:close stream)
+     (check-matching-names stream)))
+ 
+-# Test localname and peername
+-(repeat 20
+-  (with [s (net/server "127.0.0.1" "8000" names-handler)]
+-    (defn test-names []
+-      (with [conn (net/connect "127.0.0.1" "8000")]
+-        (check-matching-names conn)))
+-    (repeat 20 (test-names)))
+-  (gccollect))
+-
+ # Create pipe
+ 
+ (var pipe-counter 0)
\ No newline at end of file
diff --git a/pkgs/development/interpreters/janet/default.nix b/pkgs/development/interpreters/janet/default.nix
index 35631174e2609..a6ee3dc61fad4 100644
--- a/pkgs/development/interpreters/janet/default.nix
+++ b/pkgs/development/interpreters/janet/default.nix
@@ -2,25 +2,22 @@
 
 stdenv.mkDerivation rec {
   pname = "janet";
-  version = "1.16.1";
+  version = "1.20.0";
 
   src = fetchFromGitHub {
     owner = "janet-lang";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-TzJbHmHIySlf3asQ02HOdehMR+s0KkPifBiaQ4FvFCg=";
+    sha256 = "sha256-mCeOaTbOQej4Uza9fg+xop77z31SQ3sO09dZK8SVAyU=";
   };
 
-  # we don't have /usr/bin/env in the sandbox, so substitute for a proper,
-  # absolute path to janet
-  postPatch = ''
-    substituteInPlace jpm \
-      --replace '/usr/bin/env janet' $out/bin/janet \
-      --replace /usr/local/lib/janet $out/lib \
-      --replace /usr/local           $out
+  # This release fails the test suite on darwin, remove when debugged.
+  # See https://github.com/NixOS/nixpkgs/pull/150618 for discussion.
+  patches = lib.optionals stdenv.isDarwin ./darwin-remove-net-test.patch;
 
+  postPatch = ''
     substituteInPlace janet.1 \
-      --replace /usr/local/lib/janet $out/lib
+      --replace /usr/local/ $out/
   '';
 
   nativeBuildInputs = [ meson ninja ];
@@ -35,5 +32,7 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ andrewchambers peterhoeg ];
     platforms = platforms.all;
+    # Marked as broken when patch is applied, see comment above patch.
+    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/interpreters/janet/jpm.nix b/pkgs/development/interpreters/janet/jpm.nix
new file mode 100644
index 0000000000000..7089308512554
--- /dev/null
+++ b/pkgs/development/interpreters/janet/jpm.nix
@@ -0,0 +1,59 @@
+{ lib, stdenv, fetchFromGitHub, janet }:
+
+let
+  platformFiles = {
+    aarch64-darwin = "macos_config.janet";
+    aarch64-linux = "linux_config.janet";
+    x86_64-darwin = "macos_config.janet";
+    x86_64-linux = "linux_config.janet";
+  };
+
+  platformFile = platformFiles.${stdenv.hostPlatform.system};
+
+in
+stdenv.mkDerivation rec {
+  pname = "jpm";
+  version = "0.0.2";
+
+  src = fetchFromGitHub {
+    owner = "janet-lang";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-nv+vkDjEY711L+C5ibw48DUSNqq2UJiFC2i5LntuBNM=";
+  };
+
+  # `auto-shebangs true` gives us a shebang line that points to janet inside the
+  # jpm bin folder
+  postPatch = ''
+    substituteInPlace configs/${platformFile} \
+      --replace 'auto-shebang true' 'auto-shebang false' \
+      --replace /usr/local $out
+  '';
+
+  dontConfigure = true;
+
+  buildInputs = [ janet ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/{lib/janet,share/man/man1}
+
+    janet bootstrap.janet configs/${platformFile}
+
+    runHook postInstall
+  '';
+
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    $out/bin/jpm help
+  '';
+
+  meta = janet.meta // {
+    description = "Janet Project Manager for the Janet programming language";
+    platforms = lib.attrNames platformFiles;
+  };
+}
diff --git a/pkgs/development/interpreters/joker/default.nix b/pkgs/development/interpreters/joker/default.nix
index 17503fc66ec14..141bda75fa884 100644
--- a/pkgs/development/interpreters/joker/default.nix
+++ b/pkgs/development/interpreters/joker/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "joker";
-  version = "0.17.3";
+  version = "0.18.0";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "candid82";
     repo = "joker";
-    sha256 = "sha256-mm1vFXaQEljsU7Yg+3zDF2MBsc/ePSVF9LezeMWCyL0=";
+    sha256 = "sha256-Iia4sl8lRTpek5aZvQW/yy+TnMq5KNJH+pBnksqL/G0=";
   };
 
   vendorSha256 = "sha256-AYoespfzFLP/jIIxbw5K653wc7sSfLY8K7di8GZ64wA=";
diff --git a/pkgs/development/interpreters/jruby/default.nix b/pkgs/development/interpreters/jruby/default.nix
index 4c19a2da8739f..468f9fac64c1d 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" "5" "7" "";
 jruby = stdenv.mkDerivation rec {
   pname = "jruby";
 
-  version = "9.3.2.0";
+  version = "9.3.3.0";
 
   src = fetchurl {
     url = "https://s3.amazonaws.com/jruby.org/downloads/${version}/jruby-bin-${version}.tar.gz";
-    sha256 = "sha256-JmmcoCvur6gyZXPBElxXpZcbqLlNFfhOazuvJZQkTzM=";
+    sha256 = "sha256-Pagoy+KH1UaFB/HCxCvvbPNLxTYbzWpdmcIHshuf3Fw=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/interpreters/lolcode/default.nix b/pkgs/development/interpreters/lolcode/default.nix
index 65653701b8060..0bb95ed6ea52f 100644
--- a/pkgs/development/interpreters/lolcode/default.nix
+++ b/pkgs/development/interpreters/lolcode/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, pkg-config, doxygen, cmake, readline }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, doxygen, cmake, readline }:
 
 with lib;
 stdenv.mkDerivation rec {
@@ -6,9 +6,11 @@ stdenv.mkDerivation rec {
   pname = "lolcode";
   version = "0.11.2";
 
-  src = fetchurl {
-    url = "https://github.com/justinmeza/lci/archive/v${version}.tar.gz";
-    sha256 = "1li7ikcrs7wqah7gqkirg0k61n6pm12w7pydin966x1sdn9na46b";
+  src = fetchFromGitHub {
+    owner = "justinmeza";
+    repo = "lci";
+    rev = "v${version}";
+    sha256 = "sha256-VMBW3/sw+1kI6iuOckSPU1TIeY6QORcSfFLFkRYw3Gs=";
   };
 
   nativeBuildInputs = [ pkg-config cmake doxygen ];
diff --git a/pkgs/development/interpreters/love/0.10.nix b/pkgs/development/interpreters/love/0.10.nix
index ed002d99fbbe2..2719008bbd9eb 100644
--- a/pkgs/development/interpreters/love/0.10.nix
+++ b/pkgs/development/interpreters/love/0.10.nix
@@ -1,20 +1,18 @@
-{ lib, stdenv, fetchFromBitbucket, pkg-config, SDL2, libGLU, libGL, openal, luajit,
-  libdevil, freetype, physfs, libmodplug, mpg123, libvorbis, libogg,
-  libtheora, which, autoconf, automake, libtool
+{ lib, stdenv, fetchFromGitHub, pkg-config
+, SDL2, libGLU, libGL, openal, luajit
+, libdevil, freetype, physfs, libmodplug, mpg123, libvorbis, libogg
+, libtheora, which, autoconf, automake, libtool
 }:
 
-let
+stdenv.mkDerivation rec {
   pname = "love";
-  version = "0.10.2";
-in
+  version = "11.4";
 
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-  src = fetchFromBitbucket {
-    owner = "rude";
+  src = fetchFromGitHub {
+    owner = "love2d";
     repo = "love";
     rev = version;
-    sha256 = "19yfmlcx6w8yi4ndm5lni8lrsvnn77bxw5py0dc293nzzlaqa9ym";
+    sha256 = "sha256-C/Ifd0KjmaM5Y2fxBiDNz1GQoT4GeH/vyUCiira57U4=";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -32,7 +30,7 @@ stdenv.mkDerivation {
   NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
 
   meta = {
-    homepage = "http://love2d.org";
+    homepage = "https://love2d.org";
     description = "A Lua-based 2D game engine/scripting language";
     license = lib.licenses.zlib;
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/interpreters/love/0.7.nix b/pkgs/development/interpreters/love/0.7.nix
deleted file mode 100644
index 6d8b996f18358..0000000000000
--- a/pkgs/development/interpreters/love/0.7.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ lib, stdenv, fetchurl, pkg-config
-, SDL, libGLU, libGL, openal, lua
-, libdevil, freetype, physfs
-, libmodplug, mpg123, libvorbis, libogg
-, libmng
-}:
-
-stdenv.mkDerivation rec {
-  pname = "love";
-  version = "0.7.2";
-
-  src = fetchurl {
-    url = "https://bitbucket.org/rude/love/downloads/love-${version}-linux-src.tar.gz";
-    sha256 = "0s7jywkvydlshlgy11ilzngrnybmq5xlgzp2v2dhlffwrfqdqym5";
-  };
-
-  # see discussion on arch linux user repository (https://aur.archlinux.org/packages/love07/?setlang=cs#comment-684696)
-  patches = [ ./0.7-gl-prototypes.patch ];
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [
-    SDL libGLU libGL openal lua
-    libdevil freetype physfs libmodplug mpg123 libvorbis libogg libmng
-  ];
-
-  preConfigure = ''
-    luaoptions="${"''"} lua luajit "
-    for i in lua luajit-; do
-      for j in 5 5.0 5.1 5.2 5.3 5.4; do
-        luaoptions="$luaoptions $i$j "
-      done
-    done
-    luaso="$(echo "${lua}/lib/"lib*.so.*)"
-    luaso="''${luaso##*/lib}"
-    luaso="''${luaso%%.so*}"
-    luaoptions="$luaoptions $luaso"
-    sed -e "s/${"''"} lua lua.*;/$luaoptions;/" -i configure
-
-    luaincdir="$(echo "${lua}/include"/*/ )"
-    test -d "$luaincdir" && {
-      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$luaincdir"
-    } || true
-  '';
-
-  NIX_CFLAGS_COMPILE = ''
-    -I${SDL.dev}/include/SDL
-    -I${freetype.dev}include/freetype2
-  '';
-
-  meta = {
-    homepage = "http://love2d.org";
-    description = "A Lua-based 2D game engine/scripting language";
-    license = lib.licenses.zlib;
-
-    platforms = lib.platforms.linux;
-    maintainers = [ lib.maintainers.raskin ];
-  };
-}
diff --git a/pkgs/development/interpreters/love/0.8.nix b/pkgs/development/interpreters/love/0.8.nix
deleted file mode 100644
index 8bad501170dbd..0000000000000
--- a/pkgs/development/interpreters/love/0.8.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ lib, stdenv, fetchurl, pkg-config
-, SDL, libGLU, libGL, openal, lua
-, libdevil, freetype, physfs
-, libmodplug, mpg123, libvorbis, libogg
-}:
-
-stdenv.mkDerivation rec {
-  pname = "love";
-  version = "0.8.0";
-
-  src = fetchurl {
-    url = "https://bitbucket.org/rude/love/downloads/${pname}-${version}-linux-src.tar.gz";
-    sha256 = "1k4fcsa8zzi04ja179bmj24hvqcbm3icfvrvrzyz2gw9qwfclrwi";
-  };
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [
-    SDL libGLU libGL openal lua
-    libdevil freetype physfs libmodplug mpg123 libvorbis libogg
-  ];
-
-  preConfigure = ''
-    luaoptions="${"''"} lua luajit "
-    for i in lua luajit-; do
-      for j in 5 5.0 5.1 5.2 5.3 5.4; do
-        luaoptions="$luaoptions $i$j "
-      done
-    done
-    luaso="$(echo "${lua}/lib/"lib*.so.*)"
-    luaso="''${luaso##*/lib}"
-    luaso="''${luaso%%.so*}"
-    luaoptions="$luaoptions $luaso"
-    sed -e "s/${"''"} lua lua.*;/$luaoptions;/" -i configure
-
-    luaincdir="$(echo "${lua}/include"/*/ )"
-    test -d "$luaincdir" && {
-      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$luaincdir"
-    } || true
-  '';
-
-  NIX_CFLAGS_COMPILE = toString [
-    "-I${SDL.dev}/include/SDL"
-    "-I${freetype.dev}include/freetype2"
-    "-DGL_GLEXT_PROTOTYPES" # https://community.khronos.org/t/glgenbuffers-was-not-declared-in-this-scope/59283/2
-  ];
-
-  meta = {
-    homepage = "http://love2d.org";
-    description = "A Lua-based 2D game engine/scripting language";
-    license = lib.licenses.zlib;
-
-    platforms = lib.platforms.linux;
-    maintainers = [ lib.maintainers.raskin ];
-  };
-}
diff --git a/pkgs/development/interpreters/love/0.9.nix b/pkgs/development/interpreters/love/0.9.nix
deleted file mode 100644
index 512aade7f9539..0000000000000
--- a/pkgs/development/interpreters/love/0.9.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, stdenv, fetchurl, pkg-config
-, SDL2, libGLU, libGL, openal, luajit
-, libdevil, freetype, physfs
-, libmodplug, mpg123, libvorbis, libogg
-}:
-
-stdenv.mkDerivation rec {
-  pname = "love";
-  version = "0.9.1";
-
-  src = fetchurl {
-    url = "https://bitbucket.org/rude/love/downloads/love-${version}-linux-src.tar.gz";
-    sha256 = "1pikd0bzb44r4bf0jbgn78whz1yswpq1n5jc8nf87v42pm30kp84";
-  };
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [
-    SDL2 libGLU libGL openal luajit
-    libdevil freetype physfs libmodplug mpg123 libvorbis libogg
-  ];
-
-  configureFlags = [
-    "--with-lua=luajit"
-  ];
-
-  NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3
-
-  meta = {
-    homepage = "http://love2d.org";
-    description = "A Lua-based 2D game engine/scripting language";
-    license = lib.licenses.zlib;
-
-    platforms = lib.platforms.linux;
-    maintainers = [ lib.maintainers.raskin ];
-    broken = true;
-  };
-}
diff --git a/pkgs/development/interpreters/love/11.1.nix b/pkgs/development/interpreters/love/11.nix
index bf76547a07a73..83095ac0924ec 100644
--- a/pkgs/development/interpreters/love/11.1.nix
+++ b/pkgs/development/interpreters/love/11.nix
@@ -1,20 +1,18 @@
-{ lib, stdenv, fetchFromBitbucket, pkg-config, SDL2, libGLU, libGL, openal, luajit,
-  libdevil, freetype, physfs, libmodplug, mpg123, libvorbis, libogg,
-  libtheora, which, autoconf, automake, libtool
+{ lib, stdenv, fetchFromGitHub, pkg-config
+, SDL2, libGLU, libGL, openal, luajit
+, libdevil, freetype, physfs, libmodplug, mpg123, libvorbis, libogg
+, libtheora, which, autoconf, automake, libtool
 }:
 
-let
+stdenv.mkDerivation rec {
   pname = "love";
-  version = "11.3";
-in
+  version = "11.4";
 
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
-  src = fetchFromBitbucket {
-    owner = "rude";
+  src = fetchFromGitHub {
+    owner = "love2d";
     repo = "love";
     rev = version;
-    sha256 = "18gfp65ngb8k8g7hgbw2bhrwk2i7m56m21d39pk4484q9z8p4vm7";
+    sha256 = "0kpdp6v8m8j0r7ppyy067shr0lfgrlh0dwb7ccws76d389vizwhb";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -32,7 +30,7 @@ stdenv.mkDerivation {
   NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
 
   meta = {
-    homepage = "http://love2d.org";
+    homepage = "https://love2d.org";
     description = "A Lua-based 2D game engine/scripting language";
     license = lib.licenses.zlib;
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix
index 87de82eb2630b..4e2931aa76885 100644
--- a/pkgs/development/interpreters/luajit/default.nix
+++ b/pkgs/development/interpreters/luajit/default.nix
@@ -113,6 +113,6 @@ stdenv.mkDerivation rec {
     homepage = "http://luajit.org";
     license = licenses.mit;
     platforms = platforms.linux ++ platforms.darwin;
-    maintainers = with maintainers; [ thoughtpolice smironov vcunat andir lblasc ];
+    maintainers = with maintainers; [ thoughtpolice smironov vcunat lblasc ];
   } // extraMeta;
 }
diff --git a/pkgs/development/interpreters/lunatic/default.nix b/pkgs/development/interpreters/lunatic/default.nix
index cf4339c69ac49..425060e240d44 100644
--- a/pkgs/development/interpreters/lunatic/default.nix
+++ b/pkgs/development/interpreters/lunatic/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "lunatic";
-  version = "0.7.0";
+  version = "0.7.5";
 
   src = fetchFromGitHub {
     owner = "lunatic-solutions";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-+4014p+4QJ7nytFHHszAOYQHXLYXqR+Cip+vHxsH9l8=";
+    sha256 = "sha256-HqDrGoyYzdx8OTanlRd95L1wAtFeew7Xs2rZ7nK2Zus=";
   };
 
-  cargoSha256 = "sha256-RnaAiumTP4cW2eHUbnwyPdgJQLK65gqDI/NP2SOrO4E=";
+  cargoSha256 = "sha256-t3EwVYrKx7dvUcSp0B1iUAklg7WdQDld/T0O1HgHw54=";
 
   nativeBuildInputs = [ cmake ];
 
diff --git a/pkgs/development/interpreters/micropython/default.nix b/pkgs/development/interpreters/micropython/default.nix
index 7591e997beb2c..3c85b67a942df 100644
--- a/pkgs/development/interpreters/micropython/default.nix
+++ b/pkgs/development/interpreters/micropython/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "micropython";
-  version = "1.17";
+  version = "1.18";
 
   src = fetchFromGitHub {
     owner  = "micropython";
     repo   = "micropython";
     rev    = "v${version}";
-    sha256 = "0aqij36iykmfdsv5dqrifvghmjx7qid8hmbxcpx3xpk3nizh7w84";
+    sha256 = "sha256-roskIDyY3ehasOm8Yn4braLNZtaeuItb9ZOUgF4CXww=";
     fetchSubmodules = true;
   };
 
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
 
   skippedTests = ""
-    + lib.optionalString (stdenv.isDarwin) " -e uasyncio_basic -e uasyncio_wait_task"
+    + lib.optionalString (stdenv.isDarwin) " -e uasyncio_basic -e uasyncio_heaplock -e uasyncio_wait_task"
     + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) " -e ffi_callback"
     + lib.optionalString (stdenv.isLinux && stdenv.isAarch64) " -e float_parse"
   ;
diff --git a/pkgs/development/interpreters/nextflow/default.nix b/pkgs/development/interpreters/nextflow/default.nix
new file mode 100644
index 0000000000000..c182214ccbb00
--- /dev/null
+++ b/pkgs/development/interpreters/nextflow/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenv
+, fetchurl
+, makeWrapper
+, jre
+, wget
+, which
+, gnused
+, gawk
+, coreutils
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nextflow";
+  version = "21.10.6";
+
+  src = fetchurl {
+    url = "https://github.com/nextflow-io/nextflow/releases/download/v${version}/nextflow-${version}-all";
+    sha256 = "0l9hi51vrhvfx3px2pxw7lp4h21n8ks50x4icfk3hbgl2hwf7fvx";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre wget which gnused gawk coreutils ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    install -Dm755 $src $out/bin/nextflow
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/nextflow --prefix PATH : ${lib.makeBinPath buildInputs}
+  '';
+
+  meta = with lib; {
+    description = "A DSL for data-driven computational pipelines";
+    longDescription = ''
+      Nextflow is a bioinformatics workflow manager that enables the development of portable and reproducible workflows.
+
+      It supports deploying workflows on a variety of execution platforms including local, HPC schedulers, AWS Batch, Google Cloud Life Sciences, and Kubernetes.
+
+      Additionally, it provides support for manage your workflow dependencies through built-in support for Conda, Docker, Singularity, and Modules.
+    '';
+    homepage = "https://www.nextflow.io/";
+    changelog = "https://github.com/nextflow-io/nextflow/releases";
+    license = licenses.asl20;
+    maintainers = [ maintainers.Etjean ];
+    mainProgram = "nextflow";
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/interpreters/php/7.4.nix b/pkgs/development/interpreters/php/7.4.nix
index 1cc63d7b58a42..316b37f2e099a 100644
--- a/pkgs/development/interpreters/php/7.4.nix
+++ b/pkgs/development/interpreters/php/7.4.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "7.4.26";
-    sha256 = "0k803j5wf4jv72px0zqz2z2hxyk2w3jr6xyczy568dx4z2l8i2yn";
+    version = "7.4.27";
+    sha256 = "184aaef313fbf28c9987f6aa07b655cd1b0eae9e7e17061775a3e7d880185563";
   });
 
 in
diff --git a/pkgs/development/interpreters/php/8.0.nix b/pkgs/development/interpreters/php/8.0.nix
index 8cf7d4ebc8dfd..b34f5974ff4e4 100644
--- a/pkgs/development/interpreters/php/8.0.nix
+++ b/pkgs/development/interpreters/php/8.0.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "8.0.13";
-    sha256 = "0djqh650clz4fy1zifazf0jq383znksydx23f1s48prrlixrshf2";
+    version = "8.0.14";
+    sha256 = "0jydl388mpysrrxa7h9sxf3fpp38mmygg9ryq8j7rb8p93giyf5v";
   });
 
 in
diff --git a/pkgs/development/interpreters/php/8.1.nix b/pkgs/development/interpreters/php/8.1.nix
index 736d6c808cde4..d339e78010187 100644
--- a/pkgs/development/interpreters/php/8.1.nix
+++ b/pkgs/development/interpreters/php/8.1.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "8.1.1";
-    sha256 = "sha256-j4vJytbNEk7cER99sKEJdF4vY4dwoQGzwiopU/eptA4=";
+    version = "8.1.2";
+    sha256 = "1aakbfgjffha4v7fl6229wwzavw59s1qkb547sipyhl88gfwfgci";
   });
 
 in
diff --git a/pkgs/development/interpreters/pyrex/0.9.5.nix b/pkgs/development/interpreters/pyrex/0.9.5.nix
deleted file mode 100644
index 3fb909b0bb0d2..0000000000000
--- a/pkgs/development/interpreters/pyrex/0.9.5.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ lib, fetchurl, python2Packages }:
-
-python2Packages.buildPythonPackage rec {
-  pname = "pyrex";
-  version = "0.9.5.1.1";
-
-  src = fetchurl {
-    url = "https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/oldtar/Pyrex-${version}.tar.gz";
-    sha256 = "0lxxvn4mjfb83swcbqb5908q4iy53w4ip5i0f9angm2va1jyhd3z";
-  };
-
-  doCheck = false;
-
-  meta = {
-    homepage = "http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/";
-    description = "A language for writing Python extension modules";
-    license = lib.licenses.asl20;
-  };
-}
diff --git a/pkgs/development/interpreters/pyrex/0.9.6.nix b/pkgs/development/interpreters/pyrex/0.9.6.nix
deleted file mode 100644
index e9d8d3097093a..0000000000000
--- a/pkgs/development/interpreters/pyrex/0.9.6.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ lib, fetchurl, python2Packages }:
-
-python2Packages.buildPythonPackage rec {
-  pname = "pyrex";
-  version = "0.9.6.4";
-
-  src = fetchurl {
-    url = "https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/oldtar/Pyrex-${version}.tar.gz";
-    sha256 = "18pd9f8al3l6i27cc0ddhgg7hxf28lnfs75x4a8jzscydxgiq5a8";
-  };
-
-  doCheck = false;
-
-  meta = {
-    homepage = "http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/";
-    description = "A language for writing Python extension modules";
-    license = lib.licenses.asl20;
-  };
-}
diff --git a/pkgs/development/interpreters/python/cpython/default.nix b/pkgs/development/interpreters/python/cpython/default.nix
index e4a974a255b89..1bcbd2bb4b5e9 100644
--- a/pkgs/development/interpreters/python/cpython/default.nix
+++ b/pkgs/development/interpreters/python/cpython/default.nix
@@ -4,7 +4,7 @@
 , libffi
 , gdbm
 , xz
-, mime-types ? null, mimetypesSupport ? true
+, mailcap, mimetypesSupport ? true
 , ncurses
 , openssl
 , readline
@@ -17,6 +17,7 @@
 , configd
 , autoreconfHook
 , autoconf-archive
+, pkg-config
 , python-setup-hook
 , nukeReferences
 # For the Python package set
@@ -62,8 +63,6 @@ assert x11Support -> tcl != null
 
 assert bluezSupport -> bluez != null;
 
-assert mimetypesSupport -> mime-types != null;
-
 assert lib.assertMsg (enableOptimizations -> (!stdenv.cc.isClang))
   "Optimizations with clang are not supported. configure: error: llvm-profdata is required for a --enable-optimizations build but could not be found.";
 
@@ -105,7 +104,7 @@ let
 
   nativeBuildInputs = optionals (!stdenv.isDarwin) [
     autoreconfHook
-  ] ++ optionals (!stdenv.isDarwin && passthru.pythonAtLeast "3.10") [
+    pkg-config
     autoconf-archive # needed for AX_CHECK_COMPILE_FLAG
   ] ++ [
     nukeReferences
@@ -193,7 +192,8 @@ in with passthru; stdenv.mkDerivation {
   prePatch = optionalString stdenv.isDarwin ''
     substituteInPlace configure --replace '`/usr/bin/arch`' '"i386"'
     substituteInPlace configure --replace '-Wl,-stack_size,1000000' ' '
-  '' + optionalString (stdenv.isDarwin && x11Support) ''
+  '' + optionalString (pythonOlder "3.9" && stdenv.isDarwin && x11Support) ''
+    # Broken on >= 3.9; replaced with ./3.9/darwin-tcl-tk.patch
     substituteInPlace setup.py --replace /Library/Frameworks /no-such-path
   '';
 
@@ -276,7 +276,7 @@ in with passthru; stdenv.mkDerivation {
       --replace "'/bin/sh'" "'${bash}/bin/sh'"
   '' + optionalString mimetypesSupport ''
     substituteInPlace Lib/mimetypes.py \
-      --replace "@mime-types@" "${mime-types}"
+      --replace "@mime-types@" "${mailcap}"
   '' + optionalString (x11Support && (tix != null)) ''
     substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
   '';
diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix
index 3e53ea251a27b..6bee51f64232a 100644
--- a/pkgs/development/interpreters/python/default.nix
+++ b/pkgs/development/interpreters/python/default.nix
@@ -133,10 +133,19 @@ with pkgs;
       sourceVersion = {
         major = "3";
         minor = "9";
-        patch = "9";
+        patch = "10";
         suffix = "";
       };
-      sha256 = "sha256-BoKMBKVzwHOk5RxCkqJ8G+SuJmIcPtx8+TGEGM47bSc=";
+      sha256 = "sha256-Co+/tSh+vDoT6brz1U4I+gZ3j/7M9jEa74Ibs6ZYbMg=";
+    };
+    python310 = {
+      sourceVersion = {
+        major = "3";
+        minor = "10";
+        patch = "2";
+        suffix = "";
+      };
+      sha256 = "sha256-F946x9qfJRmqnWQ3jGA6c6DprVjf+ogS5FFgwIbeZMc=";
     };
   };
 
@@ -180,18 +189,11 @@ in {
     inherit passthruFun;
   } // sources.python39);
 
-  python310 = callPackage ./cpython {
+  python310 = callPackage ./cpython ({
     self = python310;
-    sourceVersion = {
-      major = "3";
-      minor = "10";
-      patch = "0";
-      suffix = "";
-    };
-    sha256 = "00mhn6kj4qkvkkv6hh2klnnjr0yk0c9hspp7njc7n6m1lvkzi6as";
     inherit (darwin) configd;
     inherit passthruFun;
-  };
+  } // sources.python310);
 
   python311 = callPackage ./cpython {
     self = python311;
@@ -199,9 +201,9 @@ in {
       major = "3";
       minor = "11";
       patch = "0";
-      suffix = "a2";
+      suffix = "a4";
     };
-    sha256 = "sha256-aKjE1s4lSKe2F9aZ+9s0iTe9rODPltsaoIOEnfXa0T8=";
+    sha256 = "sha256-Q3/nN2w2Pa+vNM6A8ERrQfyaQsDiqMflGdPwoLfPs+0=";
     inherit (darwin) configd;
     inherit passthruFun;
   };
@@ -219,6 +221,7 @@ in {
     sqlite = null;
     configd = null;
     tzdata = null;
+    libffi = pkgs.libffiBoot; # without test suite
     stripConfig = true;
     stripIdlelib = true;
     stripTests = true;
@@ -273,29 +276,29 @@ in {
     sha256 = "sha256-LtAqyecQhZxBvILer7CGGXkruaJ+6qFnbHQe3t0hTdc=";
   };
 
-  pypy27_prebuilt = callPackage ./pypy/prebuilt.nix {
+  pypy27_prebuilt = callPackage ./pypy/prebuilt_2_7.nix {
     # Not included at top-level
     self = pythonInterpreters.pypy27_prebuilt;
     sourceVersion = {
       major = "7";
       minor = "3";
-      patch = "3";
+      patch = "6";
     };
-    sha256 = "1cfpdyvbvzwc0ynjr7248jhwgcpl7073wlp7w3g2v4fnrh1bc4pl"; # linux64
+    sha256 = "sha256-ghJ/Q/rmznXUfWxFOfjB6jcunC2/pA+ui1g1HVInk6Q="; # linux64
     pythonVersion = "2.7";
     inherit passthruFun;
   };
 
-  pypy36_prebuilt = callPackage ./pypy/prebuilt.nix {
+  pypy38_prebuilt = callPackage ./pypy/prebuilt.nix {
     # Not included at top-level
-    self = pythonInterpreters.pypy36_prebuilt;
+    self = pythonInterpreters.pypy38_prebuilt;
     sourceVersion = {
       major = "7";
       minor = "3";
-      patch = "3";
+      patch = "7";
     };
-    sha256 = "02lys9bjky9bqg6ggv8djirbd3zzcsq7755v4yvwm0k4a7fmzf2g"; # linux64
-    pythonVersion = "3.6";
+    sha256 = "sha256-Xe43x8PLixYAKPveOlkBxoBD36VFoWeUUCuJfUvEDX4="; # linux64
+    pythonVersion = "3.8";
     inherit passthruFun;
   };
 
diff --git a/pkgs/development/interpreters/python/pypy/prebuilt.nix b/pkgs/development/interpreters/python/pypy/prebuilt.nix
index 460af1cc67b4f..69de6e94e3781 100644
--- a/pkgs/development/interpreters/python/pypy/prebuilt.nix
+++ b/pkgs/development/interpreters/python/pypy/prebuilt.nix
@@ -6,8 +6,9 @@
 , which
 # Dependencies
 , bzip2
+, sqlite
 , zlib
-, openssl_1_0_2
+, openssl
 , expat
 , ncurses6
 , tcl-8_5
@@ -27,12 +28,12 @@ with lib;
 
 let
   isPy3k = majorVersion == "3";
-  passthru = passthruFun {
+  passthru = passthruFun rec {
     inherit self sourceVersion pythonVersion packageOverrides;
     implementation = "pypy";
     libPrefix = "pypy${pythonVersion}";
     executable = "pypy${if isPy3k then "3" else ""}";
-    sitePackages = "site-packages";
+    sitePackages = "lib/${libPrefix}/site-packages";
     hasDistutilsCxxPatch = false;
 
     # Not possible to cross-compile with.
@@ -49,8 +50,9 @@ let
 
   deps = [
     bzip2
+    sqlite
     zlib
-    openssl_1_0_2
+    openssl
     expat
     ncurses6
     tcl-8_5
@@ -68,10 +70,9 @@ in with passthru; stdenv.mkDerivation {
   buildInputs = [ which ];
 
   installPhase = ''
-    mkdir -p $out/lib
+    mkdir -p $out
     echo "Moving files to $out"
-    mv -t $out bin include lib-python lib_pypy site-packages
-    mv lib/libffi.so.6* $out/lib/
+    mv -t $out bin include lib
 
     mv $out/bin/libpypy*-c.so $out/lib/
 
@@ -84,8 +85,9 @@ in with passthru; stdenv.mkDerivation {
              $out/bin/pypy*
 
     pushd $out
-    find {lib,lib_pypy*} -name "*.so" -exec patchelf --remove-needed libncursesw.so.6 --replace-needed libtinfow.so.6 libncursesw.so.6 {} \;
-    find {lib,lib_pypy*} -name "*.so" -exec patchelf --set-rpath ${lib.makeLibraryPath deps}:$out/lib {} \;
+
+    find ./lib -name "*.so" -exec patchelf --remove-needed libncursesw.so.6 --replace-needed libtinfow.so.6 libncursesw.so.6 {} \;
+    find ./lib -name "*.so" -exec patchelf --set-rpath ${lib.makeLibraryPath deps}:$out/lib {} \;
 
     echo "Removing bytecode"
     find . -name "__pycache__" -type d -depth -exec rm -rf {} \;
diff --git a/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix b/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix
new file mode 100644
index 0000000000000..460af1cc67b4f
--- /dev/null
+++ b/pkgs/development/interpreters/python/pypy/prebuilt_2_7.nix
@@ -0,0 +1,132 @@
+{ lib
+, stdenv
+, fetchurl
+, python-setup-hook
+, self
+, which
+# Dependencies
+, bzip2
+, zlib
+, openssl_1_0_2
+, expat
+, ncurses6
+, tcl-8_5
+, tk-8_5
+# For the Python package set
+, packageOverrides ? (self: super: {})
+, sourceVersion
+, pythonVersion
+, sha256
+, passthruFun
+}:
+
+# This version of PyPy is primarily added to speed-up translation of
+# our PyPy source build when developing that expression.
+
+with lib;
+
+let
+  isPy3k = majorVersion == "3";
+  passthru = passthruFun {
+    inherit self sourceVersion pythonVersion packageOverrides;
+    implementation = "pypy";
+    libPrefix = "pypy${pythonVersion}";
+    executable = "pypy${if isPy3k then "3" else ""}";
+    sitePackages = "site-packages";
+    hasDistutilsCxxPatch = false;
+
+    # Not possible to cross-compile with.
+    pythonOnBuildForBuild = throw "${pname} does not support cross compilation";
+    pythonOnBuildForHost = self;
+    pythonOnBuildForTarget = throw "${pname} does not support cross compilation";
+    pythonOnHostForHost = throw "${pname} does not support cross compilation";
+    pythonOnTargetForTarget = throw "${pname} does not support cross compilation";
+  };
+  pname = "${passthru.executable}_prebuilt";
+  version = with sourceVersion; "${major}.${minor}.${patch}";
+
+  majorVersion = substring 0 1 pythonVersion;
+
+  deps = [
+    bzip2
+    zlib
+    openssl_1_0_2
+    expat
+    ncurses6
+    tcl-8_5
+    tk-8_5
+  ];
+
+in with passthru; stdenv.mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://downloads.python.org/pypy/pypy${pythonVersion}-v${version}-linux64.tar.bz2";
+    inherit sha256;
+  };
+
+  buildInputs = [ which ];
+
+  installPhase = ''
+    mkdir -p $out/lib
+    echo "Moving files to $out"
+    mv -t $out bin include lib-python lib_pypy site-packages
+    mv lib/libffi.so.6* $out/lib/
+
+    mv $out/bin/libpypy*-c.so $out/lib/
+
+    rm $out/bin/*.debug
+
+    echo "Patching binaries"
+    interpreter=$(patchelf --print-interpreter $(readlink -f $(which patchelf)))
+    patchelf --set-interpreter $interpreter \
+             --set-rpath $out/lib \
+             $out/bin/pypy*
+
+    pushd $out
+    find {lib,lib_pypy*} -name "*.so" -exec patchelf --remove-needed libncursesw.so.6 --replace-needed libtinfow.so.6 libncursesw.so.6 {} \;
+    find {lib,lib_pypy*} -name "*.so" -exec patchelf --set-rpath ${lib.makeLibraryPath deps}:$out/lib {} \;
+
+    echo "Removing bytecode"
+    find . -name "__pycache__" -type d -depth -exec rm -rf {} \;
+    popd
+
+    # Include a sitecustomize.py file
+    cp ${../sitecustomize.py} $out/${sitePackages}/sitecustomize.py
+
+  '';
+
+  doInstallCheck = true;
+
+  # Check whether importing of (extension) modules functions
+  installCheckPhase = let
+    modules = [
+      "ssl"
+      "sys"
+      "curses"
+    ] ++ optionals (!isPy3k) [
+      "Tkinter"
+    ] ++ optionals isPy3k [
+      "tkinter"
+    ];
+    imports = concatMapStringsSep "; " (x: "import ${x}") modules;
+  in ''
+    echo "Testing whether we can import modules"
+    $out/bin/${executable} -c '${imports}'
+  '';
+
+  setupHook = python-setup-hook sitePackages;
+
+  donPatchElf = true;
+  dontStrip = true;
+
+  inherit passthru;
+
+  meta = with lib; {
+    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/update-python-libraries/update-python-libraries.py b/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py
index 3a6a14133ea37..5f55ed5ecaf1a 100755
--- a/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py
+++ b/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py
@@ -242,7 +242,9 @@ DEFAULT_SETUPTOOLS_EXTENSION = 'tar.gz'
 
 FORMATS = {
     'setuptools'        :   DEFAULT_SETUPTOOLS_EXTENSION,
-    'wheel'             :   'whl'
+    'wheel'             :   'whl',
+    'pyproject'         :   'tar.gz',
+    'flit'              :   'tar.gz'
 }
 
 def _determine_fetcher(text):
@@ -281,12 +283,8 @@ def _determine_extension(text, fetcher):
         if extension is None:
             if src_format is None:
                 src_format = 'setuptools'
-            elif src_format == 'flit':
-                raise ValueError("Don't know how to update a Flit package.")
             elif src_format == 'other':
                 raise ValueError("Don't know how to update a format='other' package.")
-            elif src_format == 'pyproject':
-                raise ValueError("Don't know how to update a pyproject package.")
             extension = FORMATS[src_format]
 
     elif fetcher == 'fetchurl':
@@ -342,19 +340,35 @@ def _update_package(path, target):
         raise ValueError("no file available for {}.".format(pname))
 
     text = _replace_value('version', new_version, text)
+    # hashes from pypi are 16-bit encoded sha256's, normalize it to sri to avoid merge conflicts
+    # sri hashes have been the default format since nix 2.4+
+    try:
+        sri_hash = subprocess.check_output(["nix", "hash", "to-sri", "--type", "sha256", new_sha256]).decode('utf-8').strip()
+    except subprocess.CalledProcessError:
+        # nix<2.4 compat
+        sri_hash = subprocess.check_output(["nix", "to-sri", "--type", "sha256", new_sha256]).decode('utf-8').strip()
+
 
     # fetchers can specify a sha256, or a sri hash
     try:
-        text = _replace_value('sha256', new_sha256, text)
+        text = _replace_value('sha256', sri_hash, text)
     except ValueError:
-        # hashes from pypi are 16-bit encoded sha256's, need translate to an sri hash if used with "hash"
-        sri_hash = subprocess.check_output(["nix", "hash", "to-sri", "--type", "sha256", new_sha256]).decode('utf-8').strip()
         text = _replace_value('hash', sri_hash, text)
 
     if fetcher == 'fetchFromGitHub':
-        text = _replace_value('rev', f"{prefix}${{version}}", text)
-        # incase there's no prefix, just rewrite without interpolation
-        text = text.replace('"${version}";', 'version;')
+        # in the case of fetchFromGitHub, it's common to see `rev = version;`
+        # in which no string value is meant to be substituted.
+        # Verify that the attribute is set to a variable
+        regex = '(rev\s+=\s+([_a-zA-Z][_a-zA-Z0-9\.]*);)'
+        regex = re.compile(regex)
+        value = regex.findall(text)
+        n = len(value)
+
+        if n == 0:
+            # value is set to a string, e.g. `rev = "v${version}";`
+            text = _replace_value('rev', f"{prefix}${{version}}", text)
+            # incase there's no prefix, just rewrite without interpolation
+            text = text.replace('"${version}";', 'version;')
 
     with open(path, 'w') as f:
         f.write(text)
diff --git a/pkgs/development/interpreters/quickjs/default.nix b/pkgs/development/interpreters/quickjs/default.nix
index 4bc0ec528a016..cc5487183db38 100644
--- a/pkgs/development/interpreters/quickjs/default.nix
+++ b/pkgs/development/interpreters/quickjs/default.nix
@@ -55,5 +55,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ stesie AndersonTorres ];
     platforms = platforms.linux;
     license = licenses.mit;
+    mainProgram = "qjs";
   };
 }
diff --git a/pkgs/development/interpreters/racket/default.nix b/pkgs/development/interpreters/racket/default.nix
index 73ce0c1bc81b6..bd96562d9e5dd 100644
--- a/pkgs/development/interpreters/racket/default.nix
+++ b/pkgs/development/interpreters/racket/default.nix
@@ -37,6 +37,7 @@ let
     libjpeg
     libpng
     mpfr
+    ncurses
     openssl
     pango
     poppler
@@ -48,7 +49,7 @@ in
 
 stdenv.mkDerivation rec {
   pname = "racket";
-  version = "8.3"; # always change at once with ./minimal.nix
+  version = "8.4"; # always change at once with ./minimal.nix
 
   src = (lib.makeOverridable ({ name, sha256 }:
     fetchurl {
@@ -57,7 +58,7 @@ stdenv.mkDerivation rec {
     }
   )) {
     name = "${pname}-${version}";
-    sha256 = "sha256-M90MIIRsfF/fhK8twlD3ZRBO0ztQkb4VKp9o8eJUFFc=";
+    sha256 = "sha256-uJ+vL+FtBNILkFbwi7qZ6yBA1Rcr7o886zmZ/tFuatM=";
   };
 
   FONTCONFIG_FILE = fontsConf;
@@ -69,14 +70,21 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cacert wrapGAppsHook ];
 
-  buildInputs = [ fontconfig libffi libtool sqlite gsettings-desktop-schemas gtk3 ]
-    ++ lib.optionals stdenv.isDarwin [ libiconv CoreFoundation ncurses ];
+  buildInputs = [ fontconfig libffi libtool sqlite gsettings-desktop-schemas gtk3 ncurses ]
+    ++ lib.optionals stdenv.isDarwin [ libiconv CoreFoundation ];
 
   patches = [
     # Hardcode variant detection because we wrap the Racket binary making it
     # fail to detect its variant at runtime.
     # See: https://github.com/NixOS/nixpkgs/issues/114993#issuecomment-812951247
     ./force-cs-variant.patch
+
+    # The entry point binary $out/bin/racket is codesigned at least once. The
+    # following error is triggered as a result.
+    # (error 'add-ad-hoc-signature "file already has a signature")
+    # We always remove the existing signature then call add-ad-hoc-signature to
+    # circumvent this error.
+    ./force-remove-codesign-then-add.patch
   ];
 
   preConfigure = ''
@@ -89,10 +97,34 @@ stdenv.mkDerivation rec {
         --replace /bin/rm ${coreutils}/bin/rm \
         --replace /bin/true ${coreutils}/bin/true
     done
+
+    # The configure script forces using `libtool -o` as AR on Darwin. But, the
+    # `-o` option is only available from Apple libtool. GNU ar works here.
+    substituteInPlace src/ChezScheme/zlib/configure \
+        --replace 'ARFLAGS="-o"' 'AR=ar; ARFLAGS="rc"'
+
     mkdir src/build
     cd src/build
 
-    gappsWrapperArgs+=("--prefix" "LD_LIBRARY_PATH" ":" ${LD_LIBRARY_PATH})
+  '' + lib.optionalString stdenv.isLinux ''
+    gappsWrapperArgs+=("--prefix"   "LD_LIBRARY_PATH" ":" ${libPath})
+  '' + lib.optionalString stdenv.isDarwin ''
+    gappsWrapperArgs+=("--prefix" "DYLD_LIBRARY_PATH" ":" ${libPath})
+  ''
+  ;
+
+  preBuild = lib.optionalString stdenv.isDarwin ''
+    # Cannot set DYLD_LIBRARY_PATH as an attr of this drv, becasue dynamic
+    # linker environment variables like this are purged.
+    # See: https://apple.stackexchange.com/a/212954/167199
+
+    # Make builders feed it to dlopen(...). Do not expose all of $libPath to
+    # DYLD_LIBRARY_PATH as the order of looking up symbols like
+    # `__cg_jpeg_resync_to_restart` will be messed up. Our libJPEG.dyllib
+    # expects it from our libTIFF.dylib, but instead it could not be found from
+    # the system `libTIFF.dylib`. DYLD_FALLBACK_LIBRARY_PATH has its own problem
+    # , too.
+    export DYLD_FALLBACK_LIBRARY_PATH="${libPath}"
   '';
 
   shared = if stdenv.isDarwin then "dylib" else "shared";
@@ -118,6 +150,6 @@ stdenv.mkDerivation rec {
     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" ];
+    platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" "aarch64-darwin" ];
   };
 }
diff --git a/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch b/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch
new file mode 100644
index 0000000000000..c34457ceb9506
--- /dev/null
+++ b/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch
@@ -0,0 +1,11 @@
+--- old/src/mac/codesign.rkt        2022-01-08 18:25:53.000000000 -0500
++++ new/src/mac/codesign.rkt        2022-02-15 15:49:51.000000000 -0500
+@@ -17,6 +17,5 @@
+    #:args (file)
+    file))
+
+-(if remove?
+-    (remove-signature file)
+-    (add-ad-hoc-signature file))
++(remove-signature file)
++(add-ad-hoc-signature file)
diff --git a/pkgs/development/interpreters/racket/minimal.nix b/pkgs/development/interpreters/racket/minimal.nix
index c7defc8bfa6b8..e56945ed651d1 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 = "sha256-3GdnP1D0XMW34u4mAronxKXe08A3tawM8cpSC7nDfWI=";
+    sha256 = "sha256-FZlUWvjtioe4S8gPetj7vdneVX6jEFguJo4j2wJsKAw=";
   };
 
   meta = oldAttrs.meta // {
@@ -14,7 +14,7 @@ racket.overrideAttrs (oldAttrs: rec {
       as well as libraries that live in collections. In particular, raco
       and the pkg library are still bundled.
     '';
-    platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
+    platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     broken = false; # Minimal build does not require working FFI
   };
 })
diff --git a/pkgs/development/interpreters/rakudo/default.nix b/pkgs/development/interpreters/rakudo/default.nix
index 254228ea55bb5..9de6c1b12398d 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 = "2021.12";
+  version = "2022.02";
 
   src = fetchurl {
     url = "https://rakudo.org/dl/rakudo/rakudo-${version}.tar.gz";
-    sha256 = "sha256-f1PSxxONE6sBaS1b19vCjz8p7Ya9ltUoCFb1WhqwVAY=";
+    sha256 = "sha256-am6dvMbZoWEKNMbsZ+LT9pTXsz6eCg8iRUMIn6f3EzI=";
   };
 
   nativeBuildInputs = [ removeReferencesTo ];
diff --git a/pkgs/development/interpreters/rakudo/moarvm.nix b/pkgs/development/interpreters/rakudo/moarvm.nix
index cbc283ce25f2f..41462e67a4c98 100644
--- a/pkgs/development/interpreters/rakudo/moarvm.nix
+++ b/pkgs/development/interpreters/rakudo/moarvm.nix
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation rec {
   pname = "moarvm";
-  version = "2021.12";
+  version = "2022.02";
 
   src = fetchurl {
     url = "https://moarvm.org/releases/MoarVM-${version}.tar.gz";
-    sha256 = "sha256-1Ju+sQ2WFsLYen+t0ca7elzhHBnHxEu7i+928ltQXE8=";
+    sha256 = "sha256-T5PNzmuKVloyKCuzjMlxzv63H10CLIUMM47oFFV07pY=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/interpreters/rakudo/nqp.nix b/pkgs/development/interpreters/rakudo/nqp.nix
index 8a64430d24a0c..57cdef94c02d2 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 = "2021.12";
+  version = "2022.02";
 
   src = fetchurl {
     url = "https://github.com/raku/nqp/releases/download/${version}/nqp-${version}.tar.gz";
-    sha256 = "sha256-Dh1TT9HuYaTIByMJuvvARmDprnLYhhjaoOjxUCLw2RM=";
+    sha256 = "sha256-JdPJl0XNhPQEmpvZzya7XcgXklq6r+ccm9tohBzbGLE=";
   };
 
   buildInputs = [ perl ];
diff --git a/pkgs/development/interpreters/rakudo/zef.nix b/pkgs/development/interpreters/rakudo/zef.nix
index d151c6765bf3a..7a809875111f4 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.13.4";
+  version = "0.13.7";
 
   src = fetchFromGitHub {
     owner = "ugexe";
     repo = "zef";
     rev = "v${version}";
-    sha256 = "sha256-zTgXMICuLn612bmL5e6GP5aBQ4uOcSLfce0PCRYGob0=";
+    sha256 = "sha256-FEQwe9MkP+tFZgXiR3hrNS+Jyavj85oYql3uOLP3nwc=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/interpreters/regina/default.upstream b/pkgs/development/interpreters/regina/default.upstream
deleted file mode 100644
index 481d9848f8301..0000000000000
--- a/pkgs/development/interpreters/regina/default.upstream
+++ /dev/null
@@ -1,5 +0,0 @@
-url https://sourceforge.net/projects/regina-rexx/files/regina-rexx/
-SF_version_dir
-SF_version_tarball
-SF_redirect
-minimize_overwrite
diff --git a/pkgs/development/interpreters/renpy/default.nix b/pkgs/development/interpreters/renpy/default.nix
deleted file mode 100644
index b0c10c8a65202..0000000000000
--- a/pkgs/development/interpreters/renpy/default.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ lib, stdenv, fetchurl, python2Packages, pkg-config, SDL2
-, libpng, ffmpeg, freetype, glew, libGL, libGLU, fribidi, zlib
-, glib
-}:
-
-with python2Packages;
-
-stdenv.mkDerivation rec {
-  pname = "renpy";
-  version = "7.3.5";
-
-  meta = with lib; {
-    description = "Ren'Py Visual Novel Engine";
-    homepage = "https://renpy.org/";
-    license = licenses.mit;
-    platforms = platforms.linux;
-  };
-
-  src = fetchurl {
-    url = "https://www.renpy.org/dl/${version}/renpy-${version}-source.tar.bz2";
-    sha256 = "1anr5cfbvbsbik4v4rvrkdkciwhg700k4lydfbs4n85raimz9mw4";
-  };
-
-  patches = [
-    ./launcherenv.patch
-  ];
-
-  postPatch = ''
-    substituteInPlace launcher/game/choose_directory.rpy --replace /usr/bin/python ${python.interpreter}
-  '';
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [
-    python cython wrapPython tkinter
-    SDL2 libpng ffmpeg freetype glew libGLU libGL fribidi zlib pygame_sdl2 glib
-  ];
-
-  pythonPath = [ pygame_sdl2 tkinter ];
-
-  RENPY_DEPS_INSTALL = lib.concatStringsSep "::" (map (path: path) [
-    SDL2 SDL2.dev libpng ffmpeg ffmpeg.out freetype glew.dev glew.out libGLU libGL fribidi zlib
-  ]);
-
-  buildPhase = ''
-    python module/setup.py build
-  '';
-
-  installPhase = ''
-    mkdir -p $out/share/renpy
-    cp -vr * $out/share/renpy
-    rm -rf $out/share/renpy/module
-
-    python module/setup.py install --prefix=$out --install-lib=$out/share/renpy/module
-
-    makeWrapper ${python}/bin/python $out/bin/renpy \
-      --set PYTHONPATH $PYTHONPATH \
-      --set RENPY_BASE $out/share/renpy \
-      --add-flags "-O $out/share/renpy/renpy.py"
-  '';
-
-  NIX_CFLAGS_COMPILE = "-I${pygame_sdl2}/include/${python.libPrefix}";
-}
diff --git a/pkgs/development/interpreters/renpy/launcherenv.patch b/pkgs/development/interpreters/renpy/launcherenv.patch
deleted file mode 100644
index 85a6c6439b9c0..0000000000000
--- a/pkgs/development/interpreters/renpy/launcherenv.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-# The launcher game starts projects in a separate python process
-# with the -E flag, which prevents the nix set PYTHONPATH envvar
-# from taking effect, preventing the loading of pygame_sdl2
---- a/launcher/game/project.rpy
-+++ b/launcher/game/project.rpy
-@@ -239,7 +239,7 @@
-                 raise Exception("Python interpreter not found: %r", executables)
- 
-             # Put together the basic command line.
--            cmd = [ executable, "-EO", sys.argv[0] ]
-+            cmd = [ executable, "-O", sys.argv[0] ]
- 
-             cmd.append(self.path)
-             cmd.extend(args)
diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix
index 7ab397bfc191b..c676a7b05e55e 100644
--- a/pkgs/development/interpreters/ruby/default.nix
+++ b/pkgs/development/interpreters/ruby/default.nix
@@ -17,21 +17,10 @@ let
   # Contains the ruby version heuristics
   rubyVersion = import ./ruby-version.nix { inherit lib; };
 
-  # Needed during postInstall
-  buildRuby =
-    if stdenv.hostPlatform == stdenv.buildPlatform
-    then "$out/bin/ruby"
-    else "${buildPackages.ruby}/bin/ruby";
-
   generic = { version, sha256 }: let
     ver = version;
     tag = ver.gitTag;
     atLeast30 = lib.versionAtLeast ver.majMin "3.0";
-    baseruby = self.override {
-      useRailsExpress = false;
-      docSupport = false;
-      rubygemsSupport = false;
-    };
     self = lib.makeOverridable (
       { stdenv, buildPackages, lib
       , fetchurl, fetchpatch, fetchFromSavannah, fetchFromGitHub
@@ -59,6 +48,12 @@ let
       , buildEnv, bundler, bundix
       , libiconv, libobjc, libunwind, Foundation
       , makeWrapper, buildRubyGem, defaultGemConfig
+      , baseRuby ? buildPackages.ruby.override {
+          useRailsExpress = false;
+          docSupport = false;
+          rubygemsSupport = false;
+        }
+      , useBaseRuby ? stdenv.hostPlatform != stdenv.buildPlatform || useRailsExpress
       }:
       stdenv.mkDerivation rec {
         pname = "ruby";
@@ -81,7 +76,7 @@ let
 
         nativeBuildInputs = [ autoreconfHook bison ]
           ++ (op docSupport groff)
-          ++ op (stdenv.buildPlatform != stdenv.hostPlatform) buildPackages.ruby;
+          ++ op useBaseRuby baseRuby;
         buildInputs = [ autoconf ]
           ++ (op fiddleSupport libffi)
           ++ (ops cursesSupport [ ncurses readline ])
@@ -104,7 +99,7 @@ let
             inherit patchSet useRailsExpress ops fetchpatch;
             patchLevel = ver.patchLevel;
           }).${ver.majMinTiny}
-          ++ [ ./do-not-regenerate-revision.h.patch ]
+          ++ op (lib.versionOlder ver.majMin "3.1") ./do-not-regenerate-revision.h.patch
           ++ op (atLeast30 && useRailsExpress) ./do-not-update-gems-baseruby.patch
           # Ruby prior to 3.0 has a bug the installer (tools/rbinstall.rb) but
           # the resulting error was swallowed. Newer rubygems no longer swallows
@@ -133,24 +128,24 @@ let
           sed -i ext/io/console/io-console.gemspec -e '/s\.date/d'
         '';
 
-        configureFlags = ["--enable-shared" "--enable-pthread" "--with-soname=ruby-${version}"]
-          ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby"
-          ++ op (!jitSupport) "--disable-jit-support"
-          ++ op (!docSupport) "--disable-install-doc"
-          ++ op (jemallocSupport) "--with-jemalloc"
-          ++ ops stdenv.isDarwin [
-            # on darwin, we have /usr/include/tk.h -- so the configure script detects
-            # that tk is installed
-            "--with-out-ext=tk"
-            # on yosemite, "generating encdb.h" will hang for a very long time without this flag
-            "--with-setjmp-type=setjmp"
-          ]
-          ++ op (stdenv.hostPlatform != stdenv.buildPlatform)
-             "--with-baseruby=${buildRuby}";
+        configureFlags = [
+          (lib.enableFeature (!stdenv.hostPlatform.isStatic) "shared")
+          (lib.enableFeature true "pthread")
+          (lib.withFeatureAs true "soname" "ruby-${version}")
+          (lib.withFeatureAs useBaseRuby "baseruby" "${baseRuby}/bin/ruby")
+          (lib.enableFeature jitSupport "jit-support")
+          (lib.enableFeature docSupport "install-doc")
+          (lib.withFeature jemallocSupport "jemalloc")
+          (lib.withFeatureAs docSupport "ridir" "${placeholder "devdoc"}/share/ri")
+        ] ++ ops stdenv.isDarwin [
+          # on darwin, we have /usr/include/tk.h -- so the configure script detects
+          # that tk is installed
+          "--with-out-ext=tk"
+          # on yosemite, "generating encdb.h" will hang for a very long time without this flag
+          "--with-setjmp-type=setjmp"
+        ];
 
         preConfigure = opString docSupport ''
-          configureFlagsArray+=("--with-ridir=$devdoc/share/ri")
-
           # rdoc creates XDG_DATA_DIR (defaulting to $HOME/.local/share) even if
           # it's not going to be used.
           export HOME=$TMPDIR
@@ -171,6 +166,8 @@ let
         # Bundler tries to create this directory
         postInstall = ''
           rbConfig=$(find $out/lib/ruby -name rbconfig.rb)
+          # Remove references to the build environment from the closure
+          sed -i '/^  CONFIG\["\(BASERUBY\|SHELL\|GREP\|EGREP\|MKDIR_P\|MAKEDIRS\|INSTALL\)"\]/d' $rbConfig
           # Remove unnecessary groff reference from runtime closure, since it's big
           sed -i '/NROFF/d' $rbConfig
           ${
@@ -208,13 +205,15 @@ let
           # Add rbconfig shim so ri can find docs
           mkdir -p $devdoc/lib/ruby/site_ruby
           cp ${./rbconfig.rb} $devdoc/lib/ruby/site_ruby/rbconfig.rb
-        '' + opString useRailsExpress ''
+        '' + opString useBaseRuby ''
           # Prevent the baseruby from being included in the closure.
-          sed -i '/^  CONFIG\["BASERUBY"\]/d' $rbConfig
-          sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig
+          ${removeReferencesTo}/bin/remove-references-to \
+            -t ${baseRuby} \
+            $rbConfig $out/lib/libruby*
         '';
 
-        disallowedRequisites = op (!jitSupport) stdenv.cc.cc;
+        disallowedRequisites = op (!jitSupport) stdenv.cc.cc
+          ++ op useBaseRuby baseRuby;
 
         meta = with lib; {
           description = "The Ruby language";
@@ -227,7 +226,6 @@ let
         passthru = rec {
           version = ver;
           rubyEngine = "ruby";
-          baseRuby = baseruby;
           libPath = "lib/${rubyEngine}/${ver.libDir}";
           gemPath = "lib/${rubyEngine}/gems/${ver.libDir}";
           devEnv = import ./dev.nix {
@@ -246,6 +244,8 @@ let
           minorVersion = ver.minor;
           teenyVersion = ver.tiny;
           patchLevel = ver.patchLevel;
+        } // lib.optionalAttrs useBaseRuby {
+          inherit baseRuby;
         };
       }
     ) args; in self;
@@ -266,4 +266,12 @@ in {
       git = "1q19w5i1jkfxn7qq6f9v9ngax9h52gxwijk7hp312dx6amwrkaim";
     };
   };
+
+  ruby_3_1 = generic {
+    version = rubyVersion "3" "1" "0" "";
+    sha256 = {
+      src = "sha256-UKBQTG7ctNYc5rjP292qlXBxlfqw7Ne16SZUsqlBKFQ=";
+      git = "sha256-TcsoWY+zVZeue1/ypV1L0WERp1UVK35WtVtYPYiJh4c=";
+    };
+  };
 }
diff --git a/pkgs/development/interpreters/ruby/patchsets.nix b/pkgs/development/interpreters/ruby/patchsets.nix
index 31a9a9f1c08db..2e51670a9f816 100644
--- a/pkgs/development/interpreters/ruby/patchsets.nix
+++ b/pkgs/development/interpreters/ruby/patchsets.nix
@@ -10,4 +10,6 @@
     "${patchSet}/patches/ruby/3.0/head/railsexpress/01-improve-gc-stats.patch"
     "${patchSet}/patches/ruby/3.0/head/railsexpress/02-malloc-trim.patch"
   ];
+  "3.1.0" = ops useRailsExpress [ # no patches yet (2021-12-25)
+  ];
 }
diff --git a/pkgs/development/interpreters/spidermonkey/68.nix b/pkgs/development/interpreters/spidermonkey/68.nix
deleted file mode 100644
index 5cfb2de919f11..0000000000000
--- a/pkgs/development/interpreters/spidermonkey/68.nix
+++ /dev/null
@@ -1,102 +0,0 @@
-{ lib, stdenv, fetchurl, fetchpatch, autoconf213, pkg-config, perl, python2, python3, zip, buildPackages
-, which, readline, zlib, icu, cargo, rustc, llvmPackages }:
-
-with lib;
-
-let
-  python3Env = buildPackages.python3.withPackages (p: [p.six]);
-in stdenv.mkDerivation rec {
-  pname = "spidermonkey";
-  version = "68.12.0";
-
-  src = fetchurl {
-    url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
-    sha256 = "1k17pi4zh9hrvkzbw4rzzw879a15hpvwriylp75wl22rl7r2nsdf";
-  };
-
-  patches = [
-    # Backport a change from Firefox 75 that fixes finding the
-    # location of clang and libclang.
-    (fetchpatch {
-      url = "https://hg.mozilla.org/mozilla-central/raw-rev/ccd1356fc8f1d0bfa9d896e88d3cc924425623da";
-      sha256 = "005g3mfmal9nw32khrgyiv3221z7pazfhhm2qvgc8d48i2yzj3j0";
-    })
-  ];
-
-  outputs = [ "out" "dev" ];
-  setOutputFlags = false; # Configure script only understands --includedir
-
-  nativeBuildInputs = [
-    autoconf213
-    pkg-config
-    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"
-
-    "--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 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 ];
-    badPlatforms = [ "riscv32-linux" "riscv64-linux" ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/development/interpreters/spidermonkey/78.nix b/pkgs/development/interpreters/spidermonkey/78.nix
index cd745c5ba9e03..4f525c8f0a5b8 100644
--- a/pkgs/development/interpreters/spidermonkey/78.nix
+++ b/pkgs/development/interpreters/spidermonkey/78.nix
@@ -35,6 +35,15 @@ stdenv.mkDerivation rec {
       url = "https://salsa.debian.org/mozilla-team/firefox/commit/fd6847c9416f9eebde636e21d794d25d1be8791d.patch";
       sha256 = "02b7zwm6vxmk61aj79a6m32s1k5sr0hwm3q1j4v6np9jfyd10g1j";
     })
+
+    # Remove this when updating to 79 - The patches are already applied upstream
+    # https://bugzilla.mozilla.org/show_bug.cgi?id=1318905
+
+    # Combination of 3 changesets, modified to apply on 78:
+    # - https://hg.mozilla.org/mozilla-central/rev/06d7e1b6b7e7
+    # - https://hg.mozilla.org/mozilla-central/rev/ec48f15d085c
+    # - https://hg.mozilla.org/mozilla-central/rev/6803dda74d33
+    ./add-riscv64-support.patch
   ];
 
   outputs = [ "out" "dev" ];
@@ -92,10 +101,16 @@ stdenv.mkDerivation rec {
     "--target=${stdenv.hostPlatform.config}"
   ];
 
+  # mkDerivation by default appends --build/--host to configureFlags when cross compiling
+  # These defaults are bogus for Spidermonkey - avoid passing them by providing an empty list
   configurePlatforms = [ ];
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
+  # cc-rs insists on using -mabi=lp64 (soft-float) for riscv64,
+  # while we have a double-float toolchain
+  NIX_CFLAGS_COMPILE = lib.optionalString (with stdenv.hostPlatform; isRiscV && is64bit) "-mabi=lp64d";
+
   # Remove unnecessary static lib
   preFixup = ''
     moveToOutput bin/js78-config "$dev"
diff --git a/pkgs/development/interpreters/spidermonkey/91.nix b/pkgs/development/interpreters/spidermonkey/91.nix
index a8927e79f9a4c..6be61a1210b60 100644
--- a/pkgs/development/interpreters/spidermonkey/91.nix
+++ b/pkgs/development/interpreters/spidermonkey/91.nix
@@ -20,11 +20,11 @@
 
 stdenv.mkDerivation rec {
   pname = "spidermonkey";
-  version = "91.4.0";
+  version = "91.6.0";
 
   src = fetchurl {
     url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
-    sha256 = "09xkzk27krzyj1qx8cjjn2zpnws1cncka75828kk7ychnjfq48p7";
+    sha512 = "3dd1929f93cdd087a93fc3597f32d9005c986b59832954e01a8c2472b179c92ad611eaa73d3fc000a08b838a0b70da73ff5ba82d6009160655ba6894cf04520e";
   };
 
   outputs = [ "out" "dev" ];
@@ -88,6 +88,10 @@ stdenv.mkDerivation rec {
     "--target=${stdenv.hostPlatform.config}"
   ];
 
+  # mkDerivation by default appends --build/--host to configureFlags when cross compiling
+  # These defaults are bogus for Spidermonkey - avoid passing them by providing an empty list
+  configurePlatforms = [ ];
+
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
   # Remove unnecessary static lib
diff --git a/pkgs/development/interpreters/spidermonkey/add-riscv64-support.patch b/pkgs/development/interpreters/spidermonkey/add-riscv64-support.patch
new file mode 100644
index 0000000000000..9d5d7c5507dc1
--- /dev/null
+++ b/pkgs/development/interpreters/spidermonkey/add-riscv64-support.patch
@@ -0,0 +1,123 @@
+# HG changeset patch
+# User John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+# Date 1592464269 0
+#      Thu Jun 18 07:11:09 2020 +0000
+# Node ID 5de7d747a962df5f8aefc016a62d7270ac18879e
+# Parent  e4b11f027efc1f8c2710ae3f52487a8f10a8fb39
+Bug 1318905 - build: Add riscv64 as target architecture to mozbuild r=glandium
+
+Adds the basic definitions for riscv64 to mozbuild, allowing to build Spidermonkey.
+
+Differential Revision: https://phabricator.services.mozilla.com/D78623
+
+diff -r e4b11f027efc -r 5de7d747a962 build/moz.configure/init.configure
+--- a/build/moz.configure/init.configure	Sun May 31 17:11:57 2020 +0000
++++ b/build/moz.configure/init.configure	Thu Jun 18 07:11:09 2020 +0000
+@@ -741,6 +741,9 @@
+     elif cpu.startswith('aarch64'):
+         canonical_cpu = 'aarch64'
+         endianness = 'little'
++    elif cpu in ('riscv64', 'riscv64gc'):
++        canonical_cpu = 'riscv64'
++        endianness = 'little'
+     elif cpu == 'sh4':
+         canonical_cpu = 'sh4'
+         endianness = 'little'
+diff -r e4b11f027efc -r 5de7d747a962 python/mozbuild/mozbuild/configure/constants.py
+--- a/python/mozbuild/mozbuild/configure/constants.py	Sun May 31 17:11:57 2020 +0000
++++ b/python/mozbuild/mozbuild/configure/constants.py	Thu Jun 18 07:11:09 2020 +0000
+@@ -49,6 +49,7 @@
+     'mips64': 64,
+     'ppc': 32,
+     'ppc64': 64,
++    'riscv64': 64,
+     's390': 32,
+     's390x': 64,
+     'sh4': 32,
+@@ -87,6 +88,7 @@
+     ('sparc', '__sparc__'),
+     ('mips64', '__mips64'),
+     ('mips32', '__mips__'),
++    ('riscv64', '__riscv && __riscv_xlen == 64'),
+     ('sh4', '__sh__'),
+ ))
+ 
+diff -r e4b11f027efc -r 5de7d747a962 python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
+--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py	Sun May 31 17:11:57 2020 +0000
++++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py	Thu Jun 18 07:11:09 2020 +0000
+@@ -1208,6 +1208,10 @@
+         'mips-unknown-linux-gnu': big_endian + {
+             '__mips__': 1,
+         },
++        'riscv64-unknown-linux-gnu': little_endian + {
++            '__riscv': 1,
++            '__riscv_xlen': 64,
++        },
+         'sh4-unknown-linux-gnu': little_endian + {
+             '__sh__': 1,
+         },
+# HG changeset patch
+# User John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+# Date 1592464269 0
+#      Thu Jun 18 07:11:09 2020 +0000
+# Node ID e3d924797cb2d508ff938414168e98ccf66f07fe
+# Parent  5de7d747a962df5f8aefc016a62d7270ac18879e
+Bug 1318905 - js:jit: Enable AtomicOperations-feeling-lucky.h on riscv64 r=lth
+
+This allows the build on riscv64 to use the atomic operations provided by GCC.
+
+Differential Revision: https://phabricator.services.mozilla.com/D78624
+
+diff -r 5de7d747a962 -r e3d924797cb2 js/src/jit/AtomicOperations.h
+--- a/js/src/jit/AtomicOperations.h	Thu Jun 18 07:11:09 2020 +0000
++++ b/js/src/jit/AtomicOperations.h	Thu Jun 18 07:11:09 2020 +0000
+@@ -391,7 +391,7 @@
+ #elif defined(__ppc__) || defined(__PPC__) || defined(__sparc__) ||     \
+     defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \
+     defined(__PPC64LE__) || defined(__alpha__) || defined(__hppa__) ||  \
+-    defined(__sh__) || defined(__s390__) || defined(__s390x__)
++    defined(__sh__) || defined(__s390__) || defined(__s390x__) || defined(__riscv)
+ #  include "jit/shared/AtomicOperations-feeling-lucky.h"
+ #else
+ #  error "No AtomicOperations support provided for this platform"
+diff -r 5de7d747a962 -r e3d924797cb2 js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h
+--- a/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h	Thu Jun 18 07:11:09 2020 +0000
++++ b/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h	Thu Jun 18 07:11:09 2020 +0000
+@@ -63,6 +63,11 @@
+ #  define HAS_64BIT_LOCKFREE
+ #endif
+ 
++#if defined(__riscv) && __riscv_xlen == 64
++#  define HAS_64BIT_ATOMICS
++#  define HAS_64BIT_LOCKFREE
++#endif
++
+ #ifdef __sparc__
+ #  ifdef __LP64__
+ #    define HAS_64BIT_ATOMICS
+# HG changeset patch
+# User John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+# Date 1592464269 0
+#      Thu Jun 18 07:11:09 2020 +0000
+# Node ID 3f652d12b8bc0bd213020d488ecb4d3710bb11fa
+# Parent  e3d924797cb2d508ff938414168e98ccf66f07fe
+Bug 1318905 - mfbt:tests: Define RETURN_INSTR for riscv64 in TestPoisonArea r=glandium
+
+Define RETURN_INSTR for riscv64 in TestPoisonArea, i.e. the riscv64 assembly
+opcodes for "ret ; ret".
+
+Differential Revision: https://phabricator.services.mozilla.com/D78625
+
+diff -r e3d924797cb2 -r 3f652d12b8bc mfbt/tests/TestPoisonArea.cpp
+--- a/mfbt/tests/TestPoisonArea.cpp	Thu Jun 18 07:11:09 2020 +0000
++++ b/mfbt/tests/TestPoisonArea.cpp	Thu Jun 18 07:11:09 2020 +0000
+@@ -132,6 +132,9 @@
+ #elif defined _ARCH_PPC || defined _ARCH_PWR || defined _ARCH_PWR2
+ #  define RETURN_INSTR 0x4E800020 /* blr */
+ 
++#elif defined __riscv
++#  define RETURN_INSTR 0x80828082 /* ret; ret */
++
+ #elif defined __sparc || defined __sparcv9
+ #  define RETURN_INSTR 0x81c3e008 /* retl */
+ 
diff --git a/pkgs/development/interpreters/supercollider/default.nix b/pkgs/development/interpreters/supercollider/default.nix
index 49cf6e095d1fd..2a0ef3b0957c6 100644
--- a/pkgs/development/interpreters/supercollider/default.nix
+++ b/pkgs/development/interpreters/supercollider/default.nix
@@ -9,11 +9,11 @@ let
 in
 mkDerivation rec {
   pname = "supercollider";
-  version = "3.12.1";
+  version = "3.12.2";
 
   src = fetchurl {
     url = "https://github.com/supercollider/supercollider/releases/download/Version-${version}/SuperCollider-${version}-Source.tar.bz2";
-    sha256 = "sha256-neYId2hJRAMx4+ZFm+5TzYuUbMRfa9icyqm2UYac/Cs=";
+    sha256 = "sha256-1QYorCgSwBK+SVAm4k7HZirr1j+znPmVicFmJdvO3g4=";
   };
 
   hardeningDisable = [ "stackprotector" ];
diff --git a/pkgs/development/interpreters/trealla/default.nix b/pkgs/development/interpreters/trealla/default.nix
index 6c6268011a73c..d6dc01348a1d4 100644
--- a/pkgs/development/interpreters/trealla/default.nix
+++ b/pkgs/development/interpreters/trealla/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "trealla";
-  version = "1.12.0";
+  version = "1.20.31";
 
   src = fetchFromGitHub {
     owner = "infradig";
     repo = "trealla";
     rev = "v${version}";
-    sha256 = "sha256-5gMf62WSGf46Bg8CaI9weSMRjrdGiuxtaDV9FrS2xO8=";
+    sha256 = "sha256-Yol+bbxC5cCtCIZxP5Sa8R3ev1LAopc/oQa6Zd1nS8A=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/interpreters/wasmtime/default.nix b/pkgs/development/interpreters/wasmtime/default.nix
index 675a7cdd6bc04..816b854b99eb2 100644
--- a/pkgs/development/interpreters/wasmtime/default.nix
+++ b/pkgs/development/interpreters/wasmtime/default.nix
@@ -1,4 +1,4 @@
-{ rustPlatform, fetchFromGitHub, lib, python, cmake, llvmPackages, clang, stdenv, darwin }:
+{ rustPlatform, fetchFromGitHub, lib, python3, cmake, llvmPackages, clang, stdenv, darwin }:
 
 rustPlatform.buildRustPackage rec {
   pname = "wasmtime";
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "1wlig9gls7s1k1swxwhl82vfga30bady8286livxc4y2zp0vb18w";
 
-  nativeBuildInputs = [ python cmake clang ];
+  nativeBuildInputs = [ python3 cmake clang ];
   buildInputs = [ llvmPackages.libclang ] ++
    lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
   LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
diff --git a/pkgs/development/interpreters/yex-lang/default.nix b/pkgs/development/interpreters/yex-lang/default.nix
new file mode 100644
index 0000000000000..738b73d8e4c8c
--- /dev/null
+++ b/pkgs/development/interpreters/yex-lang/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "yex-lang";
+  version = "unstable-2021-12-25";
+
+  src = fetchFromGitHub {
+    owner = "nonamescm";
+    repo = "yex-lang";
+    rev = "a97def1431b73b8693700f530ec023f1776eaf83";
+    hash = "sha256-CEzJtlEVMvMnRyUKdko1UDTluv8Fc88tfOpKGIFMnRw=";
+  };
+
+  cargoSha256 = "sha256-mHMenqcdt9Yjm/6H1Ywf637Sv8ddq6a4Eu2/A/jX9gQ=";
+
+  meta = with lib; {
+    homepage = "https://github.com/nonamesc/yex-lang";
+    description = "A cool functional scripting language written in rust";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+    broken = stdenv.isAarch64 && stdenv.isLinux;
+  };
+}