about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/interpreters
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-12-06 19:57:55 +0000
committerAlyssa Ross <hi@alyssa.is>2023-02-08 13:48:30 +0000
commitbf3aadfdd39aa197e18bade671fab6726349ffa4 (patch)
tree698567af766ed441d757b57a7b21e68d4a342a2b /nixpkgs/pkgs/development/interpreters
parentf4afc5a01d9539ce09e47494e679c51f80723d07 (diff)
parent99665eb45f58d959d2cb9e49ddb960c79d596f33 (diff)
downloadnixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.gz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.bz2
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.lz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.xz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.zst
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.zip
Merge commit '99665eb45f58d959d2cb9e49ddb960c79d596f33'
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters')
-rw-r--r--nixpkgs/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch137
-rw-r--r--nixpkgs/pkgs/development/interpreters/acl2/default.nix16
-rw-r--r--nixpkgs/pkgs/development/interpreters/alda/default.nix6
-rw-r--r--nixpkgs/pkgs/development/interpreters/bats/default.nix155
-rw-r--r--nixpkgs/pkgs/development/interpreters/bats/libraries.nix70
-rw-r--r--nixpkgs/pkgs/development/interpreters/boron/default.nix48
-rw-r--r--nixpkgs/pkgs/development/interpreters/bqn/cbqn/default.nix14
-rw-r--r--nixpkgs/pkgs/development/interpreters/cling/default.nix2
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojure/babashka.nix5
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojure/clooj.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojure/default.nix5
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojurescript/lumo/default.nix287
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.edn12
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.nix392
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojurescript/lumo/mkdir_promise.patch20
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojurescript/lumo/no_mangle.patch13
-rw-r--r--nixpkgs/pkgs/development/interpreters/clojurescript/lumo/package.json51
-rw-r--r--nixpkgs/pkgs/development/interpreters/dart/default.nix19
-rw-r--r--nixpkgs/pkgs/development/interpreters/dhall/build-dhall-url.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/duktape/default.nix14
-rw-r--r--nixpkgs/pkgs/development/interpreters/elixir/1.13.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/erlang/R16B02-basho.nix65
-rw-r--r--nixpkgs/pkgs/development/interpreters/erlang/R25.nix8
-rw-r--r--nixpkgs/pkgs/development/interpreters/falcon/default.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/gnu-apl/default.nix5
-rw-r--r--nixpkgs/pkgs/development/interpreters/groovy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/interpreters/guile/1.8.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/guile/2.0.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/guile/2.2.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/guile/3.0.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/hashlink/default.nix53
-rw-r--r--nixpkgs/pkgs/development/interpreters/hashlink/hashlink.patch8
-rw-r--r--nixpkgs/pkgs/development/interpreters/hugs/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/hy/builder.nix40
-rw-r--r--nixpkgs/pkgs/development/interpreters/hy/default.nix15
-rw-r--r--nixpkgs/pkgs/development/interpreters/j/default.nix105
-rw-r--r--nixpkgs/pkgs/development/interpreters/janet/default.nix10
-rw-r--r--nixpkgs/pkgs/development/interpreters/janet/jpm.nix6
-rw-r--r--nixpkgs/pkgs/development/interpreters/joker/default.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/jruby/default.nix5
-rw-r--r--nixpkgs/pkgs/development/interpreters/jython/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/kerf/default.nix92
-rw-r--r--nixpkgs/pkgs/development/interpreters/kona/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/lolcode/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/love/0.10.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/love/11.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/CVE-2022-28805.patch10
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/build-lua-package.nix24
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/default.nix29
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/hooks/default.nix13
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-check-hook.sh18
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-move-data.sh15
-rw-r--r--nixpkgs/pkgs/development/interpreters/lua-5/interpreter.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/luajit/2.0.nix6
-rw-r--r--nixpkgs/pkgs/development/interpreters/luajit/2.1.nix6
-rw-r--r--nixpkgs/pkgs/development/interpreters/luajit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/lunatic/default.nix16
-rw-r--r--nixpkgs/pkgs/development/interpreters/maude/default.nix5
-rw-r--r--nixpkgs/pkgs/development/interpreters/micropython/default.nix10
-rw-r--r--nixpkgs/pkgs/development/interpreters/nickel/default.nix33
-rw-r--r--nixpkgs/pkgs/development/interpreters/oak/default.nix25
-rw-r--r--nixpkgs/pkgs/development/interpreters/octave/default.nix18
-rw-r--r--nixpkgs/pkgs/development/interpreters/octave/patches/bug62436.patch27
-rw-r--r--nixpkgs/pkgs/development/interpreters/perl/default.nix58
-rw-r--r--nixpkgs/pkgs/development/interpreters/php/7.4.nix52
-rw-r--r--nixpkgs/pkgs/development/interpreters/php/8.0.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/php/8.1.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/php/generic.nix24
-rw-r--r--nixpkgs/pkgs/development/interpreters/php/zlib-darwin-tests.patch44
-rw-r--r--nixpkgs/pkgs/development/interpreters/picoc/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/picolisp/default.nix3
-rw-r--r--nixpkgs/pkgs/development/interpreters/pixie/default.nix94
-rw-r--r--nixpkgs/pkgs/development/interpreters/pixie/dust.nix46
-rw-r--r--nixpkgs/pkgs/development/interpreters/pixie/load_paths.patch25
-rw-r--r--nixpkgs/pkgs/development/interpreters/pixie/make-paths-configurable.patch119
-rw-r--r--nixpkgs/pkgs/development/interpreters/pure/default.nix46
-rw-r--r--nixpkgs/pkgs/development/interpreters/python-cosmopolitan/default.nix39
-rw-r--r--nixpkgs/pkgs/development/interpreters/python-cosmopolitan/ioctl.patch12
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/cpython/2.7/default.nix2
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/cpython/3.11/darwin-libutil.patch13
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/cpython/3.11/python-3.x-distutils-C++.patch257
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/cpython/default.nix60
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/default.nix35
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/graalpython/default.nix21
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/hooks/default.nix19
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/hooks/python-relax-deps-hook.sh86
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/hooks/setuptools-build-hook.sh5
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/hooks/sphinx-hook.sh57
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/mk-python-derivation.nix9
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/pypy/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/setup-hook.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/tests.nix12
-rwxr-xr-xnixpkgs/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py18
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/wrapper.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/racket/default.nix10
-rw-r--r--nixpkgs/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch19
-rw-r--r--nixpkgs/pkgs/development/interpreters/racket/minimal.nix2
-rw-r--r--nixpkgs/pkgs/development/interpreters/racket/racket_7_9.nix2
-rw-r--r--nixpkgs/pkgs/development/interpreters/rakudo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/rakudo/moarvm.nix18
-rw-r--r--nixpkgs/pkgs/development/interpreters/rakudo/nqp.nix14
-rw-r--r--nixpkgs/pkgs/development/interpreters/rascal/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/renpy/default.nix89
-rw-r--r--nixpkgs/pkgs/development/interpreters/renpy/renpy-system-fribidi.diff51
-rw-r--r--nixpkgs/pkgs/development/interpreters/ruby/default.nix107
-rw-r--r--nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix6
-rw-r--r--nixpkgs/pkgs/development/interpreters/ruby/rbinstall-new-rubygems-compat.patch87
-rw-r--r--nixpkgs/pkgs/development/interpreters/ruby/rubygems/default.nix2
-rw-r--r--nixpkgs/pkgs/development/interpreters/scsh/default.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/sollya/default.nix10
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/102.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/78.nix139
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/91.nix124
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/allow-system-s-nspr-and-icu-on-bootstrapped-sysroot.patch40
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/always-check-for-pkg-config.patch23
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/common.nix199
-rw-r--r--nixpkgs/pkgs/development/interpreters/spidermonkey/test.nix10
-rw-r--r--nixpkgs/pkgs/development/interpreters/starlark/default.nix32
-rw-r--r--nixpkgs/pkgs/development/interpreters/supercollider/default.nix55
-rw-r--r--nixpkgs/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix33
-rw-r--r--nixpkgs/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch65
-rw-r--r--nixpkgs/pkgs/development/interpreters/supercollider/wrapper.nix18
-rw-r--r--nixpkgs/pkgs/development/interpreters/tinyscheme/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/trealla/default.nix1
-rw-r--r--nixpkgs/pkgs/development/interpreters/unicon-lang/default.nix8
-rw-r--r--nixpkgs/pkgs/development/interpreters/wasmer/default.nix12
-rw-r--r--nixpkgs/pkgs/development/interpreters/wasmtime/default.nix24
-rw-r--r--nixpkgs/pkgs/development/interpreters/yabasic/default.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/yex-lang/default.nix19
-rw-r--r--nixpkgs/pkgs/development/interpreters/zuo/default.nix23
130 files changed, 2297 insertions, 2111 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch b/nixpkgs/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch
index 7726f17b41ed..fc46fa0f0fc5 100644
--- a/nixpkgs/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch
+++ b/nixpkgs/pkgs/development/interpreters/acl2/0001-Fix-some-paths-for-Nix-build.patch
@@ -1,22 +1,19 @@
-From d0136f350b82ae845d56029db43d153c91d5e494 Mon Sep 17 00:00:00 2001
+From aed1c4b0be7576d20eed81070da2c6f92573df18 Mon Sep 17 00:00:00 2001
 From: Keshav Kini <keshav.kini@gmail.com>
 Date: Sat, 30 May 2020 21:27:47 -0700
 Subject: [PATCH] Fix some paths for Nix build
 
 ---
- books/build/features.sh                       |  1 +
- .../ipasir/load-ipasir-sharedlib-raw.lsp      |  6 +--
- books/projects/smtlink/config.lisp            |  2 +-
- books/projects/smtlink/examples/examples.lisp |  4 +-
- books/projects/smtlink/smtlink-config         |  2 +-
- .../cl+ssl-20200610-git/src/reload.lisp       | 53 +------------------
- 6 files changed, 8 insertions(+), 60 deletions(-)
+ books/build/features.sh                                     | 1 +
+ books/centaur/ipasir/load-ipasir-sharedlib-raw.lsp          | 6 +-----
+ .../bundle/software/cl+ssl-20220707-git/src/reload.lisp     | 3 +++
+ 3 files changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/books/build/features.sh b/books/build/features.sh
-index d45a7aa61..27256b7cd 100755
+index feb5b2b59c..4b654e08bc 100755
 --- a/books/build/features.sh
 +++ b/books/build/features.sh
-@@ -122,6 +122,7 @@ EOF
+@@ -125,6 +125,7 @@ EOF
  fi
  
  echo "Determining whether an ipasir shared library is installed" 1>&2
@@ -25,7 +22,7 @@ index d45a7aa61..27256b7cd 100755
      cat >> Makefile-features <<EOF
  export OS_HAS_IPASIR ?= 1
 diff --git a/books/centaur/ipasir/load-ipasir-sharedlib-raw.lsp b/books/centaur/ipasir/load-ipasir-sharedlib-raw.lsp
-index 762e4ad4c..c9802cb58 100644
+index 762e4ad4c0..c9802cb582 100644
 --- a/books/centaur/ipasir/load-ipasir-sharedlib-raw.lsp
 +++ b/books/centaur/ipasir/load-ipasir-sharedlib-raw.lsp
 @@ -30,11 +30,7 @@
@@ -41,114 +38,20 @@ index 762e4ad4c..c9802cb58 100644
      (error () (er hard? 'load-ipasir-shardlib-raw
                    "Couldn't load ipasir shared library from ~s0."
                    libname))))
-diff --git a/books/projects/smtlink/config.lisp b/books/projects/smtlink/config.lisp
-index c74073174..8d92355f7 100644
---- a/books/projects/smtlink/config.lisp
-+++ b/books/projects/smtlink/config.lisp
-@@ -51,7 +51,7 @@ where the system books are."))
-     (make-smtlink-config :interface-dir interface-dir
-                          :smt-module "ACL2_to_Z3"
-                          :smt-class "ACL22SMT"
--                         :smt-cmd "/usr/bin/env python"
-+                         :smt-cmd "python"
-                          :pythonpath "")))
- 
- ;; -----------------------------------------------------------------
-diff --git a/books/projects/smtlink/examples/examples.lisp b/books/projects/smtlink/examples/examples.lisp
-index 90534892f..4ab98b2f0 100644
---- a/books/projects/smtlink/examples/examples.lisp
-+++ b/books/projects/smtlink/examples/examples.lisp
-@@ -75,7 +75,7 @@ Subgoal 2
- Subgoal 2.2
- Subgoal 2.2'
- Using default SMT-trusted-cp...
--; SMT solver: `/usr/bin/env python /tmp/py_file/smtlink.w59zR`: 0.52 sec, 7,904 bytes
-+; SMT solver: `python /tmp/py_file/smtlink.w59zR`: 0.52 sec, 7,904 bytes
- Proved!
- Subgoal 2.2''
- Subgoal 2.1
-@@ -139,7 +139,7 @@ read back into ACL2.  Below are the outputs from this clause processor called
- 
- @({
- Using default SMT-trusted-cp...
--; SMT solver: `/usr/bin/env python /tmp/py_file/smtlink.w59zR`: 0.52 sec, 7,904 bytes
-+; SMT solver: `python /tmp/py_file/smtlink.w59zR`: 0.52 sec, 7,904 bytes
- Proved!
- })
- 
-diff --git a/books/projects/smtlink/smtlink-config b/books/projects/smtlink/smtlink-config
-index 0d2703545..0f58904ea 100644
---- a/books/projects/smtlink/smtlink-config
-+++ b/books/projects/smtlink/smtlink-config
-@@ -1 +1 @@
--smt-cmd=/usr/bin/env python
-+smt-cmd=python
-diff --git a/books/quicklisp/bundle/software/cl+ssl-20200610-git/src/reload.lisp b/books/quicklisp/bundle/software/cl+ssl-20200610-git/src/reload.lisp
-index e5db28645..65eb818a1 100644
---- a/books/quicklisp/bundle/software/cl+ssl-20200610-git/src/reload.lisp
-+++ b/books/quicklisp/bundle/software/cl+ssl-20200610-git/src/reload.lisp
-@@ -37,59 +37,10 @@
+diff --git a/books/quicklisp/bundle/software/cl+ssl-20220707-git/src/reload.lisp b/books/quicklisp/bundle/software/cl+ssl-20220707-git/src/reload.lisp
+index d409b4440f..5c65c5b4da 100644
+--- a/books/quicklisp/bundle/software/cl+ssl-20220707-git/src/reload.lisp
++++ b/books/quicklisp/bundle/software/cl+ssl-20220707-git/src/reload.lisp
+@@ -87,6 +87,9 @@ sudo rm /usr/local/lib/libcrypto.dylib /usr/local/lib/libssl.dylib
+ ;;
  ;; These are 32-bit only.
  
- (cffi:define-foreign-library libcrypto
--  (:windows (:or #+(and windows x86-64) "libcrypto-1_1-x64.dll"
--                 #+(and windows x86) "libcrypto-1_1.dll"
--                 "libeay32.dll"))
--  (:openbsd "libcrypto.so")
--  (:darwin (:or "/opt/local/lib/libcrypto.dylib" ;; MacPorts
--                "/sw/lib/libcrypto.dylib"        ;; Fink
--                "/usr/local/opt/openssl/lib/libcrypto.dylib" ;; Homebrew
--                "/usr/local/lib/libcrypto.dylib" ;; personalized install
--                "libcrypto.dylib"                ;; default system libcrypto, which may have insufficient crypto
--                "/usr/lib/libcrypto.dylib"))
--  (:cygwin (:or "cygcrypto-1.1.dll" "cygcrypto-1.0.0.dll")))
-+  (t "@libcrypto@"))
- 
- (cffi:define-foreign-library libssl
--  (:windows (:or #+(and windows x86-64) "libssl-1_1-x64.dll"
--                 #+(and windows x86) "libssl-1_1.dll"
--                 "libssl32.dll"
--                 "ssleay32.dll"))
--  ;; The default OS-X libssl seems have had insufficient crypto algos
--  ;; (missing TLSv1_[1,2]_XXX methods,
--  ;; see https://github.com/cl-plus-ssl/cl-plus-ssl/issues/56)
--  ;; so first try to load possible custom installations of libssl
--  (:darwin (:or "/opt/local/lib/libssl.dylib" ;; MacPorts
--                "/sw/lib/libssl.dylib"        ;; Fink
--                "/usr/local/opt/openssl/lib/libssl.dylib" ;; Homebrew
--                "/usr/local/lib/libssl.dylib" ;; personalized install
--                "libssl.dylib"                ;; default system libssl, which may have insufficient crypto
--                "/usr/lib/libssl.dylib"))
--  (:solaris (:or "/lib/64/libssl.so"
--                 "libssl.so.0.9.8" "libssl.so" "libssl.so.4"))
--  ;; Unlike some other systems, OpenBSD linker,
--  ;; when passed library name without versions at the end,
--  ;; will locate the library with highest macro.minor version,
--  ;; so we can just use just "libssl.so".
--  ;; More info at https://github.com/cl-plus-ssl/cl-plus-ssl/pull/2.
--  (:openbsd "libssl.so")
--  ((and :unix (not :cygwin)) (:or "libssl.so.1.1"
--                                  "libssl.so.1.0.2m"
--                                  "libssl.so.1.0.2k"
--                                  "libssl.so.1.0.2"
--                                  "libssl.so.1.0.1l"
--                                  "libssl.so.1.0.1j"
--                                  "libssl.so.1.0.1f"
--                                  "libssl.so.1.0.1e"
--                                  "libssl.so.1.0.1"
--                                  "libssl.so.1.0.0q"
--                                  "libssl.so.1.0.0"
--                                  "libssl.so.0.9.8ze"
--                                  "libssl.so.0.9.8"
--                                  "libssl.so.10"
--                                  "libssl.so.4"
--                                  "libssl.so"))
--  (:cygwin (:or "cygssl-1.1.dll" "cygssl-1.0.0.dll"))
--  (t (:default "libssl3")))
-+  (t "@libssl@"))
- 
- (unless (member :cl+ssl-foreign-libs-already-loaded
-                 *features*)
++(cl+ssl/config:define-libssl-path "@libssl@")
++(cl+ssl/config:define-libcrypto-path "@libcrypto@")
++
+ (unless cl+ssl/config::*libcrypto-override*
+   (cffi:define-foreign-library libcrypto
+     (:windows (:or #+(and windows x86-64) "libcrypto-1_1-x64.dll"
 -- 
 2.31.1
 
diff --git a/nixpkgs/pkgs/development/interpreters/acl2/default.nix b/nixpkgs/pkgs/development/interpreters/acl2/default.nix
index 51b1cfa11414..1ca3742e737b 100644
--- a/nixpkgs/pkgs/development/interpreters/acl2/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/acl2/default.nix
@@ -10,20 +10,20 @@ let
   # ACL2 system itself; see
   # https://www.cs.utexas.edu/users/moore/acl2/current/HTML/installation/requirements.html#Obtaining-SBCL
   sbcl' = args.sbcl.override { disableImmobileSpace = true; };
-  sbcl = runCommandLocal args.sbcl.name { buildInputs = [ makeWrapper ]; } ''
+  sbcl = runCommandLocal args.sbcl.name { nativeBuildInputs = [ makeWrapper ]; } ''
     makeWrapper ${sbcl'}/bin/sbcl $out/bin/sbcl \
       --add-flags "--dynamic-space-size 2000"
   '';
 
 in stdenv.mkDerivation rec {
   pname = "acl2";
-  version = "8.4";
+  version = "8.5";
 
   src = fetchFromGitHub {
     owner = "acl2-devel";
     repo = "acl2-devel";
     rev = version;
-    sha256 = "16rr9zqmd3y1sd6zxff2f9gdd84l99pr7mdp1sjwmh427h661c68";
+    sha256 = "12cv5ms1j3vfrq066km020nwxb6x2dzh12g8nz6xxyxysn44wzzi";
   };
 
   # You can swap this out with any other IPASIR implementation at
@@ -36,18 +36,20 @@ in stdenv.mkDerivation rec {
   patches = [(substituteAll {
     src = ./0001-Fix-some-paths-for-Nix-build.patch;
     libipasir = "${libipasir}/lib/${libipasir.libname}";
-    libssl = "${openssl.out}/lib/libssl${stdenv.hostPlatform.extensions.sharedLibrary}";
-    libcrypto = "${openssl.out}/lib/libcrypto${stdenv.hostPlatform.extensions.sharedLibrary}";
+    libssl = "${lib.getLib openssl}/lib/libssl${stdenv.hostPlatform.extensions.sharedLibrary}";
+    libcrypto = "${lib.getLib openssl}/lib/libcrypto${stdenv.hostPlatform.extensions.sharedLibrary}";
   })];
 
+  nativeBuildInputs = lib.optional certifyBooks makeWrapper;
+
   buildInputs = [
     # ACL2 itself only needs a Common Lisp compiler/interpreter:
     sbcl
   ] ++ lib.optionals certifyBooks [
     # To build community books, we need Perl and a couple of utilities:
-    which perl hostname makeWrapper
+    which perl hostname
     # Some of the books require one or more of these external tools:
-    openssl.out glucose minisat abc-verifier libipasir
+    glucose minisat abc-verifier libipasir
     z3 (python2.withPackages (ps: [ ps.z3 ]))
   ];
 
diff --git a/nixpkgs/pkgs/development/interpreters/alda/default.nix b/nixpkgs/pkgs/development/interpreters/alda/default.nix
index 355551d5ad0d..269b8258aa4e 100644
--- a/nixpkgs/pkgs/development/interpreters/alda/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/alda/default.nix
@@ -2,16 +2,16 @@
 
 stdenv.mkDerivation rec {
   pname = "alda";
-  version = "2.2.0";
+  version = "2.2.3";
 
   src_alda = fetchurl {
     url = "https://alda-releases.nyc3.digitaloceanspaces.com/${version}/client/linux-amd64/alda";
-    sha256 = "0z3n81fmv3fxwgr641r6jjn1dmi5d3rw8d6r8jdfjhgpxanyi9a7";
+    hash = "sha256-cyOAXQ3ITIgy4QusjdYBNmNIzB6BzfbQEypvJbkbvWo=";
   };
 
   src_player = fetchurl {
     url = "https://alda-releases.nyc3.digitaloceanspaces.com/${version}/player/non-windows/alda-player";
-    sha256 = "11kji846hbn1f2w1s7rc1ing203jkamy89j1jmysajvirdpp8nha";
+    hash = "sha256-HsX0mNWrusL2FaK2oK8xhmr/ai+3ZiMmrJk7oS3b93g=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/development/interpreters/bats/default.nix b/nixpkgs/pkgs/development/interpreters/bats/default.nix
index 3379d1370af1..89539850163e 100644
--- a/nixpkgs/pkgs/development/interpreters/bats/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/bats/default.nix
@@ -1,4 +1,4 @@
-{ resholvePackage
+{ resholve
 , lib
 , stdenv
 , fetchFromGitHub
@@ -6,19 +6,29 @@
 , coreutils
 , gnugrep
 , ncurses
+, findutils
+, hostname
+, parallel
+, flock
+, ps
+, bats
 , lsof
+, callPackages
+, symlinkJoin
+, makeWrapper
+, runCommand
 , doInstallCheck ? true
 }:
 
-resholvePackage rec {
+resholve.mkDerivation rec {
   pname = "bats";
-  version = "1.6.0";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "bats-core";
     repo = "bats-core";
     rev = "v${version}";
-    sha256 = "sha256-s+SAqX70WeTz6s5ObXYFBVPVUEqvD1d7AX2sGHkjVQ4=";
+    sha256 = "sha256-joNne/dDVCNtzdTQ64rK8GimT+DOWUa7f410hml2s8Q=";
   };
 
   patchPhase = ''
@@ -31,33 +41,146 @@ resholvePackage rec {
 
   solutions = {
     bats = {
-      scripts = [ "bin/bats" ];
+      scripts = [
+        "bin/bats"
+        "libexec/bats-core/*"
+        "lib/bats-core/*"
+      ];
       interpreter = "${bash}/bin/bash";
-      inputs = [ bash coreutils gnugrep ];
+      inputs = [
+        bash
+        coreutils
+        gnugrep
+        ncurses
+        findutils
+        hostname
+        parallel
+        flock
+        "lib/bats-core"
+        "libexec/bats-core"
+      ];
       fake = {
-        external = [ "greadlink" ];
+        external = [
+          "greadlink"
+          "shlock"
+        ];
       };
       fix = {
         "$BATS_ROOT" = [ "${placeholder "out"}" ];
+        "$BATS_LIBEXEC" = [ "${placeholder "out"}/libexec/bats-core" ];
       };
       keep = {
         "${placeholder "out"}/libexec/bats-core/bats" = true;
+        source = [
+          "${placeholder "out"}/lib/bats-core/validator.bash"
+          "${placeholder "out"}/lib/bats-core/preprocessing.bash"
+          "$BATS_TEST_SOURCE"
+          "${placeholder "out"}/lib/bats-core/tracing.bash"
+          "${placeholder "out"}/lib/bats-core/test_functions.bash"
+          "$library_load_path"
+          "${placeholder "out"}/lib/bats-core/common.bash"
+          "${placeholder "out"}/lib/bats-core/semaphore.bash"
+          "${placeholder "out"}/lib/bats-core/formatter.bash"
+          "${placeholder "out"}/lib/bats-core/warnings.bash"
+          "$setup_suite_file" # via cli arg
+        ];
+        "$report_formatter" = true;
+        "$formatter" = true;
+        "$pre_command" = true;
+        "$BATS_TEST_NAME" = true;
+        "${placeholder "out"}/libexec/bats-core/bats-exec-test" = true;
       };
+      execer = [
+        /*
+        both blatant lies for expedience; these can certainly exec args
+        they may be safe here, because they may always run things that
+        are ultimately in libexec?
+        TODO: handle parallel and flock in binlore/resholve
+        */
+        "cannot:${parallel}/bin/parallel"
+        "cannot:${flock}/bin/flock"
+
+        "cannot:libexec/bats-core/bats-preprocess"
+
+        # these do exec, but other internal files
+        "cannot:libexec/bats-core/bats-exec-file"
+        "cannot:libexec/bats-core/bats-exec-suite"
+      ];
     };
   };
 
-  inherit doInstallCheck;
-  installCheckInputs = [ ncurses ] ++ lib.optionals stdenv.isDarwin [ lsof ];
-  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
+  passthru.libraries = callPackages ./libraries.nix {};
+
+  passthru.withLibraries = selector:
+    symlinkJoin {
+      name = "bats-with-libraries-${bats.version}";
+
+      paths = [
+        bats
+      ] ++ selector bats.libraries;
+
+      nativeBuildInputs = [
+        makeWrapper
+      ];
+
+      postBuild = ''
+        wrapProgram "$out/bin/bats" \
+          --suffix BATS_LIB_PATH : "$out/share/bats"
+      '';
+    };
+
+  passthru.tests.libraries = runCommand "${bats.name}-with-libraries-test" {
+    testScript = ''
+      setup() {
+        bats_load_library bats-support
+        bats_load_library bats-assert
+
+        bats_require_minimum_version 1.5.0
+      }
 
-    # test generates file with absolute shebang dynamically
-    substituteInPlace test/install.bats --replace \
-      "/usr/bin/env bash" "${bash}/bin/bash"
-    bin/bats test
+      @test echo_hi {
+        run -0 echo hi
+        assert_output "hi"
+      }
+
+      @test cp_failure {
+        run ! cp
+        assert_line --index 0 "cp: missing file operand"
+        assert_line --index 1 "Try 'cp --help' for more information."
+      }
+    '';
+    passAsFile = [ "testScript" ];
+  } ''
+    ${bats.withLibraries (p: [ p.bats-support p.bats-assert ])}/bin/bats "$testScriptPath"
+    touch "$out"
   '';
 
+  passthru.tests.upstream = bats.unresholved.overrideAttrs (old: {
+    name = "${bats.name}-tests";
+    dontInstall = true; # just need the build directory
+    installCheckInputs = [
+      ncurses
+      parallel # skips some tests if it can't detect
+      flock # skips some tests if it can't detect
+      ps
+    ] ++ lib.optionals stdenv.isDarwin [ lsof ];
+    inherit doInstallCheck;
+    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 "disabled for nix build"' test/bats.bats
+
+      # skip tests that assume bats `install.sh` will be in BATS_ROOT
+      rm test/root.bats
+
+      # test generates file with absolute shebang dynamically
+      substituteInPlace test/install.bats --replace \
+        "/usr/bin/env bash" "${bash}/bin/bash"
+
+      ${bats}/bin/bats test
+      touch $out
+    '';
+  });
+
   meta = with lib; {
     homepage = "https://github.com/bats-core/bats-core";
     description = "Bash Automated Testing System";
diff --git a/nixpkgs/pkgs/development/interpreters/bats/libraries.nix b/nixpkgs/pkgs/development/interpreters/bats/libraries.nix
new file mode 100644
index 000000000000..74324b03e6ad
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/bats/libraries.nix
@@ -0,0 +1,70 @@
+{ lib, stdenv, fetchFromGitHub }: {
+  bats-assert = stdenv.mkDerivation {
+    pname = "bats-assert";
+    version = "2.0.0";
+    src = fetchFromGitHub {
+      owner = "bats-core";
+      repo = "bats-assert";
+      rev = "v2.0.0";
+      sha256 = "sha256-whSbAj8Xmnqclf78dYcjf1oq099ePtn4XX9TUJ9AlyQ=";
+    };
+    dontBuild = true;
+    installPhase = ''
+      mkdir -p "$out/share/bats"
+      cp -r . "$out/share/bats/bats-assert"
+    '';
+    meta = {
+      description = "Common assertions for Bats";
+      platforms = lib.platforms.all;
+      homepage = "https://github.com/bats-core/bats-assert";
+      license = lib.licenses.cc0;
+      maintainers = with lib.maintainers; [ infinisil ];
+    };
+  };
+
+  bats-file = stdenv.mkDerivation {
+    pname = "bats-file";
+    version = "0.3.0";
+    src = fetchFromGitHub {
+      owner = "bats-core";
+      repo = "bats-file";
+      rev = "v0.3.0";
+      sha256 = "sha256-3xevy0QpwNZrEe+2IJq58tKyxQzYx8cz6dD2nz7fYUM=";
+    };
+    dontBuild = true;
+    installPhase = ''
+      mkdir -p "$out/share/bats"
+      cp -r . "$out/share/bats/bats-file"
+    '';
+    meta = {
+      description = "Common filesystem assertions for Bats";
+      platforms = lib.platforms.all;
+      homepage = "https://github.com/bats-core/bats-file";
+      license = lib.licenses.cc0;
+      maintainers = with lib.maintainers; [ infinisil ];
+    };
+  };
+
+  bats-support = stdenv.mkDerivation {
+    pname = "bats-support";
+    version = "0.3.0";
+    src = fetchFromGitHub {
+      owner = "bats-core";
+      repo = "bats-support";
+      rev = "v0.3.0";
+      sha256 = "sha256-4N7XJS5XOKxMCXNC7ef9halhRpg79kUqDuRnKcrxoeo=";
+    };
+    dontBuild = true;
+    installPhase = ''
+      mkdir -p "$out/share/bats"
+      cp -r . "$out/share/bats/bats-support"
+    '';
+    meta = {
+      description = "Supporting library for Bats test helpers";
+      platforms = lib.platforms.all;
+      homepage = "https://github.com/bats-core/bats-support";
+      license = lib.licenses.cc0;
+      maintainers = with lib.maintainers; [ infinisil ];
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/boron/default.nix b/nixpkgs/pkgs/development/interpreters/boron/default.nix
new file mode 100644
index 000000000000..249a39c58f3a
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/boron/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, stdenv
+, fetchurl
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "boron";
+  version = "2.0.8";
+
+  src = fetchurl {
+    url = "https://sourceforge.net/projects/urlan/files/Boron/boron-${version}.tar.gz";
+    sha256 = "sha256-Ni/LJgOABC2wXDMsg1ZAuZWSQdFT9/Fa4lH4+V0gy8M=";
+  };
+
+  # this is not a standard Autotools-like `configure` script
+  dontAddPrefix = true;
+
+  preConfigure = ''
+    patchShebangs configure
+  '';
+
+  configureFlags = [ "--thread" ];
+
+  makeFlags = [ "DESTDIR=$(out)" ];
+
+  buildInputs = [
+    zlib
+  ];
+
+  installTargets = [ "install" "install-dev" ];
+
+  doCheck = true;
+
+  checkPhase = ''
+    patchShebangs .
+    make -C test
+  '';
+
+  meta = with lib; {
+    homepage = "http://urlan.sourceforge.net/boron/";
+    description = "Scripting language and C library useful for building DSLs";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mausch ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/development/interpreters/bqn/cbqn/default.nix b/nixpkgs/pkgs/development/interpreters/bqn/cbqn/default.nix
index 992caf200a74..0426a72c81aa 100644
--- a/nixpkgs/pkgs/development/interpreters/bqn/cbqn/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/bqn/cbqn/default.nix
@@ -11,21 +11,21 @@ let
     name = "cbqn-bytecode-files";
     owner = "dzaima";
     repo = "CBQN";
-    rev = "b000b951aa8f3590b196b4c09056604c0b32a168";
-    hash = "sha256-znW0xOXogP4TfifUmk3cs4aN/9mMSpSD2WJppmeI1Fg=";
+    rev = "c39653c898531a2cdbf4cc5c764df6e37b1894a4";
+    hash = "sha256-JCEmkwh5Rv5+NQoxvefSrYnayU892/Wam+gjMgcQmO0=";
   };
 in
 assert genBytecode -> ((bqn-path != null) && (mbqn-source != null));
 
 stdenv.mkDerivation rec {
   pname = "cbqn" + lib.optionalString (!genBytecode) "-standalone";
-  version = "0.pre+date=2021-12-13";
+  version = "0.pre+date=2022-05-06";
 
   src = fetchFromGitHub {
     owner = "dzaima";
     repo = "CBQN";
-    rev = "e7662b0f6a44add0749fba2a6d7309a5c1eb2601";
-    hash = "sha256-2nfkTZBIGHX5cok6Ea3KSewakZy8Ey8nSO2Fe4xGgvg=";
+    rev = "3496a939b670f8c9ca2a04927378d6b7e9abd68e";
+    hash = "sha256-P+PoY4XF9oEw7VIpmybvPp+jxWHEo2zt1Lamayf1mHg=";
   };
 
   dontConfigure = true;
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
   '' + (if genBytecode then ''
     ${bqn-path} genRuntime ${mbqn-source}
   '' else ''
-    cp ${cbqn-bytecode-files}/src/gen/{compiler,formatter,runtime0,runtime1,src} src/gen/
+    cp ${cbqn-bytecode-files}/src/gen/{compiles,formatter,runtime0,runtime1,src} src/gen/
   '');
 
   installPhase = ''
@@ -63,7 +63,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/dzaima/CBQN/";
     description = "BQN implementation in C";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ AndersonTorres sternenseemann synthetica ];
+    maintainers = with maintainers; [ AndersonTorres sternenseemann synthetica shnarazk ];
     platforms = platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/cling/default.nix b/nixpkgs/pkgs/development/interpreters/cling/default.nix
index 968817cf067a..1ec265f305b6 100644
--- a/nixpkgs/pkgs/development/interpreters/cling/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/cling/default.nix
@@ -94,7 +94,7 @@ let
 in
 
 runCommand "cling-${unwrapped.version}" {
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
   inherit unwrapped flags compilerIncludeFlags;
   inherit (unwrapped) meta;
 } ''
diff --git a/nixpkgs/pkgs/development/interpreters/clojure/babashka.nix b/nixpkgs/pkgs/development/interpreters/clojure/babashka.nix
index c3dcd0a0f71f..89294e5e8279 100644
--- a/nixpkgs/pkgs/development/interpreters/clojure/babashka.nix
+++ b/nixpkgs/pkgs/development/interpreters/clojure/babashka.nix
@@ -2,11 +2,11 @@
 
 buildGraalvmNativeImage rec {
   pname = "babashka";
-  version = "0.7.8";
+  version = "0.9.160";
 
   src = fetchurl {
     url = "https://github.com/babashka/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar";
-    sha256 = "sha256-VbDivl92YYWzIbkbOgDijzf9bZ5ZyodcapPPG4EiGXc=";
+    sha256 = "sha256-mLP9Jg18iNj4FMDAoa9n3jf5A3G+JekywDJBHM4HEwc=";
   };
 
   executable = "bb";
@@ -66,6 +66,7 @@ buildGraalvmNativeImage rec {
     '';
     homepage = "https://github.com/babashka/babashka";
     changelog = "https://github.com/babashka/babashka/blob/v${version}/CHANGELOG.md";
+    sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.epl10;
     maintainers = with maintainers; [
       bandresen
diff --git a/nixpkgs/pkgs/development/interpreters/clojure/clooj.nix b/nixpkgs/pkgs/development/interpreters/clojure/clooj.nix
index 42d6d67ee15b..0e8391d5a686 100644
--- a/nixpkgs/pkgs/development/interpreters/clojure/clooj.nix
+++ b/nixpkgs/pkgs/development/interpreters/clojure/clooj.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A lightweight IDE for Clojure";
     homepage = "https://github.com/arthuredelstein/clooj";
+    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
     license = lib.licenses.bsd3;
     platforms = lib.platforms.all;
   };
diff --git a/nixpkgs/pkgs/development/interpreters/clojure/default.nix b/nixpkgs/pkgs/development/interpreters/clojure/default.nix
index cd63e506a55f..49cba2ca6214 100644
--- a/nixpkgs/pkgs/development/interpreters/clojure/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/clojure/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "clojure";
-  version = "1.11.0.1100";
+  version = "1.11.1.1149";
 
   src = fetchurl {
     # https://clojure.org/releases/tools
     url = "https://download.clojure.org/install/clojure-tools-${version}.tar.gz";
-    sha256 = "sha256-9KEsO32118fvKE1Gls+9nAeRdlhTKfmJylsiSYCoKKU=";
+    sha256 = "sha256-IIhonPSwpADNAuv9DQIKrdsJcGAlX+6uHe+jvA6i3KQ=";
   };
 
   nativeBuildInputs = [
@@ -74,6 +74,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "A Lisp dialect for the JVM";
     homepage = "https://clojure.org/";
+    sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.epl10;
     longDescription = ''
       Clojure is a dynamic programming language that targets the Java
diff --git a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/default.nix b/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/default.nix
deleted file mode 100644
index d8fa630c30df..000000000000
--- a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/default.nix
+++ /dev/null
@@ -1,287 +0,0 @@
-{ stdenv
-, lib
-, fetchurl
-, clojure
-, gnutar
-, nodejs
-, jre
-, unzip
-, nodePackages
-, xcbuild
-, python2
-, openssl
-, pkgs
-, fetchgit
-, darwin
-}:
-let
-  version = "1.10.1";
-  nodeVersion = "11.13.0";
-  nodeSources = fetchurl {
-    url = "https://nodejs.org/dist/v${nodeVersion}/node-v${nodeVersion}.tar.gz";
-    sha256 = "1cjzjbshxnysxkvbf41p3m8298cnhs9kfvdczgvvvlp6w16x4aac";
-  };
-  lumo-internal-classpath = "LUMO__INTERNAL__CLASSPATH";
-
-  # as found in cljs/snapshot/lumo/repl.cljs
-  requireDeps = '' \
-      cljs.analyzer \
-      cljs.compiler \
-      cljs.env \
-      cljs.js \
-      cljs.reader \
-      cljs.repl \
-      cljs.source-map \
-      cljs.source-map.base64 \
-      cljs.source-map.base64-vlq \
-      cljs.spec.alpha \
-      cljs.spec.gen.alpha \
-      cljs.tagged-literals \
-      cljs.tools.reader \
-      cljs.tools.reader.reader-types \
-      cljs.tools.reader.impl.commons \
-      cljs.tools.reader.impl.utils \
-      clojure.core.rrb-vector \
-      clojure.core.rrb-vector.interop \
-      clojure.core.rrb-vector.nodes \
-      clojure.core.rrb-vector.protocols \
-      clojure.core.rrb-vector.rrbt \
-      clojure.core.rrb-vector.transients \
-      clojure.core.rrb-vector.trees \
-      clojure.string \
-      clojure.set \
-      clojure.walk \
-      cognitect.transit \
-      fipp.visit \
-      fipp.engine \
-      fipp.deque \
-      lazy-map.core \
-      lumo.pprint.data \
-      lumo.repl \
-      lumo.repl-resources \
-      lumo.js-deps \
-      lumo.common '';
-
-  compileClojurescript = (simple: ''
-    (require '[cljs.build.api :as cljs])
-    (cljs/build \"src/cljs/snapshot\"
-      {:optimizations      ${if simple then ":simple" else ":none"}
-       :main               'lumo.core
-       :cache-analysis     true
-       :source-map         false
-       :dump-core          false
-       :static-fns         true
-       :optimize-constants false
-       :npm-deps           false
-       :verbose            true
-       :closure-defines    {'cljs.core/*target*       \"nodejs\"
-                            'lumo.core/*lumo-version* \"${version}\"}
-       :compiler-stats     true
-       :process-shim       false
-       :fn-invoke-direct   true
-       :parallel-build     false
-       :browser-repl       false
-       :target             :nodejs
-       :hashbang           false
-       ;; :libs               [ \"src/cljs/bundled\" \"src/js\" ]
-       :output-dir         ${if simple
-  then ''\"cljstmp\"''
-  else ''\"target\"''}
-       :output-to          ${if simple
-  then ''\"cljstmp/main.js\"''
-  else ''\"target/deleteme.js\"'' }})
-  ''
-  );
-
-
-  cacheToJsons = ''
-    (import [java.io ByteArrayOutputStream FileInputStream])
-    (require '[cognitect.transit :as transit]
-             '[clojure.edn :as edn]
-             '[clojure.string :as str])
-
-    (defn write-transit-json [cache]
-      (let [out (ByteArrayOutputStream. 1000000)
-            writer (transit/writer out :json)]
-        (transit/write writer cache)
-        (.toString out)))
-
-    (defn process-caches []
-      (let [cache-aot-path      \"target/cljs/core.cljs.cache.aot.edn\"
-            cache-aot-edn       (edn/read-string (slurp cache-aot-path))
-            cache-macros-path   \"target/cljs/core\$macros.cljc.cache.json\"
-            cache-macros-stream (FileInputStream. cache-macros-path)
-            cache-macros-edn    (transit/read (transit/reader cache-macros-stream :json))
-            caches              [[cache-aot-path cache-aot-edn]
-                                 [cache-macros-path cache-macros-edn]]]
-        (doseq [[path cache-edn] caches]
-          (doseq [key (keys cache-edn)]
-            (let [out-path (str/replace path #\"(\.json|\.edn)\$\"
-                             (str \".\" (munge key) \".json\"))
-                  tr-json  (write-transit-json (key cache-edn))]
-              (spit out-path tr-json))))))
-
-    (process-caches)
-  '';
-
-  trimMainJsEnd = ''
-    (let [string (slurp \"target/main.js\")]
-      (spit \"target/main.js\"
-        (subs string  0 (.indexOf string \"cljs.nodejs={};\"))))
-  '';
-
-
-  cljdeps = import ./deps.nix { inherit pkgs; };
-  classp = cljdeps.makeClasspaths {
-    extraClasspaths = [ "src/js" "src/cljs/bundled" "src/cljs/snapshot" ];
-  };
-
-
-  getJarPath = jarName: (lib.findFirst (p: p.name == jarName) null cljdeps.packages).path.jar;
-in
-stdenv.mkDerivation {
-  inherit version;
-  pname = "lumo";
-
-  src = fetchgit {
-    url = "https://github.com/anmonteiro/lumo.git";
-    rev = version;
-    sha256 = "12agi6bacqic2wq6q3l28283badzamspajmajzqm7fbdl2aq1a4p";
-  };
-
-  nativeBuildInputs = [ unzip ];
-  buildInputs = [
-    nodejs
-    clojure
-    jre
-    python2
-    openssl
-    gnutar
-    nodePackages."lumo-build-deps-../interpreters/clojurescript/lumo"
-  ]
-  ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
-    ApplicationServices
-    xcbuild
-  ]
-  );
-
-  patches = [ ./no_mangle.patch ./mkdir_promise.patch ];
-
-  postPatch = ''
-    substituteInPlace $NIX_BUILD_TOP/lumo/vendor/nexe/exe.js \
-      --replace 'glob.sync(dir + "/*")' 'glob.sync(dir + "/../*")'
-  '';
-
-  buildPhase = ''
-       # Copy over lumo-build-deps environment
-    rm yarn.lock
-    cp -rf ${nodePackages."lumo-build-deps-../interpreters/clojurescript/lumo"}/lib/node_modules/lumo-build-deps/* ./
-
-    # configure clojure-cli
-    mkdir ./.cpcache
-    export CLJ_CONFIG=`pwd`
-    export CLJ_CACHE=`pwd`/.cpcache
-
-    # require more namespaces for cljs-bundle
-    sed -i "s!ns lumo.core! \
-              ns lumo.core  \
-               (:require ${requireDeps}) \
-               (:require-macros [clojure.template :as temp] \
-                                [cljs.test :as test])!g" \
-              ./src/cljs/snapshot/lumo/core.cljs
-
-    # Step 1: compile clojurescript with :none and :simple
-    ${clojure}/bin/clojure -Scp ${classp} -e "${compileClojurescript true}"
-    ${clojure}/bin/clojure -Scp ${classp} -e "${compileClojurescript false}"
-    cp -f cljstmp/main.js target/main.js
-    ${clojure}/bin/clojure -Scp ${classp} -e "${trimMainJsEnd}"
-
-    # Step 2: sift files
-    unzip -o ${getJarPath "org.clojure/clojurescript"} -d ./target
-    unzip -j ${getJarPath "org.clojure/clojure"} "clojure/template.clj" -d ./target/clojure
-    unzip -o ${getJarPath "org.clojure/google-closure-library"} -d ./target
-    unzip -o ${getJarPath "org.clojure/google-closure-library-third-party"} -d ./target
-    unzip -o ${getJarPath "org.clojure/tools.reader"} -d ./target
-    unzip -o ${getJarPath "org.clojure/test.check"} -d ./target
-    cp -rf ./src/cljs/bundled/lumo/* ./target/lumo/
-    cp -rf ./src/cljs/snapshot/lumo/repl.clj ./target/lumo/
-    # cleanup
-    mv ./target/main.js ./target/main
-    rm ./target/*\.js
-    mv ./target/main ./target/main.js
-    rm ./target/AUTHORS
-    rm ./target/LICENSE
-    rm ./target/*.edn
-    rm ./target/*.md
-    rm -rf ./target/css
-    rm -rf ./target/META-INF
-    rm -rf ./target/com
-    rm -rf ./target/cljs/build
-    rm -rf ./target/cljs/repl
-    rm  ./target/cljs/core\.cljs\.cache.aot\.json
-    rm  ./target/cljs/source_map\.clj
-    rm  ./target/cljs/repl\.cljc
-    rm  ./target/cljs/externs\.clj
-    rm  ./target/cljs/closure\.clj
-    rm  ./target/cljs/util\.cljc
-    rm  ./target/cljs/js_deps\.cljc
-    rm  ./target/cljs/analyzer/utils\.clj
-    rm  ./target/cljs/core/macros\.clj
-    rm  ./target/cljs/compiler/api.clj
-    rm  ./target/goog/test_module*
-    rm  ./target/goog/transpile\.js
-    rm  ./target/goog/base_*
-    find ./target -type f -name '*.class' -delete
-    find ./target -type d -empty -delete
-
-    # Step 3: generate munged cache jsons
-    ${clojure}/bin/clojure -Scp ${classp} -e "${cacheToJsons}"
-    rm  ./target/cljs/core\$macros\.cljc\.cache\.json
-
-
-    # Step 4: Bunde javascript
-    NODE_ENV=production node scripts/bundle.js
-    node scripts/bundleForeign.js
-
-    # Step 5: Backup resources
-    cp -R target resources_bak
-
-    # Step 6: Package executeable 1st time
-    # fetch node sources and copy to palce that nexe will find
-    mkdir -p tmp/node/${nodeVersion}
-    cp ${nodeSources} tmp/node/${nodeVersion}/node-${nodeVersion}.tar.gz
-    tar -C ./tmp/node/${nodeVersion} -xf ${nodeSources} --warning=no-unknown-keyword
-    mv ./tmp/node/${nodeVersion}/node-v${nodeVersion}/* ./tmp/node/${nodeVersion}/
-    rm -rf ${lumo-internal-classpath}
-    cp -rf target ${lumo-internal-classpath}
-    node scripts/package.js ${nodeVersion}
-    rm -rf target
-    mv ${lumo-internal-classpath} target
-
-    # Step 7: AOT Macros
-    sh scripts/aot-bundle-macros.sh
-
-    # Step 8: Package executeable 2nd time
-    node scripts/package.js ${nodeVersion}
-  '';
-
-  dontStrip = true;
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp build/lumo $out/bin
-  '';
-
-  meta = {
-    description = "Fast, cross-platform, standalone ClojureScript environment";
-    longDescription = ''
-      Lumo is a fast, standalone ClojureScript REPL that runs on Node.js and V8.
-      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";
-    license = lib.licenses.epl10;
-    maintainers = [ lib.maintainers.hlolli ];
-    platforms = lib.platforms.linux ++ lib.platforms.darwin;
-  };
-}
diff --git a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.edn b/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.edn
deleted file mode 100644
index 7a2faee1d7a5..000000000000
--- a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.edn
+++ /dev/null
@@ -1,12 +0,0 @@
-{:deps
- {org.clojure/clojure       {:mvn/version "1.10.1"}
-  org.clojure/clojurescript {:mvn/version "1.10.520"}
-  org.clojure/test.check    {:mvn/version "0.10.0-alpha4"}
-  org.clojure/tools.reader   {:mvn/version "1.3.2"
-                              :exclusions  [org.clojure/clojure org.clojure/clojurescript]}
-  com.cognitect/transit-cljs {:mvn/version "0.8.256"
-                              :exclusions  [org.clojure/clojure org.clojure/clojurescript]}
-  malabarba/lazy-map         {:mvn/version "1.3"
-                              :exclusions  [org.clojure/clojure org.clojure/clojurescript]}
-  fipp                       {:mvn/version "0.6.17"
-                              :exclusions  [org.clojure/clojure org.clojure/clojurescript]}}}
diff --git a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.nix b/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.nix
deleted file mode 100644
index 50f1c4af2118..000000000000
--- a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/deps.nix
+++ /dev/null
@@ -1,392 +0,0 @@
-# generated by clj2nix-1.0.4
-{ pkgs }:
-
-let repos = [
-      "https://repo.clojars.org/"
-      "https://repo1.maven.org/"
-      "https://oss.sonatype.org/content/repositories/releases/"
-      "https://oss.sonatype.org/content/repositories/public/"
-      "https://repo.typesafe.com/typesafe/releases/"
-    ];
-
-in rec {
-  makePaths = {extraClasspaths ? []}: (builtins.map (dep: if builtins.hasAttr "jar" dep.path then dep.path.jar else dep.path) packages) ++ extraClasspaths;
-  makeClasspaths = {extraClasspaths ? []}: builtins.concatStringsSep ":" (makePaths {inherit extraClasspaths;});
-
-  packages = [
-    {
-      name = "com.cognitect/transit-java";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "transit-java";
-        groupId = "com.cognitect";
-        sha512 = "80365a4f244e052b6c4fdfd2fd3b91288835599cb4dd88e0e0dae19883dcda39afee83966810ed81beff342111c3a45a66f5601c443f3ad49904908c43631708";
-        version = "0.8.332";
-      };
-    }
-
-    {
-      name = "org.clojure/data.json";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "data.json";
-        groupId = "org.clojure";
-        sha512 = "ce526bef01bedd31b772954d921a61832ae60af06121f29080853f7932326438b33d183240a9cffbe57e00dc3744700220753948da26b8973ee21c30e84227a6";
-        version = "0.2.6";
-      };
-    }
-
-    {
-      name = "org.clojure/clojure";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "clojure";
-        groupId = "org.clojure";
-        sha512 = "f28178179483531862afae13e246386f8fda081afa523d3c4ea3a083ab607d23575d38ecb9ec0ee7f4d65cbe39a119f680e6de4669bc9cf593aa92be0c61562b";
-        version = "1.10.1";
-      };
-    }
-
-    {
-      name = "commons-codec/commons-codec";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "commons-codec";
-        groupId = "commons-codec";
-        sha512 = "8edecc0faf38e8620460909d8191837f34e2bb2ce853677c486c5e79bb79e88d043c3aed69c11f1365c4884827052ee4e1c18ca56e38d1a5bc0ce15c57daeee3";
-        version = "1.10";
-      };
-    }
-
-    {
-      name = "com.google.errorprone/error_prone_annotations";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "error_prone_annotations";
-        groupId = "com.google.errorprone";
-        sha512 = "bd2135cc9eb2c652658a2814ec9c565fa3e071d4cff590cbe17b853885c78c9f84c1b7b24ba736f4f30ed8cec60a6af983827fcbed61ff142f27ac808e97fc6b";
-        version = "2.1.3";
-      };
-    }
-
-    {
-      name = "org.clojure/core.specs.alpha";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "core.specs.alpha";
-        groupId = "org.clojure";
-        sha512 = "348c0ea0911bc0dcb08655e61b97ba040649b4b46c32a62aa84d0c29c245a8af5c16d44a4fa5455d6ab076f4bb5bbbe1ad3064a7befe583f13aeb9e32a169bf4";
-        version = "0.2.44";
-      };
-    }
-
-    {
-      name = "org.clojure/spec.alpha";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "spec.alpha";
-        groupId = "org.clojure";
-        sha512 = "18c97fb2b74c0bc2ff4f6dc722a3edec539f882ee85d0addf22bbf7e6fe02605d63f40c2b8a2905868ccd6f96cfc36a65f5fb70ddac31c6ec93da228a456edbd";
-        version = "0.2.176";
-      };
-    }
-
-    {
-      name = "org.codehaus.mojo/animal-sniffer-annotations";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "animal-sniffer-annotations";
-        groupId = "org.codehaus.mojo";
-        sha512 = "9e5e3ea9e06e0ac9463869fd0e08ed38f7042784995a7b50c9bfd7f692a53f0e1430b9e1367dc772d0d4eafe5fd2beabbcc60da5008bd792f9e7ec8436c0f136";
-        version = "1.14";
-      };
-    }
-
-    {
-      name = "com.googlecode.json-simple/json-simple";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "json-simple";
-        groupId = "com.googlecode.json-simple";
-        sha512 = "f8798bfbcc8ab8001baf90ce47ec2264234dc1da2d4aa97fdcdc0990472a6b5a5a32f828e776140777d598a99d8a0c0f51c6d0767ae1a829690ab9200ae35742";
-        version = "1.1.1";
-      };
-    }
-
-    {
-      name = "com.cognitect/transit-cljs";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "transit-cljs";
-        groupId = "com.cognitect";
-        sha512 = "318b98ddd63629f37b334bb90e625bc31ab6abcf0b1fa80d8e097551658f2d9219b5ee35869a31f2976d7d385da83bea0c07b0d097babcae241ecbd0fe8a7ecd";
-        version = "0.8.256";
-      };
-    }
-
-    {
-      name = "org.clojure/google-closure-library";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "google-closure-library";
-        groupId = "org.clojure";
-        sha512 = "75631182ef12f21723fe3eba1003d8cf9b8348a51512961e4e1b87bc24d8f3abb14a70c856f08cdaa5588a2d7c2b1b0c03aeaa3c4c5f2ed745a85f59ceeab83a";
-        version = "0.0-20170809-b9c14c6b";
-      };
-    }
-
-    {
-      name = "fipp";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "fipp";
-        groupId = "fipp";
-        sha512 = "d844ab63d28cb5e31657cc38e574bbc7072a78419c997f25445ac6ea4a719904a4f4844b37e3f664a8d2e49bd38ff1006a9e8c6e63fb4e2f0a2322d6c2638275";
-        version = "0.6.17";
-      };
-    }
-
-    {
-      name = "org.clojure/clojurescript";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "clojurescript";
-        groupId = "org.clojure";
-        sha512 = "b241959d6bd2ab659920965d301508226e26b3edcee469e4cd516cd4ed014b1a6b132c17ee7d96a8e66fe27fd01a74813ac8b85958d260f9fdbbeb4348d57ff1";
-        version = "1.10.520";
-      };
-    }
-
-    {
-      name = "com.google.jsinterop/jsinterop-annotations";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "jsinterop-annotations";
-        groupId = "com.google.jsinterop";
-        sha512 = "b6fd98a9167d031f6bff571567d4658fda62c132dc74d47ca85e02c9bb3ce8812b1012c67f4c81501ab0cbd9ccd9cda5dcf32d306e04368ace7a173cecae975d";
-        version = "1.0.0";
-      };
-    }
-
-    {
-      name = "com.fasterxml.jackson.core/jackson-core";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "jackson-core";
-        groupId = "com.fasterxml.jackson.core";
-        sha512 = "a1bd6c264b9ab07aad3d0f26b65757e35ff47904ab895bb7f997e3e1fd063129c177ad6f69876907b04ff8a43c6b1770a26f53a811633a29e66a5dce57194f64";
-        version = "2.8.7";
-      };
-    }
-
-    {
-      name = "malabarba/lazy-map";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "lazy-map";
-        groupId = "malabarba";
-        sha512 = "ce56d6f03ac344579e15f062cdd4c477c0323da716d4d4106c4edb746959699e0b294b25aacf8ecf1579a6bdd5556a60f4bcb1648d22832984c069a0431c840f";
-        version = "1.3";
-      };
-    }
-
-    {
-      name = "com.cognitect/transit-js";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "transit-js";
-        groupId = "com.cognitect";
-        sha512 = "6ca0978e633e41b45ff5a76df79099ba7c4900a8ca9f6acd2a903e4ab10a1ec0c83d4127009df9dac1337debaba01f7ff1d5cced1c2159c05ef94845f73f0623";
-        version = "0.8.846";
-      };
-    }
-
-    {
-      name = "org.mozilla/rhino";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "rhino";
-        groupId = "org.mozilla";
-        sha512 = "466e7a76303ea191802b5e7adb3dff64c1d6283a25ce87447296b693b87b166f4cdd191ef7dc130a5739bfa0e4a81b08550f607c84eec167406d9be2225562dc";
-        version = "1.7R5";
-      };
-    }
-
-    {
-      name = "org.clojure/google-closure-library-third-party";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "google-closure-library-third-party";
-        groupId = "org.clojure";
-        sha512 = "57fa84fbbca3eb9e612d2842e4476b74f64d13dd076ffca6c9d9e15c4ca8a2f2c56cc19307bcad0ab5b4f9cb0c3e7900ccc845bd570ebc92e2633885ab621f35";
-        version = "0.0-20170809-b9c14c6b";
-      };
-    }
-
-    {
-      name = "com.google.javascript/closure-compiler-externs";
-      path = pkgs.fetchMavenArtifact {
-        inherit repos;
-        artifactId = "closure-compiler-externs";
-        groupId = "com.google.javascript";
-        sha512 = "1a47c8559144095c0b23a8e40acd7185625cea5a4c103eb75fbacd32d5809d087bfb60aaf57066329649c6017ec5f993756024e767a5b8f84926371ba6183a82";
-        version = "v20180805";
-      };
-    }
-
-    {
-    name = "org.javassist/javassist";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "javassist";
-      groupId = "org.javassist";
-      sha512 = "ad65ee383ed83bedecc2073118cb3780b68b18d5fb79a1b2b665ff8529df02446ad11e68f9faaf4f2e980065f5946761a59ada379312cbb22d002625abed6a4f";
-      version = "3.18.1-GA";
-    };
-  }
-
-  {
-    name = "com.google.guava/guava";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "guava";
-      groupId = "com.google.guava";
-      sha512 = "429ceeec0350ba98e2b089b8b70ded2ec570c3a684894a7545d10592c1c7be42dacd1fad8b2cb9123aa3612575ce1b56e1bb54923443fc293f8e9adeac2762ee";
-      version = "25.1-jre";
-    };
-  }
-
-  {
-    name = "org.msgpack/msgpack";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "msgpack";
-      groupId = "org.msgpack";
-      sha512 = "a2741bed01f9c37ba3dbe6a7ab9ce936d36d4da97c35e215250ac89ac0851fc5948d83975ea6257d5dce1d43b6b5147254ecfb4b33f9bbdc489500b3ff060449";
-      version = "0.6.12";
-    };
-  }
-
-  {
-    name = "com.google.j2objc/j2objc-annotations";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "j2objc-annotations";
-      groupId = "com.google.j2objc";
-      sha512 = "a4a0b58ffc2d9f9b516f571bcd0ac14e4d3eec15aacd6320a4a1a12045acce8c6081e8ce922c4e882221cedb2cc266399ab468487ae9a08124d65edc07ae30f0";
-      version = "1.1";
-    };
-  }
-
-  {
-    name = "com.cognitect/transit-clj";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "transit-clj";
-      groupId = "com.cognitect";
-      sha512 = "ad838d9e5688c8cebe54972ad0c9a6db428ec1cece8c8b078e8e8d4b0c7870b328239d2bc9dd8fcbedcba56ca0de9afb5a0a843ff5f630dc039118de7eb45eba";
-      version = "0.8.309";
-    };
-  }
-
-  {
-    name = "args4j/args4j";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "args4j";
-      groupId = "args4j";
-      sha512 = "5f0651234c8f8b130fddb39fa832c6da47d3e21bc3434307554314c47e672c28d005c64e9effe85d552190cfc27966b1f005740ffd40b4e1bec2cb257d7feedb";
-      version = "2.0.26";
-    };
-  }
-
-  {
-    name = "org.clojure/core.rrb-vector";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "core.rrb-vector";
-      groupId = "org.clojure";
-      sha512 = "4e410c4a90a869e98d5d69a8a6dd6427e9d77b70e1a2b54cf24baf23389f22e7a208375783c2fdc5c1a5acfb8511a5c5ed57ad1a946d5bffd203f453d90a6155";
-      version = "0.0.14";
-    };
-  }
-
-  {
-    name = "org.checkerframework/checker-qual";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "checker-qual";
-      groupId = "org.checkerframework";
-      sha512 = "3c38b0b9e0bde464268cff5fdb1894a048240b039093ee3abe5b32976a22737d26b355f8793f630a7f0b319fdb019a6fcd9ee1d5219676f0f10c0b0f496b61b7";
-      version = "2.0.0";
-    };
-  }
-
-  {
-    name = "org.clojure/tools.reader";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "tools.reader";
-      groupId = "org.clojure";
-      sha512 = "290a2d98b2eec08a8affc2952006f43c0459c7e5467dc454f5fb5670ea7934fa974e6be19f7e7c91dadcfed62082d0fbcc7788455b7446a2c9c5af02f7fc52b6";
-      version = "1.3.2";
-    };
-  }
-
-  {
-    name = "com.google.javascript/closure-compiler-unshaded";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "closure-compiler-unshaded";
-      groupId = "com.google.javascript";
-      sha512 = "4fa7029aabd9ff84255d56004707486726db9c770f43cb10dc44fb53a3254d588a0f47f937f55401d7f319267ec2362c87f5ea709bcfa06f12a66fe22cb8c53d";
-      version = "v20180805";
-    };
-  }
-
-  {
-    name = "org.clojure/test.check";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "test.check";
-      groupId = "org.clojure";
-      sha512 = "60fa3bd38c32cf193c573f1bd47c6abd7e7a5bb2fc7f7f9f97aa9dcd54d5e2eab9e351f5f83b01bb96b32811a9f2f5ab384c6b7b7ebbb6c86d1ad4f2789351bf";
-      version = "0.10.0-alpha4";
-    };
-  }
-
-  {
-    name = "com.google.protobuf/protobuf-java";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "protobuf-java";
-      groupId = "com.google.protobuf";
-      sha512 = "230fc4360b8b2ee10eb73d756c58478b6c779433aa4ca91938404bbfd0ada516d3215664dbe953c96649e33bbef293958e4ad4616671f0c246883196ece92998";
-      version = "3.0.2";
-    };
-  }
-
-  {
-    name = "com.google.code.findbugs/jsr305";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "jsr305";
-      groupId = "com.google.code.findbugs";
-      sha512 = "bb09db62919a50fa5b55906013be6ca4fc7acb2e87455fac5eaf9ede2e41ce8bbafc0e5a385a561264ea4cd71bbbd3ef5a45e02d63277a201d06a0ae1636f804";
-      version = "3.0.2";
-    };
-  }
-
-  {
-    name = "com.google.code.gson/gson";
-    path = pkgs.fetchMavenArtifact {
-      inherit repos;
-      artifactId = "gson";
-      groupId = "com.google.code.gson";
-      sha512 = "c3cdaf66a99e6336abc80ff23374f6b62ac95ab2ae874c9075805e91d849b18e3f620cc202b4978fc92b73d98de96089c8714b1dd096b2ae1958cfa085715f7a";
-      version = "2.7";
-    };
-  }
-
-  ];
-  }
diff --git a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/mkdir_promise.patch b/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/mkdir_promise.patch
deleted file mode 100644
index e9504bb5c1a0..000000000000
--- a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/mkdir_promise.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/vendor/nexe/exe.js b/vendor/nexe/exe.js
-index 21e78bb..ecbfca4 100644
---- a/vendor/nexe/exe.js
-+++ b/vendor/nexe/exe.js
-@@ -254,9 +254,7 @@ return initModule._compile(${JSON.stringify(source)}, process.execPath);
-      */
- 
-     function makeOutputDirectory(next) {
--      mkdirp(path.dirname(options.output), function() {
--        next();
--      });
-+        mkdirp(path.dirname(options.output)).then(() => next());
-     },
- 
-     /**
-@@ -1107,4 +1105,3 @@ exports.package = function(path, options) {
- 
-   return obj;
- }
--
diff --git a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/no_mangle.patch b/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/no_mangle.patch
deleted file mode 100644
index 9af223411958..000000000000
--- a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/no_mangle.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/scripts/bundle.js b/scripts/bundle.js
-index 16425a4..0d510fc 100644
---- a/scripts/bundle.js
-+++ b/scripts/bundle.js
-@@ -73,6 +73,8 @@ const plugins = [
- if (!isDevBuild) {
-   plugins.push(
-     babelMinify({
-+     evaluate: false,
-+      mangle: false,
-       comments: false,
-       removeConsole: true,
-       removeDebugger: true,
diff --git a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/package.json b/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/package.json
deleted file mode 100644
index acfd5c4ed498..000000000000
--- a/nixpkgs/pkgs/development/interpreters/clojurescript/lumo/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "name": "lumo-build-deps",
-  "version": "1.10.1",
-  "dependencies": {
-    "@babel/core": "^7.1.5",
-    "@babel/plugin-external-helpers": "7.8.3",
-    "@babel/plugin-proposal-class-properties": "^7.1.0",
-    "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
-    "@babel/plugin-transform-runtime": "^7.1.0",
-    "@babel/preset-env": "^7.1.5",
-    "@babel/preset-stage-2": "7.8.3",
-    "@babel/runtime": "^7.1.5",
-    "async": "^3.1.1",
-    "async-retry": "^1.2.3",
-    "babel-core": "^7.0.0-bridge.0",
-    "babel-eslint": "10.0.3",
-    "babel-jest": "^25.1.0",
-    "babel-loader": "^8.0.4",
-    "babel-plugin-transform-flow-strip-types": "6.22.0",
-    "browserify": "^16.2.3",
-    "chalk": "^3.0.0",
-    "colors": "^1.3.3",
-    "cross-env": "7.0.0",
-    "death": "^1.1.0",
-    "flow-bin": "0.118.0",
-    "google-closure-compiler-js": "20170910.0.1",
-    "glob": "^7.1.3",
-    "gunzip-maybe": "^1.4.1",
-    "insert-module-globals": "^7.2.0",
-    "jszip": "2.x",
-    "mkdirp": "^1.0.3",
-    "ncp": "^2.0.0",
-    "node-fetch": "^2.2.1",
-    "paredit.js": "0.3.6",
-    "posix-getopt": "github:anmonteiro/node-getopt#master",
-    "prettier": "1.19.1",
-    "progress": "^2.0.0",
-    "read-pkg": "^5.2.0",
-    "request": "^2.88.0",
-    "rollup": "^1.9.0",
-    "rollup-plugin-babel": "^4.3.2",
-    "rollup-plugin-babel-minify": "^9.1.1",
-    "rollup-plugin-commonjs": "^10.0.0",
-    "rollup-plugin-node-resolve": "^5.0.0",
-    "rollup-plugin-replace": "^2.1.1",
-    "tar-stream": "^2.0.1",
-    "webpack": "^4.25.1",
-    "webpack-cli": "^3.2.3",
-    "which-promise": "^1.0.0"
-  }
-}
diff --git a/nixpkgs/pkgs/development/interpreters/dart/default.nix b/nixpkgs/pkgs/development/interpreters/dart/default.nix
index 366b7df3edd4..8570bb3d72d3 100644
--- a/nixpkgs/pkgs/development/interpreters/dart/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/dart/default.nix
@@ -2,7 +2,7 @@
 , lib
 , fetchurl
 , unzip
-, version ? "2.15.1"
+, version ? "2.17.3"
 , sources ? let
     base = "https://storage.googleapis.com/dart-archive/channels";
     x86_64 = "x64";
@@ -10,24 +10,28 @@
     aarch64 = "arm64";
     # Make sure that if the user overrides version parameter they're
     # also need to override sources, to avoid mistakes
-    version = "2.15.1";
+    version = "2.17.3";
   in
   {
+    "${version}-aarch64-darwin" = fetchurl {
+      url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${aarch64}-release.zip";
+      sha256 = "sha256-NjkqC9DaaFGN47Qe46xUlsEx2O2bQrKhb1eJyxfr7Vg=";
+    };
     "${version}-x86_64-darwin" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip";
-      sha256 = "sha256-s6bkwh2m5KdRr/WxWXwItO9YaDpp/HI3xjnS2UHmN+I=";
+      sha256 = "sha256-+6y4lOGS8VyWrZCMSgLFun0E/WOCGlHEE8J5cQiVpUY=";
     };
     "${version}-x86_64-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip";
-      sha256 = "sha256-D0XcqlO0CQtpsne4heqaTLOkFYnJEZET4bl4rVXOM18=";
+      sha256 = "sha256-aPmgmsYaqxwTWtLmSjm/rAiJANQ5lB3uJ12OqMhUG5U=";
     };
     "${version}-i686-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${i686}-release.zip";
-      sha256 = "sha256-SRq5TtxS+bwCqVxa0U2Zhn8J1Wtm4Onq+3uQS+951sw=";
+      sha256 = "sha256-BFIN36OURaWIgBUiO35GkMkhCBHnqtKYPJVetdJ5cZI=";
     };
     "${version}-aarch64-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip";
-      sha256 = "sha256-iDbClCNDUsxT6K6koc4EQuu7dppTbOfzCVedpQIKI5U=";
+      sha256 = "sha256-yZMke1raq0Mvu01LFE1aUsTEARZWMS0rAI727FHq6ts=";
     };
   }
 }:
@@ -47,6 +51,7 @@ stdenv.mkDerivation {
     mkdir -p $out
     cp -R * $out/
     echo $libPath
+  '' + lib.optionalString(stdenv.isLinux) ''
     find $out/bin -executable -type f -exec patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) {} \;
   '';
 
@@ -63,7 +68,7 @@ stdenv.mkDerivation {
       with C-style syntax. It offers compilation to JavaScript, interfaces,
       mixins, abstract classes, reified generics, and optional typing.
     '';
-    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" ];
+    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     license = licenses.bsd3;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-url.nix b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-url.nix
index 766fe3c1c2e3..6d7103f78e6f 100644
--- a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-url.nix
+++ b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-url.nix
@@ -59,6 +59,7 @@ let
         outputHash = hash;
         name = baseNameOf url;
         nativeBuildInputs = [ cacert ];
+        impureEnvVars = lib.fetchers.proxyImpureEnvVars;
       }
       ''
         echo "${url} ${dhallHash}" > in-dhall-file
@@ -76,7 +77,8 @@ let
    sourceFile = "source.dhall";
 
 in
-  runCommand name { } (''
+  runCommand name { }
+ (''
     set -eu
 
     mkdir -p ${cacheDhall} $out/${cacheDhall}
diff --git a/nixpkgs/pkgs/development/interpreters/duktape/default.nix b/nixpkgs/pkgs/development/interpreters/duktape/default.nix
index 912fc691dd91..c296d013e3d1 100644
--- a/nixpkgs/pkgs/development/interpreters/duktape/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/duktape/default.nix
@@ -8,20 +8,16 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-kPjS+otVZ8aJmDDd7ywD88J5YLEayiIvoXqnrGE8KJA=";
   };
 
+  # https://github.com/svaarala/duktape/issues/2464
+  LDFLAGS = [ "-lm" ];
+
   nativeBuildInputs = [ validatePkgConfig ];
 
-  postPatch = ''
-    substituteInPlace Makefile.sharedlibrary \
-      --replace 'gcc' '${stdenv.cc.targetPrefix}cc' \
-      --replace 'g++' '${stdenv.cc.targetPrefix}c++'
-    substituteInPlace Makefile.cmdline \
-      --replace 'gcc' '${stdenv.cc.targetPrefix}cc' \
-      --replace 'g++' '${stdenv.cc.targetPrefix}c++'
-  '';
   buildPhase = ''
     make -f Makefile.sharedlibrary
     make -f Makefile.cmdline
   '';
+
   installPhase = ''
     install -d $out/bin
     install -m755 duk $out/bin/
@@ -30,6 +26,7 @@ stdenv.mkDerivation rec {
     make -f Makefile.sharedlibrary install INSTALL_PREFIX=$out
     substituteAll ${./duktape.pc.in} $out/lib/pkgconfig/duktape.pc
   '';
+
   enableParallelBuilding = true;
 
   meta = with lib; {
@@ -38,6 +35,7 @@ stdenv.mkDerivation rec {
     downloadPage = "https://duktape.org/download.html";
     license = licenses.mit;
     maintainers = [ maintainers.fgaz ];
+    mainProgram = "duk";
     platforms = platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/elixir/1.13.nix b/nixpkgs/pkgs/development/interpreters/elixir/1.13.nix
index 0e1ddcc19bf0..452c3c5413ec 100644
--- a/nixpkgs/pkgs/development/interpreters/elixir/1.13.nix
+++ b/nixpkgs/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.3";
-  sha256 = "sha256-xOIGMpjemPi1xLiYmFpQR4FD6PzeFBxSJP4QpNnEUSE=";
+  version = "1.13.4";
+  sha256 = "sha256-xGKq62wzaIfgZN2j808fL3b8ykizQVPuePWzsy2HKfw=";
   minimumOTPVersion = "22";
 }
diff --git a/nixpkgs/pkgs/development/interpreters/erlang/R16B02-basho.nix b/nixpkgs/pkgs/development/interpreters/erlang/R16B02-basho.nix
deleted file mode 100644
index 69d0ac6b7a5f..000000000000
--- a/nixpkgs/pkgs/development/interpreters/erlang/R16B02-basho.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ pkgs, mkDerivation }:
-
-mkDerivation {
-  baseName = "erlang";
-  version = "16B02.basho10";
-
-  src = pkgs.fetchFromGitHub {
-    owner = "basho";
-    repo = "otp";
-    rev = "OTP_R16B02_basho10";
-    sha256 = "1s2c3ag9dnp6xmcr27kh95n1w50xly97n1mp8ivc2a3gpv4blqmj";
-  };
-
-  preConfigure = ''
-    export HOME=$PWD/../
-    export LANG=C
-    export ERL_TOP=$(pwd)
-    sed -e s@/bin/pwd@pwd@g -i otp_build
-    sed -e s@"/usr/bin/env escript"@$(pwd)/bootstrap/bin/escript@g -i lib/diameter/bin/diameterc
-
-    ./otp_build autoconf
-  '';
-
-  enableHipe = false;
-
-  # Do not install docs, instead use prebuilt versions.
-  installTargets = "install";
-  postInstall = let
-    manpages = pkgs.fetchurl {
-      url = "https://www.erlang.org/download/otp_doc_man_R16B02.tar.gz";
-      sha256 = "12apxjmmd591y9g9bhr97z5jbd1jarqg7wj0y2sqhl21hc1yp75p";
-    };
-  in ''
-    sed -e s@$(pwd)/bootstrap/bin/escript@$out/bin/escript@g -i $out/lib/erlang/lib/diameter-1.4.3/bin/diameterc
-
-    tar xf "${manpages}" -C "$out/lib/erlang"
-    for i in "$out"/lib/erlang/man/man[0-9]/*.[0-9]; do
-      prefix="''${i%/*}"
-      mkdir -p "$out/share/man/''${prefix##*/}"
-      ln -s "$i" "$out/share/man/''${prefix##*/}/''${i##*/}erl"
-    done
-  '';
-
-  meta = {
-    homepage = "https://github.com/basho/otp/";
-    description = "Programming language used for massively scalable soft real-time systems, Basho fork";
-
-    longDescription = ''
-      Erlang is a programming language used to build massively scalable
-      soft real-time systems with requirements on high availability.
-      Some of its uses are in telecoms, banking, e-commerce, computer
-      telephony and instant messaging. Erlang's runtime system has
-      built-in support for concurrency, distribution and fault
-      tolerance.
-      This version of Erlang is Basho's version, forked from Ericsson's
-      repository.
-    '';
-
-    knownVulnerabilities = [ "CVE-2017-1000385" ];
-
-    platforms = ["x86_64-linux" "x86_64-darwin"];
-    license = pkgs.lib.licenses.asl20;
-    maintainers = with pkgs.lib.maintainers; [ mdaiter ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/interpreters/erlang/R25.nix b/nixpkgs/pkgs/development/interpreters/erlang/R25.nix
new file mode 100644
index 000000000000..381ea8d5c227
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/erlang/R25.nix
@@ -0,0 +1,8 @@
+{ mkDerivation }:
+
+# How to obtain `sha256`:
+# nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
+mkDerivation {
+  version = "25.0.3";
+  sha256 = "0zchcm7gv52j30fq5p658h9c593ziirq09kkah6mpsvjfdsmvmgl";
+}
diff --git a/nixpkgs/pkgs/development/interpreters/falcon/default.nix b/nixpkgs/pkgs/development/interpreters/falcon/default.nix
index 0d2aa0b64203..40c05113ecff 100644
--- a/nixpkgs/pkgs/development/interpreters/falcon/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/falcon/default.nix
@@ -1,6 +1,6 @@
-{ lib, gccStdenv, fetchFromGitHub, cmake, pkg-config, pcre, zlib, sqlite }:
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, pcre, zlib, sqlite }:
 
-gccStdenv.mkDerivation {
+stdenv.mkDerivation {
   pname = "falcon";
   version = "unstable-2018-10-23";
 
diff --git a/nixpkgs/pkgs/development/interpreters/gnu-apl/default.nix b/nixpkgs/pkgs/development/interpreters/gnu-apl/default.nix
index 0f666dd9af5d..3bcada9aa8f0 100644
--- a/nixpkgs/pkgs/development/interpreters/gnu-apl/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/gnu-apl/default.nix
@@ -11,14 +11,16 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ readline gettext ncurses ];
 
-  # Needed with GCC 8
   NIX_CFLAGS_COMPILE = with lib; toString ((optionals stdenv.cc.isGNU [
+    # Needed with GCC 8
     "-Wno-error=int-in-bool-context"
     "-Wno-error=class-memaccess"
     "-Wno-error=restrict"
     "-Wno-error=format-truncation"
     # Needed with GCC 10
     "-Wno-error=maybe-uninitialized"
+    # Needed with GCC 11
+    "-Wno-error=misleading-indentation"
    ]) ++ optional stdenv.cc.isClang "-Wno-error=null-dereference");
 
   patchPhase = lib.optionalString stdenv.isDarwin ''
@@ -31,6 +33,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
+    broken = stdenv.isDarwin;
     description = "Free interpreter for the APL programming language";
     homepage    = "https://www.gnu.org/software/apl/";
     license     = licenses.gpl3Plus;
diff --git a/nixpkgs/pkgs/development/interpreters/groovy/default.nix b/nixpkgs/pkgs/development/interpreters/groovy/default.nix
index 9d2b9a8f0387..e4c8c6075442 100644
--- a/nixpkgs/pkgs/development/interpreters/groovy/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/groovy/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "groovy";
-  version = "3.0.7";
+  version = "3.0.11";
 
   src = fetchurl {
-    url = "http://dl.bintray.com/groovy/maven/apache-groovy-binary-${version}.zip";
-    sha256 = "1xdpjqx7qaq0syw448b32q36g12pgh1hn6knyqi3k5isp0f09qmr";
+    url = "mirror://apache/groovy/${version}/distribution/apache-groovy-binary-${version}.zip";
+    sha256 = "85abb44e81f94d794230cf5c2c7f1003e598a5f8a6ae04322f28c6f9efe395f6";
   };
 
   nativeBuildInputs = [ makeWrapper unzip ];
diff --git a/nixpkgs/pkgs/development/interpreters/guile/1.8.nix b/nixpkgs/pkgs/development/interpreters/guile/1.8.nix
index c8e15be2c014..f30270fcc83f 100644
--- a/nixpkgs/pkgs/development/interpreters/guile/1.8.nix
+++ b/nixpkgs/pkgs/development/interpreters/guile/1.8.nix
@@ -38,7 +38,6 @@ stdenv.mkDerivation rec {
   ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
     pkgsBuildBuild.guile_1_8;
   nativeBuildInputs = [
-    gawk
     makeWrapper
     pkg-config
   ];
diff --git a/nixpkgs/pkgs/development/interpreters/guile/2.0.nix b/nixpkgs/pkgs/development/interpreters/guile/2.0.nix
index 8214ca2adcda..73fb564077a3 100644
--- a/nixpkgs/pkgs/development/interpreters/guile/2.0.nix
+++ b/nixpkgs/pkgs/development/interpreters/guile/2.0.nix
@@ -42,7 +42,6 @@ builder rec {
 
   nativeBuildInputs = [
     makeWrapper
-    gawk
     pkg-config
   ];
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/interpreters/guile/2.2.nix b/nixpkgs/pkgs/development/interpreters/guile/2.2.nix
index 04c60e80e8fc..31803d9c1665 100644
--- a/nixpkgs/pkgs/development/interpreters/guile/2.2.nix
+++ b/nixpkgs/pkgs/development/interpreters/guile/2.2.nix
@@ -40,7 +40,6 @@ builder rec {
   ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
     pkgsBuildBuild.guile;
   nativeBuildInputs = [
-    gawk
     makeWrapper
     pkg-config
   ];
diff --git a/nixpkgs/pkgs/development/interpreters/guile/3.0.nix b/nixpkgs/pkgs/development/interpreters/guile/3.0.nix
index d0f5aa5573b6..380e983ab6f5 100644
--- a/nixpkgs/pkgs/development/interpreters/guile/3.0.nix
+++ b/nixpkgs/pkgs/development/interpreters/guile/3.0.nix
@@ -40,7 +40,6 @@ builder rec {
   ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
     pkgsBuildBuild.guile;
   nativeBuildInputs = [
-    gawk
     makeWrapper
     pkg-config
   ];
diff --git a/nixpkgs/pkgs/development/interpreters/hashlink/default.nix b/nixpkgs/pkgs/development/interpreters/hashlink/default.nix
new file mode 100644
index 000000000000..eb69bd4103d2
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/hashlink/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, libGL
+, libGLU
+, libpng
+, libjpeg_turbo
+, libuv
+, libvorbis
+, mbedtls
+, openal
+, pcre
+, SDL2
+, sqlite
+}:
+
+stdenv.mkDerivation rec {
+  pname = "hashlink";
+  version = "1.12";
+
+  src = fetchFromGitHub {
+    owner = "HaxeFoundation";
+    repo = "hashlink";
+    rev = version;
+    sha256 = "AiUGhTxz4Pkrks4oE+SAuAQPMuC5T2B6jo3Jd3sNrkQ=";
+  };
+
+  patches = [ ./hashlink.patch ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  buildInputs = [
+    libGL
+    libGLU
+    libjpeg_turbo
+    libpng
+    libuv
+    libvorbis
+    mbedtls
+    openal
+    pcre
+    SDL2
+    sqlite
+  ];
+
+  meta = with lib; {
+    description = "A virtual machine for Haxe";
+    homepage = "https://hashlink.haxe.org/";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ iblech locallycompact ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/hashlink/hashlink.patch b/nixpkgs/pkgs/development/interpreters/hashlink/hashlink.patch
new file mode 100644
index 000000000000..5e699073d02d
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/hashlink/hashlink.patch
@@ -0,0 +1,8 @@
+*** a/Makefile  1970-01-01 01:00:01.000000000 +0100
+--- b/Makefile  2022-06-21 23:36:10.023460654 +0200
+*************** endif
+*** 109,110 ****
+--- 109,111 ----
+  LIBOPENAL = -lopenal
++ LIBOPENGL = -lGL
+  RELEASE_NAME = linux
diff --git a/nixpkgs/pkgs/development/interpreters/hugs/default.nix b/nixpkgs/pkgs/development/interpreters/hugs/default.nix
index b903ab425c6d..ed02b41b7668 100644
--- a/nixpkgs/pkgs/development/interpreters/hugs/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/hugs/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
+    broken = stdenv.isDarwin;
     homepage = "https://www.haskell.org/hugs";
     description = "Haskell interpreter";
     maintainers = with maintainers; [ joachifm ];
diff --git a/nixpkgs/pkgs/development/interpreters/hy/builder.nix b/nixpkgs/pkgs/development/interpreters/hy/builder.nix
deleted file mode 100644
index 6757f859ac14..000000000000
--- a/nixpkgs/pkgs/development/interpreters/hy/builder.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib
-, python3Packages
-, hyDefinedPythonPackages /* Packages like with python.withPackages */
-, ...
-}:
-python3Packages.buildPythonApplication rec {
-  pname = "hy";
-  version = "1.0a1";
-
-  src = python3Packages.fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-lCrbvbkeutSNmvvn/eHpTnJwPb5aEH7hWTXYSE+AJmU=";
-  };
-
-  checkInputs = with python3Packages; [ flake8 pytest ];
-
-  propagatedBuildInputs = with python3Packages; [
-    appdirs
-    astor
-    clint
-    colorama
-    fastentrypoints
-    funcparserlib
-    rply
-    pygments
-  ] ++ (hyDefinedPythonPackages python3Packages);
-
-  # Hy does not include tests in the source distribution from PyPI, so only test executable.
-  checkPhase = ''
-    $out/bin/hy --help > /dev/null
-  '';
-
-  meta = with lib; {
-    description = "A LISP dialect embedded in Python";
-    homepage = "https://hylang.org/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ nixy mazurel ];
-    platforms = platforms.all;
-  };
-}
diff --git a/nixpkgs/pkgs/development/interpreters/hy/default.nix b/nixpkgs/pkgs/development/interpreters/hy/default.nix
deleted file mode 100644
index f5d80c11d711..000000000000
--- a/nixpkgs/pkgs/development/interpreters/hy/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ lib
-, callPackage
-, hyDefinedPythonPackages ? python-packages: [] /* Packages like with python.withPackages */
-}:
-let
-  withPackages = (
-    python-packages: callPackage ./builder.nix {
-      hyDefinedPythonPackages = python-packages;
-    }
-  );
-in
-(withPackages hyDefinedPythonPackages) // {
-  # Export withPackages function for hy customization
-  inherit withPackages;
-}
diff --git a/nixpkgs/pkgs/development/interpreters/j/default.nix b/nixpkgs/pkgs/development/interpreters/j/default.nix
index e41d71ef960b..5e67986ac105 100644
--- a/nixpkgs/pkgs/development/interpreters/j/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/j/default.nix
@@ -1,82 +1,107 @@
-{ lib, stdenv, fetchFromGitHub, readline, libedit, bc
+{ lib
+, stdenv
+, fetchFromGitHub
+, bc
+, libedit
+, readline
 , avxSupport ? stdenv.hostPlatform.avxSupport
 }:
 
 stdenv.mkDerivation rec {
   pname = "j";
-  version = "902";
-  jtype = "release-b";
+  version = "904-beta-c";
+
   src = fetchFromGitHub {
+    name = "${pname}-source";
     owner = "jsoftware";
     repo = "jsource";
-    rev = "j${version}-${jtype}";
-    sha256 = "0j67vgikqflwjqacsdicasvyv1k54s2c8vjgwmf0ix7l41p4xqz0";
-    name = "jsource";
+    rev = "j${version}";
+    hash = "sha256-MzEO/saHEBl1JwVlFC6P2UKm9RZnV7KVrNd9h4cPV/w=";
   };
 
-  buildInputs = [ readline libedit bc ];
-  bits = if stdenv.is64bit then "64" else "32";
-  platform =
-    if (stdenv.isAarch32 || stdenv.isAarch64) then "raspberry" else
-    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;
-
-  # Causes build failure due to warning
-  hardeningDisable = lib.optional stdenv.cc.isClang "strictoverflow";
-
-  # Causes build failure due to warning
-  # https://github.com/jsoftware/jsource/issues/16
-  NIX_CFLAGS_COMPILE = "-Wno-error=return-local-addr";
+  buildInputs = [
+    readline
+    libedit
+    bc
+  ];
+
+  dontConfigure = true;
+
+  # emulating build_all.sh configuration variables
+  jplatform =
+    if stdenv.isDarwin then "darwin"
+    else if stdenv.hostPlatform.isAarch then "raspberry"
+    else if stdenv.isLinux then "linux"
+    else "unsupported";
+
+  j64x =
+    if stdenv.is32bit then "j32"
+    else if stdenv.isx86_64 then
+      if (stdenv.isLinux && avxSupport) then "j64avx" else "j64"
+    else if stdenv.isAarch64 then
+      if stdenv.isDarwin then "j64arm" else "j64"
+    else "unsupported";
 
   buildPhase = ''
-    export SOURCE_DIR=$(pwd)
-    export HOME=$TMPDIR
-    export JLIB=$SOURCE_DIR/jlibrary
+    runHook preBuild
 
-    echo $OUT_DIR
+    export SRCDIR=$(pwd)
+    export HOME=$TMPDIR
+    export JLIB=$SRCDIR/jlibrary
+    export CC=cc
 
     cd make2
 
     patchShebangs .
-    sed -i $JLIB/bin/profile.ijs -e "s@'/usr/share/j/.*'@'$out/share/j'@;"
 
-    j64x="${j64x}" ./build_all.sh
+    j64x="${j64x}" jplatform="${jplatform}" ./build_all.sh
 
-    cp $SOURCE_DIR/bin/${platform}/j${bits}*/* "$JLIB/bin"
+    cp -v $SRCDIR/bin/${jplatform}/${j64x}/* "$JLIB/bin"
+
+    runHook postBuild
   '';
 
+  doCheck = true;
+
   checkPhase = ''
+    runHook preCheck
 
-    echo 'i. 5' | $JLIB/bin/jconsole | fgrep "0 1 2 3 4"
+    echo "Smoke test"
+    echo 'i. 10' | $JLIB/bin/jconsole | fgrep "0 1 2 3 4 5 6 7 8 9"
 
     # Now run the real tests
-    cd $SOURCE_DIR/test
+    pushd $SRCDIR/test
     for f in *.ijs
     do
-      echo $f
+      echo -n "test $f: "
       $JLIB/bin/jconsole < $f > /dev/null || echo FAIL && echo PASS
     done
+    popd
+
+    runHook postCheck
   '';
 
   installPhase = ''
-    mkdir -p "$out"
+    runHook preInstall
 
-    mkdir -p "$out/share/j"
+    mkdir -p "$out/share/j/"
     cp -r $JLIB/{addons,system} "$out/share/j"
     cp -r $JLIB/bin "$out"
+
+    runHook postInstall
   '';
 
   meta = with lib; {
+    homepage = "http://jsoftware.com/";
     description = "J programming language, an ASCII-based APL successor";
-    maintainers = with maintainers; [ raskin synthetica ];
-    platforms = with platforms; linux ++ darwin;
+    longDescription = ''
+      J is a high-level, general-purpose programming language that is
+      particularly suited to the mathematical, statistical, and logical analysis
+      of data. It is a powerful tool for developing algorithms and exploring
+      problems that are not already well understood.
+    '';
     license = licenses.gpl3Plus;
-    homepage = "http://jsoftware.com/";
+    maintainers = with maintainers; [ raskin synthetica AndersonTorres ];
+    platforms = with platforms; unix;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/janet/default.nix b/nixpkgs/pkgs/development/interpreters/janet/default.nix
index bc17750f2535..718f13ad2e7d 100644
--- a/nixpkgs/pkgs/development/interpreters/janet/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/janet/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "janet";
-  version = "1.21.0";
+  version = "1.24.0";
 
   src = fetchFromGitHub {
     owner = "janet-lang";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-chVnD5mxnA50yEL65KUYJwpkZ4jPWiLVHHXeeFxtHBo=";
+    sha256 = "sha256-scc29tS3jiGacHp90tGmn/qnbLscJ4sAOCm8IteXfh4=";
   };
 
   # This release fails the test suite on darwin, remove when debugged.
@@ -26,6 +26,12 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    $out/bin/janet --help
+  '';
+
   meta = with lib; {
     description = "Janet programming language";
     homepage = "https://janet-lang.org/";
diff --git a/nixpkgs/pkgs/development/interpreters/janet/jpm.nix b/nixpkgs/pkgs/development/interpreters/janet/jpm.nix
index 708930851255..050a035e0666 100644
--- a/nixpkgs/pkgs/development/interpreters/janet/jpm.nix
+++ b/nixpkgs/pkgs/development/interpreters/janet/jpm.nix
@@ -13,13 +13,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "jpm";
-  version = "0.0.2";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "janet-lang";
     repo = pname;
-    rev = version;
-    sha256 = "sha256-nv+vkDjEY711L+C5ibw48DUSNqq2UJiFC2i5LntuBNM=";
+    rev = "v${version}";
+    sha256 = "sha256-lPB4jew6RkJlDp8xOQ4YA9MkgLBImaBHcvv4WF/sLRc=";
   };
 
   # `auto-shebangs true` gives us a shebang line that points to janet inside the
diff --git a/nixpkgs/pkgs/development/interpreters/joker/default.nix b/nixpkgs/pkgs/development/interpreters/joker/default.nix
index 141bda75fa88..ae408f5fec5e 100644
--- a/nixpkgs/pkgs/development/interpreters/joker/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/joker/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "joker";
-  version = "0.18.0";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "candid82";
     repo = "joker";
-    sha256 = "sha256-Iia4sl8lRTpek5aZvQW/yy+TnMq5KNJH+pBnksqL/G0=";
+    sha256 = "sha256-SlkhxALJwrZ/DOuBbqjb+wHEfT5mhd3lSD6E0geFP4Y=";
   };
 
   vendorSha256 = "sha256-AYoespfzFLP/jIIxbw5K653wc7sSfLY8K7di8GZ64wA=";
diff --git a/nixpkgs/pkgs/development/interpreters/jruby/default.nix b/nixpkgs/pkgs/development/interpreters/jruby/default.nix
index 468f9fac64c1..53da18e9e9f9 100644
--- a/nixpkgs/pkgs/development/interpreters/jruby/default.nix
+++ b/nixpkgs/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.3.0";
+  version = "9.3.6.0";
 
   src = fetchurl {
     url = "https://s3.amazonaws.com/jruby.org/downloads/${version}/jruby-bin-${version}.tar.gz";
-    sha256 = "sha256-Pagoy+KH1UaFB/HCxCvvbPNLxTYbzWpdmcIHshuf3Fw=";
+    sha256 = "sha256-dHr2r5mmdPII9A2o2yLXfG2kk6gygOmQtS1SOr2UmeI=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -56,6 +56,7 @@ jruby = stdenv.mkDerivation rec {
     license = with licenses; [ cpl10 gpl2 lgpl21 ];
     platforms = platforms.unix;
     maintainers = [ maintainers.fzakaria ];
+    sourceProvenance = with sourceTypes; [ binaryBytecode ];
   };
 };
 in jruby.overrideAttrs (oldAttrs: {
diff --git a/nixpkgs/pkgs/development/interpreters/jython/default.nix b/nixpkgs/pkgs/development/interpreters/jython/default.nix
index 38b599d339e7..9393c5a42046 100644
--- a/nixpkgs/pkgs/development/interpreters/jython/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/jython/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Python interpreter written in Java";
     homepage = "https://jython.org/";
+    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
     license = lib.licenses.psfl;
     platforms = jre.meta.platforms;
   };
diff --git a/nixpkgs/pkgs/development/interpreters/kerf/default.nix b/nixpkgs/pkgs/development/interpreters/kerf/default.nix
new file mode 100644
index 000000000000..5b605c6564b3
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/kerf/default.nix
@@ -0,0 +1,92 @@
+{ lib, stdenv, fetchFromGitHub
+, libedit, zlib, ncurses, expect
+
+# darwin only below
+, Accelerate, CoreGraphics, CoreVideo
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kerf";
+  version = "unstable-2022-08-05";
+
+  src = fetchFromGitHub {
+    owner = "kevinlawler";
+    repo  = "kerf1";
+    rev   = "4ec5b592b310b96d33654d20d6a511e6fffc0f9d";
+    hash  = "sha256-0sU2zOk5I69lQyrn1g0qsae7S/IBT6eA/911qp0GNkk=";
+  };
+
+  sourceRoot = "source/src";
+  buildInputs = [ libedit zlib ncurses ]
+    ++ lib.optional stdenv.isDarwin ([
+      Accelerate
+    ] ++ lib.optional stdenv.isx86_64 /* && isDarwin */ [
+      CoreGraphics CoreVideo
+    ]);
+
+  checkInputs = [ expect ];
+  doCheck = true;
+
+  makeFlags = [ "kerf" "kerf_test" ];
+
+  # avoid a huge amount of warnings to make failures clearer
+  NIX_CFLAGS_COMPILE = map (x: "-Wno-${x}") [
+    "void-pointer-to-int-cast"
+    "format"
+    "implicit-function-declaration"
+    "gnu-variable-sized-type-not-at-end"
+    "unused-result"
+  ] ++ lib.optional stdenv.isDarwin [ "-fcommon" ];
+
+  patchPhase = ''
+    substituteInPlace ./Makefile \
+      --replace 'CPUS ?=' 'CPUS = $(NIX_BUILD_CORES) #' \
+      --replace 'termcap' 'ncurses'
+  '';
+
+  # the kerf executable uses ncurses to create a fancy terminal for input and
+  # reads terminal keystrokes directly, so it doesn't read from stdin as
+  # expected, hence why we use this fancy expect script to run the test exe and
+  # send 'quit' to the prompt after it finishes.
+  checkPhase = ''
+    expect <<EOD
+      set timeout 60
+      spawn ./kerf_test
+      expect {
+        "Passed" {}
+        "Failed" { exit 1 }
+        timeout { exit 1 }
+      }
+      expect {
+        "KeRF> " {send "quit\r"}
+        timeout { exit 1 }
+      }
+      expect {
+        "\[DEBUG\] OK: Done OK." {}
+        "\[DEBUG\] FAILED: Debug failure." { exit 1 }
+        timeout { exit 1 }
+      }
+      exit 0
+    EOD
+  '';
+
+  installPhase = "install -D kerf $out/bin/kerf";
+
+  meta = with lib; {
+    description = "Columnar tick database and time-series language";
+    longDescription = ''
+      Kerf is a columnar tick database and small programming
+      language that is a superset of JSON and SQL. It can be
+      used for local analytics, timeseries, logfile processing,
+      and more.
+    '';
+    license = with licenses; [ bsd2 ];
+    homepage = "https://github.com/kevinlawler/kerf1";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice ];
+
+    # aarch64-linux seems hopeless, with over 2,000 warnings
+    # generated?
+    broken = (stdenv.isLinux && stdenv.isAarch64);
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/kona/default.nix b/nixpkgs/pkgs/development/interpreters/kona/default.nix
index 24e10eb7306a..cfc1c12d1923 100644
--- a/nixpkgs/pkgs/development/interpreters/kona/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/kona/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
     description = "An interpreter of K, APL-like programming language";
     homepage = "https://github.com/kevinlawler/kona/";
     maintainers = with maintainers; [ raskin ];
+    mainProgram = "k";
     platforms = platforms.all;
     license = licenses.isc;
   };
diff --git a/nixpkgs/pkgs/development/interpreters/lolcode/default.nix b/nixpkgs/pkgs/development/interpreters/lolcode/default.nix
index 0bb95ed6ea52..23a77596e1d9 100644
--- a/nixpkgs/pkgs/development/interpreters/lolcode/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/lolcode/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl3;
     maintainers = [ maintainers.AndersonTorres ];
+    mainProgram = "lolcode-lci";
     platforms = lib.platforms.unix;
   };
 
diff --git a/nixpkgs/pkgs/development/interpreters/love/0.10.nix b/nixpkgs/pkgs/development/interpreters/love/0.10.nix
index 2719008bbd9e..5e97e4f003e2 100644
--- a/nixpkgs/pkgs/development/interpreters/love/0.10.nix
+++ b/nixpkgs/pkgs/development/interpreters/love/0.10.nix
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-C/Ifd0KjmaM5Y2fxBiDNz1GQoT4GeH/vyUCiira57U4=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config autoconf automake ];
   buildInputs = [
     SDL2 libGLU libGL openal luajit libdevil freetype physfs libmodplug mpg123
-    libvorbis libogg libtheora autoconf which libtool automake
+    libvorbis libogg libtheora which libtool
   ];
 
   preConfigure = "$shell ./platform/unix/automagic";
diff --git a/nixpkgs/pkgs/development/interpreters/love/11.nix b/nixpkgs/pkgs/development/interpreters/love/11.nix
index 83095ac0924e..bb8f88379fad 100644
--- a/nixpkgs/pkgs/development/interpreters/love/11.nix
+++ b/nixpkgs/pkgs/development/interpreters/love/11.nix
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
     sha256 = "0kpdp6v8m8j0r7ppyy067shr0lfgrlh0dwb7ccws76d389vizwhb";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config autoconf automake ];
   buildInputs = [
     SDL2 libGLU libGL openal luajit libdevil freetype physfs libmodplug mpg123
-    libvorbis libogg libtheora autoconf which libtool automake
+    libvorbis libogg libtheora which libtool
   ];
 
   preConfigure = "$shell ./platform/unix/automagic";
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/CVE-2022-28805.patch b/nixpkgs/pkgs/development/interpreters/lua-5/CVE-2022-28805.patch
new file mode 100644
index 000000000000..bcf16acbea42
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/CVE-2022-28805.patch
@@ -0,0 +1,10 @@
+--- a/src/lparser.c
++++ b/src/lparser.c
+@@ -301,6 +301,7 @@
+     expdesc key;
+     singlevaraux(fs, ls->envn, var, 1);  /* get environment variable */
+     lua_assert(var->k == VLOCAL || var->k == VUPVAL);
++    luaK_exp2anyregup(fs, var);  /* but could be a constant */
+     codestring(ls, &key, varname);  /* key is variable name */
+     luaK_indexed(fs, var, &key);  /* env[varname] */
+   }
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/build-lua-package.nix b/nixpkgs/pkgs/development/interpreters/lua-5/build-lua-package.nix
index ff93e842eeae..0af7b470b0b3 100644
--- a/nixpkgs/pkgs/development/interpreters/lua-5/build-lua-package.nix
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/build-lua-package.nix
@@ -4,6 +4,7 @@
 , wrapLua
 # Whether the derivation provides a lua module or not.
 , toLuaModule
+, luarocksCheckHook
 }:
 
 {
@@ -42,6 +43,7 @@ pname
 
 , passthru ? {}
 , doCheck ? false
+, doInstallCheck ? false
 
 # Non-Lua / system (e.g. C library) dependencies. Is a list of deps, where
 # each dep is either a derivation, or an attribute set like
@@ -97,10 +99,12 @@ let
   # Filter out the lua derivation itself from the Lua module dependency
   # closure, as it doesn't have a rock tree :)
   requiredLuaRocks = lib.filter (d: d ? luaModule)
-    (lua.pkgs.requiredLuaModules luarocksDrv.propagatedBuildInputs);
+    (lua.pkgs.requiredLuaModules (luarocksDrv.nativeBuildInputs ++ luarocksDrv.propagatedBuildInputs));
 
   # example externalDeps': [ { name = "CRYPTO"; dep = pkgs.openssl; } ]
-  externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) (luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs));
+  externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) (
+    luarocksDrv.nativeBuildInputs ++ luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs)
+    );
   externalDeps' = lib.filter (dep: !lib.isDerivation dep) externalDeps;
 
   luarocksDrv = toLuaModule ( lua.stdenv.mkDerivation (
@@ -108,15 +112,17 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
 
   name = namePrefix + pname + "-" + version;
 
-  buildInputs = [ wrapLua lua.pkgs.luarocks ]
+  nativeBuildInputs = [
+    wrapLua
+    lua.pkgs.luarocks
+  ]
     ++ buildInputs
-    ++ lib.optionals doCheck checkInputs
+    ++ lib.optionals doCheck ([ luarocksCheckHook ] ++ checkInputs)
     ++ (map (d: d.dep) externalDeps')
     ;
 
   # propagate lua to active setup-hook in nix-shell
   propagatedBuildInputs = propagatedBuildInputs ++ [ lua ];
-  inherit doCheck;
 
   # @-patterns do not capture formal argument default values, so we need to
   # explicitly inherit this for it to be available as a shell variable in the
@@ -190,6 +196,14 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
     runHook postCheck
   '';
 
+  LUAROCKS_CONFIG="$PWD/${luarocks_config}";
+
+  shellHook = ''
+    runHook preShell
+    export LUAROCKS_CONFIG="$PWD/${luarocks_config}";
+    runHook postShell
+  '';
+
   passthru = {
     inherit lua; # The lua interpreter
     inherit externalDeps;
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/default.nix b/nixpkgs/pkgs/development/interpreters/lua-5/default.nix
index 3e36f77dab43..97e444ded903 100644
--- a/nixpkgs/pkgs/development/interpreters/lua-5/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/default.nix
@@ -1,12 +1,30 @@
 # similar to interpreters/python/default.nix
-{ stdenv, lib, callPackage, fetchurl, fetchpatch }:
+{ stdenv, lib, callPackage, fetchurl, fetchpatch, makeBinaryWrapper }:
 
 rec {
   lua5_4 = callPackage ./interpreter.nix {
     sourceVersion = { major = "5"; minor = "4"; patch = "3"; };
     hash = "1yxvjvnbg4nyrdv10bq42gz6dr66pyan28lgzfygqfwy2rv24qgq";
+    makeWrapper = makeBinaryWrapper;
 
-    patches = lib.optional stdenv.isDarwin ./5.4.darwin.patch;
+    patches = lib.optional stdenv.isDarwin ./5.4.darwin.patch
+      ++ [
+        (fetchpatch {
+          name = "CVE-2022-28805.patch";
+          url = "https://github.com/lua/lua/commit/1f3c6f4534c6411313361697d98d1145a1f030fa.patch";
+          sha256 = "sha256-YTwoolSnRNJIHFPVijSO6ZDw35BG5oWYralZ8qOb9y8=";
+          stripLen = 1;
+          extraPrefix = "src/";
+          excludes = [ "src/testes/*" ];
+        })
+        (fetchpatch {
+          name = "CVE-2022-33099.patch";
+          url = "https://github.com/lua/lua/commit/42d40581dd919fb134c07027ca1ce0844c670daf.patch";
+          sha256 = "sha256-qj1Dq1ojVoknALSa67jhgH3G3Kk4GtJP6ROFElVF+D0=";
+          stripLen = 1;
+          extraPrefix = "src/";
+        })
+      ];
   };
 
   lua5_4_compat = lua5_4.override({
@@ -16,6 +34,7 @@ rec {
   lua5_3 = callPackage ./interpreter.nix {
     sourceVersion = { major = "5"; minor = "3"; patch = "6"; };
     hash = "0q3d8qhd7p0b7a4mh9g7fxqksqfs6mr1nav74vq26qvkp2dxcpzw";
+    makeWrapper = makeBinaryWrapper;
 
     patches =
       lib.optionals stdenv.isDarwin [ ./5.2.darwin.patch ];
@@ -29,7 +48,10 @@ rec {
   lua5_2 = callPackage ./interpreter.nix {
     sourceVersion = { major = "5"; minor = "2"; patch = "4"; };
     hash = "0jwznq0l8qg9wh5grwg07b5cy3lzngvl5m2nl1ikp6vqssmf9qmr";
-    patches = lib.optional stdenv.isDarwin ./5.2.darwin.patch;
+    makeWrapper = makeBinaryWrapper;
+    patches = [
+      ./CVE-2022-28805.patch
+    ] ++ lib.optional stdenv.isDarwin ./5.2.darwin.patch;
   };
 
   lua5_2_compat = lua5_2.override({
@@ -40,6 +62,7 @@ rec {
   lua5_1 = callPackage ./interpreter.nix {
     sourceVersion = { major = "5"; minor = "1"; patch = "5"; };
     hash = "2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333";
+    makeWrapper = makeBinaryWrapper;
     patches = (lib.optional stdenv.isDarwin ./5.1.darwin.patch)
       ++ [ ./CVE-2014-5461.patch ];
   };
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/hooks/default.nix b/nixpkgs/pkgs/development/interpreters/lua-5/hooks/default.nix
index 8fd725a9b8a4..fc92c59bb910 100644
--- a/nixpkgs/pkgs/development/interpreters/lua-5/hooks/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/hooks/default.nix
@@ -24,4 +24,17 @@ in {
       mv hook.sh $out
     '';
 
+  luarocksCheckHook = callPackage ({ luarocks }:
+    makeSetupHook {
+      name = "luarocks-check-hook";
+      deps = [ luarocks ];
+    } ./luarocks-check-hook.sh) {};
+
+  # luarocks installs data in a non-overridable location. Until a proper luarocks patch,
+  # we move the files around ourselves
+  luarocksMoveDataFolder = callPackage ({ }:
+    makeSetupHook {
+      name = "luarocks-move-rock";
+      deps = [ ];
+    } ./luarocks-move-data.sh) {};
 }
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-check-hook.sh b/nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-check-hook.sh
new file mode 100644
index 000000000000..bc6c6255d560
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-check-hook.sh
@@ -0,0 +1,18 @@
+# Setup hook for checking whether Python imports succeed
+echo "Sourcing luarocks-check-hook.sh"
+
+luarocksCheckPhase () {
+    echo "Executing luarocksCheckPhase"
+    runHook preCheck
+
+    luarocks test
+
+    runHook postCheck
+    echo "Finished executing luarocksCheckPhase"
+}
+
+if [ -z "${dontLuarocksCheck-}" ] && [ -z "${checkPhase-}" ]; then
+    echo "Using luarocksCheckPhase"
+    checkPhase+=" luarocksCheckPhase"
+fi
+
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-move-data.sh b/nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-move-data.sh
new file mode 100644
index 000000000000..f0b56178f01e
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/hooks/luarocks-move-data.sh
@@ -0,0 +1,15 @@
+# luarocks installs data in a non-overridable location. Until a proper luarocks patch,
+# we move the files around ourselves
+echo "Sourcing luarocks-move-data-hook.sh"
+
+luarocksMoveDataHook () {
+    echo "Executing luarocksMoveDataHook"
+    if [ -d "$out/$rocksSubdir" ]; then
+        cp -rfv "$out/$rocksSubdir/$pname/$version/." "$out"
+    fi
+
+    echo "Finished executing luarocksMoveDataHook"
+}
+
+echo "Using luarocksMoveDataHook"
+preDistPhases+=" luarocksMoveDataHook"
diff --git a/nixpkgs/pkgs/development/interpreters/lua-5/interpreter.nix b/nixpkgs/pkgs/development/interpreters/lua-5/interpreter.nix
index de61714f2421..1fb56851ce52 100644
--- a/nixpkgs/pkgs/development/interpreters/lua-5/interpreter.nix
+++ b/nixpkgs/pkgs/development/interpreters/lua-5/interpreter.nix
@@ -126,6 +126,7 @@ self = stdenv.mkDerivation rec {
   passthru = rec {
     buildEnv = callPackage ./wrapper.nix {
       lua = self;
+      inherit makeWrapper;
       inherit (luaPackages) requiredLuaModules;
     };
     withPackages = import ./with-packages.nix { inherit buildEnv luaPackages;};
diff --git a/nixpkgs/pkgs/development/interpreters/luajit/2.0.nix b/nixpkgs/pkgs/development/interpreters/luajit/2.0.nix
index 5516bf002cd9..f2fc16963cad 100644
--- a/nixpkgs/pkgs/development/interpreters/luajit/2.0.nix
+++ b/nixpkgs/pkgs/development/interpreters/luajit/2.0.nix
@@ -1,10 +1,10 @@
 { self, callPackage, lib }:
 callPackage ./default.nix {
   inherit self;
-  version = "2.0.5-2021-10-02";
-  rev = "d3294fa63b344173db68dd612c6d3801631e28d4";
+  version = "2.0.5-2022-03-13";
+  rev = "93a65d3cc263aef2d2feb3d7ff2206aca3bee17e";
   isStable = true;
-  sha256 = "0ja6x7bv3iqnf6m8xk6qp1dgan2b7mys0ff86dw671fqqrfw28fn";
+  hash = "sha256-Gp7OdfxBGkW59zxWUml2ugPABLUv2SezMiDblA/FZ7g=";
   extraMeta = { # this isn't precise but it at least stops the useless Hydra build
     platforms = with lib; filter (p: !hasPrefix "aarch64-" p)
       (platforms.linux ++ platforms.darwin);
diff --git a/nixpkgs/pkgs/development/interpreters/luajit/2.1.nix b/nixpkgs/pkgs/development/interpreters/luajit/2.1.nix
index 4898999281d0..507bc40fcf6a 100644
--- a/nixpkgs/pkgs/development/interpreters/luajit/2.1.nix
+++ b/nixpkgs/pkgs/development/interpreters/luajit/2.1.nix
@@ -1,8 +1,8 @@
 { self, callPackage }:
 callPackage ./default.nix {
   inherit self;
-  version = "2.1.0-2021-10-27";
-  rev = "b4b2dce9fc3ffaaaede39b36d06415311e2aa516";
+  version = "2.1.0-2022-04-05";
+  rev = "5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e";
   isStable = false;
-  sha256 = "185s071aa0yffz8npgdxj7l98cs987vddb2l5pzfcdqfj41gn55q";
+  hash = "sha256-Q+34hJDgyCqmtThHbxR16Nn7zhq4Ql142No2rO57HL0=";
 }
diff --git a/nixpkgs/pkgs/development/interpreters/luajit/default.nix b/nixpkgs/pkgs/development/interpreters/luajit/default.nix
index 4e2931aa7688..480e34244134 100644
--- a/nixpkgs/pkgs/development/interpreters/luajit/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/luajit/default.nix
@@ -4,7 +4,7 @@
 , buildPackages
 , name ? "luajit-${version}"
 , isStable
-, sha256
+, hash
 , rev
 , version
 , extraMeta ? { }
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "LuaJIT";
     repo = "LuaJIT";
-    inherit sha256 rev;
+    inherit hash rev;
   };
 
   luaversion = "5.1";
diff --git a/nixpkgs/pkgs/development/interpreters/lunatic/default.nix b/nixpkgs/pkgs/development/interpreters/lunatic/default.nix
index 425060e240d4..9e716694759c 100644
--- a/nixpkgs/pkgs/development/interpreters/lunatic/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/lunatic/default.nix
@@ -1,26 +1,32 @@
-{ lib, rustPlatform, fetchFromGitHub, cmake, stdenv }:
+{ lib, rustPlatform, fetchFromGitHub, cmake, stdenv, Security }:
 
 rustPlatform.buildRustPackage rec {
   pname = "lunatic";
-  version = "0.7.5";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = "lunatic-solutions";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-HqDrGoyYzdx8OTanlRd95L1wAtFeew7Xs2rZ7nK2Zus=";
+    sha256 = "sha256-MfN4NZIkzQji+bIfpgDdVyGXiD291ULGT2JslSevr/w=";
   };
 
-  cargoSha256 = "sha256-t3EwVYrKx7dvUcSp0B1iUAklg7WdQDld/T0O1HgHw54=";
+  cargoSha256 = "sha256-Qpu6FKIrDZyEbcv/uRjInz6lmMeTSZvY/JGLJe+My+U=";
 
   nativeBuildInputs = [ cmake ];
 
+  buildInputs = lib.optional stdenv.isDarwin Security;
+
+  checkFlags = [
+    # requires simd support which is not always available on hydra
+    "--skip=state::tests::import_filter_signature_matches"
+  ];
+
   meta = with lib; {
     description = "An Erlang inspired runtime for WebAssembly";
     homepage = "https://lunatic.solutions";
     changelog = "https://github.com/lunatic-solutions/lunatic/blob/v${version}/RELEASES.md";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/maude/default.nix b/nixpkgs/pkgs/development/interpreters/maude/default.nix
index 860f9ac3a5eb..96a715cbbc7c 100644
--- a/nixpkgs/pkgs/development/interpreters/maude/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/maude/default.nix
@@ -30,6 +30,10 @@ stdenv.mkDerivation {
   hardeningDisable = [ "stackprotector" ] ++
     lib.optionals stdenv.isi686 [ "pic" "fortify" ];
 
+  # Fix for glibc-2.34, see
+  # https://gitweb.gentoo.org/repo/gentoo.git/commit/dev-lang/maude/maude-3.1-r1.ebuild?id=f021cc6cfa1e35eb9c59955830f1fd89bfcb26b4
+  configureFlags = [ "--without-libsigsegv" ];
+
   preConfigure = ''
     configureFlagsArray=(
       --datadir="$out/share/maude"
@@ -53,6 +57,7 @@ stdenv.mkDerivation {
   enableParallelBuilding = false;
 
   meta = {
+    broken = stdenv.isDarwin;
     homepage = "http://maude.cs.illinois.edu/";
     description = "High-level specification language";
     license = lib.licenses.gpl2Plus;
diff --git a/nixpkgs/pkgs/development/interpreters/micropython/default.nix b/nixpkgs/pkgs/development/interpreters/micropython/default.nix
index 3c85b67a942d..52be0a412078 100644
--- a/nixpkgs/pkgs/development/interpreters/micropython/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/micropython/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "micropython";
-  version = "1.18";
+  version = "1.19.1";
 
   src = fetchFromGitHub {
-    owner  = "micropython";
-    repo   = "micropython";
-    rev    = "v${version}";
-    sha256 = "sha256-roskIDyY3ehasOm8Yn4braLNZtaeuItb9ZOUgF4CXww=";
+    owner = "micropython";
+    repo = "micropython";
+    rev = "v${version}";
+    sha256 = "sha256-BoX3Z3Zr/AQqkgRrq+UVgdoDqNESDTNsY9AtrElpzfA=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/development/interpreters/nickel/default.nix b/nixpkgs/pkgs/development/interpreters/nickel/default.nix
new file mode 100644
index 000000000000..01b7fd54106c
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/nickel/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "nickel";
+  version = "0.2.1";
+
+  src  = fetchFromGitHub {
+    owner = "tweag";
+    repo = pname;
+    rev = "refs/tags/${version}"; # because pure ${version} doesn't work
+    hash = "sha256-Sf0UJAfUtP7oU31VkVqCtdRmfjaHV34gYeUPNsTmQvo=";
+  };
+
+  cargoSha256 = "sha256-oY4PYMZBN5+nsARHV+A5D7a6fUt9UMHBn83ONgaQp8E=";
+
+  meta = with lib; {
+    homepage = "https://nickel-lang.org/";
+    description = "Better configuration for less";
+    longDescription = ''
+      Nickel is the cheap configuration language.
+
+      Its purpose is to automate the generation of static configuration files -
+      think JSON, YAML, XML, or your favorite data representation language -
+      that are then fed to another system. It is designed to have a simple,
+      well-understood core: it is in essence JSON with functions.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/oak/default.nix b/nixpkgs/pkgs/development/interpreters/oak/default.nix
new file mode 100644
index 000000000000..29b476e7c7e3
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/oak/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "oak";
+  version = "0.2";
+
+  src = fetchFromGitHub {
+    owner = "thesephist";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-00UanINtrFyjQWiAw1ucB4eEODMr9+wT+99Zy2Oc1j4=";
+  };
+
+  vendorSha256 = "sha256-iQtb3zNa57nB6x4InVPw7FCmW7XPw5yuz0OcfASXPD8=";
+
+  meta = with lib; {
+    description = "Expressive, simple, dynamic programming language";
+    homepage = "https://oaklang.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ tejasag ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/octave/default.nix b/nixpkgs/pkgs/development/interpreters/octave/default.nix
index 1bd78a8a2d4e..ab2b6af9d5f9 100644
--- a/nixpkgs/pkgs/development/interpreters/octave/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/octave/default.nix
@@ -58,9 +58,6 @@
 , qtscript ? null
 , qscintilla ? null
 , qttools ? null
-# - JIT compiler for loops:
-, enableJIT ? false
-, llvm ? null
 , libiconv
 , darwin
 }:
@@ -114,14 +111,19 @@ let
   };
 
   self = mkDerivation rec {
-    version = "6.4.0";
+    version = "7.1.0";
     pname = "octave";
 
     src = fetchurl {
       url = "mirror://gnu/octave/${pname}-${version}.tar.gz";
-      sha256 = "sha256-tI8z1Pzq85TPvqc6jIUAAJNtg6QXOaJPdWi1sKezms0=";
+      sha256 = "sha256-1KnYHz9ntKbgfLeoDcsQrV6RdvzDB2LHCoFYCmS4sLY=";
     };
 
+    patches = [
+      # https://savannah.gnu.org/bugs/?func=detailitem&item_id=62436
+      ./patches/bug62436.patch
+    ];
+
     buildInputs = [
       readline
       ncurses
@@ -173,7 +175,6 @@ let
       texinfo
     ]
     ++ lib.optionals (sundials != null) [ sundials ]
-    ++ lib.optionals enableJIT [ llvm ]
     ++ lib.optionals enableQt [
       qtscript
       qttools
@@ -199,7 +200,6 @@ let
     ++ lib.optionals enableReadline [ "--enable-readline" ]
     ++ lib.optionals stdenv.isDarwin [ "--with-x=no" ]
     ++ lib.optionals enableQt [ "--with-qt=5" ]
-    ++ lib.optionals enableJIT [ "--enable-jit" ]
     ;
 
     # Keep a copy of the octave tests detailed results in the output
@@ -220,7 +220,7 @@ let
       inherit portaudio;
       inherit jdk;
       inherit python;
-      inherit enableQt enableJIT enableReadline enableJava;
+      inherit enableQt enableReadline enableJava;
       buildEnv = callPackage ./build-env.nix {
         octave = self;
         inherit octavePackages wrapOctave;
@@ -236,8 +236,6 @@ let
       license = lib.licenses.gpl3Plus;
       maintainers = with lib.maintainers; [ raskin doronbehar ];
       description = "Scientific Programming Language";
-      # https://savannah.gnu.org/bugs/?func=detailitem&item_id=56425 is the best attempt to fix JIT
-      broken = enableJIT;
       platforms = if overridePlatforms == null then
         (lib.platforms.linux ++ lib.platforms.darwin)
       else overridePlatforms;
diff --git a/nixpkgs/pkgs/development/interpreters/octave/patches/bug62436.patch b/nixpkgs/pkgs/development/interpreters/octave/patches/bug62436.patch
new file mode 100644
index 000000000000..d9d7cfc30408
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/octave/patches/bug62436.patch
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User John Donoghue <john.donoghue@ieee.org>
+# Date 1652358904 14400
+#      Thu May 12 08:35:04 2022 -0400
+# Branch stable
+# Node ID 8c940cfcce257369677c09154da2aab2c56eaa79
+# Parent  63710f3bd9811c2d206ac9e7b4f47cf06c47e153
+* scripts/pkg/private/build.m: check configure and Makefile exist before trying to unlink them (Bug #62436)
+
+diff -r 63710f3bd981 -r 8c940cfcce25 scripts/pkg/private/build.m
+--- a/scripts/pkg/private/build.m	Wed May 11 09:44:55 2022 -0700
++++ b/scripts/pkg/private/build.m	Thu May 12 08:35:04 2022 -0400
+@@ -77,8 +77,12 @@
+     else
+       arch_abi = getarch ();
+       configure_make (desc, build_root, verbose);
+-      unlink (fullfile (build_root, "src", "configure"));
+-      unlink (fullfile (build_root, "src", "Makefile"));
++      if exist (fullfile (build_root, "src", "configure"), "file")
++        unlink (fullfile (build_root, "src", "configure"));
++      endif
++      if exist (fullfile (build_root, "src", "Makefile"), "file")
++        unlink (fullfile (build_root, "src", "Makefile"));
++      endif
+     endif
+     tar_name = [desc.name "-" desc.version "-" arch_abi ".tar"];
+     tar_path = fullfile (builddir, tar_name);
diff --git a/nixpkgs/pkgs/development/interpreters/perl/default.nix b/nixpkgs/pkgs/development/interpreters/perl/default.nix
index 54769a03b7b6..0a9c53e11c5f 100644
--- a/nixpkgs/pkgs/development/interpreters/perl/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/perl/default.nix
@@ -1,6 +1,7 @@
-{ config, lib, stdenv, fetchurl, fetchpatch, fetchFromGitHub, pkgs, buildPackages
+{ config, lib, stdenv, fetchurl, fetchFromGitHub, pkgs, buildPackages
 , callPackage
 , enableThreading ? true, coreutils, makeWrapper
+, zlib
 }:
 
 # Note: this package is used for bootstrapping fetchurl, and thus
@@ -19,14 +20,14 @@ let
 
   common = { perl, buildPerl, version, sha256 }: stdenv.mkDerivation (rec {
     inherit version;
-
-    name = "perl-${version}";
+    pname = "perl";
 
     src = fetchurl {
-      url = "mirror://cpan/src/5.0/${name}.tar.gz";
+      url = "mirror://cpan/src/5.0/perl-${version}.tar.gz";
       inherit sha256;
     };
 
+    strictDeps = true;
     # TODO: Add a "dev" output containing the header files.
     outputs = [ "out" "man" "devdoc" ] ++
       optional crossCompiling "mini";
@@ -41,14 +42,7 @@ let
       ]
       ++ optional stdenv.isSunOS ./ld-shared.patch
       ++ optionals stdenv.isDarwin [ ./cpp-precomp.patch ./sw_vers.patch ]
-      ++ optionals crossCompiling [
-        ./MakeMaker-cross.patch
-        # https://github.com/arsv/perl-cross/pull/120
-        (fetchpatch {
-          url = "https://github.com/arsv/perl-cross/commit/3c318ae6572f8b36cb077c8b49c851e2f5fe181e.patch";
-          sha256 = "0cmcy8bams3c68f6xadl52z2w378wcpdjzi3qi4pcyvcfs011l6g";
-        })
-      ];
+      ++ optional crossCompiling ./MakeMaker-cross.patch;
 
     # This is not done for native builds because pwd may need to come from
     # bootstrap tools when building bootstrap perl.
@@ -116,6 +110,16 @@ let
         cf_by="nixpkgs"
         cf_time="$(date -d "@$SOURCE_DATE_EPOCH")"
         EOF
+
+        # Compress::Raw::Zlib should use our zlib package instead of the one
+        # included with the distribution
+        cat > ./cpan/Compress-Raw-Zlib/config.in <<EOF
+        BUILD_ZLIB   = False
+        INCLUDE      = ${zlib.dev}/include
+        LIB          = ${zlib.out}/lib
+        OLD_ZLIB     = False
+        GZIP_OS_CODE = AUTO_DETECT
+        EOF
       '' + optionalString stdenv.isDarwin ''
         substituteInPlace hints/darwin.sh --replace "env MACOSX_DEPLOYMENT_TARGET=10.3" ""
       '' + optionalString (!enableThreading) ''
@@ -194,14 +198,14 @@ 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 = "393821c7cf53774233aaf130ff2c8ccec701b0a9"; # Sep 22, 2021
+    crossVersion = "c876045741f5159318085d2737b0090f35a842ca"; # June 5, 2022
 
     perl-cross-src = fetchFromGitHub {
-      name = "perl-cross-${crossVersion}";
+      name = "perl-cross-unstable-${crossVersion}";
       owner = "arsv";
       repo = "perl-cross";
       rev = crossVersion;
-      sha256 = "1fn35b1773aibi2z54m0mar7114737mvfyp81wkdwhakrmzr5nv1";
+      sha256 = "sha256-m9UCoTQgXBxSgk9Q1Zv6wl3Qnd0aZm/jEPXkcMKti8U=";
     };
 
     depsBuildBuild = [ buildPackages.stdenv.cc makeWrapper ];
@@ -219,26 +223,26 @@ let
   });
 in {
   # Maint version
-  perl532 = common {
-    perl = pkgs.perl532;
-    buildPerl = buildPackages.perl532;
-    version = "5.32.1";
-    sha256 = "0b7brakq9xs4vavhg391as50nbhzryc7fy5i65r81bnq3j897dh3";
-  };
-
-  # Maint version
   perl534 = common {
     perl = pkgs.perl534;
     buildPerl = buildPackages.perl534;
-    version = "5.34.0";
-    sha256 = "16mywn5afpv1mczv9dlc1w84rbgjgrr0pyr4c0hhb2wnif0zq7jm";
+    version = "5.34.1";
+    sha256 = "sha256-NXlRpJGwuhzjYRJjki/ux4zNWB3dwkpEawM+JazyQqE=";
+  };
+
+  # Maint version
+  perl536 = common {
+    perl = pkgs.perl536;
+    buildPerl = buildPackages.perl536;
+    version = "5.36.0";
+    sha256 = "sha256-4mCFr4rDlvYq3YpTPDoOqMhJfYNvBok0esWr17ek4Ao=";
   };
 
   # the latest Devel version
   perldevel = common {
     perl = pkgs.perldevel;
     buildPerl = buildPackages.perldevel;
-    version = "5.35.4";
-    sha256 = "1ss2r0qq5li6d2qghfv1iah5nl6nraymd7b7ib1iy1395rwyhl4q";
+    version = "5.37.0";
+    sha256 = "sha256-8RQO6gtH+WmghqzRafbqAH1MhKv/vJCcvysi7/+T9XI=";
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/php/7.4.nix b/nixpkgs/pkgs/development/interpreters/php/7.4.nix
deleted file mode 100644
index 4bd00811b5fb..000000000000
--- a/nixpkgs/pkgs/development/interpreters/php/7.4.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ callPackage, lib, stdenv, ... }@_args:
-
-let
-  base = callPackage ./generic.nix (_args // {
-    version = "7.4.28";
-    sha256 = "sha256-IIUIaoY0RLDjlUfeGklp/RxAoMGI61j6spOLZJsMS1g=";
-  });
-
-in
-base.withExtensions ({ 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 ]))
diff --git a/nixpkgs/pkgs/development/interpreters/php/8.0.nix b/nixpkgs/pkgs/development/interpreters/php/8.0.nix
index 3332c9d5a420..5e346788ee48 100644
--- a/nixpkgs/pkgs/development/interpreters/php/8.0.nix
+++ b/nixpkgs/pkgs/development/interpreters/php/8.0.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "8.0.17";
-    sha256 = "52811ee2dde71660ca32737a4ac696c24591eb22e846dd8e09ee77122660283f";
+    version = "8.0.22";
+    hash = "sha256-40KRjT7NQi8QAy3wrD/7Dhf1aPrWz44jK296ah/cPJw=";
   });
 
 in
diff --git a/nixpkgs/pkgs/development/interpreters/php/8.1.nix b/nixpkgs/pkgs/development/interpreters/php/8.1.nix
index aa98204b9979..37e471601ddb 100644
--- a/nixpkgs/pkgs/development/interpreters/php/8.1.nix
+++ b/nixpkgs/pkgs/development/interpreters/php/8.1.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "8.1.4";
-    sha256 = "b3f688cb69758523838b8e7f509aaef0152133d9b84a84a0b7cf68eeafc1df76";
+    version = "8.1.9";
+    hash = "sha256-nrsOLlcdtv1ZMEKNyy0Z7T4FAzjsHxNHwoLK6S/Ahv8=";
   });
 
 in
diff --git a/nixpkgs/pkgs/development/interpreters/php/generic.nix b/nixpkgs/pkgs/development/interpreters/php/generic.nix
index bf2ff11158ec..5984113574c2 100644
--- a/nixpkgs/pkgs/development/interpreters/php/generic.nix
+++ b/nixpkgs/pkgs/development/interpreters/php/generic.nix
@@ -29,7 +29,7 @@ let
     , xcbuild
 
     , version
-    , sha256
+    , hash
     , extraPatches ? [ ]
     , packageOverrides ? (final: prev: { })
     , phpAttrsOverrides ? (attrs: { })
@@ -176,6 +176,10 @@ let
               if test -e $out/bin/phpdbg; then
                 wrapProgram $out/bin/phpdbg --set PHP_INI_SCAN_DIR $out/lib
               fi
+
+              if test -e $out/bin/php-cgi; then
+                wrapProgram $out/bin/php-cgi --set PHP_INI_SCAN_DIR $out/lib
+              fi
             '';
           };
         in
@@ -219,8 +223,7 @@ let
             [ "--disable-all" ]
 
             # PCRE
-            ++ lib.optionals (lib.versionAtLeast version "7.4") [ "--with-external-pcre=${pcre2.dev}" ]
-            ++ [ "PCRE_LIBDIR=${pcre2}" ]
+            ++ [ "--with-external-pcre=${pcre2.dev}" ]
 
 
             # Enable sapis
@@ -228,10 +231,6 @@ let
             ++ lib.optional (!cliSupport) "--disable-cli"
             ++ lib.optional fpmSupport "--enable-fpm"
             ++ lib.optional pearSupport [ "--with-pear" "--enable-xml" "--with-libxml" ]
-            ++ lib.optionals (pearSupport && (lib.versionOlder version "7.4")) [
-              "--enable-libxml"
-              "--with-libxml-dir=${libxml2.dev}"
-            ]
             ++ lib.optional pharSupport "--enable-phar"
             ++ lib.optional (!phpdbgSupport) "--disable-phpdbg"
 
@@ -266,14 +265,7 @@ let
               done
 
               export EXTENSION_DIR=$out/lib/php/extensions
-            ''
-            # PKG_CONFIG need not be a relative path
-            + lib.optionalString (!lib.versionAtLeast version "7.4") ''
-              for i in $(find . -type f -name "*.m4"); do
-                substituteInPlace $i \
-                  --replace 'test -x "$PKG_CONFIG"' 'type -P "$PKG_CONFIG" >/dev/null'
-              done
-            '' + ''
+
               ./buildconf --copy --force
 
               if test -f $src/genfiles; then
@@ -298,7 +290,7 @@ let
 
           src = fetchurl {
             url = "https://www.php.net/distributions/php-${version}.tar.bz2";
-            inherit sha256;
+            inherit hash;
           };
 
           patches = [ ./fix-paths-php7.patch ] ++ extraPatches;
diff --git a/nixpkgs/pkgs/development/interpreters/php/zlib-darwin-tests.patch b/nixpkgs/pkgs/development/interpreters/php/zlib-darwin-tests.patch
deleted file mode 100644
index ef61f0a87845..000000000000
--- a/nixpkgs/pkgs/development/interpreters/php/zlib-darwin-tests.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff --git a/ext/zlib/tests/bug55544.phpt b/ext/zlib/tests/bug55544.phpt
-index a0d22f4fcebf4846da6781f424f87821626de5ea..e650fe6909f555d04834f4c08f7fd0d354b783e2 100644
---- a/ext/zlib/tests/bug55544.phpt
-+++ b/ext/zlib/tests/bug55544.phpt
-@@ -6,6 +6,9 @@ extension_loaded("zlib") or die("skip");
- if (substr(PHP_OS, 0, 3) == 'WIN') {
-        die("skip not for windows");
- }
-+if (PHP_OS == "Darwin") {
-+       die("skip not for darwin");
-+}
- ?>
- --INI--
- output_handler=ob_gzhandler
-diff --git a/ext/zlib/tests/gzencode_variation1.phpt b/ext/zlib/tests/gzencode_variation1.phpt
-index c966b2cbc5b7..2f953168fa22 100644
---- a/ext/zlib/tests/gzencode_variation1.phpt
-+++ b/ext/zlib/tests/gzencode_variation1.phpt
-@@ -10,6 +10,10 @@ if( substr(PHP_OS, 0, 3) == "WIN" ) {
- if (!extension_loaded("zlib")) {
- 	print "skip - ZLIB extension not loaded";
- }
-+
-+if (PHP_OS == "Darwin") {
-+    print "skip - OS is encoded in headers, tested header is non Darwin";
-+}
- ?>
- --FILE--
- <?php
-diff --git a/ext/zlib/tests/gzencode_variation2.phpt b/ext/zlib/tests/gzencode_variation2.phpt
-index 94ac42a5f1cd..9160cf519751 100644
---- a/ext/zlib/tests/gzencode_variation2.phpt
-+++ b/ext/zlib/tests/gzencode_variation2.phpt
-@@ -10,6 +10,10 @@ if( substr(PHP_OS, 0, 3) == "WIN" ) {
- if (!extension_loaded("zlib")) {
- 	print "skip - ZLIB extension not loaded";
- }
-+
-+if (PHP_OS == "Darwin") {
-+    print "skip - OS is encoded in headers, tested header is non Darwin";
-+}
- ?>
- --FILE--
- <?php
diff --git a/nixpkgs/pkgs/development/interpreters/picoc/default.nix b/nixpkgs/pkgs/development/interpreters/picoc/default.nix
index 47e18cbdcd8f..e6e87f2b8a7b 100644
--- a/nixpkgs/pkgs/development/interpreters/picoc/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/picoc/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
+    broken = (stdenv.isLinux && stdenv.isAarch64);
     description = "Very small C interpreter for scripting";
     longDescription = ''
       PicoC is a very small C interpreter for scripting. It was originally
diff --git a/nixpkgs/pkgs/development/interpreters/picolisp/default.nix b/nixpkgs/pkgs/development/interpreters/picolisp/default.nix
index 623eefec4162..9df5d1f8d509 100644
--- a/nixpkgs/pkgs/development/interpreters/picolisp/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/picolisp/default.nix
@@ -50,11 +50,12 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
+    # darwin: build times out
+    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
     description = "A simple Lisp with an integrated database";
     homepage = "https://picolisp.com/";
     license = licenses.mit;
     platforms = platforms.all;
-    broken = stdenv.isDarwin; # times out
     maintainers = with maintainers; [ raskin tohl ];
   };
 
diff --git a/nixpkgs/pkgs/development/interpreters/pixie/default.nix b/nixpkgs/pkgs/development/interpreters/pixie/default.nix
deleted file mode 100644
index 5b93357b2665..000000000000
--- a/nixpkgs/pkgs/development/interpreters/pixie/default.nix
+++ /dev/null
@@ -1,94 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, fetchurl, python2, makeWrapper, pkg-config, gcc,
-  pypy, libffi, libedit, libuv, boost, zlib,
-  variant ? "jit", buildWithPypy ? false }:
-
-let
-  commit-count = "1364";
-  common-flags = "--thread --gcrootfinder=shadowstack --continuation";
-  variants = {
-    jit = { flags = "--opt=jit"; target = "target.py"; };
-    jit-preload = { flags = "--opt=jit"; target = "target_preload.py"; };
-    no-jit = { flags = ""; target = "target.py"; };
-    no-jit-preload = { flags = ""; target = "target_preload.py"; };
-  };
-  pixie-src = fetchFromGitHub {
-    owner = "pixie-lang";
-    repo = "pixie";
-    rev = "5eb0ccbe8b0087d3a5f2d0bbbc6998d624d3cd62";
-    sha256 = "sha256-dQ8ncH0IqU42WYxwBgjH6QQfvMIo7RZpv81UAUsPw10=";
-  };
-  pypy-tag = "91db1a9";
-  pypy-src = fetchurl {
-    name = "pypy-src-${pypy-tag}";
-    url = "https://bitbucket.org/pypy/pypy/get/${pypy-tag}.tar.bz2";
-    sha256 = "0ylbqvhbcp5m09l15i2q2h3a0vjd055x2r37cq71lkhgmmaxrwbq";
-  };
-  libs = [ libffi libedit libuv boost.dev boost.out zlib ];
-  include-path = lib.concatStringsSep ":"
-                   (map (p: "${p}/include") libs);
-  library-path = lib.concatStringsSep ":"
-                   (map (p: "${p}/lib") libs);
-  bin-path = lib.concatStringsSep ":"
-               (map (p: "${p}/bin") [ gcc ]);
-  build = {flags, target}: stdenv.mkDerivation rec {
-    pname = "pixie";
-    version = "0-r${commit-count}-${variant}";
-    nativeBuildInputs = [ makeWrapper pkg-config ];
-    buildInputs = libs;
-    PYTHON = if buildWithPypy
-      then "${pypy}/pypy-c/pypy-c"
-      else python2.interpreter;
-    unpackPhase = ''
-      cp -R ${pixie-src} pixie-src
-      mkdir pypy-src
-      (cd pypy-src
-       tar --strip-components=1 -xjf ${pypy-src})
-      chmod -R +w pypy-src pixie-src
-    '';
-    patchPhase = ''
-      (cd pixie-src
-       patch -p1 < ${./load_paths.patch}
-       libraryPaths='["${libuv}" "${libedit}" "${libffi.dev}" "${boost.dev}" "${boost.out}" "${zlib.dev}"]'
-       export libraryPaths
-       substituteAllInPlace ./pixie/ffi-infer.pxi)
-    '';
-    buildPhase = ''(
-      PYTHONPATH="`pwd`/pypy-src:$PYTHONPATH";
-      RPYTHON="`pwd`/pypy-src/rpython/bin/rpython";
-      cd pixie-src
-      $PYTHON $RPYTHON ${common-flags} ${target}
-      find pixie -name "*.pxi" -exec ./pixie-vm -c {} \;
-    )'';
-    LD_LIBRARY_PATH = library-path;
-    C_INCLUDE_PATH = include-path;
-    LIBRARY_PATH = library-path;
-    PATH = bin-path;
-    installPhase = ''
-      mkdir -p $out/share $out/bin
-      cp pixie-src/pixie-vm $out/share/pixie-vm
-      cp -R pixie-src/pixie $out/share/pixie
-      makeWrapper $out/share/pixie-vm $out/bin/pixie \
-        --prefix LD_LIBRARY_PATH : ${LD_LIBRARY_PATH} \
-        --prefix C_INCLUDE_PATH : ${C_INCLUDE_PATH} \
-        --prefix LIBRARY_PATH : ${LIBRARY_PATH} \
-        --prefix PATH : ${PATH}
-    '';
-    doCheck = true;
-    checkPhase = ''
-      RES=$(./pixie-src/pixie-vm -e "(print :ok)")
-      if [ "$RES" != ":ok" ]; then
-        echo "ERROR Unexpected output: '$RES'"
-        return 1
-      else
-        echo "$RES"
-      fi
-    '';
-    meta = {
-      description = "A clojure-like lisp, built with the pypy vm toolkit";
-      homepage = "https://github.com/pixie-lang/pixie";
-      license = lib.licenses.lgpl3;
-      platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"];
-      maintainers = with lib.maintainers; [ bendlas ];
-    };
-  };
-in build (builtins.getAttr variant variants)
diff --git a/nixpkgs/pkgs/development/interpreters/pixie/dust.nix b/nixpkgs/pkgs/development/interpreters/pixie/dust.nix
deleted file mode 100644
index 9c39b5c5ce63..000000000000
--- a/nixpkgs/pkgs/development/interpreters/pixie/dust.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib, stdenv, fetchFromGitHub
-, pixie, rlwrap
-}:
-
-stdenv.mkDerivation rec {
-  pname = "dust";
-  version = "0-91";
-
-  src = fetchFromGitHub {
-    owner = "pixie-lang";
-    repo = "dust";
-    rev = "efe469661e749a71e86858fd006f61464810575a";
-    sha256 = "09n57b6haxwask9m8vimv42ikczf7lgfc7m9izjrcqgs0padvfzc";
-  };
-
-  buildInputs = [ pixie ];
-
-  patches = [ ./make-paths-configurable.patch ];
-
-  configurePhase = ''
-    pixiePath="${pixie}/bin/pixie" \
-    basePath="$out/share/dust" \
-    rlwrapPath="${rlwrap}/bin/rlwrap" \
-      substituteAll dust.in dust
-    chmod +x dust
-  '';
-
-  # FIXME: AOT for dust
-  #  buildPhase = ''
-  #    find . -name "*.pxi" -exec pixie-vm -c {} \;
-  #  '';
-
-  installPhase = ''
-    mkdir -p $out/bin $out/share/dust
-    cp -a src/ run.pxi $out/share/dust
-    mv dust $out/bin/dust
-  '';
-
-  meta = with lib; {
-    description = "Provides tooling around pixie, e.g. a nicer repl, running tests and fetching dependencies";
-    homepage = src.meta.homepage;
-    maintainers = with maintainers; [ ];
-    license = licenses.lgpl3;
-    platforms = platforms.unix;
-  };
-}
diff --git a/nixpkgs/pkgs/development/interpreters/pixie/load_paths.patch b/nixpkgs/pkgs/development/interpreters/pixie/load_paths.patch
deleted file mode 100644
index a36d280c5867..000000000000
--- a/nixpkgs/pkgs/development/interpreters/pixie/load_paths.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/pixie/ffi-infer.pxi b/pixie/ffi-infer.pxi
-index 9f13ac7..74301c2 100644
---- a/pixie/ffi-infer.pxi
-+++ b/pixie/ffi-infer.pxi
-@@ -1,15 +1,12 @@
- (ns pixie.ffi-infer
-   (:require [pixie.io-blocking :as io]))
- 
-+(defn -add-library-path [p]
-+  (swap! load-paths conj (str p "/include"))
-+  (swap! load-paths conj (str p "/lib")))
- 
--(defn -add-rel-path [rel]
--  (swap! load-paths conj (str (first @load-paths) "/" rel)))
--
--(-add-rel-path "lib")
--(-add-rel-path "include")
--(-add-rel-path "../lib")
--(-add-rel-path "../include")
--
-+(doseq [lp @libraryPaths@]
-+  (-add-library-path lp))
- 
- (def *config* nil)
- (set-dynamic! (var *config*))
diff --git a/nixpkgs/pkgs/development/interpreters/pixie/make-paths-configurable.patch b/nixpkgs/pkgs/development/interpreters/pixie/make-paths-configurable.patch
deleted file mode 100644
index e22e83d2ee74..000000000000
--- a/nixpkgs/pkgs/development/interpreters/pixie/make-paths-configurable.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 0cbb82e606610d36e52c70d888995fbbf9b0d7c8 Mon Sep 17 00:00:00 2001
-From: Herwig Hochleitner <herwig@bendlas.net>
-Date: Sun, 28 Feb 2016 16:34:14 +0100
-Subject: [PATCH] make paths configurable
-
----
- dust    | 52 ----------------------------------------------------
- dust.in | 43 +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 43 insertions(+), 52 deletions(-)
- delete mode 100755 dust
- create mode 100755 dust.in
-
-diff --git a/dust b/dust
-deleted file mode 100755
-index ffced9b..0000000
---- a/dust
-+++ /dev/null
-@@ -1,52 +0,0 @@
--#!/usr/bin/env bash
--
--base_path=$0
--if [ -L "$base_path" ]; then
--    base_path=`readlink $base_path`
--fi
--base_path=`dirname $base_path`
--
--pixie_path=`which pixie-vm`
--if [ -z "$pixie_path" ]; then
--    echo "Error: 'pixie-vm' must be on your PATH"
--    exit 1
--fi
--
--function set_load_path() {
--    load_path=""
--    if ([ -f "project.edn" ] || [ -f "project.pxi" ]) && [ -f ".load-path" ]; then
--        load_path="`cat .load-path`"
--    fi
--}
--
--if [ ! -f "project.edn" ] && [ -f "project.pxi" ]; then
--	echo "Warning: 'project.pxi' is deprecated, please use 'project.edn'."
--	echo "To start you can run the following command:"
--	echo "  pixie-vm -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'"
--	echo
--fi
--
--set_load_path
--run_dust="$pixie_path -l $base_path/src $load_path $base_path/run.pxi"
--
--case $1 in
--    ""|"repl")
--        rlwrap_cmd=""
--        if [ -n "`which rlwrap`" ]; then
--            rlwrap_cmd="rlwrap -aignored -n"
--        fi
--        $rlwrap_cmd $pixie_path $load_path
--        ;;
--    "run")
--        shift
--        file=$1
--        shift
--        $pixie_path $load_path $file $@
--        ;;
--    -h|--help)
--        $run_dust help
--        ;;
--    *)
--        $run_dust $@
--        ;;
--esac
-diff --git a/dust.in b/dust.in
-new file mode 100755
-index 0000000..44a7fbd
---- /dev/null
-+++ b/dust.in
-@@ -0,0 +1,40 @@
-+#!/usr/bin/env bash
-+
-+base_path=@basePath@
-+pixie_path=@pixiePath@
-+rlwrap_cmd=@rlwrapPath@
-+
-+function set_load_path() {
-+    load_path=""
-+    if ([ -f "project.edn" ] || [ -f "project.pxi" ]) && [ -f ".load-path" ]; then
-+        load_path="`cat .load-path`"
-+    fi
-+}
-+
-+if [ ! -f "project.edn" ] && [ -f "project.pxi" ]; then
-+	echo "Warning: 'project.pxi' is deprecated, please use 'project.edn'."
-+	echo "To start you can run the following command:"
-+	echo "  pixie-vm -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'"
-+	echo
-+fi
-+
-+set_load_path
-+run_dust="$pixie_path -l $base_path/src $load_path $base_path/run.pxi"
-+
-+case $1 in
-+    ""|"repl")
-+        $rlwrap_cmd -aignored -n $pixie_path $load_path
-+        ;;
-+    "run")
-+        shift
-+        file=$1
-+        shift
-+        $pixie_path $load_path $file $@
-+        ;;
-+    -h|--help)
-+        $run_dust help
-+        ;;
-+    *)
-+        $run_dust $@
-+        ;;
-+esac
--- 
-2.7.1
-
diff --git a/nixpkgs/pkgs/development/interpreters/pure/default.nix b/nixpkgs/pkgs/development/interpreters/pure/default.nix
deleted file mode 100644
index d1c03bba5a31..000000000000
--- a/nixpkgs/pkgs/development/interpreters/pure/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib, stdenv, fetchurl, makeWrapper,
-  libllvm, gmp, mpfr, readline, bison, flex }:
-
-stdenv.mkDerivation rec {
-  baseName="pure";
-  version="0.68";
-  name="${baseName}-${version}";
-
-  src = fetchurl {
-    url="https://github.com/agraef/pure-lang/releases/download/${name}/${name}.tar.gz";
-    sha256="0px6x5ivcdbbp2pz5n1r1cwg1syadklhjw8piqhl63n91i4r7iyb";
-  };
-
-  nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ bison flex ];
-  propagatedBuildInputs = [ libllvm gmp mpfr readline ];
-  NIX_LDFLAGS = "-lLLVMJIT";
-
-  postPatch = ''
-    for f in expr.cc matcher.cc printer.cc symtable.cc parserdefs.hh; do
-      sed -i '1i\#include <stddef.h>' $f
-    done
-  '';
-
-  configureFlags = [ "--enable-release" ];
-  doCheck = true;
-  checkPhase = ''
-    LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${libllvm}/lib make check
-  '';
-  postInstall = ''
-    wrapProgram $out/bin/pure --prefix LD_LIBRARY_PATH : ${libllvm}/lib
-  '';
-
-  meta = {
-    description = "A modern-style functional programming language based on term rewriting";
-    maintainers = with lib.maintainers;
-    [
-      raskin
-      asppsa
-    ];
-    platforms = with lib.platforms;
-      linux;
-    license = lib.licenses.gpl3Plus;
-    broken = true;
-  };
-}
diff --git a/nixpkgs/pkgs/development/interpreters/python-cosmopolitan/default.nix b/nixpkgs/pkgs/development/interpreters/python-cosmopolitan/default.nix
new file mode 100644
index 000000000000..14459a24aac2
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python-cosmopolitan/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, cosmopolitan, unzip, bintools-unwrapped }:
+
+stdenv.mkDerivation rec {
+  pname = "python-cosmopolitan";
+  version = "3.6.14";
+
+  src = cosmopolitan.dist;
+
+  patches = [
+    ./ioctl.patch        # required /dev/tty
+  ];
+
+  nativeBuildInputs = [ bintools-unwrapped unzip ];
+
+  # slashes are significant because upstream uses o/$(MODE)/foo.o
+  buildFlags = "o//third_party/python";
+  checkTarget = "o//third_party/python/test";
+  enableParallelBuilding = true;
+
+  doCheck = true;
+  dontConfigure = true;
+  dontFixup = true;
+
+  installPhase = ''
+    runHook preInstall
+    install o/third_party/python/*.com -Dt $out/bin
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://justine.lol/cosmopolitan/";
+    description = "Actually Portable Python using Cosmopolitan";
+    platforms = platforms.x86_64;
+    badPlatforms = platforms.darwin;
+    license = licenses.isc;
+    maintainers = teams.cosmopolitan.members;
+    mainProgram = "python.com";
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/python-cosmopolitan/ioctl.patch b/nixpkgs/pkgs/development/interpreters/python-cosmopolitan/ioctl.patch
new file mode 100644
index 000000000000..e6e7eb4fc7b0
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python-cosmopolitan/ioctl.patch
@@ -0,0 +1,12 @@
+diff --git a/third_party/python/python.mk b/third_party/python/python.mk
+index f18c15060..b17455bca 100644
+--- a/third_party/python/python.mk
++++ b/third_party/python/python.mk
+@@ -1818,7 +1818,6 @@ THIRD_PARTY_PYTHON_PYTEST_PYMAINS =						\
+ 	third_party/python/Lib/test/test_int_literal.py				\
+ 	third_party/python/Lib/test/test_bisect.py				\
+ 	third_party/python/Lib/test/test_pyexpat.py				\
+-	third_party/python/Lib/test/test_ioctl.py				\
+ 	third_party/python/Lib/test/test_getopt.py				\
+ 	third_party/python/Lib/test/test_sort.py				\
+ 	third_party/python/Lib/test/test_slice.py				\
diff --git a/nixpkgs/pkgs/development/interpreters/python/cpython/2.7/default.nix b/nixpkgs/pkgs/development/interpreters/python/cpython/2.7/default.nix
index fd7e684113e7..25446f5fca89 100644
--- a/nixpkgs/pkgs/development/interpreters/python/cpython/2.7/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/cpython/2.7/default.nix
@@ -68,7 +68,7 @@ let
     executable = libPrefix;
     pythonVersion = with sourceVersion; "${major}.${minor}";
     sitePackages = "lib/${libPrefix}/site-packages";
-    inherit hasDistutilsCxxPatch;
+    inherit hasDistutilsCxxPatch pythonAttr;
     pythonOnBuildForBuild = pkgsBuildBuild.${pythonAttr};
     pythonOnBuildForHost = pkgsBuildHost.${pythonAttr};
     pythonOnBuildForTarget = pkgsBuildTarget.${pythonAttr};
diff --git a/nixpkgs/pkgs/development/interpreters/python/cpython/3.11/darwin-libutil.patch b/nixpkgs/pkgs/development/interpreters/python/cpython/3.11/darwin-libutil.patch
new file mode 100644
index 000000000000..92b846be0002
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python/cpython/3.11/darwin-libutil.patch
@@ -0,0 +1,13 @@
+diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
+index 40229bce0f..3cc604930e 100644
+--- a/Modules/posixmodule.c
++++ b/Modules/posixmodule.c
+@@ -7258,7 +7258,7 @@ os_sched_getaffinity_impl(PyObject *module, pid_t pid)
+ #ifdef HAVE_UTMP_H
+ #include <utmp.h>
+ #endif /* HAVE_UTMP_H */
+-#elif defined(HAVE_LIBUTIL_H)
++#elif defined(HAVE_LIBUTIL_H) && !defined(__APPLE__)
+ #include <libutil.h>
+ #elif defined(HAVE_UTIL_H)
+ #include <util.h>
diff --git a/nixpkgs/pkgs/development/interpreters/python/cpython/3.11/python-3.x-distutils-C++.patch b/nixpkgs/pkgs/development/interpreters/python/cpython/3.11/python-3.x-distutils-C++.patch
new file mode 100644
index 000000000000..335e06b93c39
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python/cpython/3.11/python-3.x-distutils-C++.patch
@@ -0,0 +1,257 @@
+diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py
+index aa66c8b9f4..71e6556bac 100644
+--- a/Lib/_osx_support.py
++++ b/Lib/_osx_support.py
+@@ -14,13 +14,13 @@
+ # configuration variables that may contain universal build flags,
+ # like "-arch" or "-isdkroot", that may need customization for
+ # the user environment
+-_UNIVERSAL_CONFIG_VARS = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS', 'BASECFLAGS',
+-                            'BLDSHARED', 'LDSHARED', 'CC', 'CXX',
+-                            'PY_CFLAGS', 'PY_LDFLAGS', 'PY_CPPFLAGS',
+-                            'PY_CORE_CFLAGS', 'PY_CORE_LDFLAGS')
++_UNIVERSAL_CONFIG_VARS = ('CFLAGS', 'CXXFLAGS', 'LDFLAGS', 'CPPFLAGS',
++                          'BASECFLAGS', 'BLDSHARED', 'LDSHARED', 'LDCXXSHARED',
++                          'CC', 'CXX', 'PY_CFLAGS', 'PY_LDFLAGS',
++                          'PY_CPPFLAGS', 'PY_CORE_LDFLAGS', 'PY_CORE_CFLAGS')
+ 
+ # configuration variables that may contain compiler calls
+-_COMPILER_CONFIG_VARS = ('BLDSHARED', 'LDSHARED', 'CC', 'CXX')
++_COMPILER_CONFIG_VARS = ('BLDSHARED', 'LDSHARED', 'LDCXXSHARED', 'CC', 'CXX')
+ 
+ # prefix added to original configuration variable names
+ _INITPRE = '_OSX_SUPPORT_INITIAL_'
+diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py
+index 66c12dd358..dddb9fd2d4 100644
+--- a/Lib/distutils/cygwinccompiler.py
++++ b/Lib/distutils/cygwinccompiler.py
+@@ -123,8 +123,10 @@ def __init__(self, verbose=0, dry_run=0, force=0):
+         # dllwrap 2.10.90 is buggy
+         if self.ld_version >= "2.10.90":
+             self.linker_dll = "gcc"
++            self.linker_dll_cxx = "g++"
+         else:
+             self.linker_dll = "dllwrap"
++            self.linker_dll_cxx = "dllwrap"
+ 
+         # ld_version >= "2.13" support -shared so use it instead of
+         # -mdll -static
+@@ -138,9 +140,13 @@ def __init__(self, verbose=0, dry_run=0, force=0):
+         self.set_executables(compiler='gcc -mcygwin -O -Wall',
+                              compiler_so='gcc -mcygwin -mdll -O -Wall',
+                              compiler_cxx='g++ -mcygwin -O -Wall',
++                             compiler_so_cxx='g++ -mcygwin -mdll -O -Wall',
+                              linker_exe='gcc -mcygwin',
+                              linker_so=('%s -mcygwin %s' %
+-                                        (self.linker_dll, shared_option)))
++                                        (self.linker_dll, shared_option)),
++                             linker_exe_cxx='g++ -mcygwin',
++                             linker_so_cxx=('%s -mcygwin %s' %
++                                            (self.linker_dll_cxx, shared_option)))
+ 
+         # cygwin and mingw32 need different sets of libraries
+         if self.gcc_version == "2.91.57":
+@@ -164,8 +170,12 @@ def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
+                 raise CompileError(msg)
+         else: # for other files use the C-compiler
+             try:
+-                self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+-                           extra_postargs)
++                if self.detect_language(src) == 'c++':
++                    self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++                               extra_postargs)
++                else:
++                    self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++                               extra_postargs)
+             except DistutilsExecError as msg:
+                 raise CompileError(msg)
+ 
+@@ -300,9 +310,14 @@ def __init__(self, verbose=0, dry_run=0, force=0):
+         self.set_executables(compiler='gcc -O -Wall',
+                              compiler_so='gcc -mdll -O -Wall',
+                              compiler_cxx='g++ -O -Wall',
++                             compiler_so_cxx='g++ -mdll -O -Wall',
+                              linker_exe='gcc',
+                              linker_so='%s %s %s'
+                                         % (self.linker_dll, shared_option,
++                                           entry_point),
++                             linker_exe_cxx='g++',
++                             linker_so_cxx='%s %s %s'
++                                        % (self.linker_dll_cxx, shared_option,
+                                            entry_point))
+         # Maybe we should also append -mthreads, but then the finished
+         # dlls need another dll (mingwm10.dll see Mingw32 docs)
+diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
+index 3414a761e7..f1af560cc1 100644
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -216,9 +216,11 @@ def customize_compiler(compiler):
+                 _osx_support.customize_compiler(_config_vars)
+                 _config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True'
+ 
+-        (cc, cxx, cflags, ccshared, ldshared, shlib_suffix, ar, ar_flags) = \
+-            get_config_vars('CC', 'CXX', 'CFLAGS',
+-                            'CCSHARED', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS')
++        (cc, cxx, cflags, ccshared, ldshared, ldcxxshared, shlib_suffix, ar, ar_flags) = \
++            get_config_vars('CC', 'CXX', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'LDCXXSHARED',
++                            'SHLIB_SUFFIX', 'AR', 'ARFLAGS')
++
++        cxxflags = cflags
+ 
+         if 'CC' in os.environ:
+             newcc = os.environ['CC']
+@@ -233,19 +235,27 @@ def customize_compiler(compiler):
+             cxx = os.environ['CXX']
+         if 'LDSHARED' in os.environ:
+             ldshared = os.environ['LDSHARED']
++        if 'LDCXXSHARED' in os.environ:
++            ldcxxshared = os.environ['LDCXXSHARED']
+         if 'CPP' in os.environ:
+             cpp = os.environ['CPP']
+         else:
+             cpp = cc + " -E"           # not always
+         if 'LDFLAGS' in os.environ:
+             ldshared = ldshared + ' ' + os.environ['LDFLAGS']
++            ldcxxshared = ldcxxshared + ' ' + os.environ['LDFLAGS']
+         if 'CFLAGS' in os.environ:
+-            cflags = cflags + ' ' + os.environ['CFLAGS']
++            cflags = os.environ['CFLAGS']
+             ldshared = ldshared + ' ' + os.environ['CFLAGS']
++        if 'CXXFLAGS' in os.environ:
++            cxxflags = os.environ['CXXFLAGS']
++            ldcxxshared = ldcxxshared + ' ' + os.environ['CXXFLAGS']
+         if 'CPPFLAGS' in os.environ:
+             cpp = cpp + ' ' + os.environ['CPPFLAGS']
+             cflags = cflags + ' ' + os.environ['CPPFLAGS']
++            cxxflags = cxxflags + ' ' + os.environ['CPPFLAGS']
+             ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
++            ldcxxshared = ldcxxshared + ' ' + os.environ['CPPFLAGS']
+         if 'AR' in os.environ:
+             ar = os.environ['AR']
+         if 'ARFLAGS' in os.environ:
+@@ -254,13 +264,17 @@ def customize_compiler(compiler):
+             archiver = ar + ' ' + ar_flags
+ 
+         cc_cmd = cc + ' ' + cflags
++        cxx_cmd = cxx + ' ' + cxxflags
+         compiler.set_executables(
+             preprocessor=cpp,
+             compiler=cc_cmd,
+             compiler_so=cc_cmd + ' ' + ccshared,
+-            compiler_cxx=cxx,
++            compiler_cxx=cxx_cmd,
++            compiler_so_cxx=cxx_cmd + ' ' + ccshared,
+             linker_so=ldshared,
+             linker_exe=cc,
++            linker_so_cxx=ldcxxshared,
++            linker_exe_cxx=cxx,
+             archiver=archiver)
+ 
+         compiler.shared_lib_extension = shlib_suffix
+diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
+index d00c48981e..4a3d271fee 100644
+--- a/Lib/distutils/unixccompiler.py
++++ b/Lib/distutils/unixccompiler.py
+@@ -52,14 +52,17 @@ class UnixCCompiler(CCompiler):
+     # are pretty generic; they will probably have to be set by an outsider
+     # (eg. using information discovered by the sysconfig about building
+     # Python extensions).
+-    executables = {'preprocessor' : None,
+-                   'compiler'     : ["cc"],
+-                   'compiler_so'  : ["cc"],
+-                   'compiler_cxx' : ["cc"],
+-                   'linker_so'    : ["cc", "-shared"],
+-                   'linker_exe'   : ["cc"],
+-                   'archiver'     : ["ar", "-cr"],
+-                   'ranlib'       : None,
++    executables = {'preprocessor'    : None,
++                   'compiler'        : ["cc"],
++                   'compiler_so'     : ["cc"],
++                   'compiler_cxx'    : ["c++"],
++                   'compiler_so_cxx' : ["c++"],
++                   'linker_so'       : ["cc", "-shared"],
++                   'linker_exe'      : ["cc"],
++                   'linker_so_cxx'   : ["c++", "-shared"],
++                   'linker_exe_cxx'  : ["c++"],
++                   'archiver'        : ["ar", "-cr"],
++                   'ranlib'          : None,
+                   }
+ 
+     if sys.platform[:6] == "darwin":
+@@ -110,12 +113,19 @@ def preprocess(self, source, output_file=None, macros=None,
+ 
+     def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
+         compiler_so = self.compiler_so
++        compiler_so_cxx = self.compiler_so_cxx
+         if sys.platform == 'darwin':
+             compiler_so = _osx_support.compiler_fixup(compiler_so,
+                                                     cc_args + extra_postargs)
++            compiler_so_cxx = _osx_support.compiler_fixup(compiler_so_cxx,
++                                                    cc_args + extra_postargs)
+         try:
+-            self.spawn(compiler_so + cc_args + [src, '-o', obj] +
+-                       extra_postargs)
++            if self.detect_language(src) == 'c++':
++                self.spawn(compiler_so_cxx + cc_args + [src, '-o', obj] +
++                           extra_postargs)
++            else:
++                self.spawn(compiler_so + cc_args + [src, '-o', obj] +
++                           extra_postargs)
+         except DistutilsExecError as msg:
+             raise CompileError(msg)
+ 
+@@ -173,30 +183,16 @@ def link(self, target_desc, objects,
+                 ld_args.extend(extra_postargs)
+             self.mkpath(os.path.dirname(output_filename))
+             try:
+-                if target_desc == CCompiler.EXECUTABLE:
+-                    linker = self.linker_exe[:]
++                if target_lang == "c++":
++                    if target_desc == CCompiler.EXECUTABLE:
++                        linker = self.linker_exe_cxx[:]
++                    else:
++                        linker = self.linker_so_cxx[:]
+                 else:
+-                    linker = self.linker_so[:]
+-                if target_lang == "c++" and self.compiler_cxx:
+-                    # skip over environment variable settings if /usr/bin/env
+-                    # is used to set up the linker's environment.
+-                    # This is needed on OSX. Note: this assumes that the
+-                    # normal and C++ compiler have the same environment
+-                    # settings.
+-                    i = 0
+-                    if os.path.basename(linker[0]) == "env":
+-                        i = 1
+-                        while '=' in linker[i]:
+-                            i += 1
+-
+-                    if os.path.basename(linker[i]) == 'ld_so_aix':
+-                        # AIX platforms prefix the compiler with the ld_so_aix
+-                        # script, so we need to adjust our linker index
+-                        offset = 1
++                    if target_desc == CCompiler.EXECUTABLE:
++                        linker = self.linker_exe[:]
+                     else:
+-                        offset = 0
+-
+-                    linker[i+offset] = self.compiler_cxx[i]
++                        linker = self.linker_so[:]
+ 
+                 if sys.platform == 'darwin':
+                     linker = _osx_support.compiler_fixup(linker, ld_args)
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index f803391346..090f14c46c 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -732,9 +732,9 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt @LIBMPDEC_INTERNAL@ @LIBEXPAT_INTERNAL
+ 	    *\ -s*|s*) quiet="-q";; \
+ 	    *) quiet="";; \
+ 	esac; \
+-	echo "$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
++	echo "$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' CFLAGS='$(PY_CFLAGS)' \
+ 		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build"; \
+-	$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
++	$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' CFLAGS='$(PY_CFLAGS)' \
+ 		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
+ 
+ 
diff --git a/nixpkgs/pkgs/development/interpreters/python/cpython/default.nix b/nixpkgs/pkgs/development/interpreters/python/cpython/default.nix
index 02ecf8d25b1e..dca7d9bb0db5 100644
--- a/nixpkgs/pkgs/development/interpreters/python/cpython/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/cpython/default.nix
@@ -49,7 +49,7 @@
 , enableLTO ? stdenv.is64bit && stdenv.isLinux
 , reproducibleBuild ? false
 , pythonAttr ? "python${sourceVersion.major}${sourceVersion.minor}"
-}:
+} @ inputs:
 
 # Note: this package is used for bootstrapping fetchurl, and thus
 # cannot use fetchpatch! All mutable patches (generated by GitHub or
@@ -63,9 +63,6 @@ assert x11Support -> tcl != null
 
 assert bluezSupport -> bluez != 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.";
-
 assert lib.assertMsg (reproducibleBuild -> stripBytecode)
   "Deterministic builds require stripping bytecode.";
 
@@ -83,25 +80,27 @@ let
 
   tzdataSupport = tzdata != null && passthru.pythonAtLeast "3.9";
 
-  passthru = passthruFun rec {
+  passthru = let
+    # When we override the interpreter we also need to override the spliced versions of the interpreter
+    inputs' = lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun") inputs;
+    override = attr: let python = attr.override (inputs' // { self = python; }); in python;
+  in passthruFun rec {
     inherit self sourceVersion packageOverrides;
     implementation = "cpython";
     libPrefix = "python${pythonVersion}";
     executable = libPrefix;
     pythonVersion = with sourceVersion; "${major}.${minor}";
     sitePackages = "lib/${libPrefix}/site-packages";
-    inherit hasDistutilsCxxPatch;
-    pythonOnBuildForBuild = pkgsBuildBuild.${pythonAttr};
-    pythonOnBuildForHost = pkgsBuildHost.${pythonAttr};
-    pythonOnBuildForTarget = pkgsBuildTarget.${pythonAttr};
-    pythonOnHostForHost = pkgsHostHost.${pythonAttr};
-    pythonOnTargetForTarget = pkgsTargetTarget.${pythonAttr} or {};
+    inherit hasDistutilsCxxPatch pythonAttr;
+    pythonOnBuildForBuild = override pkgsBuildBuild.${pythonAttr};
+    pythonOnBuildForHost = override pkgsBuildHost.${pythonAttr};
+    pythonOnBuildForTarget = override pkgsBuildTarget.${pythonAttr};
+    pythonOnHostForHost = override pkgsHostHost.${pythonAttr};
+    pythonOnTargetForTarget = if lib.hasAttr pythonAttr pkgsTargetTarget then (override pkgsTargetTarget.${pythonAttr}) else {};
   };
 
   version = with sourceVersion; "${major}.${minor}.${patch}${suffix}";
 
-  strictDeps = true;
-
   nativeBuildInputs = optionals (!stdenv.isDarwin) [
     autoreconfHook
     pkg-config
@@ -111,7 +110,7 @@ let
   ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
     buildPackages.stdenv.cc
     pythonForBuild
-  ] ++ optionals (stdenv.cc.isClang && enableLTO) [
+  ] ++ optionals (stdenv.cc.isClang && (enableLTO || enableOptimizations)) [
     stdenv.cc.cc.libllvm.out
   ];
 
@@ -145,7 +144,19 @@ let
     # The configure script uses "arm" as the CPU name for all 32-bit ARM
     # variants when cross-compiling, but native builds include the version
     # suffix, so we do the same.
-    pythonHostPlatform = "${parsed.kernel.name}-${parsed.cpu.name}";
+    pythonHostPlatform = let
+      cpu = {
+        # According to PEP600, Python's name for the Power PC
+        # architecture is "ppc", not "powerpc".  Without the Rosetta
+        # Stone below, the PEP600 requirement that "${ARCH} matches
+        # the return value from distutils.util.get_platform()" fails.
+        # https://peps.python.org/pep-0600/
+        powerpc = "ppc";
+        powerpcle = "ppcle";
+        powerpc64 = "ppc64";
+        powerpc64le = "ppc64le";
+      }.${parsed.cpu.name} or parsed.cpu.name;
+    in "${parsed.kernel.name}-${cpu}";
 
     # https://github.com/python/cpython/blob/e488e300f5c01289c10906c2e53a8e43d6de32d8/configure.ac#L724
     multiarchCpu =
@@ -182,7 +193,8 @@ in with passthru; stdenv.mkDerivation {
   pname = "python3";
   inherit version;
 
-  inherit buildInputs nativeBuildInputs;
+  inherit nativeBuildInputs;
+  buildInputs = [ bash ] ++ buildInputs; # bash is only for patchShebangs
 
   src = fetchurl {
     url = with sourceVersion; "https://www.python.org/ftp/python/${major}.${minor}.${patch}/Python-${version}.tar.xz";
@@ -225,9 +237,11 @@ in with passthru; stdenv.mkDerivation {
     # * https://bugs.python.org/issue35523
     # * https://github.com/python/cpython/commit/e6b247c8e524
     ./3.7/no-win64-workaround.patch
-  ] ++ optionals (pythonAtLeast "3.7") [
+  ] ++ optionals (pythonAtLeast "3.7" && pythonOlder "3.11") [
     # Fix darwin build https://bugs.python.org/issue34027
     ./3.7/darwin-libutil.patch
+  ] ++ optionals (pythonAtLeast "3.11") [
+    ./3.11/darwin-libutil.patch
   ] ++ optionals (pythonOlder "3.8") [
     # Backport from CPython 3.8 of a good list of tests to run for PGO.
     (
@@ -236,7 +250,7 @@ in with passthru; stdenv.mkDerivation {
       else
         ./3.5/profile-task.patch
     )
-  ] ++ optionals (pythonAtLeast "3.9" && stdenv.isDarwin) [
+  ] ++ optionals (pythonAtLeast "3.9" && pythonOlder "3.11" && stdenv.isDarwin) [
     # Stop checking for TCL/TK in global macOS locations
     ./3.9/darwin-tcl-tk.patch
   ] ++ optionals (isPy3k && hasDistutilsCxxPatch) [
@@ -247,8 +261,10 @@ in with passthru; stdenv.mkDerivation {
     (
       if isPy35 then
         ./3.5/python-3.x-distutils-C++.patch
-      else if pythonAtLeast "3.7" then
+      else if pythonAtLeast "3.7" && pythonOlder "3.11" then
         ./3.7/python-3.x-distutils-C++.patch
+      else if pythonAtLeast "3.11" then
+        ./3.11/python-3.x-distutils-C++.patch
       else
         fetchpatch {
           url = "https://bugs.python.org/file48016/python-3.x-distutils-C++.patch";
@@ -282,8 +298,8 @@ 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 = lib.optionalString stdenv.cc.isGNU ({
+  LIBS = "${optionalString (!stdenv.isDarwin) "-lcrypt"}";
+  NIX_LDFLAGS = lib.optionalString (stdenv.cc.isGNU && !stdenv.hostPlatform.isStatic) ({
     "glibc" = "-lgcc_s";
     "musl" = "-lgcc_eh";
   }."${stdenv.hostPlatform.libc}" or "");
@@ -459,7 +475,7 @@ in with passthru; stdenv.mkDerivation {
 
   preFixup = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
     # Ensure patch-shebangs uses shebangs of host interpreter.
-    export PATH=${lib.makeBinPath [ "$out" bash ]}:$PATH
+    export PATH=${lib.makeBinPath [ "$out" ]}:$PATH
   '';
 
   # Add CPython specific setup-hook that configures distutils.sysconfig to
diff --git a/nixpkgs/pkgs/development/interpreters/python/default.nix b/nixpkgs/pkgs/development/interpreters/python/default.nix
index 34fcb2530e19..119b7d556647 100644
--- a/nixpkgs/pkgs/development/interpreters/python/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/default.nix
@@ -19,9 +19,14 @@ with pkgs;
     , pythonOnBuildForTarget
     , pythonOnHostForHost
     , pythonOnTargetForTarget
+    , pythonAttr ? null
     , self # is pythonOnHostForTarget
     }: let
       pythonPackages = callPackage
+        # Function that when called
+        # - imports python-packages.nix
+        # - adds spliced package sets to the package set
+        # - applies overrides from `packageOverrides` and `pythonPackagesOverlays`.
         ({ pkgs, stdenv, python, overrides }: let
           pythonPackagesFun = import ../../../top-level/python-packages.nix {
             inherit stdenv pkgs lib;
@@ -74,8 +79,8 @@ with pkgs;
           extra = _: {};
           optionalExtensions = cond: as: if cond then as else [];
           python2Extension = import ../../../top-level/python2-packages.nix;
-          extensions = lib.composeManyExtensions ((optionalExtensions (!self.isPy3k) [python2Extension]) ++ [ overrides ]);
-          aliases = self: super: lib.optionalAttrs (config.allowAliases or true) (import ../../../top-level/python-aliases.nix lib self super);
+          extensions = lib.composeManyExtensions ((optionalExtensions (!self.isPy3k) [python2Extension]) ++ pkgs.pythonPackagesExtensions ++ [ overrides ]);
+          aliases = self: super: lib.optionalAttrs config.allowAliases (import ../../../top-level/python-aliases.nix lib self super);
         in lib.makeScopeWithSplicing
           pkgs.splicePackages
           pkgs.newScope
@@ -117,6 +122,8 @@ with pkgs;
         tests = callPackage ./tests.nix {
           python = self;
         };
+
+        inherit pythonAttr;
   };
 
   sources = {
@@ -124,19 +131,19 @@ with pkgs;
       sourceVersion = {
         major = "3";
         minor = "9";
-        patch = "10";
+        patch = "13";
         suffix = "";
       };
-      sha256 = "sha256-Co+/tSh+vDoT6brz1U4I+gZ3j/7M9jEa74Ibs6ZYbMg=";
+      sha256 = "sha256-ElsMWY8eFdKqZUBug/eS330XHN84wWgDsUmZQxajCA8=";
     };
     python310 = {
       sourceVersion = {
         major = "3";
         minor = "10";
-        patch = "2";
+        patch = "6";
         suffix = "";
       };
-      sha256 = "sha256-F946x9qfJRmqnWQ3jGA6c6DprVjf+ogS5FFgwIbeZMc=";
+      sha256 = "sha256-95X/h9EdSwx8M7yIUbDChkjYpFg6ohAKmMIrQya20/M=";
     };
   };
 
@@ -199,9 +206,9 @@ in {
       major = "3";
       minor = "11";
       patch = "0";
-      suffix = "a6";
+      suffix = "rc1";
     };
-    sha256 = "sha256-HFOi/3WHljPjDKwp0qpregEONVuV8L+axpG+zPX50So=";
+    sha256 = "sha256-U6U3fDeoosbaB1sU651jN0V59/PHGPog8KH7sOlKkis=";
     inherit (darwin) configd;
     inherit passthruFun;
   };
@@ -230,11 +237,10 @@ in {
     enableOptimizations = false;
     enableLTO = false;
     mimetypesSupport = false;
-  } // sources.python39)).overrideAttrs(old: {
+  } // sources.python310)).overrideAttrs(old: {
+    # TODO(@Artturin): Add this to the main cpython expr
+    strictDeps = true;
     pname = "python3-minimal";
-    meta = old.meta // {
-      maintainers = [];
-    };
   });
 
   pypy27 = callPackage ./pypy {
@@ -300,11 +306,6 @@ in {
     inherit passthruFun;
   };
 
-  graalpython37 = callPackage ./graalpython/default.nix {
-    self = pythonInterpreters.graalpython37;
-    inherit passthruFun;
-  };
-
   rustpython = callPackage ./rustpython/default.nix {
     inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
   };
diff --git a/nixpkgs/pkgs/development/interpreters/python/graalpython/default.nix b/nixpkgs/pkgs/development/interpreters/python/graalpython/default.nix
deleted file mode 100644
index b5d7d130b5a7..000000000000
--- a/nixpkgs/pkgs/development/interpreters/python/graalpython/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ pkgs
-, lib
-, graalvm8
-, passthruFun
-, packageOverrides ? (self: super: {})
-, self
-}:
-
-let
-  passthru = passthruFun {
-    inherit self packageOverrides;
-    implementation = "graal";
-    sourceVersion = graalvm8.version;
-    pythonVersion = "3.7";
-    libPrefix = "graalvm";
-    sitePackages = "jre/languages/python/lib-python/3/site-packages";
-    executable = "graalpython";
-    hasDistutilsCxxPatch = false;
-    pythonForBuild = pkgs.buildPackages.pythonInterpreters.graalpython37;
-  };
-in lib.extendDerivation true passthru graalvm8
diff --git a/nixpkgs/pkgs/development/interpreters/python/hooks/default.nix b/nixpkgs/pkgs/development/interpreters/python/hooks/default.nix
index 1a0618225a37..34c6a72662d7 100644
--- a/nixpkgs/pkgs/development/interpreters/python/hooks/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/hooks/default.nix
@@ -124,6 +124,15 @@ in rec {
       };
     } ./python-recompile-bytecode-hook.sh ) {};
 
+  pythonRelaxDepsHook = callPackage ({ wheel }:
+    makeSetupHook {
+      name = "python-relax-deps-hook";
+      deps = [ wheel ];
+      substitutions = {
+        inherit pythonInterpreter;
+      };
+    } ./python-relax-deps-hook.sh) {};
+
   pythonRemoveBinBytecodeHook = callPackage ({ }:
     makeSetupHook {
       name = "python-remove-bin-bytecode-hook";
@@ -161,12 +170,18 @@ in rec {
       deps = [ ensureNewerSourcesForZipFilesHook ];
       substitutions = {
         inherit pythonInterpreter;
-    };
-  } ./venv-shell-hook.sh) {});
+      };
+    } ./venv-shell-hook.sh) {});
 
   wheelUnpackHook = callPackage ({ wheel }:
     makeSetupHook {
       name = "wheel-unpack-hook.sh";
       deps = [ wheel ];
     } ./wheel-unpack-hook.sh) {};
+
+  sphinxHook = callPackage ({ sphinx }:
+    makeSetupHook {
+      name = "python${python.pythonVersion}-sphinx-hook";
+      deps = [ sphinx ];
+    } ./sphinx-hook.sh) {};
 }
diff --git a/nixpkgs/pkgs/development/interpreters/python/hooks/python-relax-deps-hook.sh b/nixpkgs/pkgs/development/interpreters/python/hooks/python-relax-deps-hook.sh
new file mode 100644
index 000000000000..82231ee3adc6
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python/hooks/python-relax-deps-hook.sh
@@ -0,0 +1,86 @@
+# shellcheck shell=bash
+
+# Setup hook that modifies Python dependencies versions.
+#
+# Example usage in a derivation:
+#
+#   { …, pythonPackages, … }:
+#
+#   pythonPackages.buildPythonPackage {
+#     …
+#     nativeBuildInputs = [ pythonPackages.pythonRelaxDepsHook ];
+#
+#     # This will relax the dependency restrictions
+#     # e.g.: abc>1,<=2 -> abc
+#     pythonRelaxDeps = [ "abc" ];
+#     # This will relax all dependencies restrictions instead
+#     # pythonRelaxDeps = true;
+#     # This will remove the dependency
+#     # e.g.: cde>1,<=2 -> <nothing>
+#     pythonRemoveDeps = [ "cde" ];
+#     # This will remove all dependencies from the project
+#     # pythonRemoveDeps = true;
+#     …
+#   }
+
+_pythonRelaxDeps() {
+    local -r metadata_file="$1"
+
+    if [[ -z "${pythonRelaxDeps:-}" ]] || [[ "$pythonRelaxDeps" == 0 ]]; then
+        return
+    elif [[ "$pythonRelaxDeps" == 1 ]]; then
+        sed -i "$metadata_file" -r \
+            -e 's/(Requires-Dist: \S*) \(.*\)/\1/'
+    else
+        for dep in $pythonRelaxDeps; do
+            sed -i "$metadata_file" -r \
+                -e "s/(Requires-Dist: $dep) \(.*\)/\1/"
+        done
+    fi
+}
+
+_pythonRemoveDeps() {
+    local -r metadata_file="$1"
+
+    if [[ -z "${pythonRemoveDeps:-}" ]] || [[ "$pythonRemoveDeps" == 0 ]]; then
+        return
+    elif [[ "$pythonRemoveDeps" == 1 ]]; then
+        sed -i "$metadata_file" \
+            -e '/Requires-Dist:.*/d'
+    else
+        for dep in $pythonRemoveDeps; do
+            sed -i "$metadata_file" \
+                -e "/Requires-Dist: $dep/d"
+        done
+    fi
+
+}
+
+pythonRelaxDepsHook() {
+    pushd dist
+
+    # See https://peps.python.org/pep-0491/#escaping-and-unicode
+    local -r pkg_name="${pname//[^[:alnum:].]/_}-$version"
+    local -r unpack_dir="unpacked"
+    local -r metadata_file="$unpack_dir/$pkg_name/$pkg_name.dist-info/METADATA"
+
+    # We generally shouldn't have multiple wheel files, but let's be safer here
+    for wheel in "$pkg_name"*".whl"; do
+        @pythonInterpreter@ -m wheel unpack --dest "$unpack_dir" "$wheel"
+        rm -rf "$wheel"
+
+        _pythonRelaxDeps "$metadata_file"
+        _pythonRemoveDeps "$metadata_file"
+
+        if (( "${NIX_DEBUG:-0}" >= 1 )); then
+            echo "pythonRelaxDepsHook: resulting METADATA for '$wheel':"
+            cat "$unpack_dir/$pkg_name/$pkg_name.dist-info/METADATA"
+        fi
+
+        @pythonInterpreter@ -m wheel pack "$unpack_dir/$pkg_name"
+    done
+
+    popd
+}
+
+postBuild+=" pythonRelaxDepsHook"
diff --git a/nixpkgs/pkgs/development/interpreters/python/hooks/setuptools-build-hook.sh b/nixpkgs/pkgs/development/interpreters/python/hooks/setuptools-build-hook.sh
index cc0377449251..958a9378ef14 100644
--- a/nixpkgs/pkgs/development/interpreters/python/hooks/setuptools-build-hook.sh
+++ b/nixpkgs/pkgs/development/interpreters/python/hooks/setuptools-build-hook.sh
@@ -11,8 +11,11 @@ setuptoolsBuildPhase() {
     if [ -n "$setupPyGlobalFlags" ]; then
         args+="$setupPyGlobalFlags"
     fi
+    if [ -n "$enableParallelBuilding" ]; then
+        setupPyBuildFlags+=" --parallel $NIX_BUILD_CORES"
+    fi
     if [ -n "$setupPyBuildFlags" ]; then
-        args+="build_ext $setupPyBuildFlags"
+        args+=" build_ext $setupPyBuildFlags"
     fi
     eval "@pythonInterpreter@ nix_run_setup $args bdist_wheel"
 
diff --git a/nixpkgs/pkgs/development/interpreters/python/hooks/sphinx-hook.sh b/nixpkgs/pkgs/development/interpreters/python/hooks/sphinx-hook.sh
new file mode 100644
index 000000000000..92cc9e52ed21
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python/hooks/sphinx-hook.sh
@@ -0,0 +1,57 @@
+# This hook automatically finds Sphinx documentation, builds it in html format
+# and installs it.
+#
+# This hook knows about several popular locations in which subdirectory
+# documentation may be, but in very unusual cases $sphinxRoot directory can be
+# set explicitly.
+#
+# Name of the directory relative to ${doc:-$out}/share/doc is normally also
+# deduced automatically, but can be overridden with $sphinxOutdir variable.
+#
+# Sphinx build system can depend on arbitrary amount of python modules, client
+# code is responsible for ensuring that all dependencies are present.
+
+buildSphinxPhase() {
+    local __sphinxRoot="" o
+
+    runHook preBuildSphinx
+    if [[ -n "${sphinxRoot:-}" ]] ; then  # explicit root
+        if ! [[ -f "${sphinxRoot}/conf.py" ]] ; then
+            echo 2>&1 "$sphinxRoot/conf.py: no such file"
+            exit 1
+        fi
+        __sphinxRoot=$sphinxRoot
+    else
+        for o in doc docs doc/source docs/source ; do
+            if [[ -f "$o/conf.py" ]] ; then
+                echo "Sphinx documentation found in $o"
+                __sphinxRoot=$o
+                break
+            fi
+        done
+    fi
+
+    if [[ -z "${__sphinxRoot}" ]] ; then
+        echo 2>&1 "Sphinx documentation not found, use 'sphinxRoot' variable"
+        exit 1
+    fi
+    sphinx-build -M html "${__sphinxRoot}" ".sphinx/html" -v
+
+    runHook postBuildSphinx
+}
+
+installSphinxPhase() {
+    local docdir=""
+    runHook preInstallSphinx
+
+    docdir="${doc:-$out}/share/doc/${sphinxOutdir:-$name}"
+    mkdir -p "$docdir"
+
+    cp -r .sphinx/html/html "$docdir/"
+    rm -fr "${docdir}/html/_sources" "${docdir}/html/.buildinfo"
+
+    runHook postInstallSphinx
+}
+
+preDistPhases+=" buildSphinxPhase"
+postPhases+=" installSphinxPhase"
diff --git a/nixpkgs/pkgs/development/interpreters/python/mk-python-derivation.nix b/nixpkgs/pkgs/development/interpreters/python/mk-python-derivation.nix
index 963073df6200..f37ad592cb49 100644
--- a/nixpkgs/pkgs/development/interpreters/python/mk-python-derivation.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/mk-python-derivation.nix
@@ -148,7 +148,12 @@ let
 
     buildInputs = buildInputs ++ pythonPath;
 
-    propagatedBuildInputs = propagatedBuildInputs ++ [ python ];
+    propagatedBuildInputs = propagatedBuildInputs ++ [
+      # we propagate python even for packages transformed with 'toPythonApplication'
+      # this pollutes the PATH but avoids rebuilds
+      # see https://github.com/NixOS/nixpkgs/issues/170887 for more context
+      python
+    ];
 
     inherit strictDeps;
 
@@ -176,8 +181,6 @@ let
       # default to python's platforms
       platforms = python.meta.platforms;
       isBuildPythonPackage = python.meta.platforms;
-    } // lib.optionalAttrs (attrs?pname) {
-      mainProgram = attrs.pname;
     } // meta;
   } // lib.optionalAttrs (attrs?checkPhase) {
     # If given use the specified checkPhase, otherwise use the setup hook.
diff --git a/nixpkgs/pkgs/development/interpreters/python/pypy/default.nix b/nixpkgs/pkgs/development/interpreters/python/pypy/default.nix
index 668a4e24b39e..e8c7d3ba65e5 100644
--- a/nixpkgs/pkgs/development/interpreters/python/pypy/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/pypy/default.nix
@@ -30,6 +30,7 @@ let
     executable = "pypy${if isPy3k then "3" else ""}";
     sitePackages = "site-packages";
     hasDistutilsCxxPatch = false;
+    inherit pythonAttr;
 
     pythonOnBuildForBuild = pkgsBuildBuild.${pythonAttr};
     pythonOnBuildForHost = pkgsBuildHost.${pythonAttr};
diff --git a/nixpkgs/pkgs/development/interpreters/python/setup-hook.nix b/nixpkgs/pkgs/development/interpreters/python/setup-hook.nix
index b66bd1cc5f69..29ce079317f0 100644
--- a/nixpkgs/pkgs/development/interpreters/python/setup-hook.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/setup-hook.nix
@@ -5,6 +5,7 @@ sitePackages:
 let
   hook = ./setup-hook.sh;
 in runCommand "python-setup-hook.sh" {
+  strictDeps = true;
   inherit sitePackages;
 } ''
   cp ${hook} hook.sh
diff --git a/nixpkgs/pkgs/development/interpreters/python/tests.nix b/nixpkgs/pkgs/development/interpreters/python/tests.nix
index 49dfe0e4644e..037c8f87b8ba 100644
--- a/nixpkgs/pkgs/development/interpreters/python/tests.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/tests.nix
@@ -11,6 +11,7 @@
 , substituteAll
 , lib
 , callPackage
+, pkgs
 }:
 
 let
@@ -133,6 +134,17 @@ let
     # test-overrideScope = let
     #  myPackages = python.pkgs.overrideScope extension;
     # in assert myPackages.foobar == myPackages.numpy; myPackages.python.withPackages(ps: with ps; [ foobar ]);
+  } // lib.optionalAttrs (python ? pythonAttr) {
+    # Test applying overrides using pythonPackagesOverlays.
+    test-pythonPackagesExtensions = let
+      pkgs_ = pkgs.extend(final: prev: {
+        pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
+          (python-final: python-prev: {
+            foo = python-prev.setuptools;
+          })
+        ];
+      });
+    in pkgs_.${python.pythonAttr}.pkgs.foo;
   };
 
   condaTests = let
diff --git a/nixpkgs/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py b/nixpkgs/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py
index 5f55ed5ecaf1..3843497d94e5 100755
--- a/nixpkgs/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py
+++ b/nixpkgs/pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py
@@ -356,17 +356,19 @@ def _update_package(path, target):
         text = _replace_value('hash', sri_hash, text)
 
     if fetcher == 'fetchFromGitHub':
-        # 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\.]*);)'
+        # in the case of fetchFromGitHub, it's common to see `rev = version;` or `rev = "v${version}";`
+        # in which no string value is meant to be substituted. However, we can just overwrite the previous value.
+        regex = '(rev\s+=\s+[^;]*;)'
         regex = re.compile(regex)
-        value = regex.findall(text)
-        n = len(value)
+        matches = regex.findall(text)
+        n = len(matches)
 
         if n == 0:
-            # value is set to a string, e.g. `rev = "v${version}";`
-            text = _replace_value('rev', f"{prefix}${{version}}", text)
+            raise ValueError("Unable to find rev value for {}.".format(pname))
+        else:
+            # forcefully rewrite rev, incase tagging conventions changed for a release
+            match = matches[0]
+            text = text.replace(match, f'rev = "refs/tags/{prefix}${{version}}";')
             # incase there's no prefix, just rewrite without interpolation
             text = text.replace('"${version}";', 'version;')
 
diff --git a/nixpkgs/pkgs/development/interpreters/python/wrapper.nix b/nixpkgs/pkgs/development/interpreters/python/wrapper.nix
index 514930db359b..b36662335abe 100644
--- a/nixpkgs/pkgs/development/interpreters/python/wrapper.nix
+++ b/nixpkgs/pkgs/development/interpreters/python/wrapper.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildEnv, makeWrapper
+{ lib, stdenv, buildEnv, makeBinaryWrapper
 
 # manually pased
 , python
@@ -27,7 +27,7 @@ let
     inherit ignoreCollisions;
     extraOutputsToInstall = [ "out" ] ++ extraOutputsToInstall;
 
-    nativeBuildInputs = [ makeWrapper ];
+    nativeBuildInputs = [ makeBinaryWrapper ];
 
     postBuild = ''
       if [ -L "$out/bin" ]; then
diff --git a/nixpkgs/pkgs/development/interpreters/racket/default.nix b/nixpkgs/pkgs/development/interpreters/racket/default.nix
index bd96562d9e5d..67609132c80d 100644
--- a/nixpkgs/pkgs/development/interpreters/racket/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/racket/default.nix
@@ -49,7 +49,7 @@ in
 
 stdenv.mkDerivation rec {
   pname = "racket";
-  version = "8.4"; # always change at once with ./minimal.nix
+  version = "8.6"; # always change at once with ./minimal.nix
 
   src = (lib.makeOverridable ({ name, sha256 }:
     fetchurl {
@@ -58,14 +58,13 @@ stdenv.mkDerivation rec {
     }
   )) {
     name = "${pname}-${version}";
-    sha256 = "sha256-uJ+vL+FtBNILkFbwi7qZ6yBA1Rcr7o886zmZ/tFuatM=";
+    sha256 = "sha256-Lv8+l7x6EM+gMg2psH8NSIZTsLW4SQMiyC84SuD6Gig=";
   };
 
   FONTCONFIG_FILE = fontsConf;
   LD_LIBRARY_PATH = libPath;
   NIX_LDFLAGS = lib.concatStringsSep " " [
     (lib.optionalString (stdenv.cc.isGNU && ! stdenv.isDarwin) "-lgcc_s")
-    (lib.optionalString stdenv.isDarwin "-framework CoreFoundation")
   ];
 
   nativeBuildInputs = [ cacert wrapGAppsHook ];
@@ -89,7 +88,7 @@ stdenv.mkDerivation rec {
 
   preConfigure = ''
     unset AR
-    for f in src/lt/configure src/cs/c/configure src/bc/src/string.c src/ChezScheme/workarea; do
+    for f in src/lt/configure src/cs/c/configure src/bc/src/string.c; do
       substituteInPlace "$f" \
         --replace /usr/bin/uname ${coreutils}/bin/uname \
         --replace /bin/cp ${coreutils}/bin/cp \
@@ -137,6 +136,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = false;
 
   meta = with lib; {
+    broken = stdenv.isDarwin;
     description = "A programmable programming language";
     longDescription = ''
       Racket is a full-spectrum programming language. It goes beyond
@@ -149,7 +149,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://racket-lang.org/";
     license = with licenses; [ asl20 /* or */ mit ];
-    maintainers = with maintainers; [ kkallio henrytill vrthra ];
+    maintainers = with maintainers; [ henrytill vrthra ];
     platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" "aarch64-darwin" ];
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch b/nixpkgs/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch
index c34457ceb950..38cd7f52e237 100644
--- a/nixpkgs/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch
+++ b/nixpkgs/pkgs/development/interpreters/racket/force-remove-codesign-then-add.patch
@@ -1,11 +1,10 @@
---- 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)
+--- old/src/mac/codesign.rkt
++++ new/src/mac/codesign.rkt
+@@ -18,6 +18,6 @@
     file))
-
--(if remove?
--    (remove-signature file)
--    (add-ad-hoc-signature file))
-+(remove-signature file)
-+(add-ad-hoc-signature file)
+ 
+ (void
+- (if remove?
++ (if #t
+      (remove-signature file)
+      (add-ad-hoc-signature file)))
diff --git a/nixpkgs/pkgs/development/interpreters/racket/minimal.nix b/nixpkgs/pkgs/development/interpreters/racket/minimal.nix
index b73cdaff5d3e..4796a2591064 100644
--- a/nixpkgs/pkgs/development/interpreters/racket/minimal.nix
+++ b/nixpkgs/pkgs/development/interpreters/racket/minimal.nix
@@ -6,7 +6,7 @@ racket.overrideAttrs (oldAttrs: rec {
   version = oldAttrs.version;
   src = oldAttrs.src.override {
     name = "${pname}-${version}";
-    sha256 = "sha256-FZlUWvjtioe4S8gPetj7vdneVX6jEFguJo4j2wJsKAw=";
+    sha256 = "sha256-AdUJ1f/YKSD/S7Qd6EwH7MavkSKVNxatQ9hKp7OTn0g=";
   };
 
   meta = oldAttrs.meta // {
diff --git a/nixpkgs/pkgs/development/interpreters/racket/racket_7_9.nix b/nixpkgs/pkgs/development/interpreters/racket/racket_7_9.nix
index 8d33962f914c..07c0376b42aa 100644
--- a/nixpkgs/pkgs/development/interpreters/racket/racket_7_9.nix
+++ b/nixpkgs/pkgs/development/interpreters/racket/racket_7_9.nix
@@ -104,7 +104,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://racket-lang.org/";
     license = with licenses; [ asl20 /* or */ mit ];
-    maintainers = with maintainers; [ kkallio henrytill vrthra ];
+    maintainers = with maintainers; [ henrytill vrthra ];
     platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" ];
     broken = stdenv.isDarwin; # No support yet for setting FFI lookup path
   };
diff --git a/nixpkgs/pkgs/development/interpreters/rakudo/default.nix b/nixpkgs/pkgs/development/interpreters/rakudo/default.nix
index 9de6c1b12398..fd8fbd42caeb 100644
--- a/nixpkgs/pkgs/development/interpreters/rakudo/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/rakudo/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "rakudo";
-  version = "2022.02";
+  version = "2022.03";
 
   src = fetchurl {
     url = "https://rakudo.org/dl/rakudo/rakudo-${version}.tar.gz";
-    sha256 = "sha256-am6dvMbZoWEKNMbsZ+LT9pTXsz6eCg8iRUMIn6f3EzI=";
+    sha256 = "sha256-A+IVsAGoeXR2GNb8GOt/icC4EvXlQ6Q+1mwTQ56ooic=";
   };
 
   nativeBuildInputs = [ removeReferencesTo ];
diff --git a/nixpkgs/pkgs/development/interpreters/rakudo/moarvm.nix b/nixpkgs/pkgs/development/interpreters/rakudo/moarvm.nix
index 41462e67a4c9..da7e66efff1b 100644
--- a/nixpkgs/pkgs/development/interpreters/rakudo/moarvm.nix
+++ b/nixpkgs/pkgs/development/interpreters/rakudo/moarvm.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchurl
+, fetchpatch
 , perl
 , CoreServices
 , ApplicationServices
@@ -8,13 +9,23 @@
 
 stdenv.mkDerivation rec {
   pname = "moarvm";
-  version = "2022.02";
+  version = "2022.03";
 
   src = fetchurl {
     url = "https://moarvm.org/releases/MoarVM-${version}.tar.gz";
-    sha256 = "sha256-T5PNzmuKVloyKCuzjMlxzv63H10CLIUMM47oFFV07pY=";
+    sha256 = "sha256-+3HNE5EkZEgrmbM/DAbp/XxRoVHG5jKpIgz5PFhV/a8=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "mimalloc-older-macos-fixes.patch";
+      url = "https://github.com/microsoft/mimalloc/commit/40e0507a5959ee218f308d33aec212c3ebeef3bb.patch";
+      stripLen = 1;
+      extraPrefix = "3rdparty/mimalloc/";
+      sha256 = "1gcbn1850vy7xzalhn9ffnsg6x1ywi3fmnxvnal3m6lmb4kz5kb1";
+    })
+  ];
+
   postPatch = ''
     patchShebangs .
   '' + lib.optionalString stdenv.isDarwin ''
@@ -35,7 +46,8 @@ stdenv.mkDerivation rec {
     description = "VM with adaptive optimization and JIT compilation, built for Rakudo";
     homepage = "https://moarvm.org";
     license = licenses.artistic2;
-    platforms = platforms.unix;
     maintainers = with maintainers; [ thoughtpolice vrthra sgo ];
+    mainProgram = "moar";
+    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/rakudo/nqp.nix b/nixpkgs/pkgs/development/interpreters/rakudo/nqp.nix
index 57cdef94c02d..dbcb945f4c34 100644
--- a/nixpkgs/pkgs/development/interpreters/rakudo/nqp.nix
+++ b/nixpkgs/pkgs/development/interpreters/rakudo/nqp.nix
@@ -2,16 +2,26 @@
 
 stdenv.mkDerivation rec {
   pname = "nqp";
-  version = "2022.02";
+  version = "2022.03";
 
   src = fetchurl {
     url = "https://github.com/raku/nqp/releases/download/${version}/nqp-${version}.tar.gz";
-    sha256 = "sha256-JdPJl0XNhPQEmpvZzya7XcgXklq6r+ccm9tohBzbGLE=";
+    sha256 = "sha256-qV53iXDE0JwJHSqimcBQNiCM5LSw06evNzGYwSJYswY=";
   };
 
   buildInputs = [ perl ];
 
   configureScript = "${perl}/bin/perl ./Configure.pl";
+
+  # Fix for issue where nqp expects to find files from moarvm in the same output:
+  # https://github.com/Raku/nqp/commit/e6e069507de135cc71f77524455fc6b03b765b2f
+  #
+  preBuild = ''
+    share_dir="share/nqp/lib/MAST"
+    mkdir -p $out/$share_dir
+    ln -fs ${moarvm}/$share_dir/{Nodes,Ops}.nqp $out/$share_dir
+  '';
+
   configureFlags = [
     "--backends=moar"
     "--with-moar=${moarvm}/bin/moar"
diff --git a/nixpkgs/pkgs/development/interpreters/rascal/default.nix b/nixpkgs/pkgs/development/interpreters/rascal/default.nix
index 6ba92a041eb5..fa54a421ccc1 100644
--- a/nixpkgs/pkgs/development/interpreters/rascal/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/rascal/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://www.rascal-mpl.org/";
     description = "Command-line REPL for the Rascal metaprogramming language";
+    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
     license = lib.licenses.epl10;
     maintainers = [ lib.maintainers.eelco ];
     platforms = lib.platforms.unix;
diff --git a/nixpkgs/pkgs/development/interpreters/renpy/default.nix b/nixpkgs/pkgs/development/interpreters/renpy/default.nix
new file mode 100644
index 000000000000..73c95c740596
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/renpy/default.nix
@@ -0,0 +1,89 @@
+{ lib, stdenv, fetchFromGitHub, python3, pkg-config, SDL2
+, libpng, ffmpeg, freetype, glew, libGL, libGLU, fribidi, zlib
+, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "renpy";
+
+  # https://renpy.org/doc/html/changelog.html#versioning
+  # base_version is of the form major.minor.patch
+  # vc_version is of the form YYMMDDCC
+  # version corresponds to the tag on GitHub
+  base_version = "8.0.0";
+  vc_version = "22062402";
+  version = "${base_version}.${vc_version}";
+
+  src = fetchFromGitHub {
+    owner = "renpy";
+    repo = "renpy";
+    rev = version;
+    sha256 = "sha256-37Hbs0i5eXMjVaETX7ImJCak0y8XtEHUaRFceA9J39A=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    makeWrapper
+    python3.pkgs.cython
+  ];
+
+  buildInputs = [
+    SDL2 libpng ffmpeg freetype glew libGLU libGL fribidi zlib
+  ] ++ (with python3.pkgs; [
+    python pygame_sdl2 tkinter future six pefile requests
+  ]);
+
+  RENPY_DEPS_INSTALL = lib.concatStringsSep "::" (map (path: path) [
+    SDL2 SDL2.dev libpng ffmpeg.out freetype glew.dev libGLU libGL fribidi zlib
+  ]);
+
+  enableParallelBuilding = true;
+
+  patches = [
+    ./renpy-system-fribidi.diff
+  ];
+
+  postPatch = ''
+    substituteInPlace module/setup.py \
+      --replace "@fribidi@" "${fribidi}"
+
+    cp tutorial/game/tutorial_director.rpy{m,}
+
+    cat > renpy/vc_version.py << EOF
+    vc_version = ${vc_version}
+    official = False
+    nightly = False
+    EOF
+  '';
+
+  buildPhase = with python3.pkgs; ''
+    runHook preBuild
+    ${python.interpreter} module/setup.py build --parallel=$NIX_BUILD_CORES
+    runHook postBuild
+  '';
+
+  installPhase = with python3.pkgs; ''
+    runHook preInstall
+
+    ${python.interpreter} module/setup.py install --prefix=$out
+    mkdir -p $out/share/renpy
+    cp -vr sdk-fonts gui launcher renpy the_question tutorial renpy.py $out/share/renpy
+
+    makeWrapper ${python.interpreter} $out/bin/renpy \
+      --set PYTHONPATH "$PYTHONPATH:$out/${python.sitePackages}" \
+      --add-flags "-O $out/share/renpy/renpy.py"
+
+    runHook postInstall
+  '';
+
+  NIX_CFLAGS_COMPILE = with python3.pkgs; "-I${pygame_sdl2}/include/${python.libPrefix}";
+
+  meta = with lib; {
+    description = "Visual Novel Engine";
+    homepage = "https://renpy.org/";
+    changelog = "https://renpy.org/doc/html/changelog.html";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ shadowrz ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/renpy/renpy-system-fribidi.diff b/nixpkgs/pkgs/development/interpreters/renpy/renpy-system-fribidi.diff
new file mode 100644
index 000000000000..8c93b75a7b0f
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/renpy/renpy-system-fribidi.diff
@@ -0,0 +1,51 @@
+diff --git a/module/renpybidicore.c b/module/renpybidicore.c
+index 849430d..d883a52 100644
+--- a/module/renpybidicore.c
++++ b/module/renpybidicore.c
+@@ -1,10 +1,6 @@
+ #include <Python.h>
+ 
+-#ifdef RENPY_BUILD
+ #include <fribidi.h>
+-#else
+-#include <fribidi-src/lib/fribidi.h>
+-#endif
+ 
+ #include <stdlib.h>
+ 
+diff --git a/module/setup.py b/module/setup.py
+index bd16816..f6b8794 100755
+--- a/module/setup.py
++++ b/module/setup.py
+@@ -118,29 +118,17 @@ cython(
+     sdl + [ png, 'z', 'm' ])
+ 
+ FRIBIDI_SOURCES = """
+-fribidi-src/lib/fribidi.c
+-fribidi-src/lib/fribidi-arabic.c
+-fribidi-src/lib/fribidi-bidi.c
+-fribidi-src/lib/fribidi-bidi-types.c
+-fribidi-src/lib/fribidi-deprecated.c
+-fribidi-src/lib/fribidi-joining.c
+-fribidi-src/lib/fribidi-joining-types.c
+-fribidi-src/lib/fribidi-mem.c
+-fribidi-src/lib/fribidi-mirroring.c
+-fribidi-src/lib/fribidi-run.c
+-fribidi-src/lib/fribidi-shape.c
+ renpybidicore.c
+ """.split()
+ cython(
+     "_renpybidi",
+     FRIBIDI_SOURCES,
++    ["fribidi"],
+     includes=[
+-        BASE + "/fribidi-src/",
+-        BASE + "/fribidi-src/lib/",
++        "@fribidi@/include/fribidi/",
+         ],
+     define_macros=[
+         ("FRIBIDI_ENTRY", ""),
+-        ("HAVE_CONFIG_H", "1"),
+         ])
+ 
+ if not (android or ios or emscripten):
diff --git a/nixpkgs/pkgs/development/interpreters/ruby/default.nix b/nixpkgs/pkgs/development/interpreters/ruby/default.nix
index 4011ff61be70..a562411cbb39 100644
--- a/nixpkgs/pkgs/development/interpreters/ruby/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/ruby/default.nix
@@ -62,14 +62,9 @@ let
         pname = "ruby";
         inherit version;
 
-        src = if useRailsExpress then fetchFromGitHub {
-          owner  = "ruby";
-          repo   = "ruby";
-          rev    = tag;
-          sha256 = sha256.git;
-        } else fetchurl {
+        src = fetchurl {
           url = "https://cache.ruby-lang.org/pub/ruby/${ver.majMin}/ruby-${ver}.tar.gz";
-          sha256 = sha256.src;
+          inherit sha256;
         };
 
         # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
@@ -87,13 +82,13 @@ let
           ++ (op opensslSupport openssl)
           ++ (op gdbmSupport gdbm)
           ++ (op yamlSupport libyaml)
-          ++ (op jemallocSupport jemalloc)
           # Looks like ruby fails to build on darwin without readline even if curses
           # support is not enabled, so add readline to the build inputs if curses
           # support is disabled (if it's enabled, we already have it) and we're
           # running on darwin
           ++ op (!cursesSupport && stdenv.isDarwin) readline
           ++ ops stdenv.isDarwin [ libiconv libobjc libunwind Foundation ];
+        propagatedBuildInputs = op jemallocSupport jemalloc;
 
         enableParallelBuilding = true;
 
@@ -104,18 +99,23 @@ let
             inherit patchSet useRailsExpress ops fetchpatch;
             patchLevel = ver.patchLevel;
           }).${ver.majMinTiny}
-          ++ 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
-          # this error. We upgrade rubygems when rubygemsSupport is enabled, so
-          # we have to fix this bug to prevent the install step from failing.
-          # See https://github.com/ruby/ruby/pull/2930
-          ++ op (!atLeast30 && rubygemsSupport)
+          ++ op (atLeast27 && lib.versionOlder ver.majMin "3.1") ./do-not-regenerate-revision.h.patch
+          ++ op (atLeast30 && useBaseRuby) ./do-not-update-gems-baseruby.patch
+          ++ ops (!atLeast30 && rubygemsSupport) [
+            # We upgrade rubygems to a version that isn't compatible with the
+            # ruby 2.7 installer. Backport the upstream fix.
+            ./rbinstall-new-rubygems-compat.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
+            # this error. We upgrade rubygems when rubygemsSupport is enabled, so
+            # we have to fix this bug to prevent the install step from failing.
+            # See https://github.com/ruby/ruby/pull/2930
             (fetchpatch {
               url = "https://github.com/ruby/ruby/commit/261d8dd20afd26feb05f00a560abd99227269c1c.patch";
               sha256 = "0wrii25cxcz2v8bgkrf7ibcanjlxwclzhayin578bf0qydxdm9qy";
-            });
+            })
+          ];
 
         postUnpack = opString rubygemsSupport ''
           rm -rf $sourceRoot/{lib,test}/rubygems*
@@ -149,6 +149,10 @@ let
           (lib.enableFeature docSupport "install-doc")
           (lib.withFeature jemallocSupport "jemalloc")
           (lib.withFeatureAs docSupport "ridir" "${placeholder "devdoc"}/share/ri")
+          # ruby enables -O3 for gcc, however our compiler hardening wrapper
+          # overrides that by enabling `-O2` which is the minimum optimization
+          # needed for `_FORTIFY_SOURCE`.
+        ] ++ lib.optional stdenv.cc.isGNU "CFLAGS=-O3" ++ [
         ] ++ ops stdenv.isDarwin [
           # on darwin, we have /usr/include/tk.h -- so the configure script detects
           # that tk is installed
@@ -194,6 +198,11 @@ let
               sed -i '/CC_VERSION_MESSAGE/d' $rbConfig
             ''
           }
+          # Remove unnecessary external intermediate files created by gems
+          extMakefiles=$(find $out/lib/ruby/gems -name Makefile)
+          for makefile in $extMakefiles; do
+            make -C "$(dirname "$makefile")" distclean
+          done
           # Bundler tries to create this directory
           mkdir -p $out/nix-support
           cat > $out/nix-support/setup-hook <<EOF
@@ -263,91 +272,61 @@ let
     ) args; in self;
 
 in {
+  mkRubyVersion = rubyVersion;
+  mkRuby = generic;
+
   ruby_1_9 = generic {
     version = rubyVersion "1" "9" "3" "p551";
-    sha256 = {
-      src = "1s2ibg3s2iflzdv7rfxi1qqkvdbn2dq8gxdn0nxrb77ls5ffanxv";
-      git = "1r9xzzxmci2ajb34qb4y1w424mz878zdgzxkfp9w60agldxnb36s";
-    };
+    sha256 = "1s2ibg3s2iflzdv7rfxi1qqkvdbn2dq8gxdn0nxrb77ls5ffanxv";
   };
 
   ruby_2_0 = generic {
     version = rubyVersion "2" "0" "0" "p648";
-    sha256 = {
-      src = "1y3n4c6xw2wki7pyjpq5zpbgxnw5i3jc8mcpj6rk7hs995mvv446";
-      git = "0ncjfq4hfqj9kcr8pbll6kypwnmcgs8w7l4466qqfyv7jj3yjd76";
-    };
+    sha256 = "1y3n4c6xw2wki7pyjpq5zpbgxnw5i3jc8mcpj6rk7hs995mvv446";
   };
 
   ruby_2_1 = generic {
     version = rubyVersion "2" "1" "10" "";
-    sha256 = {
-      src = "086x66w51lg41abjn79xb7f6xsryymkcc3nvakmkjnjyg96labpv";
-      git = "133phd5r5y0np5lc9nqif93l7yb13yd52aspyl6c46z5jhvhyvfi";
-    };
+    sha256 = "086x66w51lg41abjn79xb7f6xsryymkcc3nvakmkjnjyg96labpv";
   };
 
   ruby_2_2 = generic {
     version = rubyVersion "2" "2" "9" "";
-    sha256 = {
-      src = "19m1ximl7vcrsvq595dgrjh4yb6kar944095wbywqh7waiqcfirg";
-      git = "03qrjh55098wcqh2khxryzkzfqkznjrcdgwf27r2bgcycbg5ca5q";
-    };
+    sha256 = "19m1ximl7vcrsvq595dgrjh4yb6kar944095wbywqh7waiqcfirg";
   };
 
   ruby_2_3 = generic {
     version = rubyVersion "2" "3" "8" "";
-    sha256 = {
-      src = "1gwsqmrhpx1wanrfvrsj3j76rv888zh7jag2si2r14qf8ihns0dm";
-      git = "0158fg1sx6l6applbq0831kl8kzx5jacfl9lfg0shfzicmjlys3f";
-    };
+    sha256 = "1gwsqmrhpx1wanrfvrsj3j76rv888zh7jag2si2r14qf8ihns0dm";
   };
 
   ruby_2_4 = generic {
     version = rubyVersion "2" "4" "9" "";
-    sha256 = {
-      src = "1bn6n5b920qy3lsx99jr8495jkc3sg89swgb96d5fgd579g6p6zr";
-      git = "066kb1iki7mx7qkm10xhj5b6v8s47wg68v43l3nc36y2hyim1w2c";
-    };
+    sha256 = "1bn6n5b920qy3lsx99jr8495jkc3sg89swgb96d5fgd579g6p6zr";
   };
 
   ruby_2_5 = generic {
     version = rubyVersion "2" "5" "8" "";
-    sha256 = {
-      src = "16md4jspjwixjlbhx3pnd5iwpca07p23ghkxkqd82sbchw3xy2vc";
-      git = "19gkk3q9l33cwkfsp5k8f8fipq7gkyqkqirm9farbvy425519rv2";
-    };
+    sha256 = "16md4jspjwixjlbhx3pnd5iwpca07p23ghkxkqd82sbchw3xy2vc";
   };
 
   ruby_2_6 = generic {
     version = rubyVersion "2" "6" "8" "";
-    sha256 = {
-      src = "0vfam28ifl6h2wxi6p70j0hm3f1pvsp432hf75m5j25wfy2vf1qq";
-      git = "0rc3n6sk8632r0libpv8jwslc7852hgk64rvbdrspc9razjwx21c";
-    };
+    sha256 = "0vfam28ifl6h2wxi6p70j0hm3f1pvsp432hf75m5j25wfy2vf1qq";
   };
 
   ruby_2_7 = generic {
-    version = rubyVersion "2" "7" "5" "";
-    sha256 = {
-      src = "1wc1hwmz4m6iqlmqag8liyld917p6a8dvnhnpd1v8d8jl80bjm97";
-      git = "16565fyl7141hr6q6d74myhsz46lvgam8ifnacshi68vzibwjbbh";
-    };
+    version = rubyVersion "2" "7" "6" "";
+    sha256 = "042xrdk7hsv4072bayz3f8ffqh61i8zlhvck10nfshllq063n877";
   };
 
   ruby_3_0 = generic {
-    version = rubyVersion "3" "0" "3" "";
-    sha256 = {
-      src = "1b4j39zyyvdkf1ax2c6qfa40b4mxfkr87zghhw19fmnzn8f8d1im";
-      git = "1q19w5i1jkfxn7qq6f9v9ngax9h52gxwijk7hp312dx6amwrkaim";
-    };
+    version = rubyVersion "3" "0" "4" "";
+    sha256 = "0avj4g3s2839b2y4m6pk8kid74r8nj7k0qm2rsdcwjzhg8h7rd3h";
   };
 
   ruby_3_1 = generic {
-    version = rubyVersion "3" "1" "1" "";
-    sha256 = {
-      src = "sha256-/m5Hgt6XRDl43bqLpL440iKqJNw+PwKmqOdwHA7rYZ0=";
-      git = "sha256-76t/tGyK5nz7nvcRdHJTjjckU+Kv+/kbTMiNWJ93jU8=";
-    };
+    version = rubyVersion "3" "1" "2" "";
+    sha256 = "0gm84ipk6mrfw94852w5h7xxk2lqrxjbnlwb88svf0lz70933131";
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix b/nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix
index 2114faf74257..79e3c1ad1479 100644
--- a/nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix
+++ b/nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix
@@ -76,15 +76,15 @@
     "${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.5" = ops useRailsExpress [
+  "2.7.6" = 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"
   ];
-  "3.0.3" = ops useRailsExpress [
+  "3.0.4" = ops useRailsExpress [
     "${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.1" = ops useRailsExpress [ # no patches yet (2021-12-25)
+  "3.1.2" = ops useRailsExpress [ # no patches yet (2021-12-25)
   ];
 }
diff --git a/nixpkgs/pkgs/development/interpreters/ruby/rbinstall-new-rubygems-compat.patch b/nixpkgs/pkgs/development/interpreters/ruby/rbinstall-new-rubygems-compat.patch
new file mode 100644
index 000000000000..54ce8a357a86
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/ruby/rbinstall-new-rubygems-compat.patch
@@ -0,0 +1,87 @@
+From 8e85d27f9ccfe152fc1b891c19f125915a907493 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Tue, 1 Oct 2019 12:03:33 +0200
+Subject: [PATCH] Use `Gem::Package` like object instead of monkey patching.
+
+1. This is similar to what RubyGems does and it is less magic [[1]].
+2. It avoids deprecated code paths in RubyGems [[2]].
+
+[1]: https://github.com/rubygems/rubygems/blob/92892bbc3adba86a90756c385433835f6761b8da/lib/rubygems/installer.rb#L151
+[2]: https://github.com/rubygems/rubygems/blob/92892bbc3adba86a90756c385433835f6761b8da/lib/rubygems/installer.rb#L187
+
+(cherry picked from commit e960ef6f18a25c637c54f00c75bb6c24f8ab55d0)
+---
+ tool/rbinstall.rb | 47 +++++++++++++++++++++++++++--------------------
+ 1 file changed, 27 insertions(+), 20 deletions(-)
+
+diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
+index 060390626f..28ae8c409a 100755
+--- a/tool/rbinstall.rb
++++ b/tool/rbinstall.rb
+@@ -710,28 +710,34 @@ def remove_prefix(prefix, string)
+     end
+   end
+ 
+-  class UnpackedInstaller < Gem::Installer
+-    module DirPackage
+-      def extract_files(destination_dir, pattern = "*")
+-        path = File.dirname(@gem.path)
+-        return if path == destination_dir
+-        File.chmod(0700, destination_dir)
+-        mode = pattern == "bin/*" ? $script_mode : $data_mode
+-        spec.files.each do |f|
+-          src = File.join(path, f)
+-          dest = File.join(without_destdir(destination_dir), f)
+-          makedirs(dest[/.*(?=\/)/m])
+-          install src, dest, :mode => mode
+-        end
+-        File.chmod($dir_mode, destination_dir)
++  class DirPackage
++    attr_reader :spec
++
++    attr_accessor :dir_mode
++    attr_accessor :prog_mode
++    attr_accessor :data_mode
++
++    def initialize(spec)
++      @spec = spec
++      @src_dir = File.dirname(@spec.loaded_from)
++    end
++
++    def extract_files(destination_dir, pattern = "*")
++      path = @src_dir
++      return if path == destination_dir
++      File.chmod(0700, destination_dir)
++      mode = pattern == "bin/*" ? $script_mode : $data_mode
++      spec.files.each do |f|
++        src = File.join(path, f)
++        dest = File.join(without_destdir(destination_dir), f)
++        makedirs(dest[/.*(?=\/)/m])
++        install src, dest, :mode => mode
+       end
++      File.chmod($dir_mode, destination_dir)
+     end
++  end
+ 
+-    def initialize(spec, *options)
+-      super(spec.loaded_from, *options)
+-      @package.extend(DirPackage).spec = spec
+-    end
+-
++  class UnpackedInstaller < Gem::Installer
+     def write_cache_file
+     end
+ 
+@@ -890,7 +896,8 @@ def install_default_gem(dir, srcdir)
+     if File.directory?(ext = "#{gem_ext_dir}/#{spec.full_name}")
+       spec.extensions[0] ||= "-"
+     end
+-    ins = RbInstall::UnpackedInstaller.new(spec, options)
++    package = RbInstall::DirPackage.new spec
++    ins = RbInstall::UnpackedInstaller.new(package, options)
+     puts "#{INDENT}#{spec.name} #{spec.version}"
+     ins.install
+     File.chmod($data_mode, File.join(install_dir, "specifications", "#{spec.full_name}.gemspec"))
+-- 
+2.35.1
+
diff --git a/nixpkgs/pkgs/development/interpreters/ruby/rubygems/default.nix b/nixpkgs/pkgs/development/interpreters/ruby/rubygems/default.nix
index 4150f7683d5d..6a8e171ee6e1 100644
--- a/nixpkgs/pkgs/development/interpreters/ruby/rubygems/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/ruby/rubygems/default.nix
@@ -1,7 +1,7 @@
 { stdenv, lib, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "rubygems";
+  pname = "rubygems";
   version = "3.2.26";
 
   src = fetchurl {
diff --git a/nixpkgs/pkgs/development/interpreters/scsh/default.nix b/nixpkgs/pkgs/development/interpreters/scsh/default.nix
index b57cc64fb8d7..45b59124b782 100644
--- a/nixpkgs/pkgs/development/interpreters/scsh/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/scsh/default.nix
@@ -7,8 +7,8 @@ stdenv.mkDerivation {
   src = fetchFromGitHub {
     owner = "scheme";
     repo = "scsh";
-    rev = "f99b8c5293628cfeaeb792019072e3a96841104f";
-    sha256 = "sha256-vcVtqoUhozdJq1beUN8/rcI2qOJYUN+0CPSiDWGCIjI=";
+    rev = "4acf6e4ed7b65b46186ef0c9c2a1e10bef8dc052";
+    sha256 = "sha256-92NtMK5nVd6+WtHj/Rk6iQEkGsNEZySTVZkkbqKrLYY=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/development/interpreters/sollya/default.nix b/nixpkgs/pkgs/development/interpreters/sollya/default.nix
index eb20f61a9906..78b45daf178d 100644
--- a/nixpkgs/pkgs/development/interpreters/sollya/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/sollya/default.nix
@@ -10,20 +10,22 @@
 
 stdenv.mkDerivation rec {
   pname = "sollya";
-  version = "7.0";
+  version = "8.0";
 
   src = fetchurl {
     url = "https://www.sollya.org/releases/sollya-${version}/sollya-${version}.tar.gz";
-    sha256 = "0amrxg7567yy5xqpgchxggjpfr11xyl27vy29c7vlh7v8a17nj1h";
+    sha256 = "sha256-WNc0+aL8jmczwR+W0t+aslvvJNccQBIw4p8KEzmoEZI=";
   };
 
   buildInputs = [ gmp mpfr mpfi libxml2 fplll ];
 
+  doCheck = true;
+
   meta = with lib; {
     description = "A tool environment for safe floating-point code development";
     homepage = "https://www.sollya.org/";
     license = licenses.cecill-c;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ wegank ];
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/102.nix b/nixpkgs/pkgs/development/interpreters/spidermonkey/102.nix
new file mode 100644
index 000000000000..ef89d1ca0a27
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/102.nix
@@ -0,0 +1,4 @@
+import ./common.nix {
+  version = "102.1.0";
+  hash = "sha512-JQW4fOQRVEVWjra32K9BZ4vXh/0H8/eenwoi2QzfdSrl1DcYVs+cVuLZ2n1bfDk53CqrV1P8wBc5jn1lJg9vAw==";
+}
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/78.nix b/nixpkgs/pkgs/development/interpreters/spidermonkey/78.nix
index f2a68158266b..05124a417fef 100644
--- a/nixpkgs/pkgs/development/interpreters/spidermonkey/78.nix
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/78.nix
@@ -1,139 +1,4 @@
-{ lib, stdenv
-, fetchurl
-, fetchpatch
-, autoconf213
-, pkg-config
-, perl
-, python3
-, zip
-, buildPackages
-, which
-, readline
-, zlib
-, icu67
-, cargo
-, rustc
-, rust-cbindgen
-, yasm
-, nspr
-}:
-
-stdenv.mkDerivation rec {
-  pname = "spidermonkey";
+import ./common.nix {
   version = "78.15.0";
-
-  src = fetchurl {
-    url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
-    sha256 = "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4";
-  };
-
-  patches = [
-    # Fix build failure on armv7l using Debian patch
-    # Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1526653
-    (fetchpatch {
-      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" ];
-  setOutputFlags = false; # Configure script only understands --includedir
-
-  nativeBuildInputs = [
-    autoconf213
-    cargo
-    rustc.llvmPackages.llvm # for llvm-objdump
-    perl
-    pkg-config
-    python3
-    rust-cbindgen
-    rustc
-    which
-    yasm # to buid icu? seems weird
-    zip
-  ];
-
-  buildInputs = [
-    icu67
-    nspr
-    readline
-    zlib
-  ];
-
-  preConfigure = ''
-    export CXXFLAGS="-fpermissive"
-    export LIBXUL_DIST=$out
-    export PYTHON="${buildPackages.python3.interpreter}"
-
-    # We can't build in js/src/, so create a build dir
-    mkdir obj
-    cd obj/
-    configureScript=../js/src/configure
-  '';
-
-  configureFlags = [
-    "--with-system-zlib"
-    "--with-system-nspr"
-    "--with-system-icu"
-    "--with-intl-api"
-    "--enable-readline"
-    "--enable-shared-js"
-    "--disable-jemalloc"
-    # 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"
-  ] ++ lib.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}"
-  ];
-
-  # 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"
-    rm $out/lib/libjs_static.ajs
-    ln -s $out/bin/js78 $out/bin/js
-  '';
-
-  enableParallelBuilding = true;
-
-  postPatch = ''
-    # This patch is a manually applied fix of
-    #   https://bugzilla.mozilla.org/show_bug.cgi?id=1644600
-    # Once that bug is fixed, this can be removed.
-    # This is needed in, for example, `zeroad`.
-    substituteInPlace js/public/StructuredClone.h \
-         --replace "class SharedArrayRawBufferRefs {" \
-                   "class JS_PUBLIC_API SharedArrayRawBufferRefs {"
-  '';
-
-  meta = with lib; {
-    description = "Mozilla's JavaScript engine written in C/C++";
-    homepage = "https://spidermonkey.dev/";
-    license = licenses.gpl2; # TODO: MPL/GPL/LGPL tri-license.
-    maintainers = with maintainers; [ abbradar lostnet ];
-    platforms = platforms.linux;
-  };
+  hash = "sha512-rD3nNbJGzk8OFhnNJmQyH/o3QkDOaEPnhdeaNQ3DDJZ5lrvMXjswHLPYIsqYHL6hFnWPxBIvFzjXXd/RFltjeA===";
 }
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/91.nix b/nixpkgs/pkgs/development/interpreters/spidermonkey/91.nix
index fede01c0ada7..ca771fa75fd6 100644
--- a/nixpkgs/pkgs/development/interpreters/spidermonkey/91.nix
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/91.nix
@@ -1,122 +1,4 @@
-{ lib, stdenv
-, fetchurl
-, pkg-config
-, perl
-, python3
-, zip
-, buildPackages
-, which
-, readline
-, zlib
-, icu69
-, cargo
-, rustc
-, rust-cbindgen
-, yasm
-, nspr
-, m4
-}:
-
-stdenv.mkDerivation rec {
-  pname = "spidermonkey";
-  version = "91.7.0";
-
-  src = fetchurl {
-    url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
-    sha512 = "925811989d8a91d826ba356bd46ac54be8153288ec0319c28d2bfbe89191e62e107691159dd7ca247253e2a4952eb59a5b9613e3feea3f5351238d4822e26301";
-  };
-
-  outputs = [ "out" "dev" ];
-  setOutputFlags = false; # Configure script only understands --includedir
-
-  nativeBuildInputs = [
-    cargo
-    rustc.llvmPackages.llvm # for llvm-objdump
-    perl
-    pkg-config
-    python3
-    rust-cbindgen
-    rustc
-    which
-    yasm # to buid icu? seems weird
-    zip
-    m4
-  ];
-
-  buildInputs = [
-    icu69
-    nspr
-    readline
-    zlib
-  ];
-
-  preConfigure = ''
-    export LIBXUL_DIST=$out
-    export PYTHON="${buildPackages.python3.interpreter}"
-    export M4=m4
-    export AWK=awk
-    export AC_MACRODIR=$PWD/build/autoconf/
-
-    pushd js/src
-    sh ../../build/autoconf/autoconf.sh --localdir=$PWD configure.in > configure
-    chmod +x configure
-    popd
-    # We can't build in js/src/, so create a build dir
-    mkdir obj
-    cd obj/
-    configureScript=../js/src/configure
-  '';
-
-  configureFlags = [
-    "--with-intl-api"
-    "--with-system-icu"
-    "--with-system-nspr"
-    "--with-system-zlib"
-    "--enable-optimize"
-    "--enable-readline"
-    "--enable-release"
-    "--enable-shared-js"
-    "--disable-debug"
-    "--disable-jemalloc"
-    "--disable-strip"
-    "--disable-tests"
-  ] ++ lib.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}"
-  ];
-
-  # 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
-  preFixup = ''
-    moveToOutput bin/js91-config "$dev"
-    rm $out/lib/libjs_static.ajs
-    ln -s $out/bin/js91 $out/bin/js
-  '';
-
-  enableParallelBuilding = true;
-
-  postPatch = ''
-    # This patch is a manually applied fix of
-    #   https://bugzilla.mozilla.org/show_bug.cgi?id=1644600
-    # Once that bug is fixed, this can be removed.
-    # This is needed in, for example, `zeroad`.
-    substituteInPlace js/public/StructuredClone.h \
-         --replace "class SharedArrayRawBufferRefs {" \
-                   "class JS_PUBLIC_API SharedArrayRawBufferRefs {"
-  '';
-
-  meta = with lib; {
-    description = "Mozilla's JavaScript engine written in C/C++";
-    homepage = "https://spidermonkey.dev/";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ lostnet ];
-    platforms = platforms.linux;
-  };
+import ./common.nix {
+  version = "91.12.0";
+  hash = "sha512-Mj+3UkiLRYcrQPCw7h2MHf+haHTb/yr94ZpUKGyCTvSBdyM+Ap+ur6WUYYTnHDHGvFun7BelceIa9k/F9zNAQg==";
 }
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/allow-system-s-nspr-and-icu-on-bootstrapped-sysroot.patch b/nixpkgs/pkgs/development/interpreters/spidermonkey/allow-system-s-nspr-and-icu-on-bootstrapped-sysroot.patch
new file mode 100644
index 000000000000..29966d90864d
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/allow-system-s-nspr-and-icu-on-bootstrapped-sysroot.patch
@@ -0,0 +1,40 @@
+From a26bb162d9403138d64b84e8fa4f0471084c45b2 Mon Sep 17 00:00:00 2001
+From: "Kirill A. Korinsky" <kirill@korins.ky>
+Date: Fri, 8 Jul 2022 21:21:25 +0200
+Subject: [PATCH] Allow system's nspr and icu on bootstrapped sysroot
+
+This patch partially reverts https://github.com/mozilla/gecko-dev/commit/9aa3587bbf0416dd2eb5b614f7b301c71c64286b
+---
+ build/moz.configure/nspr.configure | 2 +-
+ js/moz.configure                   | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/build/moz.configure/nspr.configure b/build/moz.configure/nspr.configure
+index 06f03d9bc72d..9687c84a7290 100644
+--- a/build/moz.configure/nspr.configure
++++ b/build/moz.configure/nspr.configure
+@@ -19,7 +19,7 @@ def enable_nspr_build(enable):
+         return enable
+ 
+ 
+-system_lib_option("--with-system-nspr", help="Use system NSPR")
++option("--with-system-nspr", help="Use system NSPR")
+ 
+ 
+ @depends(enable_nspr_build, "--with-system-nspr", js_standalone)
+diff --git a/js/moz.configure b/js/moz.configure
+index b7ba9790425d..5ff5cb2da266 100644
+--- a/js/moz.configure
++++ b/js/moz.configure
+@@ -1129,7 +1129,7 @@ set_define(
+ 
+ # ECMAScript Internationalization API Support (uses ICU)
+ # ======================================================
+-system_lib_option("--with-system-icu", help="Use system ICU")
++option("--with-system-icu", help="Use system ICU")
+ 
+ system_icu = pkg_check_modules("MOZ_ICU", "icu-i18n >= 71.1", when="--with-system-icu")
+ 
+-- 
+2.37.0
+
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/always-check-for-pkg-config.patch b/nixpkgs/pkgs/development/interpreters/spidermonkey/always-check-for-pkg-config.patch
new file mode 100644
index 000000000000..c6e43b60aa59
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/always-check-for-pkg-config.patch
@@ -0,0 +1,23 @@
+From 9d3f6e9ff5e66af90a5d187d902f7893fb91c24b Mon Sep 17 00:00:00 2001
+From: "Kirill A. Korinsky" <kirill@korins.ky>
+Date: Fri, 1 Jul 2022 12:23:37 +0200
+Subject: [PATCH] Always check for pkg-config
+
+---
+ build/moz.configure/pkg.configure | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/build/moz.configure/pkg.configure b/build/moz.configure/pkg.configure
+index 6b460ae174eed..0056ecd7ae2d8 100644
+--- a/build/moz.configure/pkg.configure
++++ b/build/moz.configure/pkg.configure
+@@ -15,8 +15,7 @@ pkg_config = check_prog(
+     pkg_config,
+     bootstrap=depends(when=target_sysroot.bootstrapped)(lambda: "pkgconf"),
+     allow_missing=True,
+-    when=compile_environment
+-    & depends(target.os)(lambda os: os not in ("WINNT", "OSX", "Android")),
++    when=compile_environment,
+ )
+ 
+ 
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/common.nix b/nixpkgs/pkgs/development/interpreters/spidermonkey/common.nix
new file mode 100644
index 000000000000..8e2b1234fdbc
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/common.nix
@@ -0,0 +1,199 @@
+{ version, hash }:
+
+{ callPackage
+, lib
+, stdenv
+, fetchurl
+, fetchpatch
+
+# build time
+, buildPackages
+, cargo
+, m4
+, perl
+, pkg-config
+, python3
+, python39
+, rustc
+, which
+, zip
+, autoconf213
+, yasm
+, xcbuild
+
+# runtime
+, icu
+, icu67
+, nspr
+, readline
+, zlib
+, libobjc
+, libiconv
+}:
+
+stdenv.mkDerivation (finalAttrs: rec {
+  pname = "spidermonkey";
+  inherit version;
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
+    inherit hash;
+  };
+
+  patches = lib.optional (lib.versionOlder version "91") [
+    # Fix build failure on armv7l using Debian patch
+    # Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1526653
+    (fetchpatch {
+      url = "https://salsa.debian.org/mozilla-team/firefox/commit/fd6847c9416f9eebde636e21d794d25d1be8791d.patch";
+      hash = "sha512-K8U3Qyo7g4si2r/8kJdXyRoTrDHAY48x/YJ7YL+YBwlpfNQcHxX+EZvhRzW8FHYW+f7kOnJu9QykhE8PhSQ9zQ==";
+    })
+
+    # 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
+  ] ++ lib.optionals (lib.versionAtLeast version "102") [
+    # use pkg-config at all systems
+    ./always-check-for-pkg-config.patch
+    ./allow-system-s-nspr-and-icu-on-bootstrapped-sysroot.patch
+
+    # Patches required by GJS
+    # https://discourse.gnome.org/t/gnome-43-to-depend-on-spidermonkey-102/10658
+    # Install ProfilingCategoryList.h
+    (fetchpatch {
+      url = "https://hg.mozilla.org/releases/mozilla-esr102/raw-rev/33147b91e42b79f4c6dd3ec11cce96746018407a";
+      sha256 = "sha256-xJFJZMYJ6P11HQDZbr48GFgybpAeVcu3oLIFEyyMjBI=";
+    })
+    # Fix embeder build
+    (fetchpatch {
+      url = "https://hg.mozilla.org/releases/mozilla-esr102/raw-rev/1fa20fb474f5d149cc32d98df169dee5e6e6861b";
+      sha256 = "sha256-eCisKjNxy9SLr9KoEE2UB26BflUknnR7PIvnpezsZeA=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cargo
+    m4
+    perl
+    pkg-config
+    # 78 requires python up to 3.9
+    (if lib.versionOlder version "91" then python39 else python3)
+    rustc
+    rustc.llvmPackages.llvm # for llvm-objdump
+    which
+    zip
+  ] ++ lib.optionals (lib.versionOlder version "91") [
+    autoconf213
+    yasm # to buid icu? seems weird
+  ] ++ lib.optionals stdenv.isDarwin [
+    xcbuild
+  ];
+
+  buildInputs = [
+    (if lib.versionOlder version "91" then icu67 else icu)
+    nspr
+    readline
+    zlib
+  ] ++ lib.optionals stdenv.isDarwin [
+    libobjc
+    libiconv
+  ];
+
+  depsBuildBuild = [
+    buildPackages.stdenv.cc
+  ];
+
+  setOutputFlags = false; # Configure script only understands --includedir
+
+  configureFlags = [
+    "--with-intl-api"
+    "--with-system-icu"
+    "--with-system-nspr"
+    "--with-system-zlib"
+    # 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-readline"
+    "--enable-release"
+    "--enable-shared-js"
+  ] ++ lib.optionals (lib.versionAtLeast version "91") [
+    "--disable-debug"
+  ] ++ [
+    "--disable-jemalloc"
+    "--disable-strip"
+    "--disable-tests"
+  ] ++ lib.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}"
+  ];
+
+  # 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 = [ ];
+
+  enableParallelBuilding = true;
+
+  # 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 && lib.versionOlder version "91") "-mabi=lp64d";
+
+  postPatch = lib.optionalString (lib.versionOlder version "102") ''
+    # This patch is a manually applied fix of
+    #   https://bugzilla.mozilla.org/show_bug.cgi?id=1644600
+    # Once that bug is fixed, this can be removed.
+    # This is needed in, for example, `zeroad`.
+    substituteInPlace js/public/StructuredClone.h \
+         --replace "class SharedArrayRawBufferRefs {" \
+                   "class JS_PUBLIC_API SharedArrayRawBufferRefs {"
+  '';
+
+  preConfigure = lib.optionalString (lib.versionOlder version "91") ''
+    export CXXFLAGS="-fpermissive"
+  '' + ''
+    export LIBXUL_DIST=$out
+    export PYTHON="${buildPackages.python3.interpreter}"
+  '' + lib.optionalString (lib.versionAtLeast version "91") ''
+    export M4=m4
+    export AWK=awk
+    export AS=$CC
+    export AC_MACRODIR=$PWD/build/autoconf/
+
+    pushd js/src
+    sh ../../build/autoconf/autoconf.sh --localdir=$PWD configure.in > configure
+    chmod +x configure
+    popd
+  '' + ''
+    # We can't build in js/src/, so create a build dir
+    mkdir obj
+    cd obj/
+    configureScript=../js/src/configure
+  '';
+
+  # Remove unnecessary static lib
+  preFixup = ''
+    moveToOutput bin/js${lib.versions.major version}-config "$dev"
+    rm $out/lib/libjs_static.ajs
+    ln -s $out/bin/js${lib.versions.major version} $out/bin/js
+  '';
+
+  passthru.tests.run = callPackage ./test.nix {
+    spidermonkey = finalAttrs.finalPackage;
+  };
+
+  meta = with lib; {
+    description = "Mozilla's JavaScript engine written in C/C++";
+    homepage = "https://spidermonkey.dev/";
+    license = licenses.mpl20; # TODO: MPL/GPL/LGPL tri-license for 78.
+    maintainers = with maintainers; [ abbradar lostnet catap ];
+    platforms = platforms.unix;
+  };
+})
diff --git a/nixpkgs/pkgs/development/interpreters/spidermonkey/test.nix b/nixpkgs/pkgs/development/interpreters/spidermonkey/test.nix
new file mode 100644
index 000000000000..c3ef92bebfa8
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/spidermonkey/test.nix
@@ -0,0 +1,10 @@
+{ runCommand, spidermonkey }:
+
+runCommand "spidermonkey-test-run" {
+  nativeBuildInputs = [
+    spidermonkey
+  ];
+} ''
+  diff -U3 --color=auto <(js <(echo "console.log('Hello, world\!')")) <(echo 'Hello, world!')
+  touch $out
+''
diff --git a/nixpkgs/pkgs/development/interpreters/starlark/default.nix b/nixpkgs/pkgs/development/interpreters/starlark/default.nix
new file mode 100644
index 000000000000..c61e511102d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/starlark/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, lib, fetchFromGitHub, buildGoModule, fetchpatch }:
+buildGoModule rec {
+  pname = "starlark";
+  version = "unstable-2022-03-02";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "starlark-go";
+    rev = "5411bad688d12781515a91cc032645331b4fc302";
+    sha256 = "sha256-JNsGyGlIVMS5w0W4jHVsrPqqNms3Xfpa4n/XcEWqt6I=";
+  };
+
+  vendorSha256 = "sha256-lgL5o3MQfZekZ++BNESwV0LeoTxwEZfziQAe99zm4RY=";
+
+  patches = [
+    # Fix floating point imprecision issue in the test suite.
+    # https://github.com/google/starlark-go/pull/409
+    (fetchpatch {
+      url = "https://github.com/google/starlark-go/commit/be6ed3bfcc376e5bf6fe2257ae89ddfb00d14e2c.patch";
+      sha256 = "sha256-A0tHPso6SfFn73kICcA9/5n3JHd7hMdQMGty+4L6T4k=";
+    })
+  ];
+
+  ldflags = [ "-s" "-w" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/google/starlark-go";
+    description = "An interpreter for Starlark, implemented in Go";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ aaronjheng ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/supercollider/default.nix b/nixpkgs/pkgs/development/interpreters/supercollider/default.nix
index 2a0ef3b0957c..ecb3d5787eb3 100644
--- a/nixpkgs/pkgs/development/interpreters/supercollider/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/supercollider/default.nix
@@ -1,12 +1,11 @@
-{ lib, stdenv, mkDerivation, fetchurl, cmake, pkg-config, alsa-lib
-, libjack2, libsndfile, fftw, curl, gcc
-, libXt, qtbase, qttools, qtwebengine
+{ lib, stdenv, mkDerivation, fetchurl, fetchpatch, cmake
+, pkg-config, alsa-lib, libjack2, libsndfile, fftw
+, curl, gcc, libXt, qtbase, qttools, qtwebengine
 , readline, qtwebsockets, useSCEL ? false, emacs
+, supercollider-with-plugins, supercolliderPlugins
+, writeText, runCommand
 }:
 
-let
-  inherit (lib) optional;
-in
 mkDerivation rec {
   pname = "supercollider";
   version = "3.12.2";
@@ -16,6 +15,23 @@ mkDerivation rec {
     sha256 = "sha256-1QYorCgSwBK+SVAm4k7HZirr1j+znPmVicFmJdvO3g4=";
   };
 
+  patches = [
+    # add support for SC_DATA_DIR and SC_PLUGIN_DIR env vars to override compile-time values
+    ./supercollider-3.12.0-env-dirs.patch
+
+    # fix issue with libsndfile >=1.1.0
+    (fetchpatch {
+      url = "https://github.com/supercollider/supercollider/commit/b9dd70c4c8d61c93d7a70645e0bd18fa76e6834e.patch";
+      hash = "sha256-6FhEHyY0rnE6d7wC+v0U9K+L0aun5LkTqaEFhr3eQNw=";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake pkg-config qttools ];
+
+  buildInputs = [ gcc libjack2 libsndfile fftw curl libXt qtbase qtwebengine qtwebsockets readline ]
+    ++ lib.optional (!stdenv.isDarwin) alsa-lib
+    ++ lib.optional useSCEL emacs;
+
   hardeningDisable = [ "stackprotector" ];
 
   cmakeFlags = [
@@ -23,17 +39,30 @@ mkDerivation rec {
     "-DSC_EL=${if useSCEL then "ON" else "OFF"}"
   ];
 
-  nativeBuildInputs = [ cmake pkg-config qttools ];
-
-  buildInputs = [
-    gcc libjack2 libsndfile fftw curl libXt qtbase qtwebengine qtwebsockets readline ]
-      ++ optional (!stdenv.isDarwin) alsa-lib
-      ++ optional useSCEL emacs;
+  passthru.tests = {
+    # test to make sure sclang runs and included plugins are successfully found
+    sclang-sc3-plugins = let
+      supercollider-with-test-plugins = supercollider-with-plugins.override {
+        plugins = with supercolliderPlugins; [ sc3-plugins ];
+      };
+      testsc = writeText "test.sc" ''
+        var err = 0;
+        try {
+        MdaPiano.name.postln;
+        } {
+        err = 1;
+        };
+        err.exit;
+      '';
+    in runCommand "sclang-sc3-plugins-test" {} ''
+      timeout 60s env XDG_CONFIG_HOME="$(mktemp -d)" QT_QPA_PLATFORM=minimal ${supercollider-with-test-plugins}/bin/sclang ${testsc} >$out
+    '';
+  };
 
   meta = with lib; {
     description = "Programming language for real time audio synthesis";
     homepage = "https://supercollider.github.io";
-    maintainers = with maintainers; [ mrmebelman ];
+    maintainers = with maintainers; [ lilyinstarlight ];
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix b/nixpkgs/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix
new file mode 100644
index 000000000000..a596d6d770ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, fetchurl, cmake, supercollider, fftw }:
+
+stdenv.mkDerivation rec {
+  pname = "sc3-plugins";
+  version = "3.11.1";
+
+  src = fetchurl {
+    url = "https://github.com/supercollider/sc3-plugins/releases/download/Version-${version}/sc3-plugins-${version}-Source.tar.bz2";
+    sha256 = "sha256-JjUmu7PJ+x3yRibr+Av2gTREng51fPo7Rk+B4y2JvkQ=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    supercollider
+    fftw
+  ];
+
+  cmakeFlags = [
+    "-DSC_PATH=${supercollider}/include/SuperCollider"
+    "-DSUPERNOVA=ON"
+  ];
+
+  stripDebugList = [ "lib" "share" ];
+
+  meta = with lib; {
+    description = "Community plugins for SuperCollider";
+    homepage = "https://supercollider.github.io/sc3-plugins/";
+    maintainers = with maintainers; [ lilyinstarlight ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch b/nixpkgs/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch
new file mode 100644
index 000000000000..dd92028b5225
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch
@@ -0,0 +1,65 @@
+diff --git a/common/SC_Filesystem_unix.cpp b/common/SC_Filesystem_unix.cpp
+index 52dc1fd2d..aae09ed9c 100644
+--- a/common/SC_Filesystem_unix.cpp
++++ b/common/SC_Filesystem_unix.cpp
+@@ -94,6 +94,10 @@ bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) {
+ }
+ 
+ Path SC_Filesystem::defaultSystemAppSupportDirectory() {
++    const char* sc_data_dir = getenv("SC_DATA_DIR");
++    if (sc_data_dir)
++        return Path(sc_data_dir);
++
+ #    ifdef SC_DATA_DIR
+     return Path(SC_DATA_DIR);
+ #    else
+@@ -125,6 +129,10 @@ Path SC_Filesystem::defaultUserConfigDirectory() {
+ }
+ 
+ Path SC_Filesystem::defaultResourceDirectory() {
++    const char* sc_data_dir = getenv("SC_DATA_DIR");
++    if (sc_data_dir)
++        return Path(sc_data_dir);
++
+ #    ifdef SC_DATA_DIR
+     return Path(SC_DATA_DIR);
+ #    else
+diff --git a/server/scsynth/SC_Lib_Cintf.cpp b/server/scsynth/SC_Lib_Cintf.cpp
+index f6219307e..28e13eb98 100644
+--- a/server/scsynth/SC_Lib_Cintf.cpp
++++ b/server/scsynth/SC_Lib_Cintf.cpp
+@@ -178,9 +178,13 @@ void initialize_library(const char* uGensPluginPath) {
+     using DirName = SC_Filesystem::DirName;
+ 
+     if (loadUGensExtDirs) {
++        const char* sc_plugin_dir = getenv("SC_PLUGIN_DIR");
++        if (sc_plugin_dir) {
++            PlugIn_LoadDir(sc_plugin_dir, true);
++        }
+ #ifdef SC_PLUGIN_DIR
+         // load globally installed plugins
+-        if (bfs::is_directory(SC_PLUGIN_DIR)) {
++        else if (bfs::is_directory(SC_PLUGIN_DIR)) {
+             PlugIn_LoadDir(SC_PLUGIN_DIR, true);
+         }
+ #endif // SC_PLUGIN_DIR
+diff --git a/server/supernova/server/main.cpp b/server/supernova/server/main.cpp
+index b2b5adf4e..6cb8c411c 100644
+--- a/server/supernova/server/main.cpp
++++ b/server/supernova/server/main.cpp
+@@ -224,8 +224,14 @@ void set_plugin_paths(server_arguments const& args, nova::sc_ugen_factory* facto
+             }
+         }
+     } else {
++        const char* sc_plugin_dir = getenv("SC_PLUGIN_DIR");
++        if (sc_plugin_dir) {
++            factory->load_plugin_folder(sc_plugin_dir);
++        }
+ #ifdef SC_PLUGIN_DIR
+-        factory->load_plugin_folder(SC_PLUGIN_DIR);
++        else {
++            factory->load_plugin_folder(SC_PLUGIN_DIR);
++        }
+ #endif
+         factory->load_plugin_folder(SC_Filesystem::instance().getDirectory(DirName::Resource) / SC_PLUGIN_DIR_NAME);
+         factory->load_plugin_folder(SC_Filesystem::instance().getDirectory(DirName::SystemExtension));
diff --git a/nixpkgs/pkgs/development/interpreters/supercollider/wrapper.nix b/nixpkgs/pkgs/development/interpreters/supercollider/wrapper.nix
new file mode 100644
index 000000000000..e9e97f2b98de
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/supercollider/wrapper.nix
@@ -0,0 +1,18 @@
+{ symlinkJoin, makeWrapper, supercollider, plugins }:
+
+symlinkJoin {
+  name = "supercollider-with-plugins-${supercollider.version}";
+  paths = [ supercollider ] ++ plugins;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    for exe in $out/bin/*; do
+      wrapProgram $exe \
+        --set SC_PLUGIN_DIR "$out/lib/SuperCollider/plugins" \
+        --set SC_DATA_DIR   "$out/share/SuperCollider"
+    done
+  '';
+
+  inherit (supercollider) pname version meta;
+}
diff --git a/nixpkgs/pkgs/development/interpreters/tinyscheme/default.nix b/nixpkgs/pkgs/development/interpreters/tinyscheme/default.nix
index 0590062b3a4b..5c7ed9d27ead 100644
--- a/nixpkgs/pkgs/development/interpreters/tinyscheme/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/tinyscheme/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
+    broken = stdenv.isDarwin;
     description = "Lightweight Scheme implementation";
     longDescription = ''
       TinyScheme is a lightweight Scheme interpreter that implements as large a
diff --git a/nixpkgs/pkgs/development/interpreters/trealla/default.nix b/nixpkgs/pkgs/development/interpreters/trealla/default.nix
index d6dc01348a1d..45e63d98bdae 100644
--- a/nixpkgs/pkgs/development/interpreters/trealla/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/trealla/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/infradig/trealla";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
+    mainProgram = "tpl";
     platforms = platforms.all;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/unicon-lang/default.nix b/nixpkgs/pkgs/development/interpreters/unicon-lang/default.nix
index c399ef223de3..848c9541114e 100644
--- a/nixpkgs/pkgs/development/interpreters/unicon-lang/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/unicon-lang/default.nix
@@ -14,6 +14,13 @@ stdenv.mkDerivation {
 
   sourceRoot = ".";
 
+  # Workaround build failure on -fno-common toolchains like upstream
+  # gcc-10. Otherwise build fails as:
+  #   ld: ../common/ipp.o:(.bss+0x0): multiple definition of `lpath'; tglobals.o:(.bss+0x30): first defined here
+  # TODO: remove the workaround once upstream releases version past:
+  #   https://sourceforge.net/p/unicon/unicon/ci/b1a65230233f3825d055aee913b4fdcf178a0eaf/
+  NIX_CFLAGS_COMPILE = "-fcommon";
+
   configurePhase = ''
     case "$(uname -a | sed 's/ /_/g')" in
     Darwin*Version_9*i386) sys=intel_macos;;
@@ -35,6 +42,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with lib; {
+    broken = (stdenv.isLinux && stdenv.isAarch64);
     description = "A very high level, goal-directed, object-oriented, general purpose applications language";
     maintainers = with maintainers; [ vrthra ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/development/interpreters/wasmer/default.nix b/nixpkgs/pkgs/development/interpreters/wasmer/default.nix
index 1537dcee67d3..b0ab011d38d2 100644
--- a/nixpkgs/pkgs/development/interpreters/wasmer/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/wasmer/default.nix
@@ -1,4 +1,5 @@
-{ lib
+{ stdenv
+, lib
 , rustPlatform
 , fetchFromGitHub
 , cmake
@@ -8,17 +9,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wasmer";
-  version = "2.1.1";
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "wasmerio";
     repo = pname;
     rev = version;
-    sha256 = "sha256-uD+JH42AxXxLMLqBurNDfYc7tLlBlEmaLB5rbip+/D4=";
+    sha256 = "sha256-25wWgMNybbsEf/1xmm+8BPcjx8CSW9ZBzxGKT/DbBXw=";
     fetchSubmodules = true;
   };
 
-  cargoSha256 = "sha256-eiX5p2qWUZgoHzoHYXDsp9N6foiX3JovKO6MpoJOXFo=";
+  cargoSha256 = "sha256-tswsbijNN5UcSZovVmy66yehcEOpQDGMdRgR/1mkuE8=";
 
   nativeBuildInputs = [ cmake pkg-config ];
 
@@ -32,12 +33,13 @@ rustPlatform.buildRustPackage rec {
   ];
 
   # Can't use test-jit:
-  # error: Package `wasmer-workspace v2.1.1 (/build/source)` does not have the feature `test-jit`
+  # error: Package `wasmer-workspace v2.3.0 (/build/source)` does not have the feature `test-jit`
   checkFeatures = [ "test-cranelift" ];
 
   LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
 
   meta = with lib; {
+    broken = stdenv.isDarwin;
     description = "The Universal WebAssembly Runtime";
     longDescription = ''
       Wasmer is a standalone WebAssembly runtime for running WebAssembly outside
diff --git a/nixpkgs/pkgs/development/interpreters/wasmtime/default.nix b/nixpkgs/pkgs/development/interpreters/wasmtime/default.nix
index 816b854b99eb..9851da2a3cef 100644
--- a/nixpkgs/pkgs/development/interpreters/wasmtime/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/wasmtime/default.nix
@@ -1,31 +1,35 @@
-{ rustPlatform, fetchFromGitHub, lib, python3, cmake, llvmPackages, clang, stdenv, darwin }:
+{ rustPlatform, fetchFromGitHub, lib }:
 
 rustPlatform.buildRustPackage rec {
   pname = "wasmtime";
-  version = "0.21.0";
+  version = "0.39.1";
 
   src = fetchFromGitHub {
     owner = "bytecodealliance";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0q7wsnq5zdskxwzsxwm98jfnv2frnwca1dkhwndcn9yyz2gyw57m";
+    sha256 = "sha256-cU03wm1+V++mV7j7VyMtjAYrPldzTysNzpJ8m0q4Rx8=";
     fetchSubmodules = true;
   };
 
-  cargoSha256 = "1wlig9gls7s1k1swxwhl82vfga30bady8286livxc4y2zp0vb18w";
-
-  nativeBuildInputs = [ python3 cmake clang ];
-  buildInputs = [ llvmPackages.libclang ] ++
-   lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
-  LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
+  cargoSha256 = "sha256-DnThste0SbBdpGAUYhmwbdQFNEB3LozyDf0X8r2A90Q=";
 
   doCheck = true;
+  checkFlags = [
+    "--skip=cli_tests::run_cwasm"
+    "--skip=commands::compile::test::test_unsupported_flags_compile"
+    "--skip=commands::compile::test::test_aarch64_flags_compile"
+    "--skip=commands::compile::test::test_successful_compile"
+    "--skip=commands::compile::test::test_x64_flags_compile"
+    "--skip=commands::compile::test::test_x64_presets_compile"
+    "--skip=traps::parse_dwarf_info"
+  ];
 
   meta = with lib; {
     description = "Standalone JIT-style runtime for WebAssembly, using Cranelift";
     homepage = "https://github.com/bytecodealliance/wasmtime";
     license = licenses.asl20;
-    maintainers = [ maintainers.matthewbauer ];
+    maintainers = with maintainers; [ ereslibre matthewbauer ];
     platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/development/interpreters/yabasic/default.nix b/nixpkgs/pkgs/development/interpreters/yabasic/default.nix
index 02d3dbeb9fd1..9266ec012251 100644
--- a/nixpkgs/pkgs/development/interpreters/yabasic/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/yabasic/default.nix
@@ -10,11 +10,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yabasic";
-  version = "2.90.1";
+  version = "2.90.2";
 
   src = fetchurl {
     url = "http://www.yabasic.de/download/${pname}-${version}.tar.gz";
-    hash = "sha256-9LqiwS3Udql3YZoufo3spVpE46me3McI8L08TpNJpJo=";
+    hash = "sha256-ff5j0cJ1i2HWIsYjwzx5FFtZfchWsGRF2AZtbDXrNJw=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/interpreters/yex-lang/default.nix b/nixpkgs/pkgs/development/interpreters/yex-lang/default.nix
index 738b73d8e4c8..cc4e7f31f318 100644
--- a/nixpkgs/pkgs/development/interpreters/yex-lang/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/yex-lang/default.nix
@@ -1,23 +1,28 @@
-{ lib, stdenv, rustPlatform, fetchFromGitHub }:
+{ lib
+, stdenv
+, rustPlatform
+, fetchFromGitHub
+}:
 
 rustPlatform.buildRustPackage rec {
   pname = "yex-lang";
-  version = "unstable-2021-12-25";
+  version = "0.pre+date=2022-05-10";
 
   src = fetchFromGitHub {
     owner = "nonamescm";
     repo = "yex-lang";
-    rev = "a97def1431b73b8693700f530ec023f1776eaf83";
-    hash = "sha256-CEzJtlEVMvMnRyUKdko1UDTluv8Fc88tfOpKGIFMnRw=";
+    rev = "866c4decbb9340f5af687b145e2c4f47fcbee786";
+    hash = "sha256-sxzkZ2Rhn3HvZIfjnJ6Z2au/l/jV5705ecs/X3Iah6k=";
   };
 
-  cargoSha256 = "sha256-mHMenqcdt9Yjm/6H1Ywf637Sv8ddq6a4Eu2/A/jX9gQ=";
+  cargoSha256 = "sha256-nX5FoPAk50wt0CXskyg7jQeHvD5YtBNnCe0CVOGXTMI=";
 
   meta = with lib; {
-    homepage = "https://github.com/nonamesc/yex-lang";
-    description = "A cool functional scripting language written in rust";
+    homepage = "https://github.com/nonamescm/yex-lang";
+    description = "A functional scripting language written in rust";
     license = licenses.mit;
     maintainers = with maintainers; [ AndersonTorres ];
+    mainProgram = "yex";
     platforms = platforms.unix;
     broken = stdenv.isAarch64 && stdenv.isLinux;
   };
diff --git a/nixpkgs/pkgs/development/interpreters/zuo/default.nix b/nixpkgs/pkgs/development/interpreters/zuo/default.nix
new file mode 100644
index 000000000000..e43fbeea5d70
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/zuo/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "zuo";
+  version = "unstable-2022-07-25";
+
+  src = fetchFromGitHub {
+    owner = "racket";
+    repo = "zuo";
+    rev = "18778d759e7af1d9c4b6ce7649a3aa4a49a2aa7f";
+    sha256 = "sha256-Y5+C1UdaeweYaGqomC1dFmTF8qGDquuP42Bn6QbZ9nk=";
+  };
+
+  doCheck = true;
+
+  meta = with lib; {
+    description = "A Tiny Racket for Scripting";
+    homepage = "https://github.com/racket/zuo";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.marsam ];
+  };
+}