about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/beam-modules/elixir-ls/default.nix2
-rw-r--r--pkgs/development/compilers/atasm/default.nix25
-rw-r--r--pkgs/development/compilers/elm/default.nix317
-rw-r--r--pkgs/development/compilers/elm/lib/default.nix (renamed from pkgs/development/compilers/elm/packages/lib.nix)0
-rw-r--r--pkgs/development/compilers/elm/lib/fetchElmDeps.nix (renamed from pkgs/development/compilers/elm/fetchElmDeps.nix)0
-rw-r--r--pkgs/development/compilers/elm/lib/makeDotElm.nix36
-rw-r--r--pkgs/development/compilers/elm/makeDotElm.nix35
-rw-r--r--pkgs/development/compilers/elm/packages/bimap.nix15
-rw-r--r--pkgs/development/compilers/elm/packages/elm-json/default.nix (renamed from pkgs/development/compilers/elm/packages/elm-json.nix)5
-rw-r--r--pkgs/development/compilers/elm/packages/elm-json/use-system-ssl.patch (renamed from pkgs/development/compilers/elm/packages/elm-json.patch)0
-rw-r--r--pkgs/development/compilers/elm/packages/elm-test-rs/default.nix (renamed from pkgs/development/compilers/elm/packages/elm-test-rs.nix)0
-rw-r--r--pkgs/development/compilers/elm/packages/elm-test/default.nix (renamed from pkgs/development/compilers/elm/packages/elm-test.nix)0
-rw-r--r--pkgs/development/compilers/elm/packages/ghc8_10/default.nix79
-rw-r--r--pkgs/development/compilers/elm/packages/ghc8_10/elm-instrument/default.nix (renamed from pkgs/development/compilers/elm/packages/elm-instrument.nix)22
-rw-r--r--pkgs/development/compilers/elm/packages/ghc8_10/elmi-to-json/default.nix (renamed from pkgs/development/compilers/elm/packages/elmi-to-json.nix)11
-rw-r--r--pkgs/development/compilers/elm/packages/ghc8_10/indents/default.nix (renamed from pkgs/development/compilers/elm/packages/indents.nix)0
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_2/default.nix53
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_2/elm-format/avh4-lib.nix (renamed from pkgs/development/compilers/elm/packages/avh4-lib.nix)2
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-lib.nix (renamed from pkgs/development/compilers/elm/packages/elm-format-lib.nix)1
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-markdown.nix (renamed from pkgs/development/compilers/elm/packages/elm-format-markdown.nix)1
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-test-lib.nix (renamed from pkgs/development/compilers/elm/packages/elm-format-test-lib.nix)1
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix (renamed from pkgs/development/compilers/elm/packages/elm-format.nix)12
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix (renamed from pkgs/development/compilers/elm/packages/ansi-wl-pprint.nix)0
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_6/default.nix42
-rw-r--r--pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix (renamed from pkgs/development/compilers/elm/packages/elm.nix)0
-rw-r--r--pkgs/development/compilers/elm/packages/lamdera/default.nix (renamed from pkgs/development/compilers/elm/packages/lamdera.nix)3
-rw-r--r--pkgs/development/compilers/elm/packages/node/default.nix139
-rw-r--r--pkgs/development/compilers/elm/packages/node/elm-pages/default.nix28
-rw-r--r--pkgs/development/compilers/elm/packages/node/elm-pages/fix-init-read-only.patch (renamed from pkgs/development/compilers/elm/packages/elm-pages-fix-init-read-only.patch)0
-rw-r--r--pkgs/development/compilers/elm/packages/node/elm-pages/fix-read-only.patch (renamed from pkgs/development/compilers/elm/packages/elm-pages-fix-read-only.patch)0
-rwxr-xr-xpkgs/development/compilers/elm/packages/node/generate-node-packages.sh (renamed from pkgs/development/compilers/elm/packages/generate-node-packages.sh)5
-rw-r--r--pkgs/development/compilers/elm/packages/node/node-composition.nix (renamed from pkgs/development/compilers/elm/packages/node-composition.nix)2
-rw-r--r--pkgs/development/compilers/elm/packages/node/node-packages.json (renamed from pkgs/development/compilers/elm/packages/node-packages.json)0
-rw-r--r--pkgs/development/compilers/elm/packages/node/node-packages.nix (renamed from pkgs/development/compilers/elm/packages/node-packages.nix)0
-rwxr-xr-xpkgs/development/compilers/elm/update.sh12
-rw-r--r--pkgs/development/compilers/llvm/17/default.nix1
-rw-r--r--pkgs/development/compilers/llvm/18/clang/default.nix139
-rw-r--r--pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch71
-rw-r--r--pkgs/development/compilers/llvm/18/clang/purity.patch25
-rw-r--r--pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch21
-rw-r--r--pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch71
-rw-r--r--pkgs/development/compilers/llvm/18/compiler-rt/default.nix157
-rw-r--r--pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch16
-rw-r--r--pkgs/development/compilers/llvm/18/default.nix329
-rw-r--r--pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch31
-rw-r--r--pkgs/development/compilers/llvm/18/libcxx/default.nix130
-rw-r--r--pkgs/development/compilers/llvm/18/libunwind/default.nix54
-rw-r--r--pkgs/development/compilers/llvm/18/lld/default.nix57
-rw-r--r--pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch15
-rw-r--r--pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch12
-rw-r--r--pkgs/development/compilers/llvm/18/lldb/procfs.patch46
-rw-r--r--pkgs/development/compilers/llvm/18/llvm/default.nix439
-rw-r--r--pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch13
-rw-r--r--pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch137
-rw-r--r--pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch12
-rw-r--r--pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch80
-rw-r--r--pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch24
-rw-r--r--pkgs/development/compilers/llvm/18/openmp/default.nix73
-rw-r--r--pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch17
-rw-r--r--pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch0
-rw-r--r--pkgs/development/compilers/llvm/git/clang/default.nix3
-rw-r--r--pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch29
-rw-r--r--pkgs/development/compilers/llvm/git/compiler-rt/default.nix5
-rw-r--r--pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch20
-rw-r--r--pkgs/development/compilers/llvm/git/default.nix11
-rw-r--r--pkgs/development/compilers/llvm/git/libcxx/default.nix22
-rw-r--r--pkgs/development/compilers/llvm/git/libunwind/default.nix9
-rw-r--r--pkgs/development/compilers/llvm/git/lld/default.nix6
-rw-r--r--pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch31
-rw-r--r--pkgs/development/compilers/llvm/git/llvm/default.nix5
-rw-r--r--pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch12
-rw-r--r--pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch10
-rw-r--r--pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch17
-rw-r--r--pkgs/development/compilers/llvm/git/openmp/default.nix1
-rw-r--r--pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch22
-rwxr-xr-xpkgs/development/compilers/llvm/update-git.py10
-rw-r--r--pkgs/development/compilers/ocaml/5.2.nix9
-rw-r--r--pkgs/development/coq-modules/HoTT/default.nix3
-rw-r--r--pkgs/development/coq-modules/dpdgraph/default.nix2
-rw-r--r--pkgs/development/haskell-modules/configuration-nix.nix8
-rw-r--r--pkgs/development/interpreters/expr/default.nix6
-rw-r--r--pkgs/development/libraries/assimp/default.nix2
-rw-r--r--pkgs/development/libraries/ctranslate2/default.nix4
-rw-r--r--pkgs/development/libraries/libaec/default.nix4
-rw-r--r--pkgs/development/libraries/libdwarf/20210528.nix8
-rw-r--r--pkgs/development/libraries/libressl/default.nix8
-rw-r--r--pkgs/development/libraries/openimagedenoise/cuda.patch32
-rw-r--r--pkgs/development/libraries/openimagedenoise/default.nix38
-rw-r--r--pkgs/development/libraries/opensubdiv/default.nix4
-rw-r--r--pkgs/development/libraries/pdal/default.nix4
-rw-r--r--pkgs/development/libraries/protobuf/26.nix6
-rw-r--r--pkgs/development/libraries/quarto/default.nix4
-rw-r--r--pkgs/development/libraries/science/chemistry/dftd4/default.nix20
-rw-r--r--pkgs/development/libraries/science/chemistry/mctc-lib/default.nix18
-rw-r--r--pkgs/development/libraries/science/chemistry/mstore/default.nix15
-rw-r--r--pkgs/development/libraries/science/chemistry/multicharge/default.nix29
-rw-r--r--pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix17
-rw-r--r--pkgs/development/libraries/science/chemistry/tblite/default.nix21
-rw-r--r--pkgs/development/libraries/science/chemistry/tblite/python.nix7
-rw-r--r--pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix4
-rw-r--r--pkgs/development/libraries/test-drive/default.nix15
-rw-r--r--pkgs/development/libraries/toml-f/default.nix18
-rw-r--r--pkgs/development/libraries/webkitgtk/default.nix32
-rw-r--r--pkgs/development/libraries/webkitgtk/fdo-backend-path.patch11
-rw-r--r--pkgs/development/lisp-modules/packages.nix8
-rw-r--r--pkgs/development/lisp-modules/patches/cephes-make.patch22
-rw-r--r--pkgs/development/misc/resholve/README.md122
-rw-r--r--pkgs/development/php-packages/mongodb/default.nix4
-rw-r--r--pkgs/development/python-modules/aioambient/default.nix6
-rw-r--r--pkgs/development/python-modules/aiounifi/default.nix14
-rw-r--r--pkgs/development/python-modules/asgi-lifespan/default.nix51
-rw-r--r--pkgs/development/python-modules/asyncstdlib/default.nix6
-rw-r--r--pkgs/development/python-modules/awswrangler/default.nix10
-rw-r--r--pkgs/development/python-modules/bases/default.nix73
-rw-r--r--pkgs/development/python-modules/bidict/default.nix2
-rw-r--r--pkgs/development/python-modules/boto3-stubs/default.nix4
-rw-r--r--pkgs/development/python-modules/cocotb/0002-Patch-remove-test_unicode_handle_assignment_deprecated-test.patch25
-rw-r--r--pkgs/development/python-modules/cocotb/default.nix4
-rw-r--r--pkgs/development/python-modules/dbt-bigquery/default.nix16
-rw-r--r--pkgs/development/python-modules/dbt-core/default.nix17
-rw-r--r--pkgs/development/python-modules/dbt-postgres/default.nix4
-rw-r--r--pkgs/development/python-modules/dbt-semantic-interfaces/default.nix8
-rw-r--r--pkgs/development/python-modules/dbt-snowflake/default.nix8
-rw-r--r--pkgs/development/python-modules/deal/default.nix59
-rw-r--r--pkgs/development/python-modules/deprecat/default.nix13
-rw-r--r--pkgs/development/python-modules/dirigera/default.nix10
-rw-r--r--pkgs/development/python-modules/django/5.nix6
-rw-r--r--pkgs/development/python-modules/dnf-plugins-core/default.nix4
-rw-r--r--pkgs/development/python-modules/dvc/default.nix12
-rw-r--r--pkgs/development/python-modules/extract-msg/default.nix8
-rw-r--r--pkgs/development/python-modules/fjaraskupan/default.nix16
-rw-r--r--pkgs/development/python-modules/flask-restx/default.nix14
-rw-r--r--pkgs/development/python-modules/githubkit/default.nix2
-rw-r--r--pkgs/development/python-modules/glean-parser/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-pubsub/default.nix4
-rw-r--r--pkgs/development/python-modules/hishel/default.nix8
-rw-r--r--pkgs/development/python-modules/icontract/default.nix29
-rw-r--r--pkgs/development/python-modules/jupyter-server/default.nix3
-rw-r--r--pkgs/development/python-modules/karton-core/default.nix8
-rw-r--r--pkgs/development/python-modules/kubernetes/default.nix44
-rw-r--r--pkgs/development/python-modules/langchain-community/default.nix4
-rw-r--r--pkgs/development/python-modules/langchain-core/default.nix4
-rw-r--r--pkgs/development/python-modules/langchain/default.nix4
-rw-r--r--pkgs/development/python-modules/langsmith/default.nix8
-rw-r--r--pkgs/development/python-modules/libretranslate/default.nix26
-rw-r--r--pkgs/development/python-modules/libtmux/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-agent-openai/default.nix30
-rw-r--r--pkgs/development/python-modules/llama-index-core/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix45
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix45
-rw-r--r--pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix42
-rw-r--r--pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix42
-rw-r--r--pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix42
-rw-r--r--pkgs/development/python-modules/llama-index-llms-ollama/default.nix43
-rw-r--r--pkgs/development/python-modules/llama-index-llms-openai-like/default.nix47
-rw-r--r--pkgs/development/python-modules/llama-index-llms-openai/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-program-openai/default.nix10
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-google/default.nix48
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix52
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix44
-rw-r--r--pkgs/development/python-modules/llama-parse/default.nix8
-rw-r--r--pkgs/development/python-modules/llamaindex-py-client/default.nix4
-rw-r--r--pkgs/development/python-modules/lxmf/default.nix10
-rw-r--r--pkgs/development/python-modules/manifest-ml/default.nix51
-rw-r--r--pkgs/development/python-modules/marimo/default.nix5
-rw-r--r--pkgs/development/python-modules/markdownify/default.nix35
-rw-r--r--pkgs/development/python-modules/metakernel/default.nix10
-rw-r--r--pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix8
-rw-r--r--pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix40
-rw-r--r--pkgs/development/python-modules/mscerts/default.nix11
-rw-r--r--pkgs/development/python-modules/myjwt/default.nix7
-rw-r--r--pkgs/development/python-modules/mypy-boto3/default.nix24
-rwxr-xr-x[-rw-r--r--]pkgs/development/python-modules/mypy-boto3/update.sh0
-rw-r--r--pkgs/development/python-modules/nbdime/749.patch10
-rw-r--r--pkgs/development/python-modules/nbdime/default.nix6
-rw-r--r--pkgs/development/python-modules/nebula3-python/default.nix67
-rw-r--r--pkgs/development/python-modules/ntc-templates/default.nix4
-rw-r--r--pkgs/development/python-modules/oci/default.nix4
-rw-r--r--pkgs/development/python-modules/ollama/default.nix8
-rw-r--r--pkgs/development/python-modules/pathlib-abc/default.nix4
-rw-r--r--pkgs/development/python-modules/pathtools/default.nix4
-rw-r--r--pkgs/development/python-modules/plantuml-markdown/default.nix4
-rw-r--r--pkgs/development/python-modules/plotnine/default.nix4
-rw-r--r--pkgs/development/python-modules/plugwise/default.nix15
-rw-r--r--pkgs/development/python-modules/preshed/default.nix7
-rw-r--r--pkgs/development/python-modules/pyecoforest/default.nix6
-rw-r--r--pkgs/development/python-modules/pyenphase/default.nix4
-rw-r--r--pkgs/development/python-modules/pygls/default.nix4
-rw-r--r--pkgs/development/python-modules/pyinsteon/default.nix33
-rw-r--r--pkgs/development/python-modules/pyleri/default.nix11
-rw-r--r--pkgs/development/python-modules/pymaven-patch/default.nix4
-rw-r--r--pkgs/development/python-modules/pynobo/default.nix13
-rw-r--r--pkgs/development/python-modules/pyscf/default.nix1
-rw-r--r--pkgs/development/python-modules/pysigma/default.nix8
-rw-r--r--pkgs/development/python-modules/pyunifiprotect/default.nix12
-rw-r--r--pkgs/development/python-modules/redis-om/default.nix8
-rw-r--r--pkgs/development/python-modules/requirements-parser/default.nix17
-rw-r--r--pkgs/development/python-modules/rpyc/default.nix19
-rw-r--r--pkgs/development/python-modules/rtfde/default.nix10
-rw-r--r--pkgs/development/python-modules/scancode-toolkit/default.nix8
-rw-r--r--pkgs/development/python-modules/scikit-hep-testdata/default.nix4
-rw-r--r--pkgs/development/python-modules/sentence-transformers/default.nix46
-rw-r--r--pkgs/development/python-modules/spacy/default.nix1
-rw-r--r--pkgs/development/python-modules/sse-starlette/default.nix67
-rw-r--r--pkgs/development/python-modules/starlette-context/default.nix51
-rw-r--r--pkgs/development/python-modules/tendo/default.nix49
-rw-r--r--pkgs/development/python-modules/teslajsonpy/default.nix12
-rw-r--r--pkgs/development/python-modules/tilequant/default.nix21
-rw-r--r--pkgs/development/python-modules/transformers/default.nix4
-rw-r--r--pkgs/development/python-modules/typing-validation/default.nix58
-rw-r--r--pkgs/development/tools/analysis/checkov/default.nix4
-rw-r--r--pkgs/development/tools/analysis/snyk/default.nix22
-rw-r--r--pkgs/development/tools/azcopy/default.nix6
-rw-r--r--pkgs/development/tools/backblaze-b2/default.nix4
-rw-r--r--pkgs/development/tools/continuous-integration/cirrus-cli/default.nix4
-rw-r--r--pkgs/development/tools/cue/default.nix10
-rw-r--r--pkgs/development/tools/database/sqlfluff/default.nix8
-rw-r--r--pkgs/development/tools/database/timescaledb-tune/default.nix4
-rw-r--r--pkgs/development/tools/firebase-tools/default.nix6
-rw-r--r--pkgs/development/tools/iferr/default.nix23
-rw-r--r--pkgs/development/tools/language-servers/gopls/default.nix3
-rw-r--r--pkgs/development/tools/language-servers/jq-lsp/default.nix2
-rw-r--r--pkgs/development/tools/language-servers/postgres-lsp/default.nix8
-rw-r--r--pkgs/development/tools/misc/grpc-client-cli/default.nix6
-rw-r--r--pkgs/development/tools/misc/terser/default.nix6
-rw-r--r--pkgs/development/tools/misc/texlab/default.nix10
-rw-r--r--pkgs/development/tools/mongosh/package-lock.json409
-rw-r--r--pkgs/development/tools/mongosh/source.json8
-rw-r--r--pkgs/development/tools/reshape/default.nix5
-rw-r--r--pkgs/development/tools/rstfmt/default.nix13
-rw-r--r--pkgs/development/tools/rust/cargo-deny/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-generate/default.nix6
-rw-r--r--pkgs/development/tools/sentry-cli/default.nix6
-rw-r--r--pkgs/development/web/flyctl/default.nix6
-rw-r--r--pkgs/development/web/nodejs/v18.nix7
235 files changed, 4557 insertions, 1432 deletions
diff --git a/pkgs/development/beam-modules/elixir-ls/default.nix b/pkgs/development/beam-modules/elixir-ls/default.nix
index c419b7f30411..2324d641244f 100644
--- a/pkgs/development/beam-modules/elixir-ls/default.nix
+++ b/pkgs/development/beam-modules/elixir-ls/default.nix
@@ -37,7 +37,7 @@ mixRelease {
   # of the no-deps-check requirement
   buildPhase = ''
     runHook preBuild
-    mix do compile --no-deps-check, elixir_ls.release
+    mix do compile --no-deps-check, elixir_ls.release${lib.optionalString (lib.versionAtLeast elixir.version "1.16.0") "2"}
     runHook postBuild
   '';
 
diff --git a/pkgs/development/compilers/atasm/default.nix b/pkgs/development/compilers/atasm/default.nix
index 74f54d8d03cf..d79fc686b269 100644
--- a/pkgs/development/compilers/atasm/default.nix
+++ b/pkgs/development/compilers/atasm/default.nix
@@ -1,19 +1,22 @@
 { lib
 , stdenv
-, fetchurl
-, unzip
+, fetchFromGitHub
 , zlib
 }:
 
 stdenv.mkDerivation rec {
   pname = "atasm";
-  version = "1.09";
+  version = "1.23";
 
-  src = fetchurl {
-    url = "https://atari.miribilist.com/${pname}/${pname}${builtins.replaceStrings ["."] [""] version}.zip";
-    hash = "sha256-26shhw2r30GZIPz6S1rf6dOLKRpgpLwrqCRZX3+8PvA=";
+  src = fetchFromGitHub {
+    owner = "CycoPH";
+    repo = "atasm";
+    rev = "V${version}";
+    hash = "sha256-U1HNYTiXO6WZEQJl2icY0ZEVy82CsL1mKR7Xgj9OZ14=";
   };
 
+  makefile = "Makefile";
+
   patches = [
     # make install fails because atasm.txt was moved; report to upstream
     ./0000-file-not-found.diff
@@ -23,10 +26,6 @@ stdenv.mkDerivation rec {
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    unzip
-  ];
-
   buildInputs = [
     zlib
   ];
@@ -42,9 +41,10 @@ stdenv.mkDerivation rec {
   '';
 
   preInstall = ''
+    mkdir -p $out/bin/
     install -d $out/share/doc/${pname} $out/man/man1
     installFlagsArray+=(
-      DESTDIR=$out
+      DESTDIR=$out/bin/
       DOCDIR=$out/share/doc/${pname}
       MANDIR=$out/man/man1
     )
@@ -55,9 +55,10 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "https://atari.miribilist.com/atasm/";
+    homepage = "https://github.com/CycoPH/atasm";
     description = "A commandline 6502 assembler compatible with Mac/65";
     license = licenses.gpl2Plus;
+    changelog = "https://github.com/CycoPH/atasm/releases/tag/V${version}";
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; unix;
   };
diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix
index 44e1459af84d..ca9f37ff5367 100644
--- a/pkgs/development/compilers/elm/default.nix
+++ b/pkgs/development/compilers/elm/default.nix
@@ -5,307 +5,52 @@
 }:
 
 let
-  fetchElmDeps = pkgs.callPackage ./fetchElmDeps.nix { };
+  fetchElmDeps = pkgs.callPackage ./lib/fetchElmDeps.nix { };
 
   # Haskell packages that require ghc 9.6
-  hs96Pkgs = self: pkgs.haskell.packages.ghc96.override {
-    overrides = self: super: with pkgs.haskell.lib.compose; with lib;
-    let elmPkgs = rec {
-      elm = overrideCabal (drv: {
-        # sadly with parallelism most of the time breaks compilation
-        enableParallelBuilding = false;
-        preConfigure = fetchElmDeps {
-          elmPackages = (import ./packages/elm-srcs.nix);
-          elmVersion = drv.version;
-          registryDat = ./registry.dat;
-        };
-        buildTools = drv.buildTools or [] ++ [ makeWrapper ];
-        postInstall = ''
-          wrapProgram $out/bin/elm \
-            --prefix PATH ':' ${lib.makeBinPath [ nodejs ]}
-        '';
-
-        description = "A delightful language for reliable webapps";
-        homepage = "https://elm-lang.org/";
-        license = licenses.bsd3;
-        maintainers = with maintainers; [ domenkozar turbomack ];
-      }) (self.callPackage ./packages/elm.nix { });
-
-      inherit fetchElmDeps;
-      elmVersion = elmPkgs.elm.version;
-    };
-    in elmPkgs // {
-      inherit elmPkgs;
-
-      ansi-wl-pprint = overrideCabal (drv: {
-        jailbreak = true;
-      }) (self.callPackage ./packages/ansi-wl-pprint.nix {});
-    };
-  };
+  hs96Pkgs = import ./packages/ghc9_6 { inherit pkgs lib makeWrapper nodejs fetchElmDeps; };
 
   # Haskell packages that require ghc 8.10
-  hs810Pkgs = self: pkgs.haskell.packages.ghc810.override {
-    overrides = self: super: with pkgs.haskell.lib.compose; with lib;
-    let elmPkgs = rec {
-      elmi-to-json = justStaticExecutables (overrideCabal (drv: {
-        prePatch = ''
-          substituteInPlace package.yaml --replace "- -Werror" ""
-          hpack
-        '';
-        jailbreak = true;
-
-        description = "Tool that reads .elmi files (Elm interface file) generated by the elm compiler";
-        homepage = "https://github.com/stoeffel/elmi-to-json";
-        license = licenses.bsd3;
-        maintainers = [ maintainers.turbomack ];
-      }) (self.callPackage ./packages/elmi-to-json.nix {}));
-
-      elm-instrument = justStaticExecutables (overrideCabal (drv: {
-        prePatch = ''
-          sed "s/desc <-.*/let desc = \"${drv.version}\"/g" Setup.hs --in-place
-        '';
-        jailbreak = true;
-        # Tests are failing because of missing instances for Eq and Show type classes
-        doCheck = false;
-
-        description = "Instrument Elm code as a preprocessing step for elm-coverage";
-        homepage = "https://github.com/zwilias/elm-instrument";
-        license = licenses.bsd3;
-        maintainers = [ maintainers.turbomack ];
-      }) (self.callPackage ./packages/elm-instrument.nix {}));
-    };
-    in elmPkgs // {
-      inherit elmPkgs;
-
-      # We need attoparsec < 0.14 to build elm for now
-      attoparsec = self.attoparsec_0_13_2_5;
-
-      # aeson 2.0.3.0 does not build with attoparsec_0_13_2_5
-      aeson = doJailbreak self.aeson_1_5_6_0;
-
-      # elm-instrument needs this
-      indents = self.callPackage ./packages/indents.nix {};
-
-      # elm-instrument's tests depend on an old version of elm-format, but we set doCheck to false for other reasons above
-      elm-format = null;
-    };
-  };
+  hs810Pkgs = import ./packages/ghc8_10 { inherit pkgs lib; };
 
   # Haskell packages that require ghc 9.2
-  hs92Pkgs = self: pkgs.haskell.packages.ghc92.override {
-    overrides = self: super: with pkgs.haskell.lib.compose; with lib;
-    let elmPkgs = rec {
-      /*
-      The elm-format expression is updated via a script in the https://github.com/avh4/elm-format repo:
-      `package/nix/build.sh`
-      */
-      elm-format = justStaticExecutables (overrideCabal (drv: {
-        jailbreak = true;
-
-        description = "Formats Elm source code according to a standard set of rules based on the official Elm Style Guide";
-        homepage = "https://github.com/avh4/elm-format";
-        license = licenses.bsd3;
-        maintainers = with maintainers; [ avh4 turbomack ];
-      }) (self.callPackage ./packages/elm-format.nix {}));
-    };
-    in elmPkgs // {
-      inherit elmPkgs;
-
-      # Needed for elm-format
-      avh4-lib = doJailbreak (self.callPackage ./packages/avh4-lib.nix {});
-      elm-format-lib = doJailbreak (self.callPackage ./packages/elm-format-lib.nix {});
-      elm-format-test-lib = self.callPackage ./packages/elm-format-test-lib.nix {};
-      elm-format-markdown = self.callPackage ./packages/elm-format-markdown.nix {};
-
-      # elm-format requires text >= 2.0
-      text = self.text_2_0_2;
-      # unorderd-container's tests indirectly depend on text < 2.0
-      unordered-containers = overrideCabal (drv: { doCheck = false; }) super.unordered-containers;
-      # relude-1.1.0.0's tests depend on hedgehog < 1.2, which indirectly depends on text < 2.0
-      relude = overrideCabal (drv: { doCheck = false; }) super.relude;
-    };
-  };
-
-  nodePkgs = pkgs.callPackage ./packages/node-composition.nix {
-    inherit pkgs nodejs;
-    inherit (pkgs.stdenv.hostPlatform) system;
-  };
-
-in lib.makeScope pkgs.newScope (self: with self; {
-  inherit fetchElmDeps nodejs;
-
-  /* Node/NPM based dependencies can be upgraded using script `packages/generate-node-packages.sh`.
-
-      * Packages which rely on `bin-wrap` will fail by default
-        and can be patched using `patchBinwrap` function defined in `packages/lib.nix`.
-
-      * Packages which depend on npm installation of elm can be patched using
-        `patchNpmElm` function also defined in `packages/lib.nix`.
-  */
-  elmLib = let
-    hsElmPkgs = (hs810Pkgs self) // (hs96Pkgs self);
-  in import ./packages/lib.nix {
-    inherit lib;
-    inherit (pkgs) writeScriptBin stdenv;
-    inherit (hsElmPkgs.elmPkgs) elm;
-  };
+  hs92Pkgs = import ./packages/ghc9_2 { inherit pkgs lib; };
 
-  elm-json = callPackage ./packages/elm-json.nix { };
+  # Patched, originally npm-downloaded, packages
+  patchedNodePkgs = import ./packages/node { inherit pkgs lib nodejs makeWrapper; };
 
-  elm-test-rs = callPackage ./packages/elm-test-rs.nix { };
+  assembleScope = self: basics:
+    (hs96Pkgs self).elmPkgs // (hs92Pkgs self).elmPkgs // (hs810Pkgs self).elmPkgs // (patchedNodePkgs self) // basics;
+in
+lib.makeScope pkgs.newScope
+  (self: assembleScope self
+    (with self; {
+      inherit fetchElmDeps nodejs;
 
-  elm-test = callPackage ./packages/elm-test.nix { };
-} // (hs96Pkgs self).elmPkgs // (hs92Pkgs self).elmPkgs // (hs810Pkgs self).elmPkgs // (with elmLib; with (hs96Pkgs self).elmPkgs; {
-  elm-verify-examples = let
-    patched = patchBinwrap [elmi-to-json] nodePkgs.elm-verify-examples // {
-    meta = with lib; nodePkgs.elm-verify-examples.meta // {
-      description = "Verify examples in your docs";
-      homepage = "https://github.com/stoeffel/elm-verify-examples";
-      license = licenses.bsd3;
-      maintainers = [ maintainers.turbomack ];
-    };
-  };
-  in patched.override (old: {
-    preRebuild = (old.preRebuild or "") + ''
-      # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
-      # in case of just this package
-      # TODO: investigate, same as for elm-coverage below
-      sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
-    '';
-  });
+      /* Node/NPM based dependencies can be upgraded using script `packages/generate-node-packages.sh`.
 
-  elm-coverage = let
-      patched = patchNpmElm (patchBinwrap [elmi-to-json] nodePkgs.elm-coverage);
-    in patched.override (old: {
-      # Symlink Elm instrument binary
-      preRebuild = (old.preRebuild or "") + ''
-        # Noop custom installation script
-        sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json
+        * Packages which rely on `bin-wrap` will fail by default
+          and can be patched using `patchBinwrap` function defined in `packages/lib.nix`.
 
-        # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
-        # in case of just this package
-        # TODO: investigate
-        sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
-      '';
-      postInstall = (old.postInstall or "") + ''
-        mkdir -p unpacked_bin
-        ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument
-      '';
-      meta = with lib; nodePkgs.elm-coverage.meta // {
-        description = "Work in progress - Code coverage tooling for Elm";
-        homepage = "https://github.com/zwilias/elm-coverage";
-        license = licenses.bsd3;
-        maintainers = [ maintainers.turbomack ];
-      };
-    });
-
-    create-elm-app = patchNpmElm
-    nodePkgs.create-elm-app // {
-      meta = with lib; nodePkgs.create-elm-app.meta // {
-        description = "Create Elm apps with no build configuration";
-        homepage = "https://github.com/halfzebra/create-elm-app";
-        license = licenses.mit;
-        maintainers = [ maintainers.turbomack ];
-      };
-    };
-
-    elm-graphql =
-      nodePkgs."@dillonkearns/elm-graphql" // {
-        meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // {
-          description = " Autogenerate type-safe GraphQL queries in Elm.";
-          license = licenses.bsd3;
-          maintainers = [ maintainers.pedrohlc ];
-        };
-      };
-
-    elm-review =
-      nodePkgs.elm-review // {
-        meta = with lib; nodePkgs.elm-review.meta // {
-          description = "Analyzes Elm projects, to help find mistakes before your users find them";
-          homepage = "https://package.elm-lang.org/packages/jfmengels/elm-review/${nodePkgs.elm-review.version}";
-          license = licenses.bsd3;
-          maintainers = [ maintainers.turbomack ];
-        };
-      };
-
-      elm-language-server = nodePkgs."@elm-tooling/elm-language-server" // {
-        meta = with lib; nodePkgs."@elm-tooling/elm-language-server".meta // {
-          description = "Language server implementation for Elm";
-          homepage = "https://github.com/elm-tooling/elm-language-server";
-          license = licenses.mit;
-          maintainers = [ maintainers.turbomack ];
-        };
-      };
-
-      elm-spa = nodePkgs."elm-spa".overrideAttrs  (
-        old: {
-          nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ];
-
-          meta = with lib; nodePkgs."elm-spa".meta // {
-            description = "A tool for building single page apps in Elm";
-            homepage = "https://www.elm-spa.dev/";
-            license = licenses.bsd3;
-            maintainers = [ maintainers.ilyakooo0 ];
-          };
-        }
-      );
-
-      elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // {
-        meta = with lib; nodePkgs."elm-optimize-level-2".meta // {
-          description = "A second level of optimization for the Javascript that the Elm Compiler produces";
-          homepage = "https://github.com/mdgriffith/elm-optimize-level-2";
-          license = licenses.bsd3;
-          maintainers = [ maintainers.turbomack ];
-        };
-      };
-
-      elm-pages = nodePkgs."elm-pages".overrideAttrs (
-        old: {
-          nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ];
-
-          # can't use `patches = [ <patch_file> ]` with a nodePkgs derivation;
-          # need to patch in one of the build phases instead.
-          # see upstream issue https://github.com/dillonkearns/elm-pages/issues/305 for dealing with the read-only problem
-          preFixup = ''
-            patch $out/lib/node_modules/elm-pages/generator/src/codegen.js ${./packages/elm-pages-fix-read-only.patch}
-            patch $out/lib/node_modules/elm-pages/generator/src/init.js ${./packages/elm-pages-fix-init-read-only.patch}
-          '';
-
-          postFixup = ''
-            wrapProgram $out/bin/elm-pages --prefix PATH : ${
-              with pkgs.elmPackages; lib.makeBinPath [ elm elm-review elm-optimize-level-2 ]
-            }
-          '';
-
-          meta = with lib; nodePkgs."elm-pages".meta // {
-            description = "A statically typed site generator for Elm.";
-            homepage = "https://github.com/dillonkearns/elm-pages";
-            license = licenses.bsd3;
-            maintainers = [ maintainers.turbomack maintainers.jali-clarke ];
-          };
-        }
-      );
-
-      elm-land =
+        * Packages which depend on npm installation of elm can be patched using
+          `patchNpmElm` function also defined in `packages/lib.nix`.
+      */
+      elmLib =
         let
-          patched = patchNpmElm nodePkgs.elm-land;
+          hsElmPkgs = (hs810Pkgs self) // (hs96Pkgs self);
         in
-        patched.override (old: {
-          meta = with lib; nodePkgs."elm-land".meta // {
-            description = "A production-ready framework for building Elm applications.";
-            homepage = "https://elm.land/";
-            license = licenses.bsd3;
-            maintainers = [ maintainers.zupo ];
-          };
-        }
-      );
+        import ./lib {
+          inherit lib;
+          inherit (pkgs) writeScriptBin stdenv;
+          inherit (self) elm;
+        };
+
+      elm-json = callPackage ./packages/elm-json { };
 
-      lamdera = callPackage ./packages/lamdera.nix {};
+      elm-test-rs = callPackage ./packages/elm-test-rs { };
 
-      elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: {
-        nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ old.nodejs.pkgs.node-gyp-build ];
-      });
+      elm-test = callPackage ./packages/elm-test { };
 
-      inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install;
+      lamdera = callPackage ./packages/lamdera { };
     })
   )
diff --git a/pkgs/development/compilers/elm/packages/lib.nix b/pkgs/development/compilers/elm/lib/default.nix
index 12e0600dc231..12e0600dc231 100644
--- a/pkgs/development/compilers/elm/packages/lib.nix
+++ b/pkgs/development/compilers/elm/lib/default.nix
diff --git a/pkgs/development/compilers/elm/fetchElmDeps.nix b/pkgs/development/compilers/elm/lib/fetchElmDeps.nix
index 9715bfbe037d..9715bfbe037d 100644
--- a/pkgs/development/compilers/elm/fetchElmDeps.nix
+++ b/pkgs/development/compilers/elm/lib/fetchElmDeps.nix
diff --git a/pkgs/development/compilers/elm/lib/makeDotElm.nix b/pkgs/development/compilers/elm/lib/makeDotElm.nix
new file mode 100644
index 000000000000..ab62eb88e220
--- /dev/null
+++ b/pkgs/development/compilers/elm/lib/makeDotElm.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchurl, registryDat }:
+
+ver: deps:
+let
+  cmds = lib.mapAttrsToList
+    (name: info:
+      let
+        pkg = stdenv.mkDerivation {
+          name = lib.replaceStrings [ "/" ] [ "-" ] name + "-${info.version}";
+
+          src = fetchurl {
+            url = "https://github.com/${name}/archive/${info.version}.tar.gz";
+            meta.homepage = "https://github.com/${name}/";
+            inherit (info) sha256;
+          };
+
+          dontConfigure = true;
+          dontBuild = true;
+
+          installPhase = ''
+            mkdir -p $out
+            cp -r * $out
+          '';
+        };
+      in
+      ''
+        mkdir -p .elm/${ver}/packages/${name}
+        cp -R ${pkg} .elm/${ver}/packages/${name}/${info.version}
+      '')
+    deps;
+in
+(lib.concatStrings cmds) + ''
+  mkdir -p .elm/${ver}/packages;
+  cp ${registryDat} .elm/${ver}/packages/registry.dat;
+  chmod -R +w .elm
+''
diff --git a/pkgs/development/compilers/elm/makeDotElm.nix b/pkgs/development/compilers/elm/makeDotElm.nix
deleted file mode 100644
index 43252747c3a3..000000000000
--- a/pkgs/development/compilers/elm/makeDotElm.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{stdenv, lib, fetchurl, registryDat}:
-
-ver: deps:
-  let cmds = lib.mapAttrsToList (name: info: let
-               pkg = stdenv.mkDerivation {
-                 name = lib.replaceStrings ["/"] ["-"] name + "-${info.version}";
-
-                 src = fetchurl {
-                   url = "https://github.com/${name}/archive/${info.version}.tar.gz";
-                   meta.homepage = "https://github.com/${name}/";
-                   inherit (info) sha256;
-                 };
-
-                 configurePhase = ''
-                   true
-                 '';
-
-                 buildPhase = ''
-                   true
-                 '';
-
-                 installPhase = ''
-                   mkdir -p $out
-                   cp -r * $out
-                 '';
-               };
-             in ''
-               mkdir -p .elm/${ver}/packages/${name}
-               cp -R ${pkg} .elm/${ver}/packages/${name}/${info.version}
-             '') deps;
-  in (lib.concatStrings cmds) + ''
-    mkdir -p .elm/${ver}/packages;
-    cp ${registryDat} .elm/${ver}/packages/registry.dat;
-    chmod -R +w .elm
-  ''
diff --git a/pkgs/development/compilers/elm/packages/bimap.nix b/pkgs/development/compilers/elm/packages/bimap.nix
deleted file mode 100644
index 41412d1639c7..000000000000
--- a/pkgs/development/compilers/elm/packages/bimap.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ mkDerivation, base, containers, exceptions, lib, QuickCheck
-, template-haskell
-}:
-mkDerivation {
-  pname = "bimap";
-  version = "0.3.3";
-  sha256 = "73829355c7bcbd3eedba22a382a04a3ab641702b00828790ec082ec2db3a8ad1";
-  libraryHaskellDepends = [ base containers exceptions ];
-  testHaskellDepends = [
-    base containers exceptions QuickCheck template-haskell
-  ];
-  homepage = "https://github.com/joelwilliamson/bimap";
-  description = "Bidirectional mapping between two key types";
-  license = lib.licenses.bsd3;
-}
diff --git a/pkgs/development/compilers/elm/packages/elm-json.nix b/pkgs/development/compilers/elm/packages/elm-json/default.nix
index 5b988244cc97..16cd7f972ce4 100644
--- a/pkgs/development/compilers/elm/packages/elm-json.nix
+++ b/pkgs/development/compilers/elm/packages/elm-json/default.nix
@@ -17,12 +17,13 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256:nlpxlPzWk3wwDgczuMI9T6DFY1YtQpQ1R4BhdPbzZBs=";
   };
 
-  cargoPatches = [ ./elm-json.patch ];
+  cargoPatches = [ ./use-system-ssl.patch ];
 
   nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [
-    curl openssl
+    curl
+    openssl
   ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
 
   cargoSha256 = "sha256:8SOpL8nfhYen9vza0LYpB/5fgVmBwG7vGMmFOaJskIc=";
diff --git a/pkgs/development/compilers/elm/packages/elm-json.patch b/pkgs/development/compilers/elm/packages/elm-json/use-system-ssl.patch
index 54df03019231..54df03019231 100644
--- a/pkgs/development/compilers/elm/packages/elm-json.patch
+++ b/pkgs/development/compilers/elm/packages/elm-json/use-system-ssl.patch
diff --git a/pkgs/development/compilers/elm/packages/elm-test-rs.nix b/pkgs/development/compilers/elm/packages/elm-test-rs/default.nix
index 02f69c2d2f03..02f69c2d2f03 100644
--- a/pkgs/development/compilers/elm/packages/elm-test-rs.nix
+++ b/pkgs/development/compilers/elm/packages/elm-test-rs/default.nix
diff --git a/pkgs/development/compilers/elm/packages/elm-test.nix b/pkgs/development/compilers/elm/packages/elm-test/default.nix
index eca45395c3df..eca45395c3df 100644
--- a/pkgs/development/compilers/elm/packages/elm-test.nix
+++ b/pkgs/development/compilers/elm/packages/elm-test/default.nix
diff --git a/pkgs/development/compilers/elm/packages/ghc8_10/default.nix b/pkgs/development/compilers/elm/packages/ghc8_10/default.nix
new file mode 100644
index 000000000000..f68e582b3d0b
--- /dev/null
+++ b/pkgs/development/compilers/elm/packages/ghc8_10/default.nix
@@ -0,0 +1,79 @@
+{ pkgs, lib }:
+
+self: pkgs.haskell.packages.ghc810.override {
+  overrides = self: super: with pkgs.haskell.lib.compose; with lib;
+    let
+      elmPkgs = rec {
+        elmi-to-json = justStaticExecutables (overrideCabal
+          (drv: {
+            version = "unstable-2021-07-19";
+            src = pkgs.fetchgit {
+              url = "https://github.com/stoeffel/elmi-to-json";
+              sha256 = "0vy678k15rzpsn0aly90fb01pxsbqkgf86pa86w0gd94lka8acwl";
+              rev = "6a42376ef4b6877e130971faf964578cc096e29b";
+              fetchSubmodules = true;
+            };
+
+            prePatch = ''
+              substituteInPlace package.yaml --replace "- -Werror" ""
+              hpack
+            '';
+            jailbreak = true;
+
+            description = "Tool that reads .elmi files (Elm interface file) generated by the elm compiler";
+            homepage = "https://github.com/stoeffel/elmi-to-json";
+            license = licenses.bsd3;
+            maintainers = [ maintainers.turbomack ];
+          })
+          (self.callPackage ./elmi-to-json { }));
+
+        elm-instrument = justStaticExecutables (overrideCabal
+          (drv: {
+            version = "unstable-2020-03-16";
+            src = pkgs.fetchgit {
+              url = "https://github.com/zwilias/elm-instrument";
+              sha256 = "167d7l2547zxdj7i60r6vazznd9ichwc0bqckh3vrh46glkz06jv";
+              rev = "63e15bb5ec5f812e248e61b6944189fa4a0aee4e";
+              fetchSubmodules = true;
+            };
+            patches = [
+              # Update code after breaking change in optparse-applicative
+              # https://github.com/zwilias/elm-instrument/pull/5
+              (pkgs.fetchpatch {
+                name = "update-optparse-applicative.patch";
+                url = "https://github.com/mdevlamynck/elm-instrument/commit/c548709d4818aeef315528e842eaf4c5b34b59b4.patch";
+                sha256 = "0ln7ik09n3r3hk7jmwwm46kz660mvxfa71120rkbbaib2falfhsc";
+              })
+            ];
+
+            prePatch = ''
+              sed "s/desc <-.*/let desc = \"${drv.version}\"/g" Setup.hs --in-place
+            '';
+            jailbreak = true;
+            # Tests are failing because of missing instances for Eq and Show type classes
+            doCheck = false;
+
+            description = "Instrument Elm code as a preprocessing step for elm-coverage";
+            homepage = "https://github.com/zwilias/elm-instrument";
+            license = licenses.bsd3;
+            maintainers = [ maintainers.turbomack ];
+          })
+          (self.callPackage ./elm-instrument { }));
+      };
+    in
+    elmPkgs // {
+      inherit elmPkgs;
+
+      # We need attoparsec < 0.14 to build elm for now
+      attoparsec = self.attoparsec_0_13_2_5;
+
+      # aeson 2.0.3.0 does not build with attoparsec_0_13_2_5
+      aeson = doJailbreak self.aeson_1_5_6_0;
+
+      # elm-instrument needs this
+      indents = self.callPackage ./indents { };
+
+      # elm-instrument's tests depend on an old version of elm-format, but we set doCheck to false for other reasons above
+      elm-format = null;
+    };
+}
diff --git a/pkgs/development/compilers/elm/packages/elm-instrument.nix b/pkgs/development/compilers/elm/packages/ghc8_10/elm-instrument/default.nix
index 02593b855077..7f6a25905e36 100644
--- a/pkgs/development/compilers/elm/packages/elm-instrument.nix
+++ b/pkgs/development/compilers/elm/packages/ghc8_10/elm-instrument/default.nix
@@ -1,28 +1,18 @@
-{ mkDerivation, fetchpatch, ansi-terminal, ansi-wl-pprint, base, binary
+{ mkDerivation, ansi-terminal, ansi-wl-pprint, base, binary
 , bytestring, Cabal, cmark, containers, directory, elm-format
-, fetchgit, filepath, free, HUnit, indents, json, mtl
+, fetchgit, filepath, free, HUnit, indents, json, lib, mtl
 , optparse-applicative, parsec, process, QuickCheck, quickcheck-io
-, split, lib, tasty, tasty-golden, tasty-hunit, tasty-quickcheck
-, text
+, split, tasty, tasty-golden, tasty-hunit, tasty-quickcheck, text
 }:
 mkDerivation {
   pname = "elm-instrument";
   version = "0.0.7";
   src = fetchgit {
     url = "https://github.com/zwilias/elm-instrument";
-    sha256 = "167d7l2547zxdj7i60r6vazznd9ichwc0bqckh3vrh46glkz06jv";
-    rev = "63e15bb5ec5f812e248e61b6944189fa4a0aee4e";
+    sha256 = "14yfzwsyvgc6rzn19sdmwk2mc1vma9hcljnmjnmlig8mp0271v56";
+    rev = "31b527e405a6afdb25bb87ad7bd14f979e65cff7";
     fetchSubmodules = true;
   };
-  patches = [
-    # Update code after breaking change in optparse-applicative
-    # https://github.com/zwilias/elm-instrument/pull/5
-    (fetchpatch {
-      name = "update-optparse-applicative.patch";
-      url = "https://github.com/mdevlamynck/elm-instrument/commit/c548709d4818aeef315528e842eaf4c5b34b59b4.patch";
-      sha256 = "0ln7ik09n3r3hk7jmwwm46kz660mvxfa71120rkbbaib2falfhsc";
-    })
-  ];
   isLibrary = true;
   isExecutable = true;
   setupHaskellDepends = [ base Cabal directory filepath process ];
@@ -37,7 +27,7 @@ mkDerivation {
     quickcheck-io split tasty tasty-golden tasty-hunit tasty-quickcheck
     text
   ];
-  homepage = "https://elm-lang.org";
+  homepage = "http://elm-lang.org";
   description = "Instrumentation library for Elm";
   license = lib.licenses.bsd3;
   mainProgram = "elm-instrument";
diff --git a/pkgs/development/compilers/elm/packages/elmi-to-json.nix b/pkgs/development/compilers/elm/packages/ghc8_10/elmi-to-json/default.nix
index f82f3e5179ac..fc2c76149a1a 100644
--- a/pkgs/development/compilers/elm/packages/elmi-to-json.nix
+++ b/pkgs/development/compilers/elm/packages/ghc8_10/elmi-to-json/default.nix
@@ -1,15 +1,15 @@
 { mkDerivation, aeson, base, binary, bytestring, containers
-, directory, fetchgit, filepath, ghc-prim, hpack
-, optparse-applicative, lib, text, unliftio
-, unordered-containers
+, directory, fetchgit, filepath, ghc-prim, hpack, lib
+, optparse-applicative, text, unliftio, unordered-containers
 }:
 mkDerivation {
   pname = "elmi-to-json";
   version = "1.3.0";
   src = fetchgit {
     url = "https://github.com/stoeffel/elmi-to-json";
-    rev = "bd18efb59d247439b362272b480e67a16a4e424e";
-    sha256 = "sha256-9fScXRSyTkqzeXwh/Jjza6mnENCThlU6KI366CLFcgY=";
+    sha256 = "0vy678k15rzpsn0aly90fb01pxsbqkgf86pa86w0gd94lka8acwl";
+    rev = "6a42376ef4b6877e130971faf964578cc096e29b";
+    fetchSubmodules = true;
   };
   isLibrary = true;
   isExecutable = true;
@@ -23,4 +23,5 @@ mkDerivation {
   prePatch = "hpack";
   homepage = "https://github.com/stoeffel/elmi-to-json#readme";
   license = lib.licenses.bsd3;
+  mainProgram = "elmi-to-json";
 }
diff --git a/pkgs/development/compilers/elm/packages/indents.nix b/pkgs/development/compilers/elm/packages/ghc8_10/indents/default.nix
index 85e765db3e50..85e765db3e50 100644
--- a/pkgs/development/compilers/elm/packages/indents.nix
+++ b/pkgs/development/compilers/elm/packages/ghc8_10/indents/default.nix
diff --git a/pkgs/development/compilers/elm/packages/ghc9_2/default.nix b/pkgs/development/compilers/elm/packages/ghc9_2/default.nix
new file mode 100644
index 000000000000..5ef5eff3bef1
--- /dev/null
+++ b/pkgs/development/compilers/elm/packages/ghc9_2/default.nix
@@ -0,0 +1,53 @@
+{ pkgs, lib }:
+
+self: pkgs.haskell.packages.ghc92.override {
+  overrides = self: super: with pkgs.haskell.lib.compose; with lib;
+    let
+      elmPkgs = rec {
+        /*
+          The elm-format expression is updated via a script in the https://github.com/avh4/elm-format repo:
+          `package/nix/build.sh`
+        */
+        elm-format = justStaticExecutables (overrideCabal
+          (drv: {
+            jailbreak = true;
+            doHaddock = false;
+            postPatch = ''
+              mkdir -p ./generated
+              cat <<EOHS > ./generated/Build_elm_format.hs
+              module Build_elm_format where
+              gitDescribe :: String
+              gitDescribe = "${drv.version}"
+              EOHS
+            '';
+
+            description = "Formats Elm source code according to a standard set of rules based on the official Elm Style Guide";
+            homepage = "https://github.com/avh4/elm-format";
+            license = licenses.bsd3;
+            maintainers = with maintainers; [ avh4 turbomack ];
+          })
+          (self.callPackage ./elm-format/elm-format.nix { }));
+      };
+
+      fixHaddock = overrideCabal (_: {
+        configureFlags = [ "--ghc-option=-Wno-error=unused-packages" ];
+        doHaddock = false;
+      });
+    in
+    elmPkgs // {
+      inherit elmPkgs;
+
+      # Needed for elm-format
+      avh4-lib = fixHaddock (doJailbreak (self.callPackage ./elm-format/avh4-lib.nix { }));
+      elm-format-lib =  fixHaddock (doJailbreak (self.callPackage ./elm-format/elm-format-lib.nix { }));
+      elm-format-test-lib = fixHaddock (self.callPackage ./elm-format/elm-format-test-lib.nix { });
+      elm-format-markdown = fixHaddock (self.callPackage ./elm-format/elm-format-markdown.nix { });
+
+      # elm-format requires text >= 2.0
+      text = self.text_2_0_2;
+      # unorderd-container's tests indirectly depend on text < 2.0
+      unordered-containers = overrideCabal (drv: { doCheck = false; }) super.unordered-containers;
+      # relude-1.1.0.0's tests depend on hedgehog < 1.2, which indirectly depends on text < 2.0
+      relude = overrideCabal (drv: { doCheck = false; }) super.relude;
+    };
+}
diff --git a/pkgs/development/compilers/elm/packages/avh4-lib.nix b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/avh4-lib.nix
index f7f9381703c6..e320edfd1162 100644
--- a/pkgs/development/compilers/elm/packages/avh4-lib.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/avh4-lib.nix
@@ -12,7 +12,6 @@ mkDerivation {
     fetchSubmodules = true;
   };
   postUnpack = "sourceRoot+=/avh4-lib; echo source root reset to $sourceRoot";
-  configureFlags = [ "--ghc-option=-Wno-error=unused-packages" ];
   libraryHaskellDepends = [
     array base bytestring directory filepath mtl pooled-io process
     relude text
@@ -22,7 +21,6 @@ mkDerivation {
     relude tasty tasty-hspec tasty-hunit text
   ];
   testToolDepends = [ tasty-discover ];
-  doHaddock = false;
   description = "Common code for haskell projects";
   license = lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-format-lib.nix b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-lib.nix
index a6b70414143f..290534bbea9a 100644
--- a/pkgs/development/compilers/elm/packages/elm-format-lib.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-lib.nix
@@ -24,7 +24,6 @@ mkDerivation {
     text
   ];
   testToolDepends = [ tasty-discover ];
-  doHaddock = false;
   description = "Common code used by elm-format and elm-refactor";
   license = lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-format-markdown.nix b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-markdown.nix
index fdeb2e88d384..e57d2127822e 100644
--- a/pkgs/development/compilers/elm/packages/elm-format-markdown.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-markdown.nix
@@ -10,7 +10,6 @@ mkDerivation {
   };
   postUnpack = "sourceRoot+=/elm-format-markdown; echo source root reset to $sourceRoot";
   libraryHaskellDepends = [ base containers mtl text ];
-  doHaddock = false;
   description = "Markdown parsing for Elm documentation comments";
   license = lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-format-test-lib.nix b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-test-lib.nix
index ccd6264d6c16..43090abbeae4 100644
--- a/pkgs/development/compilers/elm/packages/elm-format-test-lib.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-test-lib.nix
@@ -21,7 +21,6 @@ mkDerivation {
     split tasty tasty-hspec tasty-hunit text
   ];
   testToolDepends = [ tasty-discover ];
-  doHaddock = false;
   description = "Test helpers used by elm-format-tests and elm-refactor-tests";
   license = lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-format.nix b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix
index c4448f246425..82ec995e1ecc 100644
--- a/pkgs/development/compilers/elm/packages/elm-format.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix
@@ -3,7 +3,7 @@
 , optparse-applicative, QuickCheck, quickcheck-io, relude, tasty
 , tasty-hspec, tasty-hunit, tasty-quickcheck, text
 }:
-mkDerivation rec {
+mkDerivation {
   pname = "elm-format";
   version = "0.8.7";
   src = fetchgit {
@@ -24,18 +24,8 @@ mkDerivation rec {
     quickcheck-io relude tasty tasty-hspec tasty-hunit tasty-quickcheck
     text
   ];
-  doHaddock = false;
   homepage = "https://elm-lang.org";
   description = "A source code formatter for Elm";
   license = lib.licenses.bsd3;
   mainProgram = "elm-format";
-  postPatch = ''
-    mkdir -p ./generated
-    cat <<EOHS > ./generated/Build_elm_format.hs
-    module Build_elm_format where
-
-    gitDescribe :: String
-    gitDescribe = "${version}"
-    EOHS
-  '';
 }
diff --git a/pkgs/development/compilers/elm/packages/ansi-wl-pprint.nix b/pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix
index 392ca5ab31b1..392ca5ab31b1 100644
--- a/pkgs/development/compilers/elm/packages/ansi-wl-pprint.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix
diff --git a/pkgs/development/compilers/elm/packages/ghc9_6/default.nix b/pkgs/development/compilers/elm/packages/ghc9_6/default.nix
new file mode 100644
index 000000000000..13ba7faa0308
--- /dev/null
+++ b/pkgs/development/compilers/elm/packages/ghc9_6/default.nix
@@ -0,0 +1,42 @@
+{ pkgs, lib, makeWrapper, nodejs, fetchElmDeps }:
+
+self: pkgs.haskell.packages.ghc96.override {
+  overrides = self: super: with pkgs.haskell.lib.compose; with lib;
+    let
+      elmPkgs = rec {
+        elm = overrideCabal
+          (drv: {
+            # sadly with parallelism most of the time breaks compilation
+            enableParallelBuilding = false;
+            preConfigure = fetchElmDeps {
+              elmPackages = (import ../elm-srcs.nix);
+              elmVersion = drv.version;
+              registryDat = ../../registry.dat;
+            };
+            buildTools = drv.buildTools or [ ] ++ [ makeWrapper ];
+            postInstall = ''
+              wrapProgram $out/bin/elm \
+                --prefix PATH ':' ${lib.makeBinPath [ nodejs ]}
+            '';
+
+            description = "A delightful language for reliable webapps";
+            homepage = "https://elm-lang.org/";
+            license = licenses.bsd3;
+            maintainers = with maintainers; [ domenkozar turbomack ];
+          })
+          (self.callPackage ./elm { });
+
+        inherit fetchElmDeps;
+        elmVersion = elmPkgs.elm.version;
+      };
+    in
+    elmPkgs // {
+      inherit elmPkgs;
+
+      ansi-wl-pprint = overrideCabal
+        (drv: {
+          jailbreak = true;
+        })
+        (self.callPackage ./ansi-wl-pprint { });
+    };
+}
diff --git a/pkgs/development/compilers/elm/packages/elm.nix b/pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix
index 1071d50a84c9..1071d50a84c9 100644
--- a/pkgs/development/compilers/elm/packages/elm.nix
+++ b/pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix
diff --git a/pkgs/development/compilers/elm/packages/lamdera.nix b/pkgs/development/compilers/elm/packages/lamdera/default.nix
index e3dda4c31a52..c92d2d144d4b 100644
--- a/pkgs/development/compilers/elm/packages/lamdera.nix
+++ b/pkgs/development/compilers/elm/packages/lamdera/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, lib
+{ stdenv
+, lib
 , fetchurl
 }:
 
diff --git a/pkgs/development/compilers/elm/packages/node/default.nix b/pkgs/development/compilers/elm/packages/node/default.nix
new file mode 100644
index 000000000000..6d4d38a6d199
--- /dev/null
+++ b/pkgs/development/compilers/elm/packages/node/default.nix
@@ -0,0 +1,139 @@
+{ pkgs, lib, nodejs, makeWrapper }: self:
+
+let
+  # Untouched npm-downloaded packages
+  nodePkgs = pkgs.callPackage ./node-composition.nix {
+    inherit pkgs nodejs;
+    inherit (pkgs.stdenv.hostPlatform) system;
+  };
+in
+with self; with elmLib; {
+  inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install;
+
+  elm-verify-examples =
+    let
+      patched = patchBinwrap [ elmi-to-json ] nodePkgs.elm-verify-examples // {
+        meta = with lib; nodePkgs.elm-verify-examples.meta // {
+          description = "Verify examples in your docs";
+          homepage = "https://github.com/stoeffel/elm-verify-examples";
+          license = licenses.bsd3;
+          maintainers = [ maintainers.turbomack ];
+        };
+      };
+    in
+    patched.override (old: {
+      preRebuild = (old.preRebuild or "") + ''
+        # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
+        # in case of just this package
+        # TODO: investigate, same as for elm-coverage below
+        sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
+      '';
+    });
+
+  elm-coverage =
+    let
+      patched = patchNpmElm (patchBinwrap [ elmi-to-json ] nodePkgs.elm-coverage);
+    in
+    patched.override (old: {
+      # Symlink Elm instrument binary
+      preRebuild = (old.preRebuild or "") + ''
+        # Noop custom installation script
+        sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json
+
+        # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
+        # in case of just this package
+        # TODO: investigate
+        sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
+      '';
+      postInstall = (old.postInstall or "") + ''
+        mkdir -p unpacked_bin
+        ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument
+      '';
+      meta = with lib; nodePkgs.elm-coverage.meta // {
+        description = "Work in progress - Code coverage tooling for Elm";
+        homepage = "https://github.com/zwilias/elm-coverage";
+        license = licenses.bsd3;
+        maintainers = [ maintainers.turbomack ];
+      };
+    });
+
+  create-elm-app = patchNpmElm
+    nodePkgs.create-elm-app // {
+    meta = with lib; nodePkgs.create-elm-app.meta // {
+      description = "Create Elm apps with no build configuration";
+      homepage = "https://github.com/halfzebra/create-elm-app";
+      license = licenses.mit;
+      maintainers = [ maintainers.turbomack ];
+    };
+  };
+
+  elm-graphql =
+    nodePkgs."@dillonkearns/elm-graphql" // {
+      meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // {
+        description = " Autogenerate type-safe GraphQL queries in Elm.";
+        license = licenses.bsd3;
+        maintainers = [ maintainers.pedrohlc ];
+      };
+    };
+
+  elm-review =
+    nodePkgs.elm-review // {
+      meta = with lib; nodePkgs.elm-review.meta // {
+        description = "Analyzes Elm projects, to help find mistakes before your users find them";
+        homepage = "https://package.elm-lang.org/packages/jfmengels/elm-review/${nodePkgs.elm-review.version}";
+        license = licenses.bsd3;
+        maintainers = [ maintainers.turbomack ];
+      };
+    };
+
+  elm-language-server = nodePkgs."@elm-tooling/elm-language-server" // {
+    meta = with lib; nodePkgs."@elm-tooling/elm-language-server".meta // {
+      description = "Language server implementation for Elm";
+      homepage = "https://github.com/elm-tooling/elm-language-server";
+      license = licenses.mit;
+      maintainers = [ maintainers.turbomack ];
+    };
+  };
+
+  elm-spa = nodePkgs."elm-spa".overrideAttrs (
+    old: {
+      nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ];
+
+      meta = with lib; nodePkgs."elm-spa".meta // {
+        description = "A tool for building single page apps in Elm";
+        homepage = "https://www.elm-spa.dev/";
+        license = licenses.bsd3;
+        maintainers = [ maintainers.ilyakooo0 ];
+      };
+    }
+  );
+
+  elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // {
+    meta = with lib; nodePkgs."elm-optimize-level-2".meta // {
+      description = "A second level of optimization for the Javascript that the Elm Compiler produces";
+      homepage = "https://github.com/mdgriffith/elm-optimize-level-2";
+      license = licenses.bsd3;
+      maintainers = [ maintainers.turbomack ];
+    };
+  };
+
+  elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; };
+
+  elm-land =
+    let
+      patched = patchNpmElm nodePkgs.elm-land;
+    in
+    patched.override (old: {
+      meta = with lib; nodePkgs."elm-land".meta // {
+        description = "A production-ready framework for building Elm applications.";
+        homepage = "https://elm.land/";
+        license = licenses.bsd3;
+        maintainers = [ maintainers.zupo ];
+      };
+    }
+    );
+
+  elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: {
+    nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ];
+  });
+}
diff --git a/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix b/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix
new file mode 100644
index 000000000000..5502e26b415d
--- /dev/null
+++ b/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix
@@ -0,0 +1,28 @@
+{ nodePkgs, pkgs, lib, makeWrapper }:
+
+nodePkgs."elm-pages".overrideAttrs (
+  old: {
+    nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ];
+
+    # can't use `patches = [ <patch_file> ]` with a nodePkgs derivation;
+    # need to patch in one of the build phases instead.
+    # see upstream issue https://github.com/dillonkearns/elm-pages/issues/305 for dealing with the read-only problem
+    preFixup = ''
+      patch $out/lib/node_modules/elm-pages/generator/src/codegen.js ${./fix-read-only.patch}
+      patch $out/lib/node_modules/elm-pages/generator/src/init.js ${./fix-init-read-only.patch}
+    '';
+
+    postFixup = ''
+      wrapProgram $out/bin/elm-pages --prefix PATH : ${
+        with pkgs.elmPackages; lib.makeBinPath [ elm elm-review elm-optimize-level-2 ]
+      }
+    '';
+
+    meta = with lib; nodePkgs."elm-pages".meta // {
+      description = "A statically typed site generator for Elm.";
+      homepage = "https://github.com/dillonkearns/elm-pages";
+      license = licenses.bsd3;
+      maintainers = [ maintainers.turbomack maintainers.jali-clarke ];
+    };
+  }
+)
diff --git a/pkgs/development/compilers/elm/packages/elm-pages-fix-init-read-only.patch b/pkgs/development/compilers/elm/packages/node/elm-pages/fix-init-read-only.patch
index 9704ef9f7c08..9704ef9f7c08 100644
--- a/pkgs/development/compilers/elm/packages/elm-pages-fix-init-read-only.patch
+++ b/pkgs/development/compilers/elm/packages/node/elm-pages/fix-init-read-only.patch
diff --git a/pkgs/development/compilers/elm/packages/elm-pages-fix-read-only.patch b/pkgs/development/compilers/elm/packages/node/elm-pages/fix-read-only.patch
index 547f89f86f69..547f89f86f69 100644
--- a/pkgs/development/compilers/elm/packages/elm-pages-fix-read-only.patch
+++ b/pkgs/development/compilers/elm/packages/node/elm-pages/fix-read-only.patch
diff --git a/pkgs/development/compilers/elm/packages/generate-node-packages.sh b/pkgs/development/compilers/elm/packages/node/generate-node-packages.sh
index 49e697e43e88..66cc71ca32bb 100755
--- a/pkgs/development/compilers/elm/packages/generate-node-packages.sh
+++ b/pkgs/development/compilers/elm/packages/node/generate-node-packages.sh
@@ -1,11 +1,12 @@
 #!/usr/bin/env bash
 
-ROOT="$(realpath "$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")"/../../../../..)"
+ROOT="$(realpath "$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")"/../../../../../..)"
 
 set -eu -o pipefail
 
 $(nix-build $ROOT -A nodePackages.node2nix --no-out-link)/bin/node2nix \
+    --nodejs-18 \
     -i node-packages.json \
     -o node-packages.nix \
     -c node-composition.nix \
-    --no-copy-node-env -e ../../../node-packages/node-env.nix
+    --no-copy-node-env -e ../../../../node-packages/node-env.nix
diff --git a/pkgs/development/compilers/elm/packages/node-composition.nix b/pkgs/development/compilers/elm/packages/node/node-composition.nix
index c825c6c66349..1f86de75e357 100644
--- a/pkgs/development/compilers/elm/packages/node-composition.nix
+++ b/pkgs/development/compilers/elm/packages/node/node-composition.nix
@@ -5,7 +5,7 @@
   }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs_18"}:
 
 let
-  nodeEnv = import ../../../node-packages/node-env.nix {
+  nodeEnv = import ../../../../node-packages/node-env.nix {
     inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
     inherit pkgs nodejs;
     libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
diff --git a/pkgs/development/compilers/elm/packages/node-packages.json b/pkgs/development/compilers/elm/packages/node/node-packages.json
index 8112b01bc9e8..8112b01bc9e8 100644
--- a/pkgs/development/compilers/elm/packages/node-packages.json
+++ b/pkgs/development/compilers/elm/packages/node/node-packages.json
diff --git a/pkgs/development/compilers/elm/packages/node-packages.nix b/pkgs/development/compilers/elm/packages/node/node-packages.nix
index 0efccbb5ff90..0efccbb5ff90 100644
--- a/pkgs/development/compilers/elm/packages/node-packages.nix
+++ b/pkgs/development/compilers/elm/packages/node/node-packages.nix
diff --git a/pkgs/development/compilers/elm/update.sh b/pkgs/development/compilers/elm/update.sh
index 4de11bd8ff5d..d718bd0fbb08 100755
--- a/pkgs/development/compilers/elm/update.sh
+++ b/pkgs/development/compilers/elm/update.sh
@@ -1,13 +1,21 @@
 #!/usr/bin/env nix-shell
 #!nix-shell -p cabal2nix elm2nix -i bash ../../..
 
-cabal2nix https://github.com/ekmett/ansi-wl-pprint --revision d16e2f6896d76b87b72af7220c2e93ba15c53280 > packages/ansi-wl-pprint.nix
+# Update all cabal packages.
+cabal2nix 'https://github.com/zwilias/elm-instrument' --revision '0.0.7' > packages/ghc8_10/elm-instrument/default.nix
+for subpath in 'avh4-lib' 'elm-format-lib' 'elm-format-markdown' 'elm-format-test-lib'; do
+  cabal2nix 'https://github.com/avh4/elm-format' --revision '0.8.7' \
+    --subpath $subpath > packages/ghc9_2/elm-format/${subpath}.nix
+done
+cabal2nix 'https://github.com/avh4/elm-format' --revision '0.8.7' > packages/ghc9_2/elm-format/elm-format.nix
+cabal2nix 'https://github.com/stoeffel/elmi-to-json' --revision '1.3.0' > packages/ghc8_10/elmi-to-json/default.nix
+cabal2nix 'https://github.com/ekmett/ansi-wl-pprint' --revision 'v0.6.8.1' > packages/ghc9_6/ansi-wl-pprint/default.nix
 
 # We're building binaries from commit that npm installer is using since
 # November 1st release called 0.19.1-6 in npm registry.
 # These binaries are built with newer ghc version and also support Aarch64 for Linux and Darwin.
 # Upstream git tag for 0.19.1 is still pointing to original commit from 2019.
-cabal2nix https://github.com/elm/compiler --revision 2f6dd29258e880dbb7effd57a829a0470d8da48b > packages/elm.nix
+cabal2nix https://github.com/elm/compiler --revision 2f6dd29258e880dbb7effd57a829a0470d8da48b > packages/ghc9_6/elm/default.nix
 
 echo "need to manually copy registry.dat from an existing elm project"
 #elm2nix snapshot > registry.dat
diff --git a/pkgs/development/compilers/llvm/17/default.nix b/pkgs/development/compilers/llvm/17/default.nix
index a9138e3c79b6..c8d956925345 100644
--- a/pkgs/development/compilers/llvm/17/default.nix
+++ b/pkgs/development/compilers/llvm/17/default.nix
@@ -213,6 +213,7 @@ in let
           (!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false)
           "-lunwind"
         ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
+      nixSupport.cc-ldflags = lib.optionals (!stdenv.targetPlatform.isWasm) [ "-L${targetLlvmLibraries.libunwind}/lib" ];
     };
 
     clangNoLibcxx = wrapCCWith rec {
diff --git a/pkgs/development/compilers/llvm/18/clang/default.nix b/pkgs/development/compilers/llvm/18/clang/default.nix
new file mode 100644
index 000000000000..1e777c6132e4
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/clang/default.nix
@@ -0,0 +1,139 @@
+{ lib, stdenv, llvm_meta
+, monorepoSrc, runCommand
+, substituteAll, cmake, ninja, libxml2, libllvm, version, python3
+, buildLlvmTools
+, fixDarwinDylibNames
+, enableManpages ? false
+}:
+
+let
+  self = stdenv.mkDerivation (finalAttrs: rec {
+    pname = "clang";
+    inherit version;
+
+    src = runCommand "${pname}-src-${version}" {} ''
+      mkdir -p "$out"
+      cp -r ${monorepoSrc}/cmake "$out"
+      cp -r ${monorepoSrc}/${pname} "$out"
+      cp -r ${monorepoSrc}/clang-tools-extra "$out"
+    '';
+
+    sourceRoot = "${src.name}/${pname}";
+
+    nativeBuildInputs = [ cmake ninja python3 ]
+      ++ lib.optional (lib.versionAtLeast version "18" && enableManpages) python3.pkgs.myst-parser
+      ++ lib.optional enableManpages python3.pkgs.sphinx
+      ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
+
+    buildInputs = [ libxml2 libllvm ];
+
+    cmakeFlags = [
+      "-DCLANG_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/clang"
+      "-DCLANGD_BUILD_XPC=OFF"
+      "-DLLVM_ENABLE_RTTI=ON"
+      "-DLLVM_INCLUDE_TESTS=OFF"
+    ] ++ lib.optionals enableManpages [
+      "-DCLANG_INCLUDE_DOCS=ON"
+      "-DLLVM_ENABLE_SPHINX=ON"
+      "-DSPHINX_OUTPUT_MAN=ON"
+      "-DSPHINX_OUTPUT_HTML=OFF"
+      "-DSPHINX_WARNINGS_AS_ERRORS=OFF"
+    ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
+      "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
+      "-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen"
+      # Added in LLVM15:
+      # `clang-tidy-confusable-chars-gen`: https://github.com/llvm/llvm-project/commit/c3574ef739fbfcc59d405985a3a4fa6f4619ecdb
+      # `clang-pseudo-gen`: https://github.com/llvm/llvm-project/commit/cd2292ef824591cc34cc299910a3098545c840c7
+      "-DCLANG_TIDY_CONFUSABLE_CHARS_GEN=${buildLlvmTools.libclang.dev}/bin/clang-tidy-confusable-chars-gen"
+      "-DCLANG_PSEUDO_GEN=${buildLlvmTools.libclang.dev}/bin/clang-pseudo-gen"
+    ];
+
+    patches = [
+      ./purity.patch
+      # https://reviews.llvm.org/D51899
+      ./gnu-install-dirs.patch
+      ../../common/clang/add-nostdlibinc-flag.patch
+      (substituteAll {
+        src = ../../common/clang/clang-at-least-16-LLVMgold-path.patch;
+       libllvmLibdir = "${libllvm.lib}/lib";
+      })
+    ];
+
+    postPatch = ''
+      (cd tools && ln -s ../../clang-tools-extra extra)
+    '' + lib.optionalString stdenv.hostPlatform.isMusl ''
+      sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
+    '';
+
+    outputs = [ "out" "lib" "dev" "python" ];
+
+    postInstall = ''
+      ln -sv $out/bin/clang $out/bin/cpp
+
+      # Move libclang to 'lib' output
+      moveToOutput "lib/libclang.*" "$lib"
+      moveToOutput "lib/libclang-cpp.*" "$lib"
+      substituteInPlace $dev/lib/cmake/clang/ClangTargets-release.cmake \
+          --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \
+          --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp."
+
+      mkdir -p $python/bin $python/share/clang/
+      mv $out/bin/{git-clang-format,scan-view} $python/bin
+      if [ -e $out/bin/set-xcode-analyzer ]; then
+        mv $out/bin/set-xcode-analyzer $python/bin
+      fi
+      mv $out/share/clang/*.py $python/share/clang
+      rm $out/bin/c-index-test
+      patchShebangs $python/bin
+
+      mkdir -p $dev/bin
+      cp bin/{clang-tblgen,clang-tidy-confusable-chars-gen,clang-pseudo-gen} $dev/bin
+    '';
+
+    passthru = {
+      inherit libllvm;
+      isClang = true;
+      hardeningUnsupportedFlags = [
+        "fortify3"
+      ];
+      hardeningUnsupportedFlagsByTargetPlatform = targetPlatform:
+        lib.optional (!(targetPlatform.isx86_64 || targetPlatform.isAarch64)) "zerocallusedregs"
+        ++ (finalAttrs.passthru.hardeningUnsupportedFlags or []);
+    };
+
+    meta = llvm_meta // {
+      homepage = "https://clang.llvm.org/";
+      description = "A C language family frontend for LLVM";
+      longDescription = ''
+        The Clang project provides a language front-end and tooling
+        infrastructure for languages in the C language family (C, C++, Objective
+        C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project.
+        It aims to deliver amazingly fast compiles, extremely useful error and
+        warning messages and to provide a platform for building great source
+        level tools. The Clang Static Analyzer and clang-tidy are tools that
+        automatically find bugs in your code, and are great examples of the sort
+        of tools that can be built using the Clang frontend as a library to
+        parse C/C++ code.
+      '';
+      mainProgram = "clang";
+    };
+  } // lib.optionalAttrs enableManpages {
+    pname = "clang-manpages";
+
+    ninjaFlags = [ "docs-clang-man" ];
+
+    installPhase = ''
+      mkdir -p $out/share/man/man1
+      # Manually install clang manpage
+      cp docs/man/*.1 $out/share/man/man1/
+    '';
+
+    outputs = [ "out" ];
+
+    doCheck = false;
+
+    meta = llvm_meta // {
+      description = "man page for Clang ${version}";
+    };
+  });
+in self
diff --git a/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch
new file mode 100644
index 000000000000..9517df973ad0
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/clang/gnu-install-dirs.patch
@@ -0,0 +1,71 @@
+diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
+index 75b0080f6715..c895b884cd27 100644
+--- a/cmake/modules/AddClang.cmake
++++ b/cmake/modules/AddClang.cmake
+@@ -119,8 +119,8 @@ macro(add_clang_library name)
+         install(TARGETS ${lib}
+           COMPONENT ${lib}
+           ${export_to_clangtargets}
+-          LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+-          ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
++          LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
++          ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
+           RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ 
+         if (NOT LLVM_ENABLE_IDE)
+diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
+index f2b0c5cddcbb..52f37fc368ce 100644
+--- a/lib/Headers/CMakeLists.txt
++++ b/lib/Headers/CMakeLists.txt
+@@ -473,6 +473,7 @@ add_header_target("windows-resource-headers" ${windows_only_files})
+ add_header_target("utility-resource-headers" ${utility_files})
+ 
+ get_clang_resource_dir(header_install_dir SUBDIR include)
++set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include)
+ 
+ #############################################################
+ # Install rules for the catch-all clang-resource-headers target
+diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
+index 4f23065a2472..6a0f55991e24 100644
+--- a/tools/libclang/CMakeLists.txt
++++ b/tools/libclang/CMakeLists.txt
+@@ -234,7 +234,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
+           COMPONENT
+             libclang-python-bindings
+           DESTINATION
+-            "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
++            "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
+ endforeach()
+ if(NOT LLVM_ENABLE_IDE)
+   add_custom_target(libclang-python-bindings)
+diff --git a/tools/scan-build-py/CMakeLists.txt b/tools/scan-build-py/CMakeLists.txt
+index 3aca22c0b0a8..3115353e3fe3 100644
+--- a/tools/scan-build-py/CMakeLists.txt
++++ b/tools/scan-build-py/CMakeLists.txt
+@@ -88,7 +88,7 @@ foreach(lib ${LibScanbuild})
+                      DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
+   list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
+   install(FILES lib/libscanbuild/${lib}
+-          DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libscanbuild
++          DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild"
+           COMPONENT scan-build-py)
+ endforeach()
+ 
+@@ -106,7 +106,7 @@ foreach(resource ${LibScanbuildResources})
+                      DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
+   list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
+   install(FILES lib/libscanbuild/resources/${resource}
+-          DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libscanbuild/resources
++          DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild/resources"
+           COMPONENT scan-build-py)
+ endforeach()
+ 
+@@ -122,7 +122,7 @@ foreach(lib ${LibEar})
+                      DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
+   list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
+   install(FILES lib/libear/${lib}
+-          DESTINATION lib${CLANG_LIBDIR_SUFFIX}/libear
++          DESTINATION "${CMAKE_INSTALL_LIBDIR}/libear"
+           COMPONENT scan-build-py)
+ endforeach()
+ 
diff --git a/pkgs/development/compilers/llvm/18/clang/purity.patch b/pkgs/development/compilers/llvm/18/clang/purity.patch
new file mode 100644
index 000000000000..5ce14a3479a0
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/clang/purity.patch
@@ -0,0 +1,25 @@
+From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Thu, 18 May 2017 11:56:12 -0500
+Subject: [PATCH] "purity" patch for 5.0
+
+---
+ lib/Driver/ToolChains/Gnu.cpp | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
+index fe3c0191bb..c6a482bece 100644
+--- a/lib/Driver/ToolChains/Gnu.cpp
++++ b/lib/Driver/ToolChains/Gnu.cpp
+@@ -446,9 +446,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+                            ToolChain.isPIEDefault(Args));
+       if (IsPIE)
+         CmdArgs.push_back("-pie");
+-      CmdArgs.push_back("-dynamic-linker");
+-      CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
+-                                           ToolChain.getDynamicLinker(Args)));
+     }
+   }
+ 
+-- 
+2.11.0
diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch b/pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch
new file mode 100644
index 000000000000..07013e5a6825
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/compiler-rt/X86-support-extension.patch
@@ -0,0 +1,21 @@
+diff --git a/lib/builtins/CMakeLists.txt b/lib/builtins/CMakeLists.txt
+index 3a66dd9c3fb..7efc85d9f9f 100644
+--- a/lib/builtins/CMakeLists.txt
++++ b/lib/builtins/CMakeLists.txt
+@@ -348,4 +348,8 @@ if (NOT MSVC)
+ 
++  set(i486_SOURCES ${i386_SOURCES})
++  set(i586_SOURCES ${i386_SOURCES})
++  set(i686_SOURCES ${i386_SOURCES})
++
+   if (WIN32)
+     set(i386_SOURCES
+       ${i386_SOURCES}
+@@ -723,6 +723,7 @@ else ()
+   endif()
+ 
+   foreach (arch ${BUILTIN_SUPPORTED_ARCH})
++      message("arch: ${arch}")
+     if (CAN_TARGET_${arch})
+       # For ARM archs, exclude any VFP builtins if VFP is not supported
+       if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch b/pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch
new file mode 100644
index 000000000000..425dc2af01e7
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/compiler-rt/darwin-targetconditionals.patch
@@ -0,0 +1,71 @@
+diff --git a/lib/sanitizer_common/sanitizer_mac.cpp b/lib/sanitizer_common/sanitizer_mac.cpp
+--- a/lib/sanitizer_common/sanitizer_mac.cpp
++++ b/lib/sanitizer_common/sanitizer_mac.cpp
+@@ -613,9 +613,15 @@ HandleSignalMode GetHandleSignalMode(int signum) {
+ // Offset example:
+ // XNU 17 -- macOS 10.13 -- iOS 11 -- tvOS 11 -- watchOS 4
+ constexpr u16 GetOSMajorKernelOffset() {
+-  if (TARGET_OS_OSX) return 4;
+-  if (TARGET_OS_IOS || TARGET_OS_TV) return 6;
+-  if (TARGET_OS_WATCH) return 13;
++#if TARGET_OS_OSX
++  return 4;
++#endif
++#if TARGET_OS_IOS || TARGET_OS_TV
++  return 6;
++#endif
++#if TARGET_OS_WATCH
++  return 13;
++#endif
+ }
+ 
+ using VersStr = char[64];
+@@ -627,13 +633,13 @@ static uptr ApproximateOSVersionViaKernelVersion(VersStr vers) {
+   u16 os_major = kernel_major - offset;
+ 
+   const char *format = "%d.0";
+-  if (TARGET_OS_OSX) {
+-    if (os_major >= 16) {  // macOS 11+
+-      os_major -= 5;
+-    } else {  // macOS 10.15 and below
+-      format = "10.%d";
+-    }
++#if TARGET_OS_OSX
++  if (os_major >= 16) {  // macOS 11+
++    os_major -= 5;
++  } else {  // macOS 10.15 and below
++    format = "10.%d";
+   }
++#endif
+   return internal_snprintf(vers, sizeof(VersStr), format, os_major);
+ }
+ 
+@@ -681,15 +687,14 @@ void ParseVersion(const char *vers, u16 *major, u16 *minor) {
+ // Aligned versions example:
+ // macOS 10.15 -- iOS 13 -- tvOS 13 -- watchOS 6
+ static void MapToMacos(u16 *major, u16 *minor) {
+-  if (TARGET_OS_OSX)
+-    return;
+-
+-  if (TARGET_OS_IOS || TARGET_OS_TV)
++#if !TARGET_OS_OSX
++#if TARGET_OS_IOS || TARGET_OS_TV
+     *major += 2;
+-  else if (TARGET_OS_WATCH)
++#elif TARGET_OS_WATCH
+     *major += 9;
+-  else
++#else
+     UNREACHABLE("unsupported platform");
++#endif
+ 
+   if (*major >= 16) {  // macOS 11+
+     *major -= 5;
+@@ -697,6 +702,7 @@ static void MapToMacos(u16 *major, u16 *minor) {
+     *minor = *major;
+     *major = 10;
+   }
++#endif
+ }
+ 
+ static MacosVersion GetMacosAlignedVersionInternal() {
diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/default.nix b/pkgs/development/compilers/llvm/18/compiler-rt/default.nix
new file mode 100644
index 000000000000..f51316beb570
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/compiler-rt/default.nix
@@ -0,0 +1,157 @@
+{ lib, stdenv, llvm_meta, version
+, monorepoSrc, runCommand
+, cmake, ninja, python3, xcbuild, libllvm, linuxHeaders, libxcrypt
+, doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
+}:
+
+let
+
+  useLLVM = stdenv.hostPlatform.useLLVM or false;
+  bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none";
+  haveLibc = stdenv.cc.libc != null;
+  isDarwinStatic = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic;
+  inherit (stdenv.hostPlatform) isMusl;
+
+  baseName = "compiler-rt";
+
+  src = runCommand "${baseName}-src-${version}" {} ''
+    mkdir -p "$out"
+    cp -r ${monorepoSrc}/cmake "$out"
+    cp -r ${monorepoSrc}/${baseName} "$out"
+  '';
+in
+
+stdenv.mkDerivation {
+  pname = baseName + lib.optionalString (haveLibc) "-libc";
+  inherit version;
+
+  inherit src;
+  sourceRoot = "${src.name}/${baseName}";
+
+  nativeBuildInputs = [ cmake ninja python3 libllvm.dev ]
+    ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders;
+
+  env.NIX_CFLAGS_COMPILE = toString ([
+    "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
+  ] ++ lib.optionals (!haveLibc) [
+    # The compiler got stricter about this, and there is a usellvm patch below
+    # which patches out the assert include causing an implicit definition of
+    # assert. It would be nicer to understand why compiler-rt thinks it should
+    # be able to #include <assert.h> in the first place; perhaps it's in the
+    # wrong, or perhaps there is a way to provide an assert.h.
+    "-Wno-error=implicit-function-declaration"
+  ]);
+
+  cmakeFlags = [
+    "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
+    "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}"
+    "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}"
+  ] ++ lib.optionals (haveLibc && stdenv.hostPlatform.libc == "glibc") [
+    "-DSANITIZER_COMMON_CFLAGS=-I${libxcrypt}/include"
+  ] ++ lib.optionals (useLLVM || bareMetal || isMusl || isDarwinStatic) [
+    "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
+    "-DCOMPILER_RT_BUILD_XRAY=OFF"
+    "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
+    "-DCOMPILER_RT_BUILD_MEMPROF=OFF"
+    "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
+  ] ++ lib.optionals (useLLVM || bareMetal) [
+     "-DCOMPILER_RT_BUILD_PROFILE=OFF"
+  ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal || isDarwinStatic ) [
+    "-DCMAKE_CXX_COMPILER_WORKS=ON"
+  ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
+    "-DCMAKE_C_COMPILER_WORKS=ON"
+    "-DCOMPILER_RT_BAREMETAL_BUILD=ON"
+    "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}"
+  ] ++ lib.optionals (useLLVM && !haveLibc) [
+    "-DCMAKE_C_FLAGS=-nodefaultlibs"
+  ] ++ lib.optionals (useLLVM) [
+    "-DCOMPILER_RT_BUILD_BUILTINS=ON"
+    #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program
+    "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
+  ] ++ lib.optionals (bareMetal) [
+    "-DCOMPILER_RT_OS_DIR=baremetal"
+  ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+    "-DCMAKE_LIPO=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}lipo"
+    "-DDARWIN_macosx_OVERRIDE_SDK_VERSION=ON"
+    "-DDARWIN_osx_ARCHS=${stdenv.hostPlatform.darwinArch}"
+    "-DDARWIN_osx_BUILTIN_ARCHS=${stdenv.hostPlatform.darwinArch}"
+
+    # `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin:
+    # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153
+    "-DCOMPILER_RT_ENABLE_IOS=OFF"
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  patches = [
+    ./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config
+    # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the
+    # extra `/`.
+    ./normalize-var.patch
+    # See: https://github.com/NixOS/nixpkgs/pull/186575
+    ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
+    # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893
+    # ../../common/compiler-rt/armv7l-15.patch
+  ];
+
+  # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
+  # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra
+  # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd
+  # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by
+  # a flag and turn the flag off during the stdenv build.
+  postPatch = lib.optionalString (!stdenv.isDarwin) ''
+    substituteInPlace cmake/builtin-config-ix.cmake \
+      --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)'
+  '' + lib.optionalString stdenv.isDarwin ''
+    substituteInPlace cmake/config-ix.cmake \
+      --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)'
+  '' + lib.optionalString (useLLVM && !haveLibc) ''
+    substituteInPlace lib/builtins/aarch64/sme-libc-routines.c \
+      --replace "<stdlib.h>" "<stddef.h>"
+    substituteInPlace lib/builtins/int_util.c \
+      --replace "#include <stdlib.h>" ""
+    substituteInPlace lib/builtins/clear_cache.c \
+      --replace "#include <assert.h>" ""
+    substituteInPlace lib/builtins/cpu_model${lib.optionalString (lib.versionAtLeast version "18") "/x86"}.c \
+      --replace "#include <assert.h>" ""
+  '';
+
+  # Hack around weird upsream RPATH bug
+  postInstall = lib.optionalString (stdenv.hostPlatform.isDarwin) ''
+    ln -s "$out/lib"/*/* "$out/lib"
+  '' + lib.optionalString (useLLVM && stdenv.hostPlatform.isLinux) ''
+    ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbegin.o
+    ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtend.o
+    # Note the history of crt{begin,end}S in previous versions of llvm in nixpkg:
+    # The presence of crtbegin_shared has been added and removed; it's possible
+    # people have added/removed it to get it working on their platforms.
+    # Try each in turn for now.
+    ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbeginS.o
+    ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtendS.o
+    ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o
+    ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o
+  '' + lib.optionalString doFakeLibgcc ''
+     ln -s $out/lib/freebsd/libclang_rt.builtins-*.a $out/lib/libgcc.a
+  '';
+
+  meta = llvm_meta // {
+    homepage = "https://compiler-rt.llvm.org/";
+    description = "Compiler runtime libraries";
+    longDescription = ''
+      The compiler-rt project provides highly tuned implementations of the
+      low-level code generator support routines like "__fixunsdfdi" and other
+      calls generated when a target doesn't have a short sequence of native
+      instructions to implement a core IR operation. It also provides
+      implementations of run-time libraries for dynamic testing tools such as
+      AddressSanitizer, ThreadSanitizer, MemorySanitizer, and DataFlowSanitizer.
+    '';
+    # "All of the code in the compiler-rt project is dual licensed under the MIT
+    # license and the UIUC License (a BSD-like license)":
+    license = with lib.licenses; [ mit ncsa ];
+    # compiler-rt requires a Clang stdenv on 32-bit RISC-V:
+    # https://reviews.llvm.org/D43106#1019077
+    broken = stdenv.hostPlatform.isRiscV32 && !stdenv.cc.isClang;
+  };
+}
diff --git a/pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch b/pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch
new file mode 100644
index 000000000000..2b25fd4a0744
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/compiler-rt/normalize-var.patch
@@ -0,0 +1,16 @@
+diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake
+index 4c85551d7766..297d7a47c54b 100644
+--- a/cmake/Modules/CompilerRTUtils.cmake
++++ b/cmake/Modules/CompilerRTUtils.cmake
+@@ -328,8 +328,9 @@ macro(load_llvm_config)
+     endif()
+   endif()
+ 
+-  set(LLVM_LIBRARY_OUTPUT_INTDIR
+-    ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
++  get_filename_component(LLVM_LIBRARY_OUTPUT_INTDIR
++    ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}
++    REALPATH)
+ 
+   set(LLVM_MAIN_SRC_DIR "${LLVM_MAIN_SRC_DIR_DEFAULT}" CACHE PATH "Path to LLVM source tree")
+   message(STATUS "LLVM_MAIN_SRC_DIR: \"${LLVM_MAIN_SRC_DIR}\"")
diff --git a/pkgs/development/compilers/llvm/18/default.nix b/pkgs/development/compilers/llvm/18/default.nix
new file mode 100644
index 000000000000..dd3000c04259
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/default.nix
@@ -0,0 +1,329 @@
+{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja
+, preLibcCrossHeaders
+, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
+, buildLlvmTools # tools, but from the previous stage, for cross
+, targetLlvmLibraries # libraries, but from the next stage, for cross
+, targetLlvm
+# This is the default binutils, but with *this* version of LLD rather
+# than the default LLVM verion's, if LLD is the choice. We use these for
+# the `useLLVM` bootstrapping below.
+, bootBintoolsNoLibc ?
+    if stdenv.targetPlatform.linker == "lld"
+    then null
+    else pkgs.bintoolsNoLibc
+, bootBintools ?
+    if stdenv.targetPlatform.linker == "lld"
+    then null
+    else pkgs.bintools
+, darwin
+# LLVM release information; specify one of these but not both:
+, gitRelease ? null
+  # i.e.:
+  # {
+  #   version = /* i.e. "15.0.0" */;
+  #   rev = /* commit SHA */;
+  #   rev-version = /* human readable version; i.e. "unstable-2022-26-07" */;
+  #   sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */;
+  # }
+, officialRelease ? { version = "18.1.1"; sha256 = "sha256-qAPNvEpztJjPz+kr5KcZz4iUTErsD8iXLURKl3yZoC8="; }
+  # i.e.:
+  # {
+  #   version = /* i.e. "15.0.0" */;
+  #   candidate = /* optional; if specified, should be: "rcN" */
+  #   sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */;
+  # }
+# By default, we'll try to fetch a release from `github:llvm/llvm-project`
+# corresponding to the `gitRelease` or `officialRelease` specified.
+#
+# You can provide your own LLVM source by specifying this arg but then it's up
+# to you to make sure that the LLVM repo given matches the release configuration
+# specified.
+, monorepoSrc ? null
+}:
+
+assert let
+  int = a: if a then 1 else 0;
+  xor = a: b: ((builtins.bitXor (int a) (int b)) == 1);
+in
+  lib.assertMsg
+    (xor
+      (gitRelease != null)
+      (officialRelease != null))
+    ("must specify `gitRelease` or `officialRelease`" +
+      (lib.optionalString (gitRelease != null) " — not both"));
+let
+  monorepoSrc' = monorepoSrc;
+in let
+  inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo;
+
+  inherit (releaseInfo) release_version version;
+
+  inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc;
+
+  tools = lib.makeExtensible (tools: let
+    callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; });
+    major = lib.versions.major release_version;
+    mkExtraBuildCommands0 = cc: ''
+      rsrc="$out/resource-root"
+      mkdir "$rsrc"
+      ln -s "${cc.lib}/lib/clang/${major}/include" "$rsrc"
+      echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
+    '';
+    mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + ''
+      ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib"
+      ln -s "${targetLlvmLibraries.compiler-rt.out}/share" "$rsrc/share"
+    '';
+
+  bintoolsNoLibc' =
+    if bootBintoolsNoLibc == null
+    then tools.bintoolsNoLibc
+    else bootBintoolsNoLibc;
+  bintools' =
+    if bootBintools == null
+    then tools.bintools
+    else bootBintools;
+
+  in {
+
+    libllvm = callPackage ./llvm {
+      inherit llvm_meta;
+    };
+
+    # `llvm` historically had the binaries.  When choosing an output explicitly,
+    # we need to reintroduce `outputSpecified` to get the expected behavior e.g. of lib.get*
+    llvm = tools.libllvm;
+
+    libclang = callPackage ./clang {
+      inherit llvm_meta;
+    };
+
+    clang-unwrapped = tools.libclang;
+
+    llvm-manpages = lowPrio (tools.libllvm.override {
+      enableManpages = true;
+      python3 = pkgs.python3;  # don't use python-boot
+    });
+
+    clang-manpages = lowPrio (tools.libclang.override {
+      enableManpages = true;
+      python3 = pkgs.python3;  # don't use python-boot
+    });
+
+    lldb-manpages = lowPrio (tools.lldb.override {
+      enableManpages = true;
+      python3 = pkgs.python3;  # don't use python-boot
+    });
+
+    # pick clang appropriate for package set we are targeting
+    clang =
+      /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM
+      else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang
+      else tools.libcxxClang;
+
+    libstdcxxClang = wrapCCWith rec {
+      cc = tools.clang-unwrapped;
+      # libstdcxx is taken from gcc in an ad-hoc way in cc-wrapper.
+      libcxx = null;
+      extraPackages = [
+        targetLlvmLibraries.compiler-rt
+      ];
+      extraBuildCommands = mkExtraBuildCommands cc;
+    };
+
+    libcxxClang = wrapCCWith rec {
+      cc = tools.clang-unwrapped;
+      libcxx = targetLlvmLibraries.libcxx;
+      extraPackages = [
+        targetLlvmLibraries.compiler-rt
+      ];
+      extraBuildCommands = mkExtraBuildCommands cc;
+    };
+
+    lld = callPackage ./lld {
+      inherit llvm_meta;
+    };
+
+    mlir = callPackage ../common/mlir {
+      inherit llvm_meta;
+    };
+
+    lldb = callPackage ../common/lldb.nix {
+      src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} ''
+        mkdir -p "$out"
+        cp -r ${monorepoSrc}/cmake "$out"
+        cp -r ${monorepoSrc}/lldb "$out"
+      '') { };
+      patches =
+        [
+          # FIXME: do we need this? ./procfs.patch
+          ../common/lldb/gnu-install-dirs.patch
+        ]
+        # This is a stopgap solution if/until the macOS SDK used for x86_64 is
+        # updated.
+        #
+        # The older 10.12 SDK used on x86_64 as of this writing has a `mach/machine.h`
+        # header that does not define `CPU_SUBTYPE_ARM64E` so we replace the one use
+        # of this preprocessor symbol in `lldb` with its expansion.
+        #
+        # See here for some context:
+        # https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272129132
+        ++ lib.optional (
+          stdenv.targetPlatform.isDarwin
+            && !stdenv.targetPlatform.isAarch64
+            && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0")
+        ) ./lldb/cpu_subtype_arm64e_replacement.patch;
+      inherit llvm_meta;
+    };
+
+    # Below, is the LLVM bootstrapping logic. It handles building a
+    # fully LLVM toolchain from scratch. No GCC toolchain should be
+    # pulled in. As a consequence, it is very quick to build different
+    # targets provided by LLVM and we can also build for what GCC
+    # doesn’t support like LLVM. Probably we should move to some other
+    # file.
+
+    bintools-unwrapped = callPackage ../common/bintools.nix { };
+
+    bintoolsNoLibc = wrapBintoolsWith {
+      bintools = tools.bintools-unwrapped;
+      libc = preLibcCrossHeaders;
+    };
+
+    bintools = wrapBintoolsWith {
+      bintools = tools.bintools-unwrapped;
+    };
+
+    clangUseLLVM = wrapCCWith rec {
+      cc = tools.clang-unwrapped;
+      libcxx = targetLlvmLibraries.libcxx;
+      bintools = bintools';
+      extraPackages = [
+        targetLlvmLibraries.compiler-rt
+      ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [
+        targetLlvmLibraries.libunwind
+      ];
+      extraBuildCommands = mkExtraBuildCommands cc;
+      nixSupport.cc-cflags =
+        [ "-rtlib=compiler-rt"
+          "-Wno-unused-command-line-argument"
+          "-B${targetLlvmLibraries.compiler-rt}/lib"
+        ]
+        ++ lib.optional (!stdenv.targetPlatform.isWasm) "--unwindlib=libunwind"
+        ++ lib.optional
+          (!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false)
+          "-lunwind"
+        ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
+      nixSupport.cc-ldflags = lib.optionals (!stdenv.targetPlatform.isWasm) [ "-L${targetLlvmLibraries.libunwind}/lib" ];
+    };
+
+    clangNoLibcxx = wrapCCWith rec {
+      cc = tools.clang-unwrapped;
+      libcxx = null;
+      bintools = bintools';
+      extraPackages = [
+        targetLlvmLibraries.compiler-rt
+      ];
+      extraBuildCommands = mkExtraBuildCommands cc;
+      nixSupport.cc-cflags =
+        [
+          "-rtlib=compiler-rt"
+          "-B${targetLlvmLibraries.compiler-rt}/lib"
+          "-nostdlib++"
+        ]
+        ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
+    };
+
+    clangNoLibc = wrapCCWith rec {
+      cc = tools.clang-unwrapped;
+      libcxx = null;
+      bintools = bintoolsNoLibc';
+      extraPackages = [
+        targetLlvmLibraries.compiler-rt
+      ];
+      extraBuildCommands = mkExtraBuildCommands cc;
+      nixSupport.cc-cflags =
+        [
+          "-rtlib=compiler-rt"
+          "-B${targetLlvmLibraries.compiler-rt}/lib"
+        ]
+        ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
+    };
+
+    clangNoCompilerRt = wrapCCWith rec {
+      cc = tools.clang-unwrapped;
+      libcxx = null;
+      bintools = bintoolsNoLibc';
+      extraPackages = [ ];
+      extraBuildCommands = mkExtraBuildCommands0 cc;
+      nixSupport.cc-cflags =
+        [
+          "-nostartfiles"
+        ]
+        ++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
+    };
+
+    clangNoCompilerRtWithLibc = wrapCCWith (rec {
+      cc = tools.clang-unwrapped;
+      libcxx = null;
+      bintools = bintools';
+      extraPackages = [ ];
+      extraBuildCommands = mkExtraBuildCommands0 cc;
+    } // lib.optionalAttrs stdenv.targetPlatform.isWasm {
+      nixSupport.cc-cflags = [ "-fno-exceptions" ];
+    });
+
+    # Has to be in tools despite mostly being a library,
+    # because we use a native helper executable from a
+    # non-cross build in cross builds.
+    libclc = callPackage ../common/libclc.nix {
+      inherit buildLlvmTools;
+    };
+  });
+
+  libraries = lib.makeExtensible (libraries: let
+    callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; });
+  in {
+
+    compiler-rt-libc = callPackage ./compiler-rt {
+      inherit llvm_meta;
+      stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic)
+               then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc
+               else stdenv;
+    };
+
+    compiler-rt-no-libc = callPackage ./compiler-rt {
+      inherit llvm_meta;
+      stdenv = if stdenv.hostPlatform.useLLVM or false
+               then overrideCC stdenv buildLlvmTools.clangNoCompilerRt
+               else stdenv;
+    };
+
+    # N.B. condition is safe because without useLLVM both are the same.
+    compiler-rt = if stdenv.hostPlatform.isAndroid || stdenv.hostPlatform.isDarwin
+      then libraries.compiler-rt-libc
+      else libraries.compiler-rt-no-libc;
+
+    stdenv = overrideCC stdenv buildLlvmTools.clang;
+
+    libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang;
+
+    # `libcxx` requires a fairly modern C++ compiler,
+    # so: we use the clang from this LLVM package set instead of the regular
+    # stdenv's compiler.
+    libcxx = callPackage ./libcxx {
+      inherit llvm_meta;
+      stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
+    };
+
+    libunwind = callPackage ./libunwind {
+      inherit llvm_meta;
+      stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
+    };
+
+    openmp = callPackage ./openmp {
+      inherit llvm_meta targetLlvm;
+    };
+  });
+  noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ];
+
+in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools)
diff --git a/pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch b/pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch
new file mode 100644
index 000000000000..29942f8ed03d
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/libcxx/0001-darwin-10.12-mbstate_t-fix.patch
@@ -0,0 +1,31 @@
+From 9c1cb26c1dd3f92d1c1177e548107d2cd3c5e616 Mon Sep 17 00:00:00 2001
+From: annalee <150648636+a-n-n-a-l-e-e@users.noreply.github.com>
+Date: Fri, 23 Feb 2024 22:58:58 +0000
+Subject: [PATCH] darwin 10.12 mbstate_t fix
+
+https://github.com/llvm/llvm-project/issues/64226
+
+removes space from
+https://github.com/macports/macports-ports/raw/acd8acb171f1658596ed1cf25da48d5b932e2d19/lang/llvm-17/files/0042-mbstate_t-not-defined.patch
+so it applies cleanly
+---
+ libcxx/include/__mbstate_t.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libcxx/include/__mbstate_t.h b/libcxx/include/__mbstate_t.h
+index bfa6d61..5f51112 100644
+--- a/libcxx/include/__mbstate_t.h
++++ b/libcxx/include/__mbstate_t.h
+@@ -42,6 +42,9 @@
+ #elif __has_include(<bits/types/mbstate_t.h>)
+ #  include <bits/types/mbstate_t.h> // works on most Unixes
+ #elif __has_include(<sys/_types/_mbstate_t.h>)
++#  if __has_include(<machine/_types.h>)
++#    include <machine/_types.h>
++#  endif
+ #  include <sys/_types/_mbstate_t.h> // works on Darwin
+ #elif !defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS) && __has_include_next(<wchar.h>)
+ #  include_next <wchar.h> // fall back to the C standard provider of mbstate_t
+-- 
+2.43.0
+
diff --git a/pkgs/development/compilers/llvm/18/libcxx/default.nix b/pkgs/development/compilers/llvm/18/libcxx/default.nix
new file mode 100644
index 000000000000..d6c304c0b476
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/libcxx/default.nix
@@ -0,0 +1,130 @@
+{ lib, stdenv, llvm_meta
+, monorepoSrc, runCommand
+, cmake, lndir, ninja, python3, fixDarwinDylibNames, version
+, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else null
+, libcxxrt, libunwind
+, enableShared ? !stdenv.hostPlatform.isStatic
+}:
+
+# external cxxabi is not supported on Darwin as the build will not link libcxx
+# properly and not re-export the cxxabi symbols into libcxx
+# https://github.com/NixOS/nixpkgs/issues/166205
+# https://github.com/NixOS/nixpkgs/issues/269548
+assert cxxabi == null || !stdenv.hostPlatform.isDarwin;
+let
+  basename = "libcxx";
+  cxxabiName = "lib${if cxxabi == null then "cxxabi" else cxxabi.libName}";
+  runtimes = [ "libcxx" ] ++ lib.optional (cxxabi == null) "libcxxabi";
+
+  # Note: useLLVM is likely false for Darwin but true under pkgsLLVM
+  useLLVM = stdenv.hostPlatform.useLLVM or false;
+
+  cxxabiCMakeFlags = [
+    "-DLIBCXXABI_USE_LLVM_UNWINDER=OFF"
+  ] ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [
+    "-DLIBCXXABI_ADDITIONAL_LIBRARIES=unwind"
+    "-DLIBCXXABI_USE_COMPILER_RT=ON"
+  ] ++ lib.optionals stdenv.hostPlatform.isWasm [
+    "-DLIBCXXABI_ENABLE_THREADS=OFF"
+    "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF"
+  ] ++ lib.optionals (!enableShared) [
+    "-DLIBCXXABI_ENABLE_SHARED=OFF"
+  ];
+
+  cxxCMakeFlags = [
+    "-DLIBCXX_CXX_ABI=${cxxabiName}"
+  ] ++ lib.optionals (cxxabi != null) [
+    "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${lib.getDev cxxabi}/include"
+  ] ++ lib.optionals (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) [
+    "-DLIBCXX_HAS_MUSL_LIBC=1"
+  ] ++ lib.optionals (lib.versionAtLeast version "18" && !useLLVM && stdenv.hostPlatform.libc == "glibc" && !stdenv.hostPlatform.isStatic) [
+    "-DLIBCXX_ADDITIONAL_LIBRARIES=gcc_s"
+  ] ++ lib.optionals useLLVM [
+    "-DLIBCXX_USE_COMPILER_RT=ON"
+    # There's precedent for this in llvm-project/libcxx/cmake/caches.
+    # In a monorepo build you might do the following in the libcxxabi build:
+    #   -DLLVM_ENABLE_PROJECTS=libcxxabi;libunwinder
+    #   -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=On
+    # libcxx appears to require unwind and doesn't pull it in via other means.
+    "-DLIBCXX_ADDITIONAL_LIBRARIES=unwind"
+  ] ++ lib.optionals stdenv.hostPlatform.isWasm [
+    "-DLIBCXX_ENABLE_THREADS=OFF"
+    "-DLIBCXX_ENABLE_FILESYSTEM=OFF"
+    "-DLIBCXX_ENABLE_EXCEPTIONS=OFF"
+  ] ++ lib.optionals (!enableShared) [
+    "-DLIBCXX_ENABLE_SHARED=OFF"
+  ];
+
+  cmakeFlags = [
+    "-DLLVM_ENABLE_RUNTIMES=${lib.concatStringsSep ";" runtimes}"
+  ] ++ lib.optionals stdenv.hostPlatform.isWasm [
+    "-DCMAKE_C_COMPILER_WORKS=ON"
+    "-DCMAKE_CXX_COMPILER_WORKS=ON"
+    "-DUNIX=ON" # Required otherwise libc++ fails to detect the correct linker
+  ] ++ cxxCMakeFlags
+    ++ lib.optionals (cxxabi == null) cxxabiCMakeFlags;
+
+in
+
+stdenv.mkDerivation rec {
+  pname = basename;
+  inherit version cmakeFlags;
+
+  src = runCommand "${pname}-src-${version}" {} (''
+    mkdir -p "$out/llvm"
+    cp -r ${monorepoSrc}/cmake "$out"
+    cp -r ${monorepoSrc}/libcxx "$out"
+    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
+    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
+    cp -r ${monorepoSrc}/third-party "$out"
+    cp -r ${monorepoSrc}/runtimes "$out"
+  '' + lib.optionalString (cxxabi == null) ''
+    cp -r ${monorepoSrc}/libcxxabi "$out"
+  '');
+
+  outputs = [ "out" "dev" ];
+
+  patches = lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
+    # https://github.com/llvm/llvm-project/issues/64226
+    ./0001-darwin-10.12-mbstate_t-fix.patch
+  ];
+
+  postPatch = ''
+    cd runtimes
+  '';
+
+  preConfigure = lib.optionalString stdenv.hostPlatform.isMusl ''
+    patchShebangs utils/cat_files.py
+  '';
+
+  nativeBuildInputs = [ cmake ninja python3 ]
+    ++ lib.optional stdenv.isDarwin fixDarwinDylibNames
+    ++ lib.optional (cxxabi != null) lndir;
+
+  buildInputs = [ cxxabi ]
+    ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ libunwind ];
+
+  # libc++.so is a linker script which expands to multiple libraries,
+  # libc++.so.1 and libc++abi.so or the external cxxabi. ld-wrapper doesn't
+  # support linker scripts so the external cxxabi needs to be symlinked in
+  postInstall = lib.optionalString (cxxabi != null) ''
+    lndir ${lib.getDev cxxabi}/include ''${!outputDev}/include/c++/v1
+    lndir ${lib.getLib cxxabi}/lib ''${!outputLib}/lib
+  '';
+
+  passthru = {
+    isLLVM = true;
+  };
+
+  meta = llvm_meta // {
+    homepage = "https://libcxx.llvm.org/";
+    description = "C++ standard library";
+    longDescription = ''
+      libc++ is an implementation of the C++ standard library, targeting C++11,
+      C++14 and above.
+    '';
+    # "All of the code in libc++ is dual licensed under the MIT license and the
+    # UIUC License (a BSD-like license)":
+    license = with lib.licenses; [ mit ncsa ];
+  };
+}
diff --git a/pkgs/development/compilers/llvm/18/libunwind/default.nix b/pkgs/development/compilers/llvm/18/libunwind/default.nix
new file mode 100644
index 000000000000..e67823ffb85c
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/libunwind/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, llvm_meta, version
+, monorepoSrc, runCommand
+, cmake
+, ninja
+, python3
+, enableShared ? !stdenv.hostPlatform.isStatic
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libunwind";
+  inherit version;
+
+  # I am not so comfortable giving libc++ and friends the whole monorepo as
+  # requested, so I filter it to what is needed.
+  src = runCommand "${pname}-src-${version}" {} ''
+    mkdir -p "$out"
+    cp -r ${monorepoSrc}/cmake "$out"
+    cp -r ${monorepoSrc}/${pname} "$out"
+    mkdir -p "$out/libcxx"
+    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
+    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
+    mkdir -p "$out/llvm"
+    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
+    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
+    cp -r ${monorepoSrc}/runtimes "$out"
+  '';
+
+  sourceRoot = "${src.name}/runtimes";
+
+  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
+    # libcxxabi wants to link to libunwind_shared.so (?).
+    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
+  '';
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ cmake ninja python3 ];
+
+  cmakeFlags = [
+    "-DLLVM_ENABLE_RUNTIMES=libunwind"
+  ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
+
+  meta = llvm_meta // {
+    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
+    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
+    description = "LLVM's unwinder library";
+    longDescription = ''
+      The unwind library provides a family of _Unwind_* functions implementing
+      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
+      I). It is a dependency of the C++ ABI library, and sometimes is a
+      dependency of other runtimes.
+    '';
+  };
+}
diff --git a/pkgs/development/compilers/llvm/18/lld/default.nix b/pkgs/development/compilers/llvm/18/lld/default.nix
new file mode 100644
index 000000000000..24ff0933dd1d
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/lld/default.nix
@@ -0,0 +1,57 @@
+{ lib, stdenv, llvm_meta
+, buildLlvmTools
+, monorepoSrc, runCommand
+, cmake
+, ninja
+, libxml2
+, libllvm
+, version
+}:
+
+stdenv.mkDerivation rec {
+  pname = "lld";
+  inherit version;
+
+  # Blank llvm dir just so relative path works
+  src = runCommand "${pname}-src-${version}" {} ''
+    mkdir -p "$out"
+    cp -r ${monorepoSrc}/cmake "$out"
+    cp -r ${monorepoSrc}/${pname} "$out"
+    mkdir -p "$out/libunwind"
+    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
+    mkdir -p "$out/llvm"
+  '';
+
+  sourceRoot = "${src.name}/${pname}";
+
+  nativeBuildInputs = [ cmake ninja ];
+  buildInputs = [ libllvm libxml2 ];
+
+  patches = [
+    ./gnu-install-dirs.patch
+  ];
+
+  cmakeFlags = [
+    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
+  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
+  ];
+
+  # Musl's default stack size is too small for lld to be able to link Firefox.
+  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
+
+  outputs = [ "out" "lib" "dev" ];
+
+  meta = llvm_meta // {
+    homepage = "https://lld.llvm.org/";
+    description = "The LLVM linker (unwrapped)";
+    longDescription = ''
+      LLD is a linker from the LLVM project that is a drop-in replacement for
+      system linkers and runs much faster than them. It also provides features
+      that are useful for toolchain developers.
+      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
+      WebAssembly in descending order of completeness. Internally, LLD consists
+      of several different linkers.
+    '';
+  };
+}
diff --git a/pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch
new file mode 100644
index 000000000000..6c73a240ab6d
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/lld/gnu-install-dirs.patch
@@ -0,0 +1,15 @@
+diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
+index d3924f7243d4..42a7cd62281c 100644
+--- a/cmake/modules/AddLLD.cmake
++++ b/cmake/modules/AddLLD.cmake
+@@ -18,8 +18,8 @@ macro(add_lld_library name)
+     install(TARGETS ${name}
+       COMPONENT ${name}
+       ${export_to_lldtargets}
+-      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+-      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
++      LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
++      ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
+       RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ 
+     if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
diff --git a/pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch b/pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch
new file mode 100644
index 000000000000..20d35c9f3ea9
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/lldb/cpu_subtype_arm64e_replacement.patch
@@ -0,0 +1,12 @@
+diff --git a/source/Host/macosx/objcxx/HostInfoMacOSX.mm b/source/Host/macosx/objcxx/HostInfoMacOSX.mm
+--- a/source/Host/macosx/objcxx/HostInfoMacOSX.mm
++++ b/source/Host/macosx/objcxx/HostInfoMacOSX.mm
+@@ -233,7 +233,7 @@ void HostInfoMacOSX::ComputeHostArchitectureSupport(ArchSpec &arch_32,
+     len = sizeof(is_64_bit_capable);
+     ::sysctlbyname("hw.cpu64bit_capable", &is_64_bit_capable, &len, NULL, 0);
+ 
+-    if (cputype == CPU_TYPE_ARM64 && cpusubtype == CPU_SUBTYPE_ARM64E) {
++    if (cputype == CPU_TYPE_ARM64 && cpusubtype == ((cpu_subtype_t) 2)) { // CPU_SUBTYPE_ARM64E is not available in the macOS 10.12 headers
+       // The arm64e architecture is a preview. Pretend the host architecture
+       // is arm64.
+       cpusubtype = CPU_SUBTYPE_ARM64_ALL;
diff --git a/pkgs/development/compilers/llvm/18/lldb/procfs.patch b/pkgs/development/compilers/llvm/18/lldb/procfs.patch
new file mode 100644
index 000000000000..7b200e86505c
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/lldb/procfs.patch
@@ -0,0 +1,46 @@
+--- a/source/Plugins/Process/Linux/Procfs.h
++++ b/source/Plugins/Process/Linux/Procfs.h
+@@ -10,6 +10,13 @@
+ // sys/procfs.h on Android/Linux for all supported architectures.
+ 
+ #include <sys/ptrace.h>
++#include <asm/ptrace.h>
++
++// on i686 preprocessor symbols with these register names are defined as
++// numeric constants; these symbols clash with identifier names used in
++// `llvm/Support/VirtualFileSystem.h` and `llvm/ADT/SmallVector.h`
++#undef FS
++#undef CS
+ 
+ #include "lldb/lldb-types.h"
+ 
+@@ -17,23 +24,13 @@
+ 
+ #include <vector>
+ 
+-#ifdef __ANDROID__
+-#if defined(__arm64__) || defined(__aarch64__)
+-typedef unsigned long elf_greg_t;
+-typedef elf_greg_t
+-    elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))];
+-typedef struct user_fpsimd_state elf_fpregset_t;
+-#ifndef NT_FPREGSET
+-#define NT_FPREGSET NT_PRFPREG
+-#endif // NT_FPREGSET
+-#elif defined(__mips__)
+-#ifndef NT_FPREGSET
+-#define NT_FPREGSET NT_PRFPREG
+-#endif // NT_FPREGSET
+-#endif
+-#else // __ANDROID__
++#if !defined(__GLIBC__) && defined(__powerpc__)
++#define pt_regs musl_pt_regs
++#include <sys/procfs.h>
++#undef pt_regs
++#else
+ #include <sys/procfs.h>
+-#endif // __ANDROID__
++#endif
+ 
+ namespace lldb_private {
+ namespace process_linux {
diff --git a/pkgs/development/compilers/llvm/18/llvm/default.nix b/pkgs/development/compilers/llvm/18/llvm/default.nix
new file mode 100644
index 000000000000..670171a707f9
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/llvm/default.nix
@@ -0,0 +1,439 @@
+{ lib, stdenv, llvm_meta
+, pkgsBuildBuild
+, monorepoSrc
+, runCommand
+, cmake
+, darwin
+, ninja
+, python3
+, python3Packages
+, libffi
+, enableGoldPlugin ? true
+, libbfd
+, libpfm
+, libxml2
+, ncurses
+, version
+, release_version
+, zlib
+, which
+, sysctl
+, buildLlvmTools
+, debugVersion ? false
+, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl)
+  && (stdenv.hostPlatform == stdenv.buildPlatform)
+, enableManpages ? false
+, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
+, enablePFM ? stdenv.isLinux /* PFM only supports Linux */
+  # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
+  # broken for the armv7l builder
+  && !stdenv.hostPlatform.isAarch
+, enablePolly ? true
+}:
+
+let
+  inherit (lib) optional optionals optionalString;
+
+  # Used when creating a version-suffixed symlink of libLLVM.dylib
+  shortVersion = with lib;
+    concatStringsSep "." (take 1 (splitString "." release_version));
+
+  # Ordinarily we would just the `doCheck` and `checkDeps` functionality
+  # `mkDerivation` gives us to manage our test dependencies (instead of breaking
+  # out `doCheck` as a package level attribute).
+  #
+  # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
+  # particular the children it uses to do feature detection.
+  #
+  # This means that python deps we add to `checkDeps` (which the python
+  # interpreter is made aware of via `$PYTHONPATH` – populated by the python
+  # setup hook) are not picked up by `lit` which causes it to skip tests.
+  #
+  # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
+  # because this package is shadowed in `$PATH` by the regular `python3`
+  # package.
+  #
+  # So, we "manually" assemble one python derivation for the package to depend
+  # on, taking into account whether checks are enabled or not:
+  python = if doCheck then
+    # Note that we _explicitly_ ask for a python interpreter for our host
+    # platform here; the splicing that would ordinarily take care of this for
+    # us does not seem to work once we use `withPackages`.
+    let
+      checkDeps = ps: with ps; [ psutil ];
+    in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps
+  else python3;
+
+in
+
+stdenv.mkDerivation (rec {
+  pname = "llvm";
+  inherit version;
+
+  src = runCommand "${pname}-src-${version}" {} (''
+    mkdir -p "$out"
+    cp -r ${monorepoSrc}/cmake "$out"
+    cp -r ${monorepoSrc}/${pname} "$out"
+    cp -r ${monorepoSrc}/third-party "$out"
+  '' + lib.optionalString enablePolly ''
+    chmod u+w "$out/${pname}/tools"
+    cp -r ${monorepoSrc}/polly "$out/${pname}/tools"
+  '');
+
+  sourceRoot = "${src.name}/${pname}";
+
+  outputs = [ "out" "lib" "dev" "python" ];
+
+  nativeBuildInputs = [ cmake ninja python ]
+    ++ optionals enableManpages [
+    # Note: we intentionally use `python3Packages` instead of `python3.pkgs`;
+    # splicing does *not* work with the latter. (TODO: fix)
+    python3Packages.sphinx
+  ] ++ optionals (lib.versionOlder version "18" && enableManpages) [
+    python3Packages.recommonmark
+  ] ++ optionals (lib.versionAtLeast version "18" && enableManpages) [
+    python3Packages.myst-parser
+  ];
+
+  buildInputs = [ libxml2 libffi ]
+    ++ optional enablePFM libpfm; # exegesis
+
+  propagatedBuildInputs = [ ncurses zlib ];
+
+  nativeCheckInputs = [
+    which
+  ] ++ lib.optional stdenv.isDarwin sysctl;
+
+  patches = [
+    ./gnu-install-dirs.patch
+
+    # Running the tests involves invoking binaries (like `opt`) that depend on
+    # the LLVM dylibs and reference them by absolute install path (i.e. their
+    # nix store path).
+    #
+    # Because we have not yet run the install phase (we're running these tests
+    # as part of `checkPhase` instead of `installCheckPhase`) these absolute
+    # paths do not exist yet; to work around this we point the loader (`ld` on
+    # unix, `dyld` on macOS) at the `lib` directory which will later become this
+    # package's `lib` output.
+    #
+    # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib`
+    # dir but:
+    #   - this doesn't generalize well to other platforms; `lit` doesn't forward
+    #     `DYLD_LIBRARY_PATH` (macOS):
+    #     + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26
+    #   - even if `lit` forwarded this env var, we actually cannot set
+    #     `DYLD_LIBRARY_PATH` in the child processes `lit` launches because
+    #     `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for
+    #     "protected processes" (i.e. the python interpreter that runs `lit`):
+    #     https://stackoverflow.com/a/35570229
+    #   - other LLVM subprojects deal with this issue by having their `lit`
+    #     configuration set these env vars for us; it makes sense to do the same
+    #     for LLVM:
+    #     + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31
+    #
+    # !!! TODO: look into upstreaming this patch
+    ./llvm-lit-cfg-add-libs-to-dylib-path.patch
+
+    # `lit` has a mode where it executes run lines as a shell script which is
+    # constructs; this is problematic for macOS because it means that there's
+    # another process in between `lit` and the binaries being tested. As noted
+    # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our
+    # tests fail with dyld errors.
+    #
+    # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when
+    # present in the test configuration.
+    #
+    # It's not clear to me why this isn't an issue for LLVM developers running
+    # on macOS (nothing about this _seems_ nix specific)..
+    ./lit-shell-script-runner-set-dyld-library-path.patch
+  ] ++ lib.optionals enablePolly [
+    ./gnu-install-dirs-polly.patch
+
+    # Just like the `llvm-lit-cfg` patch, but for `polly`.
+    ./polly-lit-cfg-add-libs-to-dylib-path.patch
+  ];
+
+  postPatch = optionalString stdenv.isDarwin ''
+    substituteInPlace cmake/modules/AddLLVM.cmake \
+      --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \
+      --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' ""
+
+    # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick
+    # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7
+    rm test/MC/ELF/cfi-version.ll
+
+    # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`)
+    # and thus fails under the sandbox:
+    substituteInPlace unittests/TargetParser/Host.cpp \
+      --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }"
+
+    # This test tries to call the intrinsics `@llvm.roundeven.f32` and
+    # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf`
+    # and `roundeven` on macOS.
+    #
+    # However these functions are glibc specific so the test fails:
+    #   - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html
+    #   - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html
+    #
+    substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \
+      --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \
+      --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""
+
+    # fails when run in sandbox
+    substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \
+      --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure"
+  '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) ''
+    # This test fails on darwin x86_64 because `sw_vers` reports a different
+    # macOS version than what LLVM finds by reading
+    # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into
+    # the sandbox on macOS).
+    #
+    # The `sw_vers` provided by nixpkgs reports the macOS version associated
+    # with the `CoreFoundation` framework with which it was built. Because
+    # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what
+    # `sw_vers` reports is not guaranteed to match the macOS version of the host
+    # that's building this derivation.
+    #
+    # Astute readers will note that we only _patch_ this test on aarch64-darwin
+    # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright.
+    # So why does this test pass on aarch64?
+    #
+    # Well, it seems that `sw_vers` on aarch64 actually links against the _host_
+    # CoreFoundation framework instead of the nixpkgs provided one.
+    #
+    # Not entirely sure what the right fix is here. I'm assuming aarch64
+    # `sw_vers` doesn't intentionally link against the host `CoreFoundation`
+    # (still digging into how this ends up happening, will follow up) but that
+    # aside I think the more pertinent question is: should we be patching LLVM's
+    # macOS version detection logic to use `sw_vers` instead of reading host
+    # paths? This *is* a way in which details about builder machines can creep
+    # into the artifacts that are produced, affecting reproducibility, but it's
+    # not clear to me when/where/for what this even gets used in LLVM.
+    #
+    # TODO(@rrbutani): fix/follow-up
+    substituteInPlace unittests/TargetParser/Host.cpp \
+      --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"
+
+    # This test fails with a `dysmutil` crash; have not yet dug into what's
+    # going on here (TODO(@rrbutani)).
+    rm test/tools/dsymutil/ARM/obfuscated.test
+  '' + ''
+    # FileSystem permissions tests fail with various special bits
+    substituteInPlace unittests/Support/CMakeLists.txt \
+      --replace "Path.cpp" ""
+    rm unittests/Support/Path.cpp
+    substituteInPlace unittests/IR/CMakeLists.txt \
+      --replace "PassBuilderCallbacksTest.cpp" ""
+    rm unittests/IR/PassBuilderCallbacksTest.cpp
+    rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
+
+    # Fails in the presence of anti-virus software or other intrusion-detection software that
+    # modifies the atime when run. See #284056.
+    rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test
+  '' + optionalString stdenv.hostPlatform.isMusl ''
+    patch -p1 -i ${../../common/llvm/TLI-musl.patch}
+    substituteInPlace unittests/Support/CMakeLists.txt \
+      --replace "add_subdirectory(DynamicLibrary)" ""
+    rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
+    # valgrind unhappy with musl or glibc, but fails w/musl only
+    rm test/CodeGen/AArch64/wineh4.mir
+  '' + optionalString stdenv.hostPlatform.isAarch32 ''
+    # skip failing X86 test cases on 32-bit ARM
+    rm test/DebugInfo/X86/convert-debugloc.ll
+    rm test/DebugInfo/X86/convert-inlined.ll
+    rm test/DebugInfo/X86/convert-linked.ll
+    rm test/tools/dsymutil/X86/op-convert.test
+    rm test/tools/gold/X86/split-dwarf.ll
+    rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s
+    rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s
+    rm test/CodeGen/RISCV/attributes.ll
+    rm test/CodeGen/RISCV/xtheadmempair.ll
+  '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") ''
+    # Seems to require certain floating point hardware (NEON?)
+    rm test/ExecutionEngine/frem.ll
+  '' + ''
+    patchShebangs test/BugPoint/compile-custom.ll.py
+  '';
+
+  preConfigure = ''
+    # Workaround for configure flags that need to have spaces
+    cmakeFlagsArray+=(
+      -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar"
+    )
+  '';
+
+  # Defensive check: some paths (that we make symlinks to) depend on the release
+  # version, for example:
+  #  - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185
+  #
+  # So we want to sure that the version in the source matches the release
+  # version we were given.
+  #
+  # We do this check here, in the LLVM build, because it happens early.
+  postConfigure = let
+    v = lib.versions;
+    major = v.major release_version;
+    minor = v.minor release_version;
+    patch = v.patch release_version;
+  in ''
+    # $1: part, $2: expected
+    check_version() {
+      part="''${1^^}"
+      part="$(cat include/llvm/Config/llvm-config.h  | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)"
+
+      if [[ "$part" != "$2" ]]; then
+        echo >&2 \
+          "mismatch in the $1 version! we have version ${release_version}" \
+          "and expected the $1 version to be '$2'; the source has '$part' instead"
+        exit 3
+      fi
+    }
+
+    check_version major ${major}
+    check_version minor ${minor}
+    check_version patch ${patch}
+  '';
+
+  # E.g. mesa.drivers use the build-id as a cache key (see #93946):
+  LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1";
+
+  hardeningDisable = [ "trivialautovarinit" ];
+
+  cmakeBuildType = if debugVersion then "Debug" else "Release";
+
+  cmakeFlags = with stdenv; let
+    # These flags influence llvm-config's BuildVariables.inc in addition to the
+    # general build. We need to make sure these are also passed via
+    # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native
+    # will return different results from the cross llvm-config.
+    #
+    # Some flags don't need to be repassed because LLVM already does so (like
+    # CMAKE_BUILD_TYPE), others are irrelevant to the result.
+    flagsForLlvmConfig = [
+      "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm"
+      "-DLLVM_ENABLE_RTTI=ON"
+    ] ++ optionals enableSharedLibraries [
+      "-DLLVM_LINK_LLVM_DYLIB=ON"
+    ];
+  in flagsForLlvmConfig ++ [
+    "-DLLVM_INSTALL_UTILS=ON"  # Needed by rustc
+    "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}"
+    "-DLLVM_ENABLE_FFI=ON"
+    "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
+    "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
+    "-DLLVM_ENABLE_DUMP=ON"
+  ] ++ optionals stdenv.hostPlatform.isStatic [
+    # Disables building of shared libs, -fPIC is still injected by cc-wrapper
+    "-DLLVM_ENABLE_PIC=OFF"
+    "-DLLVM_BUILD_STATIC=ON"
+    "-DLLVM_LINK_LLVM_DYLIB=off"
+    # libxml2 needs to be disabled because the LLVM build system ignores its .la
+    # file and doesn't link zlib as well.
+    # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812
+    "-DLLVM_ENABLE_LIBXML2=OFF"
+  ] ++ optionals enableManpages [
+    "-DLLVM_BUILD_DOCS=ON"
+    "-DLLVM_ENABLE_SPHINX=ON"
+    "-DSPHINX_OUTPUT_MAN=ON"
+    "-DSPHINX_OUTPUT_HTML=OFF"
+    "-DSPHINX_WARNINGS_AS_ERRORS=OFF"
+  ] ++ optionals enableGoldPlugin [
+    "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include"
+  ] ++ optionals isDarwin [
+    "-DLLVM_ENABLE_LIBCXX=ON"
+    "-DCAN_TARGET_i386=false"
+  ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [
+    "-DCMAKE_CROSSCOMPILING=True"
+    "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen"
+    (
+      let
+        nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc;
+        nativeBintools = nativeCC.bintools.bintools;
+        nativeToolchainFlags = [
+          "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc"
+          "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++"
+          "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar"
+          "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip"
+          "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib"
+        ];
+        # We need to repass the custom GNUInstallDirs values, otherwise CMake
+        # will choose them for us, leading to wrong results in llvm-config-native
+        nativeInstallFlags = [
+          "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
+          "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin"
+          "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include"
+          "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib"
+          "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec"
+        ];
+      in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list="
+      + lib.concatStringsSep ";" (lib.concatLists [
+        flagsForLlvmConfig
+        nativeToolchainFlags
+        nativeInstallFlags
+      ])
+    )
+  ];
+
+  postInstall = ''
+    mkdir -p $python/share
+    mv $out/share/opt-viewer $python/share/opt-viewer
+    moveToOutput "bin/llvm-config*" "$dev"
+    substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \
+      --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \
+      --replace "$out/bin/llvm-config" "$dev/bin/llvm-config"
+    substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \
+      --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")'
+  ''
+  + optionalString (stdenv.isDarwin && enableSharedLibraries) ''
+    ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
+  ''
+  + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+    cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
+  '';
+
+  inherit doCheck;
+
+  checkTarget = "check-all";
+
+  # For the update script:
+  passthru.monorepoSrc = monorepoSrc;
+
+  requiredSystemFeatures = [ "big-parallel" ];
+  meta = llvm_meta // {
+    homepage = "https://llvm.org/";
+    description = "A collection of modular and reusable compiler and toolchain technologies";
+    longDescription = ''
+      The LLVM Project is a collection of modular and reusable compiler and
+      toolchain technologies. Despite its name, LLVM has little to do with
+      traditional virtual machines. The name "LLVM" itself is not an acronym; it
+      is the full name of the project.
+      LLVM began as a research project at the University of Illinois, with the
+      goal of providing a modern, SSA-based compilation strategy capable of
+      supporting both static and dynamic compilation of arbitrary programming
+      languages. Since then, LLVM has grown to be an umbrella project consisting
+      of a number of subprojects, many of which are being used in production by
+      a wide variety of commercial and open source projects as well as being
+      widely used in academic research. Code in the LLVM project is licensed
+      under the "Apache 2.0 License with LLVM exceptions".
+    '';
+  };
+} // lib.optionalAttrs enableManpages {
+  pname = "llvm-manpages";
+
+  propagatedBuildInputs = [];
+
+  ninjaFlags = [ "docs-llvm-man" ];
+  installTargets = [ "install-docs-llvm-man" ];
+
+  postPatch = null;
+  postInstall = null;
+
+  outputs = [ "out" ];
+
+  doCheck = false;
+
+  meta = llvm_meta // {
+    description = "man pages for LLVM ${version}";
+  };
+})
diff --git a/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch
new file mode 100644
index 000000000000..6a359bdbefde
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs-polly.patch
@@ -0,0 +1,13 @@
+--- a/tools/polly/cmake/polly_macros.cmake	2024-03-15 17:36:20.550893344 -0700
++++ b/tools/polly/cmake/polly_macros.cmake	2024-03-15 17:37:06.277332960 -0700
+@@ -45,8 +45,8 @@
+     install(TARGETS ${name}
+       COMPONENT ${name}
+       EXPORT LLVMExports
+-      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+-      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
++      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
++      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
+     add_llvm_install_targets(install-${name}
+       COMPONENT ${name})
+   endif()
diff --git a/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch
new file mode 100644
index 000000000000..8b89839490ba
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/llvm/gnu-install-dirs.patch
@@ -0,0 +1,137 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 471817d68286..c51463304159 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1010,7 +1010,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")
+   add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src
+     ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime)
+   install(TARGETS tf_xla_runtime EXPORT LLVMExports
+-    ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
++    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
+   set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime)
+   # Once we add more modules, we should handle this more automatically.
+   if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL)
+diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
+index 230620c37027..dd16cab1835e 100644
+--- a/cmake/modules/AddLLVM.cmake
++++ b/cmake/modules/AddLLVM.cmake
+@@ -876,8 +876,8 @@ macro(add_llvm_library name)
+       get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella})
+       install(TARGETS ${name}
+               ${export_to_llvmexports}
+-              LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
+-              ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
++              LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}
++              ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}
+               RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name})
+ 
+       if (NOT LLVM_ENABLE_IDE)
+@@ -2069,7 +2069,7 @@ function(llvm_install_library_symlink name dest type)
+     set(LLVM_LINK_OR_COPY copy)
+   endif()
+ 
+-  set(output_dir lib${LLVM_LIBDIR_SUFFIX})
++  set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
+   if(WIN32 AND "${type}" STREQUAL "SHARED")
+     set(output_dir "${CMAKE_INSTALL_BINDIR}")
+   endif()
+@@ -2344,16 +2344,37 @@ function(llvm_setup_rpath name)
+ 
+   if (APPLE)
+     set(_install_name_dir INSTALL_NAME_DIR "@rpath")
+-    set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
++    set(_install_rpath ${extra_libdir})
+   elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)
+     # $ORIGIN is not interpreted at link time by aix ld.
+     # Since BUILD_SHARED_LIBS is only recommended for use by developers,
+     # hardcode the rpath to build/install lib dir first in this mode.
+     # FIXME: update this when there is better solution.
+-    set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
++    set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+   elseif(UNIX)
+-    set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+-    set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
++    # Note that we add `extra_libdir` (aka `LLVM_LIBRARY_DIR` in our case) back
++    # to `_install_rpath` here.
++    #
++    # In nixpkgs we do not build and install LLVM alongside rdeps of LLVM (i.e.
++    # clang); instead LLVM is its own package and thus lands at its own nix
++    # store path. This makes it so that the default relative rpath (`../lib/`)
++    # does not point at the LLVM shared objects.
++    #
++    # More discussion here:
++    #   - https://github.com/NixOS/nixpkgs/pull/235624#discussion_r1220150329
++    #   - https://reviews.llvm.org/D146918 (16.0.5+)
++    #
++    # Note that we leave `extra_libdir` in `_build_rpath`: without FHS there is
++    # no potential that this will result in us pulling in the "wrong" LLVM.
++    # Adding this to the build rpath means we aren't forced to use
++    # `installCheckPhase` instead of `checkPhase` (i.e. binaries in the build
++    # dir, pre-install, will have the right rpath for LLVM).
++    #
++    # As noted in the differential above, an alternative solution is to have
++    # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set
++    # `CMAKE_INSTALL_RPATH`.
++    set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
++    set(_install_rpath ${extra_libdir})
+     if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
+       set_property(TARGET ${name} APPEND_STRING PROPERTY
+                    LINK_FLAGS " -Wl,-z,origin ")
+diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake
+index 891c9e6d618c..8d963f3b0069 100644
+--- a/cmake/modules/AddOCaml.cmake
++++ b/cmake/modules/AddOCaml.cmake
+@@ -147,9 +147,9 @@ function(add_ocaml_library name)
+   endforeach()
+ 
+   if( APPLE )
+-    set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")
++    set(ocaml_rpath ${LLVM_LIBRARY_DIR})
+   elseif( UNIX )
+-    set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")
++    set(ocaml_rpath ${LLVM_LIBRARY_DIR})
+   endif()
+   list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")
+ 
+diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
+index d99af79aa38e..21e794224b99 100644
+--- a/cmake/modules/CMakeLists.txt
++++ b/cmake/modules/CMakeLists.txt
+@@ -127,7 +127,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS
+   )
+ list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)
+ 
+-extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}")
++extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")
+ set(LLVM_CONFIG_LIBRARY_DIRS
+   "${LLVM_CONFIG_LIBRARY_DIR}"
+   # FIXME: Should there be other entries here?
+diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in
+index 370005cd8d7d..7e790bc52111 100644
+--- a/tools/llvm-config/BuildVariables.inc.in
++++ b/tools/llvm-config/BuildVariables.inc.in
+@@ -23,6 +23,7 @@
+ #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
+ #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
+ #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
++#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"
+ #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
+ #define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@"
+ #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
+diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
+index e86eb2b44b10..f63e207e792e 100644
+--- a/tools/llvm-config/llvm-config.cpp
++++ b/tools/llvm-config/llvm-config.cpp
+@@ -366,7 +366,11 @@ int main(int argc, char **argv) {
+       sys::fs::make_absolute(ActivePrefix, Path);
+       ActiveBinDir = std::string(Path.str());
+     }
+-    ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
++    {
++      SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX);
++      sys::fs::make_absolute(ActivePrefix, Path);
++      ActiveLibDir = std::string(Path.str());
++    }
+     {
+       SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);
+       sys::fs::make_absolute(ActivePrefix, Path);
diff --git a/pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch b/pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch
new file mode 100644
index 000000000000..e4f049f4b177
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/llvm/lit-shell-script-runner-set-dyld-library-path.patch
@@ -0,0 +1,12 @@
+--- a/utils/lit/lit/TestRunner.py	2024-03-15 17:27:53.170780798 -0700
++++ b/utils/lit/lit/TestRunner.py	2024-03-15 17:28:43.277447791 -0700
+@@ -1183,6 +1183,9 @@
+         f.write("@echo on\n")
+         f.write("\n@if %ERRORLEVEL% NEQ 0 EXIT\n".join(commands))
+     else:
++        if "DYLD_LIBRARY_PATH" in test.config.environment:
++            f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n')
++
+         for i, ln in enumerate(commands):
+             match = re.fullmatch(kPdbgRegex, ln)
+             if match:
diff --git a/pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch b/pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch
new file mode 100644
index 000000000000..d4ccb2ae9822
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch
@@ -0,0 +1,80 @@
+diff --git a/test/Unit/lit.cfg.py b/test/Unit/lit.cfg.py
+index 81e8dc04acea..479ff95681e2 100644
+--- a/test/Unit/lit.cfg.py
++++ b/test/Unit/lit.cfg.py
+@@ -3,6 +3,7 @@
+ # Configuration file for the 'lit' test runner.
+ 
+ import os
++import platform
+ import subprocess
+ 
+ import lit.formats
+@@ -55,3 +56,26 @@ if sys.platform in ["win32", "cygwin"] and os.path.isdir(config.shlibdir):
+ # Win32 may use %SYSTEMDRIVE% during file system shell operations, so propogate.
+ if sys.platform == "win32" and "SYSTEMDRIVE" in os.environ:
+     config.environment["SYSTEMDRIVE"] = os.environ["SYSTEMDRIVE"]
++
++# Add the LLVM dynamic libs to the platform-specific loader search path env var:
++#
++# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify..
++def find_shlibpath_var():
++    if platform.system() in ["Linux", "FreeBSD", "NetBSD", "OpenBSD", "SunOS"]:
++        yield "LD_LIBRARY_PATH"
++    elif platform.system() == "Darwin":
++        yield "DYLD_LIBRARY_PATH"
++    elif platform.system() == "Windows":
++        yield "PATH"
++    elif platform.system() == "AIX":
++        yield "LIBPATH"
++
++for shlibpath_var in find_shlibpath_var():
++    shlibpath = os.path.pathsep.join(
++        (config.shlibdir,
++         config.environment.get(shlibpath_var, '')))
++    config.environment[shlibpath_var] = shlibpath
++    break
++else:
++    lit_config.warning("unable to inject shared library path on '{}'"
++                       .format(platform.system()))
+diff --git a/test/lit.cfg.py b/test/lit.cfg.py
+index 75a38b4c5dad..856fc75c9d74 100644
+--- a/test/lit.cfg.py
++++ b/test/lit.cfg.py
+@@ -42,6 +42,26 @@ llvm_config.with_environment("PATH", config.llvm_tools_dir, append_path=True)
+ llvm_config.with_system_environment(
+     ["HOME", "INCLUDE", "LIB", "TMP", "TEMP"])
+ 
++# Add the LLVM dynamic libs to the platform-specific loader search path env var:
++#
++# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify..
++def find_shlibpath_var():
++    if platform.system() in ["Linux", "FreeBSD", "NetBSD", "OpenBSD", "SunOS"]:
++        yield "LD_LIBRARY_PATH"
++    elif platform.system() == "Darwin":
++        yield "DYLD_LIBRARY_PATH"
++    elif platform.system() == "Windows":
++        yield "PATH"
++    elif platform.system() == "AIX":
++        yield "LIBPATH"
++
++for shlibpath_var in find_shlibpath_var():
++    shlibpath = config.llvm_shlib_dir
++    llvm_config.with_environment(shlibpath_var, shlibpath, append_path = True)
++    break
++else:
++    lit_config.warning("unable to inject shared library path on '{}'"
++                       .format(platform.system()))
+ 
+ # Set up OCAMLPATH to include newly built OCaml libraries.
+ top_ocaml_lib = os.path.join(config.llvm_lib_dir, "ocaml")
+@@ -318,7 +338,7 @@ def have_cxx_shared_library():
+ 
+     try:
+         readobj_cmd = subprocess.Popen(
+-            [readobj_exe, "--needed-libs", readobj_exe], stdout=subprocess.PIPE
++            [readobj_exe, "--needed-libs", readobj_exe], stdout=subprocess.PIPE, env=config.environment
+         )
+     except OSError:
+         print("could not exec llvm-readobj")
+
diff --git a/pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch b/pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch
new file mode 100644
index 000000000000..1354ad267314
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/llvm/polly-lit-cfg-add-libs-to-dylib-path.patch
@@ -0,0 +1,24 @@
+diff --git a/tools/polly/test/lit.cfg b/tools/polly/test/lit.cfg
+index 41e3a589c61e..09f3b17498b0 100644
+--- a/tools/polly/test/lit.cfg
++++ b/tools/polly/test/lit.cfg
+@@ -36,9 +36,17 @@ base_paths = [config.llvm_tools_dir, config.environment['PATH']]
+ path = os.path.pathsep.join(base_paths + config.extra_paths)
+ config.environment['PATH'] = path
+ 
++# (Copied from polly/test/Unit/lit.cfg)
++if platform.system() == 'Darwin':
++    shlibpath_var = 'DYLD_LIBRARY_PATH'
++elif platform.system() == 'Windows':
++    shlibpath_var = 'PATH'
++else:
++    shlibpath_var = 'LD_LIBRARY_PATH'
++
+ path = os.path.pathsep.join((config.llvm_libs_dir,
+-                              config.environment.get('LD_LIBRARY_PATH','')))
+-config.environment['LD_LIBRARY_PATH'] = path
++                              config.environment.get(shlibpath_var,'')))
++config.environment[shlibpath_var] = path
+ 
+ llvm_config.use_default_substitutions()
+ 
diff --git a/pkgs/development/compilers/llvm/18/openmp/default.nix b/pkgs/development/compilers/llvm/18/openmp/default.nix
new file mode 100644
index 000000000000..e1c3c2379af2
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/openmp/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, stdenv
+, llvm_meta
+, monorepoSrc
+, runCommand
+, cmake
+, ninja
+, llvm
+, targetLlvm
+, lit
+, clang-unwrapped
+, perl
+, pkg-config
+, xcbuild
+, version
+}:
+
+stdenv.mkDerivation rec {
+  pname = "openmp";
+  inherit version;
+
+  src = runCommand "${pname}-src-${version}" {} ''
+    mkdir -p "$out"
+    cp -r ${monorepoSrc}/cmake "$out"
+    cp -r ${monorepoSrc}/${pname} "$out"
+  '';
+
+  sourceRoot = "${src.name}/${pname}";
+
+  patches = [
+    ./fix-find-tool.patch
+    ./run-lit-directly.patch
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
+  buildInputs = [
+    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
+  ];
+
+  nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
+
+  # Unsup:Pass:XFail:Fail
+  # 26:267:16:8
+  doCheck = false;
+  checkTarget = "check-openmp";
+
+  preCheck = ''
+    patchShebangs ../tools/archer/tests/deflake.bash
+  '';
+
+  cmakeFlags = [
+    "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
+    "-DOPT_TOOL=${llvm}/bin/opt"
+    "-DLINK_TOOL=${llvm}/bin/llvm-link"
+  ];
+
+  meta = llvm_meta // {
+    homepage = "https://openmp.llvm.org/";
+    description = "Support for the OpenMP language";
+    longDescription = ''
+      The OpenMP subproject of LLVM contains the components required to build an
+      executable OpenMP program that are outside the compiler itself.
+      Contains the code for the runtime library against which code compiled by
+      "clang -fopenmp" must be linked before it can run and the library that
+      supports offload to target devices.
+    '';
+    # "All of the code is dual licensed under the MIT license and the UIUC
+    # License (a BSD-like license)":
+    license = with lib.licenses; [ mit ncsa ];
+  };
+}
diff --git a/pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch b/pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch
new file mode 100644
index 000000000000..b7f51196f7ba
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/openmp/fix-find-tool.patch
@@ -0,0 +1,17 @@
+diff --git a/libomptarget/DeviceRTL/CMakeLists.txt b/libomptarget/DeviceRTL/CMakeLists.txt
+index 630947abec7e..9f032dc7bd3f 100644
+--- a/libomptarget/DeviceRTL/CMakeLists.txt
++++ b/libomptarget/DeviceRTL/CMakeLists.txt
+@@ -27,10 +27,10 @@ endif()
+ if (LLVM_DIR)
+   # Builds that use pre-installed LLVM have LLVM_DIR set.
+   # A standalone or LLVM_ENABLE_RUNTIMES=openmp build takes this route
+-  find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
++  find_program(CLANG_TOOL clang PATHS ${LLVM_TOOLS_BINARY_DIR})
+   find_program(PACKAGER_TOOL clang-offload-packager PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
+   find_program(LINK_TOOL llvm-link PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
+-  find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
++  find_program(OPT_TOOL opt PATHS ${LLVM_TOOLS_BINARY_DIR})
+   if ((NOT CLANG_TOOL) OR (NOT LINK_TOOL) OR (NOT OPT_TOOL) OR (NOT PACKAGER_TOOL))
+     libomptarget_say("Not building DeviceRTL. Missing clang: ${CLANG_TOOL}, llvm-link: ${LINK_TOOL}, opt: ${OPT_TOOL}, or clang-offload-packager: ${PACKAGER_TOOL}")
+     return()
diff --git a/pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch b/pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/pkgs/development/compilers/llvm/18/openmp/run-lit-directly.patch
diff --git a/pkgs/development/compilers/llvm/git/clang/default.nix b/pkgs/development/compilers/llvm/git/clang/default.nix
index 01b33c540ca2..1e777c6132e4 100644
--- a/pkgs/development/compilers/llvm/git/clang/default.nix
+++ b/pkgs/development/compilers/llvm/git/clang/default.nix
@@ -70,9 +70,6 @@ let
     postInstall = ''
       ln -sv $out/bin/clang $out/bin/cpp
 
-      mkdir -p $lib/lib/clang
-      mv $lib/lib/${lib.versions.major version} $lib/lib/clang/${lib.versions.major version}
-
       # Move libclang to 'lib' output
       moveToOutput "lib/libclang.*" "$lib"
       moveToOutput "lib/libclang-cpp.*" "$lib"
diff --git a/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch
index cc8737f35343..9517df973ad0 100644
--- a/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch
+++ b/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch
@@ -1,30 +1,3 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index f7936d72e088..a362fa49b534 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -31,7 +31,21 @@ if(CLANG_BUILT_STANDALONE)
-   find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}")
-   list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
- 
--  # Turn into CACHE PATHs for overwritting
-+  # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets
-+  # LLVM_CONFIG.
-+  if (NOT LLVM_CONFIG_FOUND)
-+    # Pull values from LLVMConfig.cmake.  We can drop this once the llvm-config
-+    # path is removed.
-+    set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
-+    set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}")
-+    # N.B. this is just a default value, the CACHE PATHs below can be overriden.
-+    set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm")
-+    set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}")
-+    set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}")
-+  else()
-+    set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}")
-+  endif()
-+
-   set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
-   set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree")
-   set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree")
 diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
 index 75b0080f6715..c895b884cd27 100644
 --- a/cmake/modules/AddClang.cmake
@@ -48,7 +21,7 @@ index f2b0c5cddcbb..52f37fc368ce 100644
  add_header_target("utility-resource-headers" ${utility_files})
  
  get_clang_resource_dir(header_install_dir SUBDIR include)
-+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${CLANG_VERSION_MAJOR}/include)
++set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include)
  
  #############################################################
  # Install rules for the catch-all clang-resource-headers target
diff --git a/pkgs/development/compilers/llvm/git/compiler-rt/default.nix b/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
index 51f4e95ef2b5..f51316beb570 100644
--- a/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
+++ b/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
@@ -87,12 +87,9 @@ stdenv.mkDerivation {
 
   patches = [
     ./X86-support-extension.patch # Add support for i486 i586 i686 by reusing i386 config
-    ./gnu-install-dirs.patch
     # ld-wrapper dislikes `-rpath-link //nix/store`, so we normalize away the
     # extra `/`.
     ./normalize-var.patch
-    # Prevent a compilation error on darwin
-    ./darwin-targetconditionals.patch
     # See: https://github.com/NixOS/nixpkgs/pull/186575
     ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
     # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893
@@ -111,6 +108,8 @@ stdenv.mkDerivation {
     substituteInPlace cmake/config-ix.cmake \
       --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)'
   '' + lib.optionalString (useLLVM && !haveLibc) ''
+    substituteInPlace lib/builtins/aarch64/sme-libc-routines.c \
+      --replace "<stdlib.h>" "<stddef.h>"
     substituteInPlace lib/builtins/int_util.c \
       --replace "#include <stdlib.h>" ""
     substituteInPlace lib/builtins/clear_cache.c \
diff --git a/pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch
deleted file mode 100644
index f3b1f63a7d71..000000000000
--- a/pkgs/development/compilers/llvm/git/compiler-rt/gnu-install-dirs.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake
-index 8a6219568b3f..30ee68a47ccf 100644
---- a/cmake/base-config-ix.cmake
-+++ b/cmake/base-config-ix.cmake
-@@ -100,13 +100,13 @@ endif()
- if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
-   set(COMPILER_RT_OUTPUT_LIBRARY_DIR
-     ${COMPILER_RT_OUTPUT_DIR}/lib)
--  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
-+  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}")
-   set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
-     "Path where built compiler-rt libraries should be installed.")
- else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
-   set(COMPILER_RT_OUTPUT_LIBRARY_DIR
-     ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
--  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
-+  extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}/${COMPILER_RT_OS_DIR}")
-   set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
-     "Path where built compiler-rt libraries should be installed.")
- endif()
diff --git a/pkgs/development/compilers/llvm/git/default.nix b/pkgs/development/compilers/llvm/git/default.nix
index 6ebb2ea9fcc2..80cff85372d0 100644
--- a/pkgs/development/compilers/llvm/git/default.nix
+++ b/pkgs/development/compilers/llvm/git/default.nix
@@ -17,15 +17,20 @@
     else pkgs.bintools
 , darwin
 # LLVM release information; specify one of these but not both:
-, gitRelease ? null
+, gitRelease ? {
+    version = "19.0.0-git";
+    rev = "65058a8d732c3c41664a4dad1a1ae2a504d5c98e";
+    rev-version = "19.0.0-unstable-2024-03-16";
+    sha256 = "sha256-xV33kx/8OZ2KLtaz25RmudDrlIX7nScauTykf87jyTE=";
+}
   # i.e.:
   # {
   #   version = /* i.e. "15.0.0" */;
   #   rev = /* commit SHA */;
-  #   rev-version = /* human readable version; i.e. "unstable-2022-26-07" */;
+  #   rev-version = /* human readable version; i.e. "15.0.0-unstable-2022-07-26" */;
   #   sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */;
   # }
-, officialRelease ? { version = "18.1.0-rc4"; sha256 = "sha256-fVpwewbjoPMPslIEZ+WAtaQ+YKc0XWGl8EbP/TbQb8o="; }
+, officialRelease ? null
   # i.e.:
   # {
   #   version = /* i.e. "15.0.0" */;
diff --git a/pkgs/development/compilers/llvm/git/libcxx/default.nix b/pkgs/development/compilers/llvm/git/libcxx/default.nix
index 4e3404dbe194..d6c304c0b476 100644
--- a/pkgs/development/compilers/llvm/git/libcxx/default.nix
+++ b/pkgs/development/compilers/llvm/git/libcxx/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, llvm_meta
-, monorepoSrc, runCommand, fetchpatch
+, monorepoSrc, runCommand
 , cmake, lndir, ninja, python3, fixDarwinDylibNames, version
 , cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else null
 , libcxxrt, libunwind
@@ -19,11 +19,11 @@ let
   # Note: useLLVM is likely false for Darwin but true under pkgsLLVM
   useLLVM = stdenv.hostPlatform.useLLVM or false;
 
-  cxxabiCMakeFlags = lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [
-    "-DLIBCXXABI_USE_COMPILER_RT=ON"
-    "-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
-  ] ++ lib.optionals (lib.versionAtLeast version "18" && !(useLLVM && !stdenv.hostPlatform.isWasm)) [
+  cxxabiCMakeFlags = [
     "-DLIBCXXABI_USE_LLVM_UNWINDER=OFF"
+  ] ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [
+    "-DLIBCXXABI_ADDITIONAL_LIBRARIES=unwind"
+    "-DLIBCXXABI_USE_COMPILER_RT=ON"
   ] ++ lib.optionals stdenv.hostPlatform.isWasm [
     "-DLIBCXXABI_ENABLE_THREADS=OFF"
     "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF"
@@ -87,18 +87,6 @@ stdenv.mkDerivation rec {
   patches = lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
     # https://github.com/llvm/llvm-project/issues/64226
     ./0001-darwin-10.12-mbstate_t-fix.patch
-  ] ++ lib.optionals (cxxabi == null && lib.versionAtLeast version "18") [
-    # Allow building libcxxabi alone when using LLVM unwinder
-    (fetchpatch {
-      url = "https://github.com/llvm/llvm-project/commit/77610dd10454e87bb387040d2b51100a17ac5755.patch";
-      revert = true;
-      hash = "sha256-jFbC3vBY3nKfjknJ7UzaPyoy0iSYdD3+jUmOFeOaVcA=";
-    })
-    (fetchpatch {
-      url = "https://github.com/llvm/llvm-project/commit/48e5b5ea92674ded69b998cf35724d9012c0f57d.patch";
-      revert = true;
-      hash = "sha256-WN63L4T3GxVozPZb6kx21AgNe4rwwSUOeeryIGsvQYY=";
-    })
   ];
 
   postPatch = ''
diff --git a/pkgs/development/compilers/llvm/git/libunwind/default.nix b/pkgs/development/compilers/llvm/git/libunwind/default.nix
index a3c8e2594f5a..e67823ffb85c 100644
--- a/pkgs/development/compilers/llvm/git/libunwind/default.nix
+++ b/pkgs/development/compilers/llvm/git/libunwind/default.nix
@@ -27,15 +27,6 @@ stdenv.mkDerivation rec {
 
   sourceRoot = "${src.name}/runtimes";
 
-  prePatch = ''
-    cd ../${pname}
-    chmod -R u+w .
-  '';
-
-  postPatch = ''
-    cd ../runtimes
-  '';
-
   postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
     # libcxxabi wants to link to libunwind_shared.so (?).
     ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
diff --git a/pkgs/development/compilers/llvm/git/lld/default.nix b/pkgs/development/compilers/llvm/git/lld/default.nix
index cc18aee76a44..24ff0933dd1d 100644
--- a/pkgs/development/compilers/llvm/git/lld/default.nix
+++ b/pkgs/development/compilers/llvm/git/lld/default.nix
@@ -24,13 +24,13 @@ stdenv.mkDerivation rec {
 
   sourceRoot = "${src.name}/${pname}";
 
+  nativeBuildInputs = [ cmake ninja ];
+  buildInputs = [ libllvm libxml2 ];
+
   patches = [
     ./gnu-install-dirs.patch
   ];
 
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libllvm libxml2 ];
-
   cmakeFlags = [
     "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
   ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
diff --git a/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch
index 86e76f4a16d8..6c73a240ab6d 100644
--- a/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch
+++ b/pkgs/development/compilers/llvm/git/lld/gnu-install-dirs.patch
@@ -1,34 +1,3 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3d6225646fe6..9b5d0b15af13 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -33,10 +33,22 @@ if(LLD_BUILT_STANDALONE)
-   find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}")
-   list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
- 
--  # Turn into CACHE PATHs for overwriting
--  set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
--  set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}" CACHE PATH "Path to LLVM build tree")
--  set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH "Path to LLVM source tree")
-+  # We can't check LLVM_CONFIG here, because find_package(LLVM ...) also sets
-+  # LLVM_CONFIG.
-+  if (NOT LLVM_CONFIG_FOUND)
-+    # Pull values from LLVMConfig.cmake.  We can drop this once the llvm-config
-+    # path is removed.
-+    set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
-+    set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}")
-+    # N.B. this is just a default value, the CACHE PATHs below can be overridden.
-+    set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm")
-+  else()
-+    set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}")
-+  endif()
-+
-+  set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed")
-+  set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree")
-+  set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree")
- 
-   find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR}
-     NO_DEFAULT_PATH)
 diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
 index d3924f7243d4..42a7cd62281c 100644
 --- a/cmake/modules/AddLLD.cmake
diff --git a/pkgs/development/compilers/llvm/git/llvm/default.nix b/pkgs/development/compilers/llvm/git/llvm/default.nix
index b8715228ab1c..670171a707f9 100644
--- a/pkgs/development/compilers/llvm/git/llvm/default.nix
+++ b/pkgs/development/compilers/llvm/git/llvm/default.nix
@@ -179,6 +179,10 @@ stdenv.mkDerivation (rec {
     substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \
       --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \
       --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""
+
+    # fails when run in sandbox
+    substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \
+      --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure"
   '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) ''
     # This test fails on darwin x86_64 because `sw_vers` reports a different
     # macOS version than what LLVM finds by reading
@@ -382,7 +386,6 @@ stdenv.mkDerivation (rec {
       --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")'
   ''
   + optionalString (stdenv.isDarwin && enableSharedLibraries) ''
-    ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
     ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
   ''
   + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
diff --git a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch
index 442ebddad3f6..6a359bdbefde 100644
--- a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch
+++ b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs-polly.patch
@@ -1,12 +1,6 @@
-This is the one remaining Polly install dirs related change that hasn't made it
-into upstream yet; previously this patch file also included:
-https://reviews.llvm.org/D117541
-
-diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake
-index 518a09b45a42..bd9d6f5542ad 100644
---- a/tools/polly/cmake/polly_macros.cmake
-+++ b/tools/polly/cmake/polly_macros.cmake
-@@ -45,8 +45,8 @@ macro(add_polly_library name)
+--- a/tools/polly/cmake/polly_macros.cmake	2024-03-15 17:36:20.550893344 -0700
++++ b/tools/polly/cmake/polly_macros.cmake	2024-03-15 17:37:06.277332960 -0700
+@@ -45,8 +45,8 @@
      install(TARGETS ${name}
        COMPONENT ${name}
        EXPORT LLVMExports
diff --git a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch
index e2122ebf603d..8b89839490ba 100644
--- a/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch
+++ b/pkgs/development/compilers/llvm/git/llvm/gnu-install-dirs.patch
@@ -40,7 +40,7 @@ index 230620c37027..dd16cab1835e 100644
    if (APPLE)
      set(_install_name_dir INSTALL_NAME_DIR "@rpath")
 -    set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
-+    set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
++    set(_install_rpath ${extra_libdir})
    elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)
      # $ORIGIN is not interpreted at link time by aix ld.
      # Since BUILD_SHARED_LIBS is only recommended for use by developers,
@@ -72,8 +72,8 @@ index 230620c37027..dd16cab1835e 100644
 +    # As noted in the differential above, an alternative solution is to have
 +    # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set
 +    # `CMAKE_INSTALL_RPATH`.
-+    set(_build_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
-+    set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
++    set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
++    set(_install_rpath ${extra_libdir})
      if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
        set_property(TARGET ${name} APPEND_STRING PROPERTY
                     LINK_FLAGS " -Wl,-z,origin ")
@@ -86,10 +86,10 @@ index 891c9e6d618c..8d963f3b0069 100644
  
    if( APPLE )
 -    set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")
-+    set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
++    set(ocaml_rpath ${LLVM_LIBRARY_DIR})
    elseif( UNIX )
 -    set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")
-+    set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
++    set(ocaml_rpath ${LLVM_LIBRARY_DIR})
    endif()
    list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")
  
diff --git a/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch b/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch
index 82b7b21c55fb..e4f049f4b177 100644
--- a/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch
+++ b/pkgs/development/compilers/llvm/git/llvm/lit-shell-script-runner-set-dyld-library-path.patch
@@ -1,17 +1,12 @@
-diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
-index 0242e0b75af3..d732011306f7 100644
---- a/utils/lit/lit/TestRunner.py
-+++ b/utils/lit/lit/TestRunner.py
-@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
-             f.write('@echo off\n')
-         f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))
+--- a/utils/lit/lit/TestRunner.py	2024-03-15 17:27:53.170780798 -0700
++++ b/utils/lit/lit/TestRunner.py	2024-03-15 17:28:43.277447791 -0700
+@@ -1183,6 +1183,9 @@
+         f.write("@echo on\n")
+         f.write("\n@if %ERRORLEVEL% NEQ 0 EXIT\n".join(commands))
      else:
-+        # This env var is *purged* when invoking subprocesses so we have to
-+        # manually set it from within the bash script in order for the commands
-+        # in run lines to see this var:
 +        if "DYLD_LIBRARY_PATH" in test.config.environment:
 +            f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n')
 +
          for i, ln in enumerate(commands):
-             match = re.match(kPdbgRegex, ln)
+             match = re.fullmatch(kPdbgRegex, ln)
              if match:
diff --git a/pkgs/development/compilers/llvm/git/openmp/default.nix b/pkgs/development/compilers/llvm/git/openmp/default.nix
index d51335436ad2..e1c3c2379af2 100644
--- a/pkgs/development/compilers/llvm/git/openmp/default.nix
+++ b/pkgs/development/compilers/llvm/git/openmp/default.nix
@@ -29,7 +29,6 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./fix-find-tool.patch
-    ./gnu-install-dirs.patch
     ./run-lit-directly.patch
   ];
 
diff --git a/pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch
deleted file mode 100644
index 0d0d4130c761..000000000000
--- a/pkgs/development/compilers/llvm/git/openmp/gnu-install-dirs.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b6ddbe90516d..311ab1d50e7f 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD)
-   set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING
-     "Suffix of lib installation directory, e.g. 64 => lib64")
-   # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.
--  set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}" CACHE STRING
-+  set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}" CACHE STRING
-       "Path where built OpenMP libraries should be installed.")
- 
-   # Group test settings.
-@@ -47,7 +47,7 @@ if (OPENMP_STANDALONE_BUILD)
- else()
-   set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR})
-   # If building in tree, we honor the same install suffix LLVM uses.
--  set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}" CACHE STRING
-+  set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" CACHE STRING
-       "Path where built OpenMP libraries should be installed.")
- 
-   if (NOT MSVC)
diff --git a/pkgs/development/compilers/llvm/update-git.py b/pkgs/development/compilers/llvm/update-git.py
index b5e900df502b..9be43e8e1afb 100755
--- a/pkgs/development/compilers/llvm/update-git.py
+++ b/pkgs/development/compilers/llvm/update-git.py
@@ -43,7 +43,7 @@ def get_current_revision():
     """Get the current revision of llvmPackages_git."""
     with open(DEFAULT_NIX) as f:
         for line in f:
-            rev = re.search(r'^  rev = "(.*)";', line)
+            rev = re.search(r'^    rev = "(.*)";', line)
             if rev:
                 return rev.group(1)
     sys.exit(1)
@@ -75,11 +75,11 @@ hash = nix_prefetch_url(f'https://github.com/llvm/llvm-project/archive/{commit["
 print('Updating default.nix...')
 with fileinput.FileInput(DEFAULT_NIX, inplace=True) as f:
     for line in f:
-        if match := re.search(r'^  rev-version = "unstable-(.+)";', line):
+        if match := re.search(r'^    rev-version = "unstable-(.+)";', line):
                 old_date = match.group(1)
-        result = re.sub(r'^  release_version = ".+";', f'  release_version = "{release_version}";', line)
-        result = re.sub(r'^  rev = ".*";', f'  rev = "{commit["sha"]}";', result)
-        result = re.sub(r'^  rev-version = ".+";', f'  rev-version = "{version}";', result)
+        result = re.sub(r'^    version = ".+";', f'    version = "{release_version}";', line)
+        result = re.sub(r'^    rev = ".*";', f'    rev = "{commit["sha"]}";', result)
+        result = re.sub(r'^    rev-version = ".+";', f'    rev-version = "{version}";', result)
         result = re.sub(r'^    sha256 = ".+";', f'    sha256 = "{hash}";', result)
         print(result, end='')
 # Commit the result:
diff --git a/pkgs/development/compilers/ocaml/5.2.nix b/pkgs/development/compilers/ocaml/5.2.nix
new file mode 100644
index 000000000000..26d77f63044d
--- /dev/null
+++ b/pkgs/development/compilers/ocaml/5.2.nix
@@ -0,0 +1,9 @@
+import ./generic.nix {
+  major_version = "5";
+  minor_version = "2";
+  patch_version = "0-beta1";
+  src = fetchTarball {
+    url = "https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~beta1.tar.xz";
+    sha256 = "sha256:0prf87a41k2y1znnh2pjkggrvhh5cihj68sxqrjn162889rf7wam";
+  };
+}
diff --git a/pkgs/development/coq-modules/HoTT/default.nix b/pkgs/development/coq-modules/HoTT/default.nix
index 970591264d73..426880940070 100644
--- a/pkgs/development/coq-modules/HoTT/default.nix
+++ b/pkgs/development/coq-modules/HoTT/default.nix
@@ -6,7 +6,7 @@ mkCoqDerivation {
   owner = "HoTT";
   inherit version;
   defaultVersion = with lib.versions; lib.switch coq.coq-version [
-    { case = range "8.14" "8.18"; out = coq.coq-version; }
+    { case = range "8.14" "8.19"; out = coq.coq-version; }
   ] null;
   releaseRev = v: "V${v}";
   release."8.14".sha256 = "sha256-7kXk2pmYsTNodHA+Qts3BoMsewvzmCbYvxw9Sgwyvq0=";
@@ -14,6 +14,7 @@ mkCoqDerivation {
   release."8.16".sha256 = "sha256-xcEbz4ZQ+U7mb0SEJopaczfoRc2GSgF2BGzUSWI0/HY=";
   release."8.17".sha256 = "sha256-GjTUpzL9UzJm4C2ilCaYEufLG3hcj7rJPc5Op+OMal8=";
   release."8.18".sha256 = "sha256-URoUoQOsG0432wg9i6pTRomWQZ+ewutq2+V29TBrVzc=";
+  release."8.19".sha256 = "sha256-igG3mhR6uPXV+SCtPH9PBw/eAtTFFry6HPT5ypWj3tQ=";
 
   # versions of HoTT for Coq 8.17 and onwards will use dune
   # opam-name = if lib.versions.isLe "8.17" coq.coq-version then "coq-hott" else null;
diff --git a/pkgs/development/coq-modules/dpdgraph/default.nix b/pkgs/development/coq-modules/dpdgraph/default.nix
index dac3fb2b74df..905dbf1377b6 100644
--- a/pkgs/development/coq-modules/dpdgraph/default.nix
+++ b/pkgs/development/coq-modules/dpdgraph/default.nix
@@ -8,6 +8,7 @@ mkCoqDerivation {
   repo = "coq-dpdgraph";
   inherit version;
   defaultVersion = lib.switch coq.coq-version [
+    { case = "8.19"; out = "1.0+8.19"; }
     { case = "8.18"; out = "1.0+8.18"; }
     { case = "8.17"; out = "1.0+8.17"; }
     { case = "8.16"; out = "1.0+8.16"; }
@@ -22,6 +23,7 @@ mkCoqDerivation {
     { case = "8.7";  out = "0.6.2"; }
   ] null;
 
+  release."1.0+8.19".sha256 = "sha256-L1vjEydYiwDFTXES3sgfdaO/D50AbTJKBXUKUCgbpto=";
   release."1.0+8.18".sha256 = "sha256-z14MI1VSYzPqmF1PqDXzymXWRMYoTlQAfR/P3Pdf7fI=";
   release."1.0+8.17".sha256 = "sha256-gcvL3vseLKEF9xinT0579jXBBaA5E3rJ5KaU8RfKtm4=";
   release."1.0+8.16".sha256 = "sha256-xy4xcVHaD1OHBdGUzUy3SeZnHtOf1+UIh6YjUYFINm0=";
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix
index 9897a6f2be0c..4d83fac79a5e 100644
--- a/pkgs/development/haskell-modules/configuration-nix.nix
+++ b/pkgs/development/haskell-modules/configuration-nix.nix
@@ -305,7 +305,13 @@ self: super: builtins.intersectAttrs super {
   ghc-debug-brick  = enableSeparateBinOutput super.ghc-debug-brick;
   nixfmt  = enableSeparateBinOutput super.nixfmt;
   calligraphy = enableSeparateBinOutput super.calligraphy;
-  niv = enableSeparateBinOutput (self.generateOptparseApplicativeCompletions [ "niv" ] super.niv);
+  niv = overrideCabal (drv: {
+      buildTools = (drv.buildTools or []) ++ [ pkgs.buildPackages.makeWrapper ];
+      postInstall = ''
+        wrapProgram ''${!outputBin}/bin/niv --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nix ]}
+      '';
+    })
+    (enableSeparateBinOutput (self.generateOptparseApplicativeCompletions [ "niv" ] super.niv));
   ghcid = enableSeparateBinOutput super.ghcid;
   ormolu = self.generateOptparseApplicativeCompletions [ "ormolu" ] (enableSeparateBinOutput super.ormolu);
   hnix = self.generateOptparseApplicativeCompletions [ "hnix" ] super.hnix;
diff --git a/pkgs/development/interpreters/expr/default.nix b/pkgs/development/interpreters/expr/default.nix
index 4a1dfd8d4f47..20ec87bb53fd 100644
--- a/pkgs/development/interpreters/expr/default.nix
+++ b/pkgs/development/interpreters/expr/default.nix
@@ -5,18 +5,18 @@
 
 buildGoModule rec {
   pname = "expr";
-  version = "1.16.2";
+  version = "1.16.3";
 
   src = fetchFromGitHub {
     owner = "antonmedv";
     repo = "expr";
     rev = "v${version}";
-    hash = "sha256-U9DlgC3iuYry99A1O5E737680mq1TCf2M4ZYTytm56k=";
+    hash = "sha256-XTI4TPViNQUPrIPZRWcaxFpkqMUOdGN162f+deFNRR0=";
   };
 
   sourceRoot = "${src.name}/repl";
 
-  vendorHash = "sha256-olTmfSKLbkH95ArMHJWac7aw+DNKRyw4z+oGvW9j4tw=";
+  vendorHash = "sha256-ZIF0uCGrzs1nn06ouF/eJY1adOw8diAjMIhygZhrXuM=";
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/pkgs/development/libraries/assimp/default.nix b/pkgs/development/libraries/assimp/default.nix
index 654935391602..8019c6cc943f 100644
--- a/pkgs/development/libraries/assimp/default.nix
+++ b/pkgs/development/libraries/assimp/default.nix
@@ -26,8 +26,6 @@ stdenv.mkDerivation rec {
   env.NIX_CFLAGS_COMPILE = toString ([
     # Needed with GCC 12
     "-Wno-error=array-bounds"
-  ] ++ lib.optionals stdenv.hostPlatform.isRiscV [
-    "-Wno-error=free-nonheap-object"
   ]);
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/ctranslate2/default.nix b/pkgs/development/libraries/ctranslate2/default.nix
index c7876a98bd54..029e1cc8d3eb 100644
--- a/pkgs/development/libraries/ctranslate2/default.nix
+++ b/pkgs/development/libraries/ctranslate2/default.nix
@@ -24,13 +24,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "ctranslate2";
-  version = "4.0.0";
+  version = "4.1.1";
 
   src = fetchFromGitHub {
     owner = "OpenNMT";
     repo = "CTranslate2";
     rev = "v${version}";
-    hash = "sha256-pySnkDnV41rqr4OcNonPtSgv4AJYcF5vtkBg6Ad/IvU=";
+    hash = "sha256-vA1KnHRxIX0lYUfwXTbxjnrrBjFmqp2kwpxBNorVf0Y=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/libraries/libaec/default.nix b/pkgs/development/libraries/libaec/default.nix
index 5bc6ad6c5f2e..cd816329a51a 100644
--- a/pkgs/development/libraries/libaec/default.nix
+++ b/pkgs/development/libraries/libaec/default.nix
@@ -4,14 +4,14 @@
 
 stdenv.mkDerivation rec {
   pname = "libaec";
-  version  = "1.1.2";
+  version  = "1.1.3";
 
   src = fetchFromGitLab {
     domain = "gitlab.dkrz.de";
     owner = "k202009";
     repo = "libaec";
     rev = "v${version}";
-    sha256 = "sha256-mmiPpfUZE7W6Hzalr/tcJUFQe5kF4dYM1uZShjBsoVA=";
+    sha256 = "sha256-4WS3l79v9CTFBLuJmNMMK7RRNPLSa5KYID3W4aGMTuE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/libdwarf/20210528.nix b/pkgs/development/libraries/libdwarf/20210528.nix
deleted file mode 100644
index 25d14de99ae2..000000000000
--- a/pkgs/development/libraries/libdwarf/20210528.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ callPackage, zlib, libelf }:
-callPackage ./common.nix rec {
-  version = "20210528";
-  url = "https://www.prevanders.net/libdwarf-${version}.tar.gz";
-  hash = "sha512-4PnIhVQFPubBsTM5YIkRieeCDEpN3DArfmN1Skzc/CrLG0tgg6ci0SBKdemU//NAHswlG4w7JAkPjLQEbZD4cA==";
-  buildInputs = [ zlib libelf ];
-  knownVulnerabilities = [ "CVE-2022-32200" "CVE-2022-39170" ];
-}
diff --git a/pkgs/development/libraries/libressl/default.nix b/pkgs/development/libraries/libressl/default.nix
index 6ab33b9e4ccf..eda75bf0b25f 100644
--- a/pkgs/development/libraries/libressl/default.nix
+++ b/pkgs/development/libraries/libressl/default.nix
@@ -113,5 +113,13 @@ in {
   libressl_3_8 = generic {
     version = "3.8.3";
     hash = "sha256-pl9A4+9uPJRRyDGObyxFTDZ+Z/CcDN4YSXMaTW7McnI=";
+
+    patches = [
+      (fetchpatch {
+        name = "libtls-pkg-config-static.patch";
+        url = "https://github.com/libressl/portable/commit/f7a0f40d52b994d0bca0eacd88b39f71e447c5d9.patch";
+        hash = "sha256-2ly6lsIdoV/riVqDViFXDP7nkZ/RUatEdiaSudQKtz0=";
+      })
+    ];
   };
 }
diff --git a/pkgs/development/libraries/openimagedenoise/cuda.patch b/pkgs/development/libraries/openimagedenoise/cuda.patch
new file mode 100644
index 000000000000..4bc5172d8830
--- /dev/null
+++ b/pkgs/development/libraries/openimagedenoise/cuda.patch
@@ -0,0 +1,32 @@
+Remove upstream workarounds for CMake "limitations" that do not appear to exist
+in nixpkgs build environment, but rather break the build, presumably because
+CMAKE_INSTALL_{BIN,LIB}DIR is an absolute path in our build so
+CMAKE_INSTALL_PREFIX has no effect.
+
+diff --git a/devices/CMakeLists.txt b/devices/CMakeLists.txt
+index d5111cd..43986ad 100644
+--- a/devices/CMakeLists.txt
++++ b/devices/CMakeLists.txt
+@@ -53,7 +53,6 @@ if(OIDN_DEVICE_CUDA)
+       -DCMAKE_CXX_COMPILER:FILEPATH=${_host_compiler}
+       -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}
+       -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+-      -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/cuda/preinstall
+       -DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR}
+       -DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR}
+       -DCUDAToolkit_ROOT:PATH=${CUDAToolkit_ROOT}
+@@ -69,14 +68,6 @@ if(OIDN_DEVICE_CUDA)
+     DEPENDS
+       OpenImageDenoise_core
+   )
+-
+-  # Due to limitations of CMake, the module is pre-installed at build time to a temporary location,
+-  # and then copied to the real install location at install time.
+-  install(DIRECTORY
+-    ${CMAKE_CURRENT_BINARY_DIR}/cuda/preinstall/
+-    DESTINATION "."
+-    USE_SOURCE_PERMISSIONS
+-  )
+ endif()
+ 
+ if(OIDN_DEVICE_HIP)
diff --git a/pkgs/development/libraries/openimagedenoise/default.nix b/pkgs/development/libraries/openimagedenoise/default.nix
index 532ee7a09571..e2d9b66004ed 100644
--- a/pkgs/development/libraries/openimagedenoise/default.nix
+++ b/pkgs/development/libraries/openimagedenoise/default.nix
@@ -1,21 +1,45 @@
-{ lib, stdenv, fetchzip, cmake, tbb, python3, ispc }:
+{
+  cmake,
+  config,
+  cudaPackages,
+  cudaSupport ? config.cudaSupport,
+  fetchzip,
+  ispc,
+  lib,
+  python3,
+  stdenv,
+  tbb,
+}:
 
 stdenv.mkDerivation rec {
   pname = "openimagedenoise";
-  version = "1.4.3";
+  version = "2.2.2";
 
   # The release tarballs include pretrained weights, which would otherwise need to be fetched with git-lfs
   src = fetchzip {
     url = "https://github.com/OpenImageDenoise/oidn/releases/download/v${version}/oidn-${version}.src.tar.gz";
-    sha256 = "sha256-i73w/Vkr5TPLB1ulPbPU4OVGwdNlky1brfarueD7akE=";
+    sha256 = "sha256-ZIrs4oEb+PzdMh2x2BUFXKyu/HBlFb3CJX24ciEHy3Q=";
   };
 
-  nativeBuildInputs = [ cmake python3 ispc ];
-  buildInputs = [ tbb ];
+  patches = lib.optional cudaSupport ./cuda.patch;
+
+  nativeBuildInputs = [
+    cmake
+    python3
+    ispc
+  ] ++ lib.optional cudaSupport cudaPackages.cuda_nvcc;
+
+  buildInputs =
+    [ tbb ]
+    ++ lib.optionals cudaSupport [
+      cudaPackages.cuda_cudart
+      cudaPackages.cuda_cccl
+    ];
 
   cmakeFlags = [
-    "-DTBB_ROOT=${tbb}"
-    "-DTBB_INCLUDE_DIR=${tbb.dev}/include"
+    (lib.cmakeBool "OIDN_DEVICE_CUDA" cudaSupport)
+    (lib.cmakeFeature "TBB_INCLUDE_DIR" "${tbb.dev}/include")
+    (lib.cmakeFeature "TBB_ROOT" "${tbb}")
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/opensubdiv/default.nix b/pkgs/development/libraries/opensubdiv/default.nix
index 17b7c286229b..3ed10ef270f9 100644
--- a/pkgs/development/libraries/opensubdiv/default.nix
+++ b/pkgs/development/libraries/opensubdiv/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "opensubdiv";
-  version = "3.5.1";
+  version = "3.6.0";
 
   src = fetchFromGitHub {
     owner = "PixarAnimationStudios";
     repo = "OpenSubdiv";
     rev = "v${lib.replaceStrings ["."] ["_"] version}";
-    sha256 = "sha256-uDKCT0Uoa5WQekMUFm2iZmzm+oWAZ6IWMwfpchkUZY0=";
+    sha256 = "sha256-liy6pQyWMk7rw0usrCoLGzZLO7RAg0z2pV/GF2NnOkE=";
   };
 
   outputs = [ "out" "dev" "static" ];
diff --git a/pkgs/development/libraries/pdal/default.nix b/pkgs/development/libraries/pdal/default.nix
index 6f362967a2a2..86d976531cb3 100644
--- a/pkgs/development/libraries/pdal/default.nix
+++ b/pkgs/development/libraries/pdal/default.nix
@@ -27,13 +27,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "pdal";
-  version = "2.7.0";
+  version = "2.7.1";
 
   src = fetchFromGitHub {
     owner = "PDAL";
     repo = "PDAL";
     rev = finalAttrs.version;
-    sha256 = "sha256-knyDVUZH+X563UzKkvDpi08EcXU5s4+Jvya3Xprpt1A=";
+    sha256 = "sha256-JoHBxJ0hCWH7ZhmeJk4huT2k0AK5CzIV58NWCjWj5T0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/protobuf/26.nix b/pkgs/development/libraries/protobuf/26.nix
new file mode 100644
index 000000000000..7f7c3625699f
--- /dev/null
+++ b/pkgs/development/libraries/protobuf/26.nix
@@ -0,0 +1,6 @@
+{ callPackage, ... } @ args:
+
+callPackage ./generic.nix ({
+  version = "26.1";
+  hash = "sha256-9sA+MYeDqRZl1v6HV4mpy60vqTbVTtinp9er6zkg/Ng=";
+} // args)
diff --git a/pkgs/development/libraries/quarto/default.nix b/pkgs/development/libraries/quarto/default.nix
index 09a44adbe561..99b9ebf79ae8 100644
--- a/pkgs/development/libraries/quarto/default.nix
+++ b/pkgs/development/libraries/quarto/default.nix
@@ -19,10 +19,10 @@
 
 stdenv.mkDerivation (final: {
   pname = "quarto";
-  version = "1.4.551";
+  version = "1.4.552";
   src = fetchurl {
     url = "https://github.com/quarto-dev/quarto-cli/releases/download/v${final.version}/quarto-${final.version}-linux-amd64.tar.gz";
-    sha256 = "sha256-RUnlLjJOf8hSj7aRCrmDSXFeNHCXnMY/bdbE3fbbThQ=";
+    sha256 = "sha256-I6uRqKgwb+VnbghA20BXEGrrLKOERc/IfF1TIDoymBw=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/science/chemistry/dftd4/default.nix b/pkgs/development/libraries/science/chemistry/dftd4/default.nix
index 087c6e7d01de..ea7aafd156ae 100644
--- a/pkgs/development/libraries/science/chemistry/dftd4/default.nix
+++ b/pkgs/development/libraries/science/chemistry/dftd4/default.nix
@@ -1,8 +1,11 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, cmake
 , gfortran
+, meson
+, ninja
+, pkg-config
+, python3
 , blas
 , lapack
 , mctc-lib
@@ -23,23 +26,20 @@ stdenv.mkDerivation rec {
     hash = "sha256-VIV9953hx0MZupOARdH+P1h7JtZeJmTlqtO8si+lwdU=";
   };
 
-  nativeBuildInputs = [ cmake gfortran ];
+  nativeBuildInputs = [ gfortran meson ninja pkg-config python3 ];
 
   buildInputs = [ blas lapack mctc-lib mstore multicharge ];
 
   outputs = [ "out" "dev" ];
 
-  # Fix the Pkg-Config files for doubled store paths
+  doCheck = true;
+
   postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
+    patchShebangs --build \
+      config/install-mod.py \
+      app/tester.py
   '';
 
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
-  doCheck = true;
   preCheck = ''
     export OMP_NUM_THREADS=2
   '';
diff --git a/pkgs/development/libraries/science/chemistry/mctc-lib/default.nix b/pkgs/development/libraries/science/chemistry/mctc-lib/default.nix
index a8c27b3eec56..58c1fdaf04e2 100644
--- a/pkgs/development/libraries/science/chemistry/mctc-lib/default.nix
+++ b/pkgs/development/libraries/science/chemistry/mctc-lib/default.nix
@@ -2,9 +2,11 @@
 , lib
 , fetchFromGitHub
 , gfortran
+, meson
+, ninja
 , pkg-config
+, python3
 , json-fortran
-, cmake
 }:
 
 stdenv.mkDerivation rec {
@@ -18,24 +20,18 @@ stdenv.mkDerivation rec {
     hash = "sha256-AXjg/ZsitdDf9fNoGVmVal1iZ4/sxjJb7A9W4yye/rg=";
   };
 
-  nativeBuildInputs = [ gfortran pkg-config cmake ];
+  nativeBuildInputs = [ gfortran meson ninja pkg-config python3 ];
 
   buildInputs = [ json-fortran ];
 
   outputs = [ "out" "dev" ];
 
-  # Fix the Pkg-Config files for doubled store paths
+  doCheck = true;
+
   postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
+    patchShebangs --build config/install-mod.py
   '';
 
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
-  doCheck = true;
-
   meta = with lib; {
     description = "Modular computation tool chain library";
     mainProgram = "mctc-convert";
diff --git a/pkgs/development/libraries/science/chemistry/mstore/default.nix b/pkgs/development/libraries/science/chemistry/mstore/default.nix
index 948d11435461..e187a9a9833f 100644
--- a/pkgs/development/libraries/science/chemistry/mstore/default.nix
+++ b/pkgs/development/libraries/science/chemistry/mstore/default.nix
@@ -1,8 +1,11 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, cmake
 , gfortran
+, meson
+, ninja
+, pkg-config
+, python3
 , mctc-lib
 }:
 
@@ -17,22 +20,16 @@ stdenv.mkDerivation rec {
     hash = "sha256-dN2BulLS/ENRFVdJIrZRxgBV8S4d5+7BjTCGnhBbf4I=";
   };
 
-  nativeBuildInputs = [ cmake gfortran ];
+  nativeBuildInputs = [ gfortran meson ninja pkg-config python3 ];
 
   buildInputs = [ mctc-lib ];
 
   outputs = [ "out" "dev" ];
 
-  # Fix the Pkg-Config files for doubled store paths
   postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
+    patchShebangs --build config/install-mod.py
   '';
 
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
   meta = with lib; {
     description = "Molecular structure store for testing";
     license = licenses.asl20;
diff --git a/pkgs/development/libraries/science/chemistry/multicharge/default.nix b/pkgs/development/libraries/science/chemistry/multicharge/default.nix
index 020390737139..3660705242f6 100644
--- a/pkgs/development/libraries/science/chemistry/multicharge/default.nix
+++ b/pkgs/development/libraries/science/chemistry/multicharge/default.nix
@@ -1,8 +1,12 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, cmake
+, fetchpatch2
 , gfortran
+, meson
+, ninja
+, pkg-config
+, python3
 , blas
 , lapack
 , mctc-lib
@@ -22,23 +26,28 @@ stdenv.mkDerivation rec {
     hash = "sha256-oUI5x5/Gd0EZBb1w+0jlJUF9X51FnkHFu8H7KctqXl0=";
   };
 
-  nativeBuildInputs = [ cmake gfortran ];
+  patches = [
+    # Fix finding of MKL for Intel 2021 and newer
+    # Also fix finding mstore
+    # https://github.com/grimme-lab/multicharge/pull/20
+    (fetchpatch2 {
+      url = "https://github.com/grimme-lab/multicharge/commit/98a11ac524cd2a1bd9e2aeb8f4429adb2d76ee8.patch";
+      hash = "sha256-zZ2pcbyaHjN2ZxpMhlqUtIXImrVsLk/8WIcb9IYPgBw=";
+    })
+  ];
+
+  nativeBuildInputs = [ gfortran meson ninja pkg-config python3 ];
 
   buildInputs = [ blas lapack mctc-lib mstore ];
 
   outputs = [ "out" "dev" ];
 
-  # Fix the Pkg-Config files for doubled store paths
+  doCheck = true;
+
   postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
+    patchShebangs --build config/install-mod.py
   '';
 
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
-  doCheck = true;
   preCheck = ''
     export OMP_NUM_THREADS=2
   '';
diff --git a/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix b/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix
index d4f81e3a24cb..eb8fa56455e4 100644
--- a/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix
+++ b/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix
@@ -2,7 +2,9 @@
 , lib
 , fetchFromGitHub
 , gfortran
-, cmake
+, meson
+, ninja
+, pkg-config
 , mctc-lib
 , mstore
 , toml-f
@@ -22,21 +24,12 @@ stdenv.mkDerivation rec {
     hash = "sha256-dfXiKKCGJ69aExSKpVC3Bp//COy256R9PDyxCNmDsfo=";
   };
 
-  nativeBuildInputs = [ cmake gfortran ];
+  nativeBuildInputs = [ gfortran meson ninja pkg-config ];
 
   buildInputs = [ mctc-lib mstore toml-f blas ];
 
   outputs = [ "out" "dev" ];
 
-  # Fix the Pkg-Config files for doubled store paths
-  postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
-  '';
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
   doCheck = true;
   preCheck = ''
     export OMP_NUM_THREADS=2
@@ -47,7 +40,7 @@ stdenv.mkDerivation rec {
     mainProgram = "s-dftd3";
     license = with licenses; [ lgpl3Only gpl3Only ];
     homepage = "https://github.com/dftd3/simple-dftd3";
-    platforms = [ "x86_64-linux" ];
+    platforms = platforms.linux;
     maintainers = [ maintainers.sheepforce ];
   };
 }
diff --git a/pkgs/development/libraries/science/chemistry/tblite/default.nix b/pkgs/development/libraries/science/chemistry/tblite/default.nix
index 64374972c295..4f8c43a08e49 100644
--- a/pkgs/development/libraries/science/chemistry/tblite/default.nix
+++ b/pkgs/development/libraries/science/chemistry/tblite/default.nix
@@ -2,8 +2,10 @@
 , lib
 , fetchFromGitHub
 , fetchpatch
-, cmake
 , gfortran
+, meson
+, ninja
+, pkg-config
 , blas
 , lapack
 , mctc-lib
@@ -35,13 +37,12 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  # Fix the Pkg-Config files for doubled store paths
-  postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
-  '';
-
-  nativeBuildInputs = [ cmake gfortran ];
+  nativeBuildInputs = [
+    gfortran
+    meson
+    ninja
+    pkg-config
+  ];
 
   buildInputs = [
     blas
@@ -56,10 +57,6 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "dev" ];
 
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
   doCheck = true;
   preCheck = ''
     export OMP_NUM_THREADS=2
diff --git a/pkgs/development/libraries/science/chemistry/tblite/python.nix b/pkgs/development/libraries/science/chemistry/tblite/python.nix
index 3a72cfaaa6a3..cfe8668204e2 100644
--- a/pkgs/development/libraries/science/chemistry/tblite/python.nix
+++ b/pkgs/development/libraries/science/chemistry/tblite/python.nix
@@ -1,4 +1,6 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
+, pythonAtLeast
 , fetchpatch
 , meson
 , ninja
@@ -15,6 +17,7 @@
 , toml-f
 , multicharge
 , dftd4
+, setuptools
 }:
 
 buildPythonPackage {
@@ -27,6 +30,8 @@ buildPythonPackage {
     pkg-config
     gfortran
     mctc-lib
+  ] ++ lib.optionals (pythonAtLeast "3.12") [
+    setuptools
   ];
 
   buildInputs = [
diff --git a/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix b/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix
index ac08cb876253..84949e0a5344 100644
--- a/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix
+++ b/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   pname = "suitesparse-graphblas";
-  version = "9.0.3";
+  version = "9.1.0";
 
   outputs = [ "out" "dev" ];
 
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     owner = "DrTimothyAldenDavis";
     repo = "GraphBLAS";
     rev = "v${version}";
-    hash = "sha256-qRRrxMshLLEltCzXFv/j6NgRi6x1SHlAuKG5NfLiBFs=";
+    hash = "sha256-YK0REOqoNa55tQt6NH/0QQ07pzAImDR5kC00sbFILH8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/test-drive/default.nix b/pkgs/development/libraries/test-drive/default.nix
index b858f39498c2..639582c3b8ae 100644
--- a/pkgs/development/libraries/test-drive/default.nix
+++ b/pkgs/development/libraries/test-drive/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, gfortran, cmake }:
+{ stdenv, lib, fetchFromGitHub, gfortran, meson, ninja, mesonEmulatorHook }:
 
 stdenv.mkDerivation rec {
   pname = "test-drive";
@@ -11,21 +11,18 @@ stdenv.mkDerivation rec {
     hash = "sha256-ObAnHFP1Hp0knf/jtGHynVF0CCqK47eqetePx4NLmlM=";
   };
 
-  postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace 'libdir=''${prefix}/@CMAKE_INSTALL_LIBDIR@' "libdir=@CMAKE_INSTALL_LIBDIR@" \
-      --replace 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' "includedir=@CMAKE_INSTALL_INCLUDEDIR@"
-  '';
-
   nativeBuildInputs = [
     gfortran
-    cmake
+    meson
+    ninja
+  ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
+    mesonEmulatorHook
   ];
 
   meta = with lib; {
     description = "Procedural Fortran testing framework";
     homepage = "https://github.com/fortran-lang/test-drive";
-    license = with licenses; [ asl20 mit ] ;
+    license = with licenses; [ asl20 mit ];
     platforms = platforms.linux;
     maintainers = [ maintainers.sheepforce ];
   };
diff --git a/pkgs/development/libraries/toml-f/default.nix b/pkgs/development/libraries/toml-f/default.nix
index 28fb3dadce48..e24ceec58c07 100644
--- a/pkgs/development/libraries/toml-f/default.nix
+++ b/pkgs/development/libraries/toml-f/default.nix
@@ -2,7 +2,9 @@
 , lib
 , fetchFromGitHub
 , gfortran
-, cmake
+, meson
+, ninja
+, pkg-config
 , test-drive
 }:
 
@@ -17,29 +19,19 @@ stdenv.mkDerivation rec {
     hash = "sha256-+cac4rUNpd2w3yBdH1XoCKdJ9IgOHZioZg8AhzGY0FE=";
   };
 
-  nativeBuildInputs = [ gfortran cmake ];
+  nativeBuildInputs = [ gfortran meson ninja pkg-config ];
 
   buildInputs = [ test-drive ];
 
   outputs = [ "out" "dev" ];
 
-  # Fix the Pkg-Config files for doubled store paths
-  postPatch = ''
-    substituteInPlace config/template.pc \
-      --replace "\''${prefix}/" ""
-  '';
-
-  cmakeFlags = [
-    "-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
-  ];
-
   doCheck = true;
 
   meta = with lib; {
     description = "TOML parser implementation for data serialization and deserialization in Fortran";
     license = with licenses; [ asl20 mit ];
     homepage = "https://github.com/toml-f/toml-f";
-    platforms = [ "x86_64-linux" ];
+    platforms = platforms.linux;
     maintainers = [ maintainers.sheepforce ];
   };
 }
diff --git a/pkgs/development/libraries/webkitgtk/default.nix b/pkgs/development/libraries/webkitgtk/default.nix
index 7ca5ffc19020..07fc616efacc 100644
--- a/pkgs/development/libraries/webkitgtk/default.nix
+++ b/pkgs/development/libraries/webkitgtk/default.nix
@@ -20,8 +20,6 @@
 , wayland
 , wayland-protocols
 , libwebp
-, libwpe
-, libwpe-fdo
 , enchant2
 , xorg
 , libxkbcommon
@@ -48,7 +46,6 @@
 , libintl
 , lcms2
 , libmanette
-, openjpeg
 , geoclue2
 , sqlite
 , gst-plugins-base
@@ -56,6 +53,7 @@
 , woff2
 , bubblewrap
 , libseccomp
+, libbacktrace
 , systemd
 , xdg-dbus-proxy
 , substituteAll
@@ -70,7 +68,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "webkitgtk";
-  version = "2.42.5";
+  version = "2.44.0";
   name = "${finalAttrs.pname}-${finalAttrs.version}+abi=${if lib.versionAtLeast gtk3.version "4.0" then "6.0" else "4.${if lib.versions.major libsoup.version == "2" then "0" else "1"}"}";
 
   outputs = [ "out" "dev" "devdoc" ];
@@ -81,7 +79,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   src = fetchurl {
     url = "https://webkitgtk.org/releases/webkitgtk-${finalAttrs.version}.tar.xz";
-    hash = "sha256-tkJ4wfILjP2/tf9XPDfYcaunSh2ybZs5906JU/5h50k=";
+    hash = "sha256-xmUw5Bulmx7bpO6J7yCyGI4nO+0El+lQhHKePPvjDIc=";
   };
 
   patches = lib.optionals stdenv.isLinux [
@@ -90,13 +88,6 @@ stdenv.mkDerivation (finalAttrs: {
       inherit (builtins) storeDir;
       inherit (addOpenGLRunpath) driverLink;
     })
-
-    # Hardcode path to WPE backend
-    # https://github.com/NixOS/nixpkgs/issues/110468
-    (substituteAll {
-      src = ./fdo-backend-path.patch;
-      wpebackend_fdo = libwpe-fdo;
-    })
   ];
 
   preConfigure = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
@@ -150,17 +141,12 @@ stdenv.mkDerivation (finalAttrs: {
     libxkbcommon
     libxml2
     libxslt
+    libbacktrace
     nettle
-    openjpeg
     p11-kit
     sqlite
     woff2
-  ] ++ (with xorg; [
-    libXdamage
-    libXdmcp
-    libXt
-    libXtst
-  ]) ++ lib.optionals stdenv.isDarwin [
+  ] ++ lib.optionals stdenv.isDarwin [
     libedit
     readline
   ] ++ lib.optional (stdenv.isDarwin && !stdenv.isAarch64) (
@@ -175,8 +161,7 @@ stdenv.mkDerivation (finalAttrs: {
     libseccomp
     libmanette
     wayland
-    libwpe
-    libwpe-fdo
+    xorg.libX11
   ] ++ lib.optionals systemdSupport [
     systemd
   ] ++ lib.optionals enableGeoLocation [
@@ -184,7 +169,6 @@ stdenv.mkDerivation (finalAttrs: {
   ] ++ lib.optionals withLibsecret [
     libsecret
   ] ++ lib.optionals (lib.versionAtLeast gtk3.version "4.0") [
-    xorg.libXcomposite
     wayland-protocols
   ];
 
@@ -214,8 +198,8 @@ stdenv.mkDerivation (finalAttrs: {
     "-DENABLE_X11_TARGET=OFF"
     "-DUSE_APPLE_ICU=OFF"
     "-DUSE_OPENGL_OR_ES=OFF"
-  ] ++ lib.optionals (lib.versionAtLeast gtk3.version "4.0") [
-    "-DUSE_GTK4=ON"
+  ] ++ lib.optionals (lib.versionOlder gtk3.version "4.0") [
+    "-DUSE_GTK4=OFF"
   ] ++ lib.optionals (!systemdSupport) [
     "-DENABLE_JOURNALD_LOG=OFF"
   ];
diff --git a/pkgs/development/libraries/webkitgtk/fdo-backend-path.patch b/pkgs/development/libraries/webkitgtk/fdo-backend-path.patch
deleted file mode 100644
index 48e7d9cca745..000000000000
--- a/pkgs/development/libraries/webkitgtk/fdo-backend-path.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp
-+++ b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp
-@@ -84,7 +84,7 @@ void WebProcessPool::platformInitializeWebProcess(const WebProcessProxy& process
- 
- #if PLATFORM(WAYLAND)
-     if (WebCore::PlatformDisplay::sharedDisplay().type() == WebCore::PlatformDisplay::Type::Wayland && parameters.dmaBufRendererBufferMode.isEmpty()) {
--        wpe_loader_init("libWPEBackend-fdo-1.0.so.1");
-+        wpe_loader_init("@wpebackend_fdo@/lib/libWPEBackend-fdo-1.0.so.1");
-         if (AcceleratedBackingStoreWayland::checkRequirements()) {
-             parameters.hostClientFileDescriptor = UnixFileDescriptor { wpe_renderer_host_create_client(), UnixFileDescriptor::Adopt };
-             parameters.implementationLibraryName = FileSystem::fileSystemRepresentation(String::fromLatin1(wpe_loader_get_loaded_implementation_library_name()));
diff --git a/pkgs/development/lisp-modules/packages.nix b/pkgs/development/lisp-modules/packages.nix
index 73cc1f35c657..55c4c5abf7f8 100644
--- a/pkgs/development/lisp-modules/packages.nix
+++ b/pkgs/development/lisp-modules/packages.nix
@@ -201,6 +201,14 @@ let
     '';
   };
 
+  cephes = build-with-compile-into-pwd {
+    inherit (super.cephes) pname version src lispLibs;
+    patches = [ ./patches/cephes-make.patch ];
+    postConfigure = ''
+      substituteAllInPlace cephes.asd
+    '';
+  };
+
   clx-truetype = build-asdf-system {
     pname = "clx-truetype";
     version = "20160825-git";
diff --git a/pkgs/development/lisp-modules/patches/cephes-make.patch b/pkgs/development/lisp-modules/patches/cephes-make.patch
new file mode 100644
index 000000000000..b67b5f70ad3c
--- /dev/null
+++ b/pkgs/development/lisp-modules/patches/cephes-make.patch
@@ -0,0 +1,22 @@
+--- a/cephes.asd
++++ b/cephes.asd
+@@ -5,7 +5,7 @@
+ (defclass makefile (source-file) ((type :initform "m")))
+ (defmethod perform ((o load-op) (c makefile)) t)
+ (defmethod perform ((o compile-op) (c makefile))
+-  (let* ((lib-dir (system-relative-pathname "cephes" "scipy-cephes"))
++  (let* ((lib-dir #P"@out@/scipy-cephes")
+          (lib (make-pathname :directory `(:relative ,(namestring lib-dir))
+                              :name "libmd"
+                              :type #+darwin "dylib" #+(and unix (not darwin)) "so" #+(or windows win32) "dll"))
+@@ -14,7 +14,7 @@
+ 	(format *error-output* "Library ~S exists, skipping build" lib)
+ 	(format *error-output* "Building ~S~%" lib))
+     (unless built
+-      (chdir (native-namestring lib-dir))
++      (chdir "scipy-cephes")
+       (run-program "make" :output t))))
+ 
+ (defsystem "cephes"
+
+Diff finished.  Thu Mar 28 08:13:30 2024
diff --git a/pkgs/development/misc/resholve/README.md b/pkgs/development/misc/resholve/README.md
index 439e4ea8188d..0e875a765658 100644
--- a/pkgs/development/misc/resholve/README.md
+++ b/pkgs/development/misc/resholve/README.md
@@ -99,20 +99,22 @@ trivial, so I'll also link to some real-world examples:
 - [shell.nix from abathur/tdverpy](https://github.com/abathur/tdverpy/blob/e1f956df3ed1c7097a5164e0c85b178772e277f5/shell.nix#L6-L13)
 
 ```nix
-resholvedScript = resholve.writeScript "name" {
-    inputs = [ file ];
-    interpreter = "${bash}/bin/bash";
-  } ''
-    echo "Hello"
-    file .
-  '';
-resholvedScriptBin = resholve.writeScriptBin "name" {
-    inputs = [ file ];
-    interpreter = "${bash}/bin/bash";
-  } ''
-    echo "Hello"
-    file .
-  '';
+{
+  resholvedScript = resholve.writeScript "name" {
+      inputs = [ file ];
+      interpreter = "${bash}/bin/bash";
+    } ''
+      echo "Hello"
+      file .
+    '';
+  resholvedScriptBin = resholve.writeScriptBin "name" {
+      inputs = [ file ];
+      interpreter = "${bash}/bin/bash";
+    } ''
+      echo "Hello"
+      file .
+    '';
+}
 ```
 
 
@@ -212,29 +214,31 @@ This will hopefully make more sense when you see it. Here are CLI examples
 from the manpage, and the Nix equivalents:
 
 ```nix
-# --fake 'f:setUp;tearDown builtin:setopt source:/etc/bashrc'
-fake = {
-  # fake accepts the initial of valid identifier types as a CLI convenience.
-  # Use full names in the Nix API.
-  function = [ "setUp" "tearDown" ];
-  builtin = [ "setopt" ];
-  source = [ "/etc/bashrc" ];
-};
-
-# --fix 'aliases $GIT:gix /bin/bash'
-fix = {
-  # all single-word directives use `true` as value
-  aliases = true;
-  "$GIT" = [ "gix" ];
-  "/bin/bash";
-};
-
-# --keep 'source:$HOME /etc/bashrc ~/.bashrc'
-keep = {
-  source = [ "$HOME" ];
-  "/etc/bashrc" = true;
-  "~/.bashrc" = true;
-};
+{
+  # --fake 'f:setUp;tearDown builtin:setopt source:/etc/bashrc'
+  fake = {
+    # fake accepts the initial of valid identifier types as a CLI convenience.
+    # Use full names in the Nix API.
+    function = [ "setUp" "tearDown" ];
+    builtin = [ "setopt" ];
+    source = [ "/etc/bashrc" ];
+  };
+
+  # --fix 'aliases $GIT:gix /bin/bash'
+  fix = {
+    # all single-word directives use `true` as value
+    aliases = true;
+    "$GIT" = [ "gix" ];
+    interpreter = "/bin/bash";
+  };
+
+  # --keep 'source:$HOME /etc/bashrc ~/.bashrc'
+  keep = {
+    source = [ "$HOME" ];
+    "/etc/bashrc" = true;
+    "~/.bashrc" = true;
+  };
+}
 ```
 
 
@@ -283,27 +287,29 @@ the main lever is the ability to substitute your own lore. This is how you'd
 do it piecemeal:
 
 ```nix
-# --execer 'cannot:${openssl.bin}/bin/openssl can:${openssl.bin}/bin/c_rehash'
-execer = [
-  /*
-    This is the same verdict binlore will
-    come up with. It's a no-op just to demo
-    how to fiddle lore via the Nix API.
-  */
-  "cannot:${openssl.bin}/bin/openssl"
-  # different verdict, but not used
-  "can:${openssl.bin}/bin/c_rehash"
-];
-
-# --wrapper '${gnugrep}/bin/egrep:${gnugrep}/bin/grep'
-wrapper = [
-  /*
-    This is the same verdict binlore will
-    come up with. It's a no-op just to demo
-    how to fiddle lore via the Nix API.
-  */
-  "${gnugrep}/bin/egrep:${gnugrep}/bin/grep"
-];
+{
+  # --execer 'cannot:${openssl.bin}/bin/openssl can:${openssl.bin}/bin/c_rehash'
+  execer = [
+    /*
+      This is the same verdict binlore will
+      come up with. It's a no-op just to demo
+      how to fiddle lore via the Nix API.
+    */
+    "cannot:${openssl.bin}/bin/openssl"
+    # different verdict, but not used
+    "can:${openssl.bin}/bin/c_rehash"
+  ];
+
+  # --wrapper '${gnugrep}/bin/egrep:${gnugrep}/bin/grep'
+  wrapper = [
+    /*
+      This is the same verdict binlore will
+      come up with. It's a no-op just to demo
+      how to fiddle lore via the Nix API.
+    */
+    "${gnugrep}/bin/egrep:${gnugrep}/bin/grep"
+  ];
+}
 ```
 
 
diff --git a/pkgs/development/php-packages/mongodb/default.nix b/pkgs/development/php-packages/mongodb/default.nix
index e3f79cee61f1..7e83041da136 100644
--- a/pkgs/development/php-packages/mongodb/default.nix
+++ b/pkgs/development/php-packages/mongodb/default.nix
@@ -15,13 +15,13 @@
 
 buildPecl rec {
   pname = "mongodb";
-  version = "1.17.3";
+  version = "1.18.0";
 
   src = fetchFromGitHub {
     owner = "mongodb";
     repo = "mongo-php-driver";
     rev = version;
-    hash = "sha256-5luaCrrnL7l9zhbxYUMSlID7Sx0MQhgFKgl8F6GkGsE=";
+    hash = "sha256-KrRWogmGMGaMRhU5D5xF5LTvJ6g9XSoDA5KfJxftvws=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/python-modules/aioambient/default.nix b/pkgs/development/python-modules/aioambient/default.nix
index 9619b26a0b97..5646bf02b8a2 100644
--- a/pkgs/development/python-modules/aioambient/default.nix
+++ b/pkgs/development/python-modules/aioambient/default.nix
@@ -2,6 +2,7 @@
 , aiohttp
 , aresponses
 , buildPythonPackage
+, certifi
 , fetchFromGitHub
 , poetry-core
 , pytest-aiohttp
@@ -27,12 +28,13 @@ buildPythonPackage rec {
     hash = "sha256-eqZVY0L+2BWF7cCXW/VLQYYXNPtUF6tJHQmeZNW1W5o=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
+    certifi
     python-engineio
     python-socketio
     websockets
diff --git a/pkgs/development/python-modules/aiounifi/default.nix b/pkgs/development/python-modules/aiounifi/default.nix
index 01879192a82d..ebb61463bf88 100644
--- a/pkgs/development/python-modules/aiounifi/default.nix
+++ b/pkgs/development/python-modules/aiounifi/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "72";
+  version = "73";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,22 +24,22 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "aiounifi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PrFI5ncHW4r2Re1BIqRZlz8ns6d5p6y6PASCleSmyNc=";
+    hash = "sha256-xs3+2f/CNabdXm8g2V+sEIR5kQguxi3nMeJLb8TVrck=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "setuptools==" "setuptools>=" \
-      --replace "wheel==" "wheel>="
+      --replace-fail "setuptools==" "setuptools>=" \
+      --replace-fail "wheel==" "wheel>="
 
     sed -i '/--cov=/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     orjson
     segno
@@ -63,10 +63,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python library for communicating with Unifi Controller API";
-    mainProgram = "aiounifi";
     homepage = "https://github.com/Kane610/aiounifi";
     changelog = "https://github.com/Kane610/aiounifi/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "aiounifi";
   };
 }
diff --git a/pkgs/development/python-modules/asgi-lifespan/default.nix b/pkgs/development/python-modules/asgi-lifespan/default.nix
new file mode 100644
index 000000000000..05e21d84585f
--- /dev/null
+++ b/pkgs/development/python-modules/asgi-lifespan/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, setuptools
+, setuptools-scm
+, sniffio
+}:
+
+buildPythonPackage rec {
+  pname = "asgi-lifespan";
+  version = "2.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "florimondmanca";
+    repo = "asgi-lifespan";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Jgmd/4c1lxHM/qi3MJNN1aSSUJrI7CRNwwHrFwwcCkc=";
+  };
+
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+  '';
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    sniffio
+  ];
+
+  # Circular dependencies, starlette
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "asgi_lifespan"
+  ];
+
+  meta = with lib; {
+    description = "Programmatic startup/shutdown of ASGI apps";
+    homepage = "https://github.com/florimondmanca/asgi-lifespan";
+    changelog = "https://github.com/florimondmanca/asgi-lifespan/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/asyncstdlib/default.nix b/pkgs/development/python-modules/asyncstdlib/default.nix
index 57306bd01a4d..c31beceb1496 100644
--- a/pkgs/development/python-modules/asyncstdlib/default.nix
+++ b/pkgs/development/python-modules/asyncstdlib/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "asyncstdlib";
-  version = "3.12.1";
+  version = "3.12.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,10 +17,10 @@ buildPythonPackage rec {
     owner = "maxfischer2781";
     repo = "asyncstdlib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-F7jS2EHiq+gK4a6+wJ8CA2YvwR37PP3yvbsLp3uE8R8=";
+    hash = "sha256-5DQM8m3aeCZAXOi+Rm+iM409juBBYdZDNqBAbhyTm/M=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     flit-core
   ];
 
diff --git a/pkgs/development/python-modules/awswrangler/default.nix b/pkgs/development/python-modules/awswrangler/default.nix
index 7cd356214d56..674b127fcae1 100644
--- a/pkgs/development/python-modules/awswrangler/default.nix
+++ b/pkgs/development/python-modules/awswrangler/default.nix
@@ -25,8 +25,8 @@
 
 buildPythonPackage rec {
   pname = "awswrangler";
-  version = "3.7.1";
-  format = "pyproject";
+  version = "3.7.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -34,14 +34,14 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "aws-sdk-pandas";
     rev = "refs/tags/${version}";
-    hash = "sha256-6HocnnPG/Id+49NN3WqnSYEnsijA2r13WM2NJIxVwFs=";
+    hash = "sha256-1eb2oTiRNxA2XTpkScA5WJutN5P6FX96jC4Ra9VdonI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     gremlinpython
     jsonpath-ng
diff --git a/pkgs/development/python-modules/bases/default.nix b/pkgs/development/python-modules/bases/default.nix
new file mode 100644
index 000000000000..9c25ffaa63f8
--- /dev/null
+++ b/pkgs/development/python-modules/bases/default.nix
@@ -0,0 +1,73 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+, pytestCheckHook
+
+, pythonOlder
+
+, setuptools
+, wheel
+, setuptools-scm
+
+  # for tests
+, base58
+
+, typing-extensions
+, typing-validation
+}:
+
+buildPythonPackage rec {
+  pname = "bases";
+  version = "0.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "hashberg-io";
+    repo = "bases";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CRXVxT9uYud1CKRcdRAD0OX5sTAttrUO9E4BaavTe6A=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+    setuptools-scm
+  ];
+
+  dependencies = [
+    typing-extensions
+    typing-validation
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    base58
+  ];
+
+  pythonImportsCheck = [
+    "bases"
+    "bases.alphabet"
+    "bases.alphabet.abstract"
+    "bases.alphabet.range_alphabet"
+    "bases.alphabet.string_alphabet"
+    "bases.encoding"
+    "bases.encoding.base"
+    "bases.encoding.block"
+    "bases.encoding.errors"
+    "bases.encoding.fixchar"
+    "bases.encoding.simple"
+    "bases.encoding.zeropad"
+    "bases.random"
+  ];
+
+  meta = {
+    description = "Python library for general Base-N encodings";
+    homepage = "https://github.com/hashberg-io/bases";
+    changelog = "https://github.com/hashberg-io/bases/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.vizid ];
+  };
+}
diff --git a/pkgs/development/python-modules/bidict/default.nix b/pkgs/development/python-modules/bidict/default.nix
index c42ebffad538..871e896dbd95 100644
--- a/pkgs/development/python-modules/bidict/default.nix
+++ b/pkgs/development/python-modules/bidict/default.nix
@@ -50,6 +50,6 @@ buildPythonPackage rec {
     changelog = "https://bidict.readthedocs.io/changelog.html";
     description = "The bidirectional mapping library for Python.";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ jakewaksbaum ];
+    maintainers = with maintainers; [ jab jakewaksbaum ];
   };
 }
diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix
index e792f1e6bf93..a5e202469480 100644
--- a/pkgs/development/python-modules/boto3-stubs/default.nix
+++ b/pkgs/development/python-modules/boto3-stubs/default.nix
@@ -365,14 +365,14 @@
 
 buildPythonPackage rec {
   pname = "boto3-stubs";
-  version = "1.34.70";
+  version = "1.34.72";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WlF4VNAeHKXYEX7NYP0Ehw9uuRAI+tZ13Wr/NinzF7U=";
+    hash = "sha256-eQPciiA763TWI3smauBk/1qbJ2B0r3UAt9tIVEZJWWo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/cocotb/0002-Patch-remove-test_unicode_handle_assignment_deprecated-test.patch b/pkgs/development/python-modules/cocotb/0002-Patch-remove-test_unicode_handle_assignment_deprecated-test.patch
new file mode 100644
index 000000000000..f1a6c7f975fa
--- /dev/null
+++ b/pkgs/development/python-modules/cocotb/0002-Patch-remove-test_unicode_handle_assignment_deprecated-test.patch
@@ -0,0 +1,25 @@
+diff --git a/tests/test_cases/test_cocotb/test_deprecated.py b/tests/test_cases/test_cocotb/test_deprecated.py
+index 523b93ba..b4f1701e 100644
+--- a/tests/test_cases/test_cocotb/test_deprecated.py
++++ b/tests/test_cases/test_cocotb/test_deprecated.py
+@@ -26,20 +26,6 @@ async def test_returnvalue_deprecated(dut):
+     assert val == 42
+ 
+ 
+-# strings are not supported on Icarus (gh-2585) or GHDL (gh-2584)
+-@cocotb.test(
+-    expect_error=AttributeError
+-    if cocotb.SIM_NAME.lower().startswith("icarus")
+-    else TypeError
+-    if cocotb.SIM_NAME.lower().startswith("ghdl")
+-    else ()
+-)
+-async def test_unicode_handle_assignment_deprecated(dut):
+-    with pytest.warns(DeprecationWarning, match=".*bytes.*"):
+-        dut.stream_in_string.value = "Bad idea"
+-        await cocotb.triggers.ReadWrite()
+-
+-
+ @cocotb.test()
+ async def test_convert_handle_to_string_deprecated(dut):
+     dut.stream_in_data.value = 0
diff --git a/pkgs/development/python-modules/cocotb/default.nix b/pkgs/development/python-modules/cocotb/default.nix
index 0e758490b803..8d996a4ebb04 100644
--- a/pkgs/development/python-modules/cocotb/default.nix
+++ b/pkgs/development/python-modules/cocotb/default.nix
@@ -52,6 +52,10 @@ buildPythonPackage rec {
   patches = [
     # Fix "can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB) file" error
     ./0001-Patch-LDCXXSHARED-for-macOS-along-with-LDSHARED.patch
+
+    # For the 1.8.1 release only: remove the test_unicode_handle_assignment_deprecated test
+    # It's more thoroughly removed upstream master with 425e1edb8e7133f4a891f2f87552aa2748cd8d2c
+    ./0002-Patch-remove-test_unicode_handle_assignment_deprecated-test.patch
   ];
 
   nativeCheckInputs = [ cocotb-bus pytestCheckHook swig verilog ghdl ];
diff --git a/pkgs/development/python-modules/dbt-bigquery/default.nix b/pkgs/development/python-modules/dbt-bigquery/default.nix
index cb1d12bca703..d6401c6502a0 100644
--- a/pkgs/development/python-modules/dbt-bigquery/default.nix
+++ b/pkgs/development/python-modules/dbt-bigquery/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-bigquery";
-  version = "1.7.6";
+  version = "1.7.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,19 +24,19 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-bigquery";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bF2++Bs4pvqA3GW2xJkRNa1HkqnHBbMnKHHjo1TWboM=";
+    hash = "sha256-+UF49ReSxKQ8ouutOv1b9JcU/6CNk7Yw8f1/tlRvwnU=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
-
   pythonRelaxDeps = [
     "agate"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    pythonRelaxDepsHook
+    setuptools
+  ];
+
+  dependencies = [
     agate
     dbt-core
     google-cloud-bigquery
diff --git a/pkgs/development/python-modules/dbt-core/default.nix b/pkgs/development/python-modules/dbt-core/default.nix
index b537da2a3055..9a165b4925ca 100644
--- a/pkgs/development/python-modules/dbt-core/default.nix
+++ b/pkgs/development/python-modules/dbt-core/default.nix
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-core";
-  version = "1.7.10";
+  version = "1.7.11";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,26 +42,27 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-core";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0cKzQjAnj0JMrHyA/gOgYceM6g1URJFgQtp90m09Nkw=";
+    hash = "sha256-r51aki1fuHfp6gWkzOMA92xFeM0MXFPrNq77aKTYYWA=";
   };
 
   sourceRoot = "${src.name}/core";
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
-
   pythonRelaxDeps = [
     "agate"
     "click"
     "mashumaro"
     "networkx"
     "logbook"
+    "pathspec"
     "urllib3"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    pythonRelaxDepsHook
+    setuptools
+  ];
+
+  dependencies = [
     agate
     cffi
     click
diff --git a/pkgs/development/python-modules/dbt-postgres/default.nix b/pkgs/development/python-modules/dbt-postgres/default.nix
index b2852ce6d214..d2669cb2357e 100644
--- a/pkgs/development/python-modules/dbt-postgres/default.nix
+++ b/pkgs/development/python-modules/dbt-postgres/default.nix
@@ -19,11 +19,11 @@ buildPythonPackage {
 
   env.DBT_PSYCOPG2_NAME = "psycopg2";
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     agate
     dbt-core
     psycopg2
diff --git a/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix b/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
index 894dbed29f26..d63a0cee0447 100644
--- a/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
+++ b/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
@@ -36,12 +36,12 @@ buildPythonPackage rec {
     "importlib-metadata"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     dateutils
     importlib-metadata
@@ -63,9 +63,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    changelog = "https://github.com/dbt-labs/dbt-semantic-interfaces/releases/tag/v${version}";
-    description = "shared interfaces used by dbt-core and MetricFlow projects";
+    description = "Shared interfaces used by dbt-core and MetricFlow projects";
     homepage = "https://github.com/dbt-labs/dbt-semantic-interfaces";
+    changelog = "https://github.com/dbt-labs/dbt-semantic-interfaces/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ pbsds ];
   };
diff --git a/pkgs/development/python-modules/dbt-snowflake/default.nix b/pkgs/development/python-modules/dbt-snowflake/default.nix
index ef3cb866c2b2..a25ffaba5581 100644
--- a/pkgs/development/python-modules/dbt-snowflake/default.nix
+++ b/pkgs/development/python-modules/dbt-snowflake/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-snowflake";
-  version = "1.7.2";
+  version = "1.7.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,14 +19,14 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-snowflake";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OyUBqSNHMedCDsY280O8VAmxeyeF5J0snk5o6XhE2V4=";
+    hash = "sha256-ksnLQdoXR8KVtYTFdlaWT8UYjAsLNyEVVap/QHtm+j8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dbt-core
     snowflake-connector-python
   ] ++ snowflake-connector-python.optional-dependencies.secure-local-storage;
diff --git a/pkgs/development/python-modules/deal/default.nix b/pkgs/development/python-modules/deal/default.nix
index b24d8be44826..41d966c8f1e8 100644
--- a/pkgs/development/python-modules/deal/default.nix
+++ b/pkgs/development/python-modules/deal/default.nix
@@ -1,49 +1,49 @@
 { lib
+, astroid
 , buildPythonPackage
-, pythonOlder
+, deal-solver
+, docstring-parser
 , fetchFromGitHub
 , flit-core
-, astroid
-, pytestCheckHook
-, docstring-parser
-, marshmallow
-, sphinx
 , hypothesis
-, vaa
-, deal-solver
+, marshmallow
 , pygments
+, pytestCheckHook
+, pythonOlder
+, sphinx
 , typeguard
 , urllib3
-, flake8
+, vaa
 }:
 
 buildPythonPackage rec {
   pname = "deal";
-  version = "4.24.3";
-  format = "pyproject";
+  version = "4.24.4";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "life4";
-    repo = pname;
+    repo = "deal";
     rev = "refs/tags/${version}";
-    hash = "sha256-QlM3d/jmg6v3L3D45+cgcCej71U1dl4uZ6sAYGGm3tU=";
+    hash = "sha256-4orpoYfPGSvquhg9w63uUe8QbBa2RUpxaEJ9uy28+fU=";
   };
 
   postPatch = ''
     # don't do coverage
     substituteInPlace pyproject.toml \
-      --replace "\"--cov-fail-under=100\"," "" \
-      --replace "\"--cov=deal\"," "" \
-      --replace "\"--cov-report=html\"," "" \
-      --replace "\"--cov-report=term-missing:skip-covered\"," ""
+      --replace-fail '"--cov-fail-under=100",' "" \
+      --replace-fail '"--cov=deal",' "" \
+      --replace-fail '"--cov-report=html",' "" \
+      --replace-fail '"--cov-report=term-missing:skip-covered",' ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     flit-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astroid
     deal-solver
     pygments
@@ -51,15 +51,13 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    pytestCheckHook
-
     docstring-parser
+    hypothesis
     marshmallow
+    pytestCheckHook
     sphinx
-    hypothesis
-    vaa
     urllib3
-    flake8
+    vaa
   ];
 
   pytestFlagsArray = [
@@ -67,7 +65,7 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # needs internet access
+    # Tests need internet access
     "test_smoke_has"
     "test_pure_offline"
     "test_raises_doesnt_override_another_contract"
@@ -84,25 +82,30 @@ buildPythonPackage rec {
     # assert errors
     "test_doctest"
     "test_no_violations"
+    "test_source_get_lambda_multiline_splitted_dec"
   ];
 
   disabledTestPaths = [
-    # needs internet access
+    # Test needs internet access
     "tests/test_runtime/test_offline.py"
     # depends on typeguard <4.0.0 for tests, but >=4.0.0 seems fine for runtime
     # https://github.com/life4/deal/blob/9be70fa1c5a0635880619b2cea83a9f6631eb236/pyproject.toml#L40
     "tests/test_testing.py"
   ];
 
-  pythonImportsCheck = [ "deal" ];
+  pythonImportsCheck = [
+    "deal"
+  ];
 
   meta = with lib; {
     description = "Library for design by contract (DbC) and checking values, exceptions, and side-effects";
     longDescription = ''
       In a nutshell, deal empowers you to write bug-free code.
-      By adding a few decorators to your code, you get for free tests, static analysis, formal verification, and much more
+      By adding a few decorators to your code, you get for free tests, static analysis, formal verification,
+      and much more.
     '';
     homepage = "https://github.com/life4/deal";
+    changelog = "https://github.com/life4/deal/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
   };
diff --git a/pkgs/development/python-modules/deprecat/default.nix b/pkgs/development/python-modules/deprecat/default.nix
index 194859ad531a..a87394dea289 100644
--- a/pkgs/development/python-modules/deprecat/default.nix
+++ b/pkgs/development/python-modules/deprecat/default.nix
@@ -10,22 +10,22 @@
 buildPythonPackage rec {
   pname = "deprecat";
   version = "2.1.2";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mjhajharia";
-    repo = pname;
+    repo = "deprecat";
     rev = "refs/tags/v${version}";
     hash = "sha256-uAabZAtZDhcX6TfiM0LnrAzxxS64ys+vdodmxO//0x8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     wrapt
   ];
 
@@ -37,6 +37,11 @@ buildPythonPackage rec {
     "deprecat"
   ];
 
+  disabledTestPaths = [
+    # https://github.com/mjhajharia/deprecat/issues/13
+    "tests/test_sphinx.py"
+  ];
+
   meta = with lib; {
     description = "Decorator to deprecate old python classes, functions or methods";
     homepage = "https://github.com/mjhajharia/deprecat";
diff --git a/pkgs/development/python-modules/dirigera/default.nix b/pkgs/development/python-modules/dirigera/default.nix
index a2856ba209ea..96c62ee20089 100644
--- a/pkgs/development/python-modules/dirigera/default.nix
+++ b/pkgs/development/python-modules/dirigera/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "dirigera";
-  version = "1.0.11";
+  version = "1.0.12";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,14 +20,14 @@ buildPythonPackage rec {
     owner = "Leggin";
     repo = "dirigera";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kZlmfoGbvSv13+UqCE73ToLfrzzQ9AOxefRTxUvxMCg=";
+    hash = "sha256-e8kbMP5ih7MBozFbylLEBR9DrS894X4xZh62OLLSgFw=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pydantic
     requests
     websocket-client
@@ -43,10 +43,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Module for controlling the IKEA Dirigera Smart Home Hub";
-    mainProgram = "generate-token";
     homepage = "https://github.com/Leggin/dirigera";
     changelog = "https://github.com/Leggin/dirigera/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "generate-token";
   };
 }
diff --git a/pkgs/development/python-modules/django/5.nix b/pkgs/development/python-modules/django/5.nix
index 7bbc36f27af8..2fe896e3bd3d 100644
--- a/pkgs/development/python-modules/django/5.nix
+++ b/pkgs/development/python-modules/django/5.nix
@@ -2,7 +2,6 @@
 , stdenv
 , buildPythonPackage
 , fetchPypi
-, fetchpatch2
 , pythonOlder
 , substituteAll
 
@@ -64,11 +63,6 @@ buildPythonPackage rec {
     # disable test that excpects timezone issues
     ./django_5_disable_failing_tests.patch
 
-    (fetchpatch2 {
-      # fix test on 3.12; https://github.com/django/django/pull/17843
-      url = "https://github.com/django/django/commit/bc8471f0aac8f0c215b9471b594d159783bac19b.patch";
-      hash = "sha256-g1T9b73rmQ0uk1lB+iQy1XwK3Qin3mf5wpRsyYISJaw=";
-    })
   ] ++ lib.optionals withGdal [
     (substituteAll {
       src = ./django_5_set_geos_gdal_lib.patch;
diff --git a/pkgs/development/python-modules/dnf-plugins-core/default.nix b/pkgs/development/python-modules/dnf-plugins-core/default.nix
index 81404145e8b8..70259804158b 100644
--- a/pkgs/development/python-modules/dnf-plugins-core/default.nix
+++ b/pkgs/development/python-modules/dnf-plugins-core/default.nix
@@ -22,7 +22,7 @@ in
 
 buildPythonPackage rec {
   pname = "dnf-plugins-core";
-  version = "4.5.0";
+  version = "4.6.0";
   format = "other";
 
   outputs = [ "out" "man" ];
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "rpm-software-management";
     repo = "dnf-plugins-core";
     rev = "refs/tags/${version}";
-    hash = "sha256-og20X2AUzoOphwF+508EobGEp/VYLtxWY7N4k327o8o=";
+    hash = "sha256-7LaI5EungJrOPgxDzK/pi4X+D3PPsrbIjYdCknKIiHA=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/dvc/default.nix b/pkgs/development/python-modules/dvc/default.nix
index 885e4915d1af..72cb75d784c0 100644
--- a/pkgs/development/python-modules/dvc/default.nix
+++ b/pkgs/development/python-modules/dvc/default.nix
@@ -57,7 +57,7 @@
 
 buildPythonPackage rec {
   pname = "dvc";
-  version = "3.48.4";
+  version = "3.49.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -66,7 +66,7 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "dvc";
     rev = "refs/tags/${version}";
-    hash = "sha256-vO+i0BU8mQuLfgb1rcGRmlb8gpHsRxgdwuJHRERA4Pw=";
+    hash = "sha256-Qu2+zTcTIPxLRZn1GB3Q6465kSEAuN+wessBVgxEdFU=";
   };
 
   pythonRelaxDeps = [
@@ -76,17 +76,17 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace dvc/analytics.py \
-      --replace 'enabled = not os.getenv(DVC_NO_ANALYTICS)' 'enabled = False'
+      --replace-fail 'enabled = not os.getenv(DVC_NO_ANALYTICS)' 'enabled = False'
     substituteInPlace dvc/daemon.py \
       --subst-var-by dvc "$out/bin/dcv"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     pythonRelaxDepsHook
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     appdirs
     colorama
     configobj
@@ -166,10 +166,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Version Control System for Machine Learning Projects";
-    mainProgram = "dvc";
     homepage = "https://dvc.org";
     changelog = "https://github.com/iterative/dvc/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ cmcdragonkai fab ];
+    mainProgram = "dvc";
   };
 }
diff --git a/pkgs/development/python-modules/extract-msg/default.nix b/pkgs/development/python-modules/extract-msg/default.nix
index 592172fc3d25..6c6e23370261 100644
--- a/pkgs/development/python-modules/extract-msg/default.nix
+++ b/pkgs/development/python-modules/extract-msg/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "extract-msg";
-  version = "0.48.3";
+  version = "0.48.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "TeamMsgExtractor";
     repo = "msg-extractor";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oN5blYU8LR2O1LEb6naL33UXjBk9xpINl4h6HSaN7PQ=";
+    hash = "sha256-xX25RVtkUFn+j9rALOHQOTRzqJXiEMn7i9pxCJ8so4U=";
   };
 
   pythonRelaxDeps = [
@@ -33,12 +33,12 @@ buildPythonPackage rec {
     "red-black-tree-mod"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     pythonRelaxDepsHook
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     beautifulsoup4
     compressed-rtf
     ebcdic
diff --git a/pkgs/development/python-modules/fjaraskupan/default.nix b/pkgs/development/python-modules/fjaraskupan/default.nix
index 3068d6542ed7..533847786c89 100644
--- a/pkgs/development/python-modules/fjaraskupan/default.nix
+++ b/pkgs/development/python-modules/fjaraskupan/default.nix
@@ -5,23 +5,28 @@
 , pytest-mock
 , pytestCheckHook
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "fjaraskupan";
-  version = "2.2.0";
-  format = "setuptools";
+  version = "2.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "elupus";
-    repo = pname;
+    repo = "fjaraskupan";
     rev = "refs/tags/${version}";
-    hash = "sha256-0tNLwYckWF9GjhniEkiO+A+xDsUriUsMFZxG/FmUfps=";
+    hash = "sha256-3jw42lsCwNkFptMNpnhtbrPIkZP/8lUCcMigzq8Hbc4=";
   };
 
-  propagatedBuildInputs = [
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  dependencies = [
     bleak
   ];
 
@@ -37,6 +42,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Module for controlling Fjäråskupan kitchen fans";
     homepage = "https://github.com/elupus/fjaraskupan";
+    changelog = "https://github.com/elupus/fjaraskupan/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/flask-restx/default.nix b/pkgs/development/python-modules/flask-restx/default.nix
index 106f6cc82165..1a9a27dc0315 100644
--- a/pkgs/development/python-modules/flask-restx/default.nix
+++ b/pkgs/development/python-modules/flask-restx/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
@@ -16,24 +17,29 @@
 , pytest-mock
 , pytest-benchmark
 , pytestCheckHook
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "flask-restx";
   version = "1.3.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   # Tests not included in PyPI tarball
   src = fetchFromGitHub {
     owner = "python-restx";
-    repo = pname;
+    repo = "flask-restx";
     rev = "refs/tags/${version}";
     hash = "sha256-CBReP/u96fsr28lMV1BfLjjdBMXEvsD03wvsxkIcteI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     aniso8601
     flask
     importlib-resources
@@ -58,6 +64,8 @@ buildPythonPackage rec {
     "--deselect=tests/test_inputs.py::URLTest::test_check"
     "--deselect=tests/test_inputs.py::EmailTest::test_valid_value_check"
     "--deselect=tests/test_logging.py::LoggingTest::test_override_app_level"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "--deselect=tests/test_inputs.py::EmailTest::test_invalid_values_check"
   ];
 
   disabledTests = [
diff --git a/pkgs/development/python-modules/githubkit/default.nix b/pkgs/development/python-modules/githubkit/default.nix
index ad737eb7b3bc..ac9ed0be67d5 100644
--- a/pkgs/development/python-modules/githubkit/default.nix
+++ b/pkgs/development/python-modules/githubkit/default.nix
@@ -37,7 +37,7 @@ buildPythonPackage rec {
       --replace-fail "--cov=githubkit --cov-append --cov-report=term-missing" ""
   '';
 
-  build-systems = [
+  build-system = [
     poetry-core
     pythonRelaxDepsHook
   ];
diff --git a/pkgs/development/python-modules/glean-parser/default.nix b/pkgs/development/python-modules/glean-parser/default.nix
index 7f0dfe2d5e87..86a4c6248f5d 100644
--- a/pkgs/development/python-modules/glean-parser/default.nix
+++ b/pkgs/development/python-modules/glean-parser/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "glean-parser";
-  version = "13.0.0";
+  version = "13.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "glean_parser";
     inherit version;
-    hash = "sha256-gzeAyrfgVwNLNSeGIDr5TyGvywCUy+1gEEcfXcIaX5E=";
+    hash = "sha256-/urUy+xpMO04pI31uunrTuSGu0Am3fLzIGuF+AJ50ec=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
index c4517465a55c..f69f56fb510d 100644
--- a/pkgs/development/python-modules/google-cloud-pubsub/default.nix
+++ b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-pubsub";
-  version = "2.20.3";
+  version = "2.21.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dq8PF5UJ5DHSu+P1H0JiVng9yVm49FjBNwyxnW974LE=";
+    hash = "sha256-lAF/C8moX6P02RPzEukwoP4hd1vWjd5cZm4vGxrd+BE=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/hishel/default.nix b/pkgs/development/python-modules/hishel/default.nix
index 2deba68019e5..112d8759c62c 100644
--- a/pkgs/development/python-modules/hishel/default.nix
+++ b/pkgs/development/python-modules/hishel/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "hishel";
-  version = "0.0.24";
+  version = "0.0.25";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,15 +26,15 @@ buildPythonPackage rec {
     owner = "karpetrosyan";
     repo = "hishel";
     rev = "refs/tags/${version}";
-    hash = "sha256-wup1rQ5MHjsBaTdfueP9y7QhutoO0xYeexZPDQpUEJk=";
+    hash = "sha256-vDzXrAGJUqG9+wOUWXeKLYraUrILJFAQXf60iCAHRPo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-fancy-pypi-readme
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
   ];
 
diff --git a/pkgs/development/python-modules/icontract/default.nix b/pkgs/development/python-modules/icontract/default.nix
index e525cf89cca2..f8b9fd589f18 100644
--- a/pkgs/development/python-modules/icontract/default.nix
+++ b/pkgs/development/python-modules/icontract/default.nix
@@ -1,26 +1,28 @@
 { lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
 , astor
 , asttokens
 , asyncstdlib
+, buildPythonPackage
 , deal
 , dpcontracts
+, fetchFromGitHub
 , numpy
 , pytestCheckHook
+, pythonOlder
+, setuptools
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "icontract";
   version = "2.6.6";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Parquery";
-    repo = pname;
+    repo = "icontract";
     rev = "refs/tags/v${version}";
     hash = "sha256-R5/FBfuTvXItfTlNZMSnO18Q+etnHbQyXFWpaOpOLes=";
   };
@@ -32,7 +34,11 @@ buildPythonPackage rec {
     export ICONTRACT_SLOW=1
   '';
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     asttokens
     typing-extensions
   ];
@@ -46,11 +52,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # AssertionError
+    "test_abstract_method_not_implemented"
+  ];
+
   disabledTestPaths = [
     # mypy decorator checks don't pass. For some reason mypy
     # doesn't check the python file provided in the test.
     "tests/test_mypy_decorators.py"
-    # those tests seems to simply re-run some typeguard tests
+    # Those tests seems to simply re-run some typeguard tests
     "tests/test_typeguard.py"
   ];
 
@@ -59,7 +70,9 @@ buildPythonPackage rec {
     "-W" "ignore::RuntimeWarning"
   ];
 
-  pythonImportsCheck = [ "icontract" ];
+  pythonImportsCheck = [
+    "icontract"
+  ];
 
   meta = with lib; {
     description = "Provide design-by-contract with informative violation messages";
diff --git a/pkgs/development/python-modules/jupyter-server/default.nix b/pkgs/development/python-modules/jupyter-server/default.nix
index 6b0160202d87..fbde4773c80e 100644
--- a/pkgs/development/python-modules/jupyter-server/default.nix
+++ b/pkgs/development/python-modules/jupyter-server/default.nix
@@ -70,6 +70,9 @@ buildPythonPackage rec {
     overrides
   ];
 
+  # https://github.com/NixOS/nixpkgs/issues/299427
+  stripExclude = lib.optionals stdenv.isDarwin [ "favicon.ico" ];
+
   nativeCheckInputs = [
     ipykernel
     pytestCheckHook
diff --git a/pkgs/development/python-modules/karton-core/default.nix b/pkgs/development/python-modules/karton-core/default.nix
index 6746fd6eb710..e9c0b9cb07c4 100644
--- a/pkgs/development/python-modules/karton-core/default.nix
+++ b/pkgs/development/python-modules/karton-core/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "karton-core";
-  version = "5.3.3";
+  version = "5.3.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,14 +20,14 @@ buildPythonPackage rec {
     owner = "CERT-Polska";
     repo = "karton";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RVHhMKoQAqsddziK/vWGynSL9mxMuccNEGzoJTx8KAA=";
+    hash = "sha256-q12S80GZFyh7zU6iMeCkyIesMK8qXtZ1B69w8H5LpOU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     orjson
     redis
diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix
index bb3bd33e469e..7818871db1b7 100644
--- a/pkgs/development/python-modules/kubernetes/default.nix
+++ b/pkgs/development/python-modules/kubernetes/default.nix
@@ -1,14 +1,15 @@
 { lib
 , stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# propgatedBuildInputs
 , adal
+, buildPythonPackage
 , certifi
+, fetchFromGitHub
 , google-auth
+, mock
+, pytestCheckHook
 , python-dateutil
+, pythonOlder
+, pythonRelaxDepsHook
 , pyyaml
 , requests
 , requests-oauthlib
@@ -16,16 +17,12 @@
 , six
 , urllib3
 , websocket-client
-
-# tests
-, pytestCheckHook
-, mock
 }:
 
 buildPythonPackage rec {
   pname = "kubernetes";
   version = "28.1.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -36,20 +33,38 @@ buildPythonPackage rec {
     hash = "sha256-NKrxv5a5gkgpNG7yViTKYBYnU249taWl6fkPJa7/Rzo=";
   };
 
-  propagatedBuildInputs = [
-    adal
+  postPatch = ''
+    substituteInPlace kubernetes/base/config/kube_config_test.py \
+      --replace-fail "assertEquals" "assertEqual"
+  '';
+
+  pythonRelaxDeps = [
+    "urllib3"
+  ];
+
+  build-system = [
+    pythonRelaxDepsHook
+    setuptools
+  ];
+
+  dependencies = [
     certifi
     google-auth
     python-dateutil
     pyyaml
     requests
     requests-oauthlib
-    setuptools
     six
     urllib3
     websocket-client
   ];
 
+  passthru.optional-dependencies = {
+    adal = [
+      adal
+    ];
+  };
+
   pythonImportsCheck = [
     "kubernetes"
   ];
@@ -57,7 +72,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     mock
     pytestCheckHook
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   disabledTests = lib.optionals stdenv.isDarwin [
     # AssertionError: <class 'urllib3.poolmanager.ProxyManager'> != <class 'urllib3.poolmanager.Poolmanager'>
@@ -67,6 +82,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Kubernetes Python client";
     homepage = "https://github.com/kubernetes-client/python";
+    changelog = "https://github.com/kubernetes-client/python/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ lsix ];
   };
diff --git a/pkgs/development/python-modules/langchain-community/default.nix b/pkgs/development/python-modules/langchain-community/default.nix
index 0f0492c1c4b4..95786643d458 100644
--- a/pkgs/development/python-modules/langchain-community/default.nix
+++ b/pkgs/development/python-modules/langchain-community/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-community";
-  version = "0.0.27";
+  version = "0.0.29";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_community";
     inherit version;
-    hash = "sha256-Jm3/vUwWZtsYicrZU/pRAtTev/eCM1NTtteGNqdhd40=";
+    hash = "sha256-2IEH+vqf4sVzPaljDGjZ7lHNM7HIiklQ56LZo49+eqM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/langchain-core/default.nix b/pkgs/development/python-modules/langchain-core/default.nix
index 350e9a903690..d1a48870d255 100644
--- a/pkgs/development/python-modules/langchain-core/default.nix
+++ b/pkgs/development/python-modules/langchain-core/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-core";
-  version = "0.1.32";
+  version = "0.1.36";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_core";
     inherit version;
-    hash = "sha256-1iaDvsvyD1HxKHV5GgQjIPReqgyHomfTC8A7waB/XsI=";
+    hash = "sha256-qiQyNwyj0qXW3RSoEKpkiL8vYi/3oKPcMPbg7Z1/X6g=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/langchain/default.nix b/pkgs/development/python-modules/langchain/default.nix
index f9352c5f9876..1fc9cd416ecd 100644
--- a/pkgs/development/python-modules/langchain/default.nix
+++ b/pkgs/development/python-modules/langchain/default.nix
@@ -52,7 +52,7 @@
 
 buildPythonPackage rec {
   pname = "langchain";
-  version = "0.1.11";
+  version = "0.1.13";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -61,7 +61,7 @@ buildPythonPackage rec {
     owner = "langchain-ai";
     repo = "langchain";
     rev = "refs/tags/v${version}";
-    hash = "sha256-I7H8W85WJCt8Dkep5UvFRVuhJS8uAeg0xF9mNPZwm2g=";
+    hash = "sha256-tBEO0GOY1cqO5FOYnBXAOSupSRhcoI9u4Nu4FieId74=";
   };
 
   sourceRoot = "${src.name}/libs/langchain";
diff --git a/pkgs/development/python-modules/langsmith/default.nix b/pkgs/development/python-modules/langsmith/default.nix
index 33fcdcad63f0..79fbbb1ed893 100644
--- a/pkgs/development/python-modules/langsmith/default.nix
+++ b/pkgs/development/python-modules/langsmith/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "langsmith";
-  version = "0.1.31";
+  version = "0.1.36";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "langchain-ai";
     repo = "langsmith-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eQ2oP1I7uc9s9vrDqKCIqMGuh1+MjUpLFukp3Fg0RM0=";
+    hash = "sha256-YHYzC4c7VOPBiBgtJcN/hPccZMJBL5E8VsIAwErhWjg=";
   };
 
   sourceRoot = "${src.name}/python";
@@ -33,12 +33,12 @@ buildPythonPackage rec {
     "orjson"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     orjson
     pydantic
     requests
diff --git a/pkgs/development/python-modules/libretranslate/default.nix b/pkgs/development/python-modules/libretranslate/default.nix
index 8afdbf97e184..042fd5d404d1 100644
--- a/pkgs/development/python-modules/libretranslate/default.nix
+++ b/pkgs/development/python-modules/libretranslate/default.nix
@@ -1,7 +1,9 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonRelaxDepsHook
 , pytestCheckHook
+, hatchling
 , argostranslate
 , flask
 , flask-swagger
@@ -11,6 +13,8 @@
 , flask-session
 , waitress
 , expiringdict
+, langdetect
+, lexilang
 , ltpycld2
 , morfessor
 , appdirs
@@ -27,8 +31,7 @@
 buildPythonPackage rec {
   pname = "libretranslate";
   version = "1.5.6";
-
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "LibreTranslate";
@@ -37,7 +40,14 @@ buildPythonPackage rec {
     hash = "sha256-43VnxgtapMRKyXxqsvBgSMUxvpbLI+iOfW3FA0/POpE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    hatchling
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = true;
+
+  dependencies = [
     argostranslate
     flask
     flask-swagger
@@ -47,6 +57,8 @@ buildPythonPackage rec {
     flask-session
     waitress
     expiringdict
+    langdetect
+    lexilang
     ltpycld2
     morfessor
     appdirs
@@ -59,14 +71,6 @@ buildPythonPackage rec {
     polib
   ];
 
-  postPatch = ''
-    substituteInPlace requirements.txt  \
-      --replace "==" ">="
-
-    substituteInPlace setup.py  \
-      --replace "'pytest-runner'" ""
-  '';
-
   postInstall = ''
     # expose static files to be able to serve them via web-server
     mkdir -p $out/share/libretranslate
diff --git a/pkgs/development/python-modules/libtmux/default.nix b/pkgs/development/python-modules/libtmux/default.nix
index 7204e502d8ec..1d26117e5ba1 100644
--- a/pkgs/development/python-modules/libtmux/default.nix
+++ b/pkgs/development/python-modules/libtmux/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "libtmux";
-  version = "0.35.0";
+  version = "0.36.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tmux-python";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-1Xt2sl4L56TnveufD2j9k6eQQ+HllDxagv1APrErQYc=";
+    hash = "sha256-oJ2IGaPFMKA/amUEPZi1UO9vZtjPNQg3SIFjQWzUeSE=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/llama-index-agent-openai/default.nix b/pkgs/development/python-modules/llama-index-agent-openai/default.nix
index 5663e9f11828..550b08375559 100644
--- a/pkgs/development/python-modules/llama-index-agent-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-agent-openai/default.nix
@@ -1,25 +1,36 @@
 { lib
 , buildPythonPackage
-, fetchFromGitHub
+, fetchPypi
 , llama-index-core
 , llama-index-llms-openai
 , poetry-core
+, pythonOlder
+, pythonRelaxDepsHook
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-agent-openai";
+  version = "0.2.0";
+  pyproject = true;
 
-  inherit (llama-index-core) version src meta;
+  disabled = pythonOlder "3.8";
 
-  pyproject = true;
+  src = fetchPypi {
+    pname = "llama_index_agent_openai";
+    inherit version;
+    hash = "sha256-iDHuNk1TeBNAG6LK38JnAdPRrVODhQ9+fdytL1aNlO8=";
+  };
 
-  sourceRoot = "${src.name}/llama-index-integrations/agent/${pname}";
+  pythonRelaxDeps = [
+    "llama-index-llms-openai"
+  ];
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
+    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     llama-index-core
     llama-index-llms-openai
   ];
@@ -27,4 +38,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [
     "llama_index.agent.openai"
   ];
+
+  meta = with lib; {
+    description = "LlamaIndex Agent Integration for OpenAI";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/agent/llama-index-agent-openai";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
 }
diff --git a/pkgs/development/python-modules/llama-index-core/default.nix b/pkgs/development/python-modules/llama-index-core/default.nix
index 45b92fdae27b..5146eca9d4d6 100644
--- a/pkgs/development/python-modules/llama-index-core/default.nix
+++ b/pkgs/development/python-modules/llama-index-core/default.nix
@@ -30,7 +30,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-core";
-  version = "0.10.23";
+  version = "0.10.25";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -39,7 +39,7 @@ buildPythonPackage rec {
     owner = "run-llama";
     repo = "llama_index";
     rev = "refs/tags/v${version}";
-    hash = "sha256-koFdHpcMX4Qg+LLDcjHx4wYxHnrJaAqebpba0ejINzo=";
+    hash = "sha256-E06Fxj6dD0BVYpme107IdgGg0Y7vhNR9zFvyKL0Yqws=";
   };
 
   sourceRoot = "${src.name}/${pname}";
diff --git a/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix b/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix
new file mode 100644
index 000000000000..c30cb3e72e2a
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, poetry-core
+, pythonOlder
+, sentence-transformers
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-embeddings-huggingface";
+  version = "0.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_embeddings_huggingface";
+    inherit version;
+    hash = "sha256-3PCplFXzfE4aL91c1lyd0aRRu4aMP4DDNcTQybadAHE=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    llama-index-core
+    sentence-transformers
+  ];
+
+  # Tests are only available in the mono repo
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "llama_index.embeddings.huggingface"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Embeddings Integration for Huggingface";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/embeddings/llama-index-embeddings-huggingface";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix b/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix
new file mode 100644
index 000000000000..509bf54d2872
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-generativeai
+, llama-index-core
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-embeddings-ollama";
+  version = "0.1.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchPypi {
+    pname = "llama_index_embeddings_ollama";
+    inherit version;
+    hash = "sha256-qeCAm93S5K2IjySVGe3H49M5x05OA/xaQMMGDcQdR6k=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    llama-index-core
+  ];
+
+  # Tests are only available in the mono repo
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "llama_index.embeddings.ollama"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Llms Integration for Ollama";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/embeddings/llama-index-embeddings-ollama";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix b/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix
new file mode 100644
index 000000000000..783ace83f656
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, nebula3-python
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-graph-stores-nebula";
+  version = "0.1.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_graph_stores_nebula";
+    inherit version;
+    hash = "sha256-Xb/0ogj2NlGV4MGC9Be54d/JfalT40jtAe6LOPO1u/8=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    llama-index-core
+    nebula3-python
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.graph_stores.nebula"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Graph Store Integration for Nebula";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/graph_stores/llama-index-graph-stores-nebula";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix b/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix
new file mode 100644
index 000000000000..8561c2299ebe
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, neo4j
+, llama-index-core
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-graph-stores-neo4j";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_graph_stores_neo4j";
+    inherit version;
+    hash = "sha256-AUWezvdONxz5H42VpTjh7NrBkTdWjtBJyMvA8kSh5w4=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    neo4j
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.graph_stores.neo4j"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Graph Store Integration for Neo4j";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix b/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix
new file mode 100644
index 000000000000..869116b58c6b
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, boto3
+, llama-index-core
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-graph-stores-neptune";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_graph_stores_neptune";
+    inherit version;
+    hash = "sha256-ZveFCJJT7Qal82cuVTs+3AmSuvdc7GsHqqqNvcDb3CY=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    boto3
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.graph_stores.neptune"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Graph Store Integration for Neptune";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/graph_stores/llama-index-graph-stores-neptune";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-llms-ollama/default.nix b/pkgs/development/python-modules/llama-index-llms-ollama/default.nix
new file mode 100644
index 000000000000..dd1ccf563b77
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-llms-ollama/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-llms-ollama";
+  version = "0.1.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_llms_ollama";
+    inherit version;
+    hash = "sha256-GexyfQSMhzkV1bA32aL+lWUgwBmxHXq4w8QG3RHzTks=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    llama-index-core
+  ];
+
+  # Tests are only available in the mono repo
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "llama_index.llms.ollama"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex LLMS Integration for ollama";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/llms/llama-index-llms-ollama";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix b/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix
new file mode 100644
index 000000000000..ccb32689f530
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, llama-index-llms-openai
+, poetry-core
+, pythonOlder
+, transformers
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-llms-openai-like";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_llms_openai_like";
+    inherit version;
+    hash = "sha256-w0EjJQd8dSY+N9YNUBMUub3HcPEtiisW51bn2ayPnj8=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    llama-index-core
+    llama-index-llms-openai
+    transformers
+  ];
+
+  # Tests are only available in the mono repo
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "llama_index.llms.openai_like"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex LLMS Integration for OpenAI like";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/llms/llama-index-llms-openai-like";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-llms-openai/default.nix b/pkgs/development/python-modules/llama-index-llms-openai/default.nix
index 8678e80272c1..24085ab77603 100644
--- a/pkgs/development/python-modules/llama-index-llms-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-llms-openai/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-llms-openai";
-  version = "0.1.12";
+  version = "0.1.13";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_llms_openai";
     inherit version;
-    hash = "sha256-QAygCDlRvWaM6Lwkh1znC2NufbMosnxqUObRorCBueY=";
+    hash = "sha256-wP2TIlWsm/crawLDgR7rvzQxqnYDrqqzHIEVR/REsco=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/llama-index-program-openai/default.nix b/pkgs/development/python-modules/llama-index-program-openai/default.nix
index 12b2f6a7ac9e..70640d4a4bbe 100644
--- a/pkgs/development/python-modules/llama-index-program-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-program-openai/default.nix
@@ -6,11 +6,12 @@
 , llama-index-llms-openai
 , poetry-core
 , pythonOlder
+, pythonRelaxDepsHook
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-program-openai";
-  version = "0.1.4";
+  version = "0.1.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,11 +19,16 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_program_openai";
     inherit version;
-    hash = "sha256-Vz6Zot0WrTyvOCyKso0awQ6yVxvJSB2EptiYBq1qpdQ=";
+    hash = "sha256-wzqi0odq0P8fmip1XU59SRckCEfQF057LQuEdEmbtwA=";
   };
 
+  pythonRelaxDeps = [
+    "llama-index-agent-openai"
+  ];
+
   build-system = [
     poetry-core
+    pythonRelaxDepsHook
   ];
 
   dependencies = [
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix
new file mode 100644
index 000000000000..9d5a33ebc7d9
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-generativeai
+, llama-index-core
+, poetry-core
+, pythonOlder
+, pythonRelaxDepsHook
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-vector-stores-google";
+  version = "0.1.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_vector_stores_google";
+    inherit version;
+    hash = "sha256-5HjbymV7wdcu/C+ndWCxj3j10QIgVqUaSaZ4cRMJ46U=";
+  };
+
+  pythonRelaxDeps = [
+    "google-generativeai"
+  ];
+
+  build-system = [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  dependencies = [
+    google-generativeai
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.vector_stores.google"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Vector Store Integration for Google";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/vector_stores/llama-index-vector-stores-google";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix
new file mode 100644
index 000000000000..4751a0fce866
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, asyncpg
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, pgvector
+, poetry-core
+, psycopg2
+, pythonRelaxDepsHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-vector-stores-postgres";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_vector_stores_postgres";
+    inherit version;
+    hash = "sha256-vWqCcda9dDPLceoOEgMivpBmkLbKs/poEjzCk/q4HwI=";
+  };
+
+  pythonRemoveDeps = [
+    "psycopg2-binary"
+  ];
+
+  build-system = [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  dependencies = [
+    asyncpg
+    llama-index-core
+    pgvector
+    psycopg2
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.vector_stores.postgres"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Vector Store Integration for Postgres";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
new file mode 100644
index 000000000000..e0c34a935c76
--- /dev/null
+++ b/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, qdrant-client
+, poetry-core
+, grpcio
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-vector-stores-qdrant";
+  version = "0.1.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_index_vector_stores_qdrant";
+    inherit version;
+    hash = "sha256-UIiEL7ZUcGQusyhs9cFsPOZ8qxH7ouoCnQMemlho0lA=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    grpcio
+    llama-index-core
+    qdrant-client
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.vector_stores.qdrant"
+  ];
+
+  meta = with lib; {
+    description = "LlamaIndex Vector Store Integration for Qdrant";
+    homepage = "https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/vector_stores/llama-index-vector-stores-qdrant";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-parse/default.nix b/pkgs/development/python-modules/llama-parse/default.nix
index 284f03f67a59..5d63c234fa07 100644
--- a/pkgs/development/python-modules/llama-parse/default.nix
+++ b/pkgs/development/python-modules/llama-parse/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "llama-parse";
-  version = "0.3.9";
+  version = "0.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,14 +16,14 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_parse";
     inherit version;
-    hash = "sha256-vra6Tbt6V3CKtvEPfVMUFZjjneGgQKYeb1pxw6XVaxM=";
+    hash = "sha256-7lIelCLbSNvfADA8tukPEGYTGWC1yk4U9bWm22t5F+I=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     llama-index-core
   ];
 
diff --git a/pkgs/development/python-modules/llamaindex-py-client/default.nix b/pkgs/development/python-modules/llamaindex-py-client/default.nix
index d46e070c9517..fb0cb4ad58ad 100644
--- a/pkgs/development/python-modules/llamaindex-py-client/default.nix
+++ b/pkgs/development/python-modules/llamaindex-py-client/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "llamaindex-py-client";
-  version = "0.1.13";
+  version = "0.1.15";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llamaindex_py_client";
     inherit version;
-    hash = "sha256-O9m0Ne4KeBceukEt6lZ02BPrW/NuV308fH6Q7cVJANk=";
+    hash = "sha256-x84mhVupdhU7tAFXw8GUIjxrdReZNbmI3UvWo/6Dqss=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/lxmf/default.nix b/pkgs/development/python-modules/lxmf/default.nix
index 6a3f45b414b7..6682b2b09f64 100644
--- a/pkgs/development/python-modules/lxmf/default.nix
+++ b/pkgs/development/python-modules/lxmf/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "lxmf";
-  version = "0.4.2";
+  version = "0.4.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,14 +17,14 @@ buildPythonPackage rec {
     owner = "markqvist";
     repo = "lxmf";
     rev = "refs/tags/${version}";
-    hash = "sha256-JDD1X0/5xuqGN/Qw67tTFqfoWUd7Ah80/mimK01tG6Y=";
+    hash = "sha256-8Usu2fecSnyVfGrEJED4qMBO5RwJjTq5c7svCTu445Q=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     rns
   ];
 
@@ -37,10 +37,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Lightweight Extensible Message Format for Reticulum";
-    mainProgram = "lxmd";
     homepage = "https://github.com/markqvist/lxmf";
     changelog = "https://github.com/markqvist/LXMF/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "lxmd";
   };
 }
diff --git a/pkgs/development/python-modules/manifest-ml/default.nix b/pkgs/development/python-modules/manifest-ml/default.nix
index 0d3e02ed732c..4465066682c9 100644
--- a/pkgs/development/python-modules/manifest-ml/default.nix
+++ b/pkgs/development/python-modules/manifest-ml/default.nix
@@ -1,34 +1,35 @@
 { lib
+, accelerate
+, aiohttp
 , buildPythonPackage
+, fastapi
 , fetchFromGitHub
-, pythonOlder
+, flask
 , numpy
+, pg8000
+, pillow
 , pydantic
+, pytestCheckHook
+, pythonOlder
+, pythonRelaxDepsHook
 , redis
 , requests
-, aiohttp
+, sentence-transformers
+, setuptools
+, sqlalchemy
 , sqlitedict
 , tenacity
 , tiktoken
-, xxhash
-, # optional dependencies
-  accelerate
-, flask
-, sentence-transformers
 , torch
 , transformers
-, fastapi
 , uvicorn
-, pillow
-, pg8000
-, sqlalchemy
-, pytestCheckHook
+, xxhash
 }:
 
 buildPythonPackage rec {
   pname = "manifest-ml";
   version = "0.1.9";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -41,7 +42,16 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [
+    "pydantic"
+  ];
+
+  build-system = [
+    pythonRelaxDepsHook
+    setuptools
+  ];
+
+  dependencies = [
     numpy
     pydantic
     redis
@@ -51,7 +61,7 @@ buildPythonPackage rec {
     tenacity
     tiktoken
     xxhash
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ];
 
   passthru.optional-dependencies = {
     api = [
@@ -79,7 +89,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-  ];
+  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -91,12 +101,17 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # these tests have db access
+    # Tests require DB access
     "test_init"
     "test_key_get_and_set"
     "test_get"
-    # this test has network access
+    # Tests require network access
+    "test_abatch_run"
+    "test_batch_run"
     "test_retry_handling"
+    "test_run_chat"
+    "test_run"
+    "test_score_run"
     # Test is time-senstive
     "test_timing"
   ];
diff --git a/pkgs/development/python-modules/marimo/default.nix b/pkgs/development/python-modules/marimo/default.nix
index 8873ac724c68..55b3e6c68172 100644
--- a/pkgs/development/python-modules/marimo/default.nix
+++ b/pkgs/development/python-modules/marimo/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "marimo";
-  version = "0.3.4";
+  version = "0.3.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nCH8JmeU81aJHHGJ1DOOCL9iarBXTBGauQKyHpU66Rk=";
+    hash = "sha256-XBOffkPJaGeyuK/mesN1nXXARRpoZpmiu5WVYS1tFvI=";
   };
 
   build-system = [
@@ -58,6 +58,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "A reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps";
     homepage = "https://github.com/marimo-team/marimo";
+    changelog = "https://github.com/marimo-team/marimo/releases/tag/${version}";
     license = licenses.asl20;
     mainProgram = "marimo";
     maintainers = with maintainers; [ akshayka dmadisetti ];
diff --git a/pkgs/development/python-modules/markdownify/default.nix b/pkgs/development/python-modules/markdownify/default.nix
index 19f842938007..e6b09592073a 100644
--- a/pkgs/development/python-modules/markdownify/default.nix
+++ b/pkgs/development/python-modules/markdownify/default.nix
@@ -1,29 +1,48 @@
 { lib
+, beautifulsoup4
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
-, beautifulsoup4
+, pythonOlder
+, setuptools
 , six
 }:
 
 buildPythonPackage rec {
   pname = "markdownify";
-  version = "0.11.6";
-  format = "setuptools";
+  version = "0.12.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AJskDgyfTI6vHQhWJdzUAR4S8PjOxV3t+epvdlXkm/4=";
+    hash = "sha256-H7CMYYsw4O56MaObmY9EoY+yirJU9V9K8GttNaIXnic=";
   };
 
-  propagatedBuildInputs = [ beautifulsoup4 six ];
-  nativeCheckInputs = [ pytestCheckHook ];
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    beautifulsoup4
+    six
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "markdownify"
+  ];
 
   meta = with lib; {
     description = "HTML to Markdown converter";
-    mainProgram = "markdownify";
     homepage = "https://github.com/matthewwithanm/python-markdownify";
+    changelog = "https://github.com/matthewwithanm/python-markdownify/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = [ maintainers.McSinyx ];
+    maintainers = with maintainers; [ McSinyx ];
+    mainProgram = "markdownify";
   };
 }
diff --git a/pkgs/development/python-modules/metakernel/default.nix b/pkgs/development/python-modules/metakernel/default.nix
index 3c8396bef797..e888ccfe98f8 100644
--- a/pkgs/development/python-modules/metakernel/default.nix
+++ b/pkgs/development/python-modules/metakernel/default.nix
@@ -11,21 +11,21 @@
 
 buildPythonPackage rec {
   pname = "metakernel";
-  version = "0.30.1";
-  format = "pyproject";
+  version = "0.30.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TKBvuGh8DnPDLaOpwOvLZHdj1kBOTE/JLda1nQ6J//U=";
+    hash = "sha256-Siff2FO4SfASgkLFUgTuWXpajYZClPJghLry+8gU1aQ=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ipykernel
     jedi
     jupyter-core
diff --git a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix
index 1ffc27845241..61b8d7804f51 100644
--- a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix
+++ b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "microsoft-kiota-abstractions";
-  version = "1.3.1";
+  version = "1.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,14 +22,14 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "kiota-abstractions-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AsJHKoA50JZBDQ7vob4lI0gEmfhRUELKtgq17tHegUY=";
+    hash = "sha256-n9Erm21slKm+zDblhSHA5Cwxkyrcyx0w09ua3bUc5XI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     flit-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     opentelemetry-api
     opentelemetry-sdk
     std-uritemplate
diff --git a/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix b/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix
new file mode 100644
index 000000000000..35d3e5c9cc16
--- /dev/null
+++ b/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mkdocs
+, pythonOlder
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "mkdocs-autolinks-plugin";
+  version = "0.7.1";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "zachhannum";
+    repo = "mkdocs-autolinks-plugin";
+    # The commit messages mention version 0.7.1, but the tag is v_071.
+    rev = "e2b649eb4db23459bcec121838f27c92c81f9ce1";
+    hash = "sha256-mEbuB9VwK7po1TqtJfBSkItOVlI3/W3nD2LYRHgPpTA=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [ mkdocs ];
+
+  # Module has no tests.
+  doCheck = false;
+
+  pythonImportsCheck = [ "mkdocs_autolinks_plugin" ];
+
+  meta = with lib; {
+    description = "An MkDocs plugin that simplifies relative linking between documents";
+    homepage = "https://github.com/zachhannum/mkdocs-autolinks-plugin";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucas-deangelis ];
+  };
+}
diff --git a/pkgs/development/python-modules/mscerts/default.nix b/pkgs/development/python-modules/mscerts/default.nix
index 9dc16828c869..6d7642c89470 100644
--- a/pkgs/development/python-modules/mscerts/default.nix
+++ b/pkgs/development/python-modules/mscerts/default.nix
@@ -2,12 +2,13 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "mscerts";
-  version = "2024.2.28";
-  format = "setuptools";
+  version = "2024.3.27";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -15,9 +16,13 @@ buildPythonPackage rec {
     owner = "ralphje";
     repo = "mscerts";
     rev = "refs/tags/${version}";
-    hash = "sha256-ReUDpax4tvw4ZCH8zOipelIPtHi7BdgLHI/r3FNpo1c=";
+    hash = "sha256-Hucf3tToYm3P6ebKNlUs5V+X1B95u9P2UC1yOItZOhc=";
   };
 
+  build-system = [
+    setuptools
+  ];
+
   # extras_require contains signify -> circular dependency
 
   # Module has no tests
diff --git a/pkgs/development/python-modules/myjwt/default.nix b/pkgs/development/python-modules/myjwt/default.nix
index c310c7efe1a1..d0d39dc9d087 100644
--- a/pkgs/development/python-modules/myjwt/default.nix
+++ b/pkgs/development/python-modules/myjwt/default.nix
@@ -34,20 +34,21 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-warn "1.6.0" "${version}"
+      --replace-fail "1.6.0" "${version}"
   '';
 
   pythonRelaxDeps = [
     "cryptography"
+    "pyopenssl"
     "questionary"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     colorama
     cryptography
diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix
index 74b48b53458e..8a8d53bc1c49 100644
--- a/pkgs/development/python-modules/mypy-boto3/default.nix
+++ b/pkgs/development/python-modules/mypy-boto3/default.nix
@@ -111,7 +111,7 @@ rec {
 
   mypy-boto3-backupstorage = buildMypyBoto3Package "backupstorage" "1.34.0" "sha256-Y8kjZ+ov8OsiJ8Sm1LlvP8YbgVc+AkLkbZIhOh4y7ZY=";
 
-  mypy-boto3-batch = buildMypyBoto3Package "batch" "1.34.59" "sha256-rsXdh8f3KRAROftePejdLxChRqtiaDFsJyhctX7jRUQ=";
+  mypy-boto3-batch = buildMypyBoto3Package "batch" "1.34.72" "sha256-ha5OZVVcO/+slxQOPIrd+D1Ehaw6YpGqCWofSgFj5JI=";
 
   mypy-boto3-billingconductor = buildMypyBoto3Package "billingconductor" "1.34.1" "sha256-uXxQkoe2u3idcYta9YFbjxoK8HsvUiRQSyYrYhVi1kU=";
 
@@ -119,7 +119,7 @@ rec {
 
   mypy-boto3-budgets = buildMypyBoto3Package "budgets" "1.34.0" "sha256-gs8JYnpFNOMWppBO2R3DO+c6RecQC0vzaox5DqXCKOA=";
 
-  mypy-boto3-ce = buildMypyBoto3Package "ce" "1.34.52" "sha256-KHimN6KC8V6nyp6ZQbv0XAuWMjGZkg/bPrQ6do5QQE0=";
+  mypy-boto3-ce = buildMypyBoto3Package "ce" "1.34.71" "sha256-VfB823/q+ie97Bv5GXhsBaGxAuXSDbfFq2rO6TjThXY=";
 
   mypy-boto3-chime = buildMypyBoto3Package "chime" "1.34.0" "sha256-/IBkHJf4t1K/Ubdf/hUw5XToNBTCziMfTSdksxMwA2Q=";
 
@@ -161,7 +161,7 @@ rec {
 
   mypy-boto3-codeartifact = buildMypyBoto3Package "codeartifact" "1.34.68" "sha256-Ey0cmx0OxN1/VXIyvn0EOBP9qYIuc/XyFVZniHLaNEY=";
 
-  mypy-boto3-codebuild = buildMypyBoto3Package "codebuild" "1.34.67" "sha256-Kvd8zAHfepA4dulpiQCaT2pfKCH567d6CYd5QlweXIY=";
+  mypy-boto3-codebuild = buildMypyBoto3Package "codebuild" "1.34.70" "sha256-lv69lhMKJHRnooVrmGinfDEi7eVEe7O12GNNo5uZQQc=";
 
   mypy-boto3-codecatalyst = buildMypyBoto3Package "codecatalyst" "1.34.0" "sha256-TsXVy8bx6kaj84PJiNNU+075Tx3WW0mrtZFOyLx9yT4=";
 
@@ -251,7 +251,7 @@ rec {
 
   mypy-boto3-ebs = buildMypyBoto3Package "ebs" "1.34.0" "sha256-xIrrXOayZed+Jcn4CFXXNgKz/G+RdiuwA04wq+Ry/fs=";
 
-  mypy-boto3-ec2 = buildMypyBoto3Package "ec2" "1.34.66" "sha256-Io0ExXqdar+5A4H66ryaApWIQnEcspQysfBsOit4WyY=";
+  mypy-boto3-ec2 = buildMypyBoto3Package "ec2" "1.34.71" "sha256-hjEJNB8/m1yE9f0yxoKZeVySRfCun1NGmL8UeqP8AXs=";
 
   mypy-boto3-ec2-instance-connect = buildMypyBoto3Package "ec2-instance-connect" "1.34.63" "sha256-kExmGXEJ5jrvOewmWx7AjVb3boD5GU0cEUp/2PQhzlw=";
 
@@ -259,7 +259,7 @@ rec {
 
   mypy-boto3-ecr-public = buildMypyBoto3Package "ecr-public" "1.34.0" "sha256-38ZiRVPr9L+KUF6oL23xsIiKMW0pT/nIngFkhSS3z2Y=";
 
-  mypy-boto3-ecs = buildMypyBoto3Package "ecs" "1.34.39" "sha256-s3YTAoZSgDHenHa54DwSNRRAnfCNMcdmZP1FX0hTygE=";
+  mypy-boto3-ecs = buildMypyBoto3Package "ecs" "1.34.71" "sha256-Ka2nMhArorYcIx+MoLN7bIbKl4ptNER6uC9FdLWZBfI=";
 
   mypy-boto3-efs = buildMypyBoto3Package "efs" "1.34.0" "sha256-VAK7mfnPBPDC8Azm6Bxl86E8CkeArTmfgqYkIcSblYA=";
 
@@ -267,7 +267,7 @@ rec {
 
   mypy-boto3-elastic-inference = buildMypyBoto3Package "elastic-inference" "1.34.0" "sha256-gbWKw0zDQf3qBlp1KeO7MX1j/GqRUpFAxLG0BKFrHBk=";
 
-  mypy-boto3-elasticache = buildMypyBoto3Package "elasticache" "1.34.60" "sha256-D3WLH1FS8dddD6WKUmQApvtehGMmjWYzdaMwTHzvzYk=";
+  mypy-boto3-elasticache = buildMypyBoto3Package "elasticache" "1.34.72" "sha256-yZd2KB7wIw23PybblyIlCo/5IEFYxAUfbLD2J91eOzw=";
 
   mypy-boto3-elasticbeanstalk = buildMypyBoto3Package "elasticbeanstalk" "1.34.0" "sha256-ftVFUwY81mg/9zJ4xxVjhXF1HgKpzj1koIS32cMKRLw=";
 
@@ -279,7 +279,7 @@ rec {
 
   mypy-boto3-emr = buildMypyBoto3Package "emr" "1.34.44" "sha256-zM1VpAaBSxqdZiSrNiaAKfvliNRXMLEmvFvXcFmkZO0=";
 
-  mypy-boto3-emr-containers = buildMypyBoto3Package "emr-containers" "1.34.0" "sha256-tGHWoMVrfH35hLgzDGMSJs5kRTWQqjM/e0IAPe4EfiU=";
+  mypy-boto3-emr-containers = buildMypyBoto3Package "emr-containers" "1.34.70" "sha256-uZADsQWfrkoVrQZosfqogcKERWsykIqdk+tJpgmcai4=";
 
   mypy-boto3-emr-serverless = buildMypyBoto3Package "emr-serverless" "1.34.0" "sha256-YgccYi2+XhKiPGCMimrCooYPRV+iRuA1h120UdqJKUc=";
 
@@ -291,7 +291,7 @@ rec {
 
   mypy-boto3-evidently = buildMypyBoto3Package "evidently" "1.34.0" "sha256-MkBB5iTYJYg2cWFYHR3Qu7TcsDglLPEw0MnoHqij6+A=";
 
-  mypy-boto3-finspace = buildMypyBoto3Package "finspace" "1.34.66" "sha256-G5FMKm9HymvRPtkjvYZt6NVhPUVuBwCR4kQq8/naUFs=";
+  mypy-boto3-finspace = buildMypyBoto3Package "finspace" "1.34.71" "sha256-bgPwDXqu73DjQCADmjTig6kLNOWvQ39flwhyYAbTai4=";
 
   mypy-boto3-finspace-data = buildMypyBoto3Package "finspace-data" "1.34.0" "sha256-8mND5BbdKY5srFwdpxSyfCUTIP4fa9hztP4daUJOB8k=";
 
@@ -315,7 +315,7 @@ rec {
 
   mypy-boto3-glacier = buildMypyBoto3Package "glacier" "1.34.0" "sha256-j8LUD8EjjRL1av7UEXBqNPEARaSFgstaioGJtbel4oM=";
 
-  mypy-boto3-globalaccelerator = buildMypyBoto3Package "globalaccelerator" "1.34.0" "sha256-hvQeuu1TuLO9aB1+lWTGPgpGqoZlC8d3Ru5S4OVLgys=";
+  mypy-boto3-globalaccelerator = buildMypyBoto3Package "globalaccelerator" "1.34.70" "sha256-7Su+rgV6KD9I4j630Qybufwn39rp/8tYQ2ldEe2Untc=";
 
   mypy-boto3-glue = buildMypyBoto3Package "glue" "1.34.35" "sha256-+Kvk8uB9KZp7mw3sMAM6mHdBTnkO5J8nSVClttndMDY=";
 
@@ -469,7 +469,7 @@ rec {
 
   mypy-boto3-mediaconvert = buildMypyBoto3Package "mediaconvert" "1.34.33" "sha256-7OwfjcWDE1AHvpyOu3fE5YBwjQscpa+VnE7eylk1unA=";
 
-  mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.34.47" "sha256-kE93r3oDtz+uwUDeWBJA2yQBx4HFAL49FdpIexVMbrc=";
+  mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.34.70" "sha256-WMBmgEckAoWpwe/YMJsVRZnbkT8dbr8F1S3AW1PRF+4=";
 
   mypy-boto3-mediapackage = buildMypyBoto3Package "mediapackage" "1.34.0" "sha256-4DJ2zVk0satmVn+TZdDExx/+ClJpc1bdmbvl72Joe5U=";
 
@@ -625,7 +625,7 @@ rec {
 
   mypy-boto3-s3outposts = buildMypyBoto3Package "s3outposts" "1.34.0" "sha256-xLuGP9Fe0S7zRimt1AKd9KOrytmNd/GTRg5OVi5Xpos=";
 
-  mypy-boto3-sagemaker = buildMypyBoto3Package "sagemaker" "1.34.64" "sha256-Sf1T1aqRMIEZmuA2KH5tzuhTDN8yfFID/+h0DCWxws0=";
+  mypy-boto3-sagemaker = buildMypyBoto3Package "sagemaker" "1.34.70" "sha256-WON2j0ZQ9x3qq1mOOzMvT8jJSuJipDHDp4IxsB88GCg=";
 
   mypy-boto3-sagemaker-a2i-runtime = buildMypyBoto3Package "sagemaker-a2i-runtime" "1.34.0" "sha256-jMZ3aWKQPhNec4A/02S1waQi6Mx9JVdENc3kblhsKjA=";
 
@@ -647,7 +647,7 @@ rec {
 
   mypy-boto3-sdb = buildMypyBoto3Package "sdb" "1.34.0" "sha256-13BuAQD8uDwwDhCw+8O3V882H6/oor5Z8mBmjb7HHAU=";
 
-  mypy-boto3-secretsmanager = buildMypyBoto3Package "secretsmanager" "1.34.63" "sha256-oZM3PXGPdH1Th4tcx/7y6bj944kuR4isaQ/SsWo1Vkw=";
+  mypy-boto3-secretsmanager = buildMypyBoto3Package "secretsmanager" "1.34.72" "sha256-0HM8W1Potee9oA9LQu2ErxLjaiDISJF+ScFzoEIu8Dw=";
 
   mypy-boto3-securityhub = buildMypyBoto3Package "securityhub" "1.34.69" "sha256-2fJx1VaOhYSjTXAEboBhHhMdTH697zcGHmrJsGknDTI=";
 
diff --git a/pkgs/development/python-modules/mypy-boto3/update.sh b/pkgs/development/python-modules/mypy-boto3/update.sh
index f45789baecb2..f45789baecb2 100644..100755
--- a/pkgs/development/python-modules/mypy-boto3/update.sh
+++ b/pkgs/development/python-modules/mypy-boto3/update.sh
diff --git a/pkgs/development/python-modules/nbdime/749.patch b/pkgs/development/python-modules/nbdime/749.patch
new file mode 100644
index 000000000000..b88aec0f67e3
--- /dev/null
+++ b/pkgs/development/python-modules/nbdime/749.patch
@@ -0,0 +1,10 @@
+--- a/nbdime/webapp/nbdimeserver.py
++++ b/nbdime/webapp/nbdimeserver.py
+@@ -388,6 +388,7 @@
+         'jinja2_env': env,
+         'local_hostnames': ['localhost', '127.0.0.1'],
+         'cookie_secret': base64.encodebytes(os.urandom(32)), # Needed even for an unsecured server.
++        'allow_unauthenticated_access': True,
+     }
+ 
+     try:
diff --git a/pkgs/development/python-modules/nbdime/default.nix b/pkgs/development/python-modules/nbdime/default.nix
index 3f58201e2c92..855192fa5ec5 100644
--- a/pkgs/development/python-modules/nbdime/default.nix
+++ b/pkgs/development/python-modules/nbdime/default.nix
@@ -31,6 +31,12 @@ buildPythonPackage rec {
     hash = "sha256-8adgwLAMG6m0lFwWzpJXfzk/tR0YTzUbdoW6boUCCY4=";
   };
 
+  patches = [
+    # this fixes the webserver (nbdiff-web) when jupyter-server >=2.13 is used
+    # see https://github.com/jupyter/nbdime/issues/749
+    ./749.patch
+  ];
+
   nativeBuildInputs = [
     hatch-jupyter-builder
     hatchling
diff --git a/pkgs/development/python-modules/nebula3-python/default.nix b/pkgs/development/python-modules/nebula3-python/default.nix
new file mode 100644
index 000000000000..c352f732ef20
--- /dev/null
+++ b/pkgs/development/python-modules/nebula3-python/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pdm-backend
+, future
+, httplib2
+, pythonOlder
+, pytz
+, pytestCheckHook
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "nebula3-python";
+  version = "3.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "vesoft-inc";
+    repo = "nebula-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-T9lZVYov6tQ8QRM2QtOGyolHk3O5FSb3xq70nS2Rr6c=";
+  };
+
+  build-system = [
+    pdm-backend
+  ];
+
+  dependencies = [
+    future
+    httplib2
+    pytz
+    six
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "nebula3"
+  ];
+
+  disabledTestPaths = [
+    # Tests require a running thrift instance
+    "tests/test_connection.py"
+    "tests/test_data_from_server.py"
+    "tests/test_graph_storage_client.py"
+    "tests/test_meta_cache.py"
+    "tests/test_parameter.py"
+    "tests/test_pool.py"
+    "tests/test_session.py"
+    "tests/test_session_pool.py"
+    "tests/test_ssl_connection.py"
+    "tests/test_ssl_pool.py"
+  ];
+
+  meta = with lib; {
+    description = "Client API of Nebula Graph in Python";
+    homepage = "https://github.com/vesoft-inc/nebula-python";
+    changelog = "https://github.com/vesoft-inc/nebula-python/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/ntc-templates/default.nix b/pkgs/development/python-modules/ntc-templates/default.nix
index dc4ba155bedb..04b2c8c17f1a 100644
--- a/pkgs/development/python-modules/ntc-templates/default.nix
+++ b/pkgs/development/python-modules/ntc-templates/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "ntc-templates";
-  version = "4.3.0";
+  version = "4.4.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "networktocode";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-zTJNatg5s5Y9uJ/42uhBltvP69qDsdTRIOCt5OuLwQc=";
+    hash = "sha256-8Lzh6ku2TUQFatqbOb5JIc/WkRPegx/gNnT53DErMuk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/oci/default.nix b/pkgs/development/python-modules/oci/default.nix
index c57a77771098..b4ad1c942d45 100644
--- a/pkgs/development/python-modules/oci/default.nix
+++ b/pkgs/development/python-modules/oci/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "oci";
-  version = "2.124.2";
+  version = "2.125.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "oracle";
     repo = "oci-python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IYINga1qCCmdu1j6ix2GcZtx6twPwfHCxU8fPOqF4eE=";
+    hash = "sha256-H4LGMl2SuXAGD2cdaDQYkWkYqhjp+EDFOnrku6cG6jk=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/ollama/default.nix b/pkgs/development/python-modules/ollama/default.nix
index 5e46474e1129..8bc0639b016d 100644
--- a/pkgs/development/python-modules/ollama/default.nix
+++ b/pkgs/development/python-modules/ollama/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "ollama";
-  version = "0.1.7";
+  version = "0.1.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "ollama";
     repo = "ollama-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xNH9kAjSdVXrCI7zkyR7tYxJ/NG8/08ykkDZQJI8Za4=";
+    hash = "sha256-hMNoWalUL+5FzmV5ICj7Zl6cTWzE6xGWfTf5++c36+E=";
   };
 
   postPatch = ''
@@ -34,12 +34,12 @@ buildPythonPackage rec {
     "httpx"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
   ];
 
diff --git a/pkgs/development/python-modules/pathlib-abc/default.nix b/pkgs/development/python-modules/pathlib-abc/default.nix
index b048fc3748c1..891b6d348561 100644
--- a/pkgs/development/python-modules/pathlib-abc/default.nix
+++ b/pkgs/development/python-modules/pathlib-abc/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pathlib-abc";
-  version = "0.2.0";
+  version = "0.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "pathlib_abc";
     inherit version;
-    hash = "sha256-ua9rOf1RMhSFZ47DgD0KEeAqIuhp6AUsrLbo9l3nuGI=";
+    hash = "sha256-CE573ZGbD3d0kUqeZM2GobOYYPgfeB3XJCWGMfKRWr4=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/pathtools/default.nix b/pkgs/development/python-modules/pathtools/default.nix
index 754669eb42fe..453dc9df36ef 100644
--- a/pkgs/development/python-modules/pathtools/default.nix
+++ b/pkgs/development/python-modules/pathtools/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
@@ -8,6 +9,9 @@ buildPythonPackage rec {
   version = "0.1.2";
   format = "setuptools";
 
+  # imp and distuils usage, last commit in 2016
+  disabled = pythonAtLeast "3.12";
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw";
diff --git a/pkgs/development/python-modules/plantuml-markdown/default.nix b/pkgs/development/python-modules/plantuml-markdown/default.nix
index 600131e2f5ec..50e6bb2cf941 100644
--- a/pkgs/development/python-modules/plantuml-markdown/default.nix
+++ b/pkgs/development/python-modules/plantuml-markdown/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "plantuml-markdown";
-  version = "3.9.3";
+  version = "3.9.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "mikitex70";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-2nZV/bYRN1SKI6OmpOhK7KUuBwmwhTt/ErTYqVQ9Dps=";
+    hash = "sha256-DSR4/PEs1uzGHgtw5p3HMlquOIYHPWbTHrw6QGx7t4o=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/plotnine/default.nix b/pkgs/development/python-modules/plotnine/default.nix
index cc446f300bf1..bb39cae86c25 100644
--- a/pkgs/development/python-modules/plotnine/default.nix
+++ b/pkgs/development/python-modules/plotnine/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "plotnine";
-  version = "0.13.2";
+  version = "0.13.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "has2k1";
     repo = "plotnine";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GgkaFiRRVpr0TreAetpaiOjpsyLV2wfGQWvUdHJN2mg=";
+    hash = "sha256-dbfbXYYmVdufTtrrllrqwe87LL1nYRar4RMLef7ajTQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/plugwise/default.nix b/pkgs/development/python-modules/plugwise/default.nix
index 7d8b5f666515..0e53ee17e04a 100644
--- a/pkgs/development/python-modules/plugwise/default.nix
+++ b/pkgs/development/python-modules/plugwise/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "plugwise";
-  version = "0.37.1";
+  version = "0.37.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -30,21 +30,22 @@ buildPythonPackage rec {
     owner = "plugwise";
     repo = "python-plugwise";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6o0g3il4GV6E8avp9V2YrkaVPf2z37asdJOxf6Phbmc=";
+    hash = "sha256-zPh4yko35aMhiTTIDbaBgVruRDyolhtvTzTIhF5fo+Y=";
   };
 
   postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "setuptools~=68.0" "setuptools" \
-      --replace "wheel~=0.40.0" "wheel"
+    # setuptools
+    sed -i -e "s/~=[0-9.]*//" pyproject.toml
+    # wheel
+    sed -i -e "s/~=[0-9.]*//" pyproject.toml
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     crcmod
diff --git a/pkgs/development/python-modules/preshed/default.nix b/pkgs/development/python-modules/preshed/default.nix
index 557045649425..2314555fcb58 100644
--- a/pkgs/development/python-modules/preshed/default.nix
+++ b/pkgs/development/python-modules/preshed/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "preshed";
-  version = "4.0.0";
+  version = "3.0.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XisLKgfdGo3uqtZhIBmEXGAu4kkH9pNuqvF6q9VuVEw=";
+    hash = "sha256-chhjxSRP/NJlGtCSiVGix8d7EC9OEaJRrYXTfudiFmA=";
   };
 
   nativeBuildInputs = [
@@ -41,6 +41,9 @@ buildPythonPackage rec {
     "preshed"
   ];
 
+  # don't update to 4.0.0, version was yanked
+  passthru.skipBulkUpdate = true;
+
   meta = with lib; {
     description = "Cython hash tables that assume keys are pre-hashed";
     homepage = "https://github.com/explosion/preshed";
diff --git a/pkgs/development/python-modules/pyecoforest/default.nix b/pkgs/development/python-modules/pyecoforest/default.nix
index 2021b4e414b9..a116a3542089 100644
--- a/pkgs/development/python-modules/pyecoforest/default.nix
+++ b/pkgs/development/python-modules/pyecoforest/default.nix
@@ -25,14 +25,14 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov=pyecoforest --cov-report=term-missing:skip-covered" ""
+      --replace-fail "--cov=pyecoforest --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
   ];
 
diff --git a/pkgs/development/python-modules/pyenphase/default.nix b/pkgs/development/python-modules/pyenphase/default.nix
index 549d0b8e8263..b3e4863f2472 100644
--- a/pkgs/development/python-modules/pyenphase/default.nix
+++ b/pkgs/development/python-modules/pyenphase/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "pyenphase";
-  version = "1.20.0";
+  version = "1.20.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "pyenphase";
     repo = "pyenphase";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/TyQ6oSA361at1VSr6dLefOOmbZP4otBgb/JDA2sNWo=";
+    hash = "sha256-Bxwd8qHsvq9BuBMSu5JI/Yk/KC5aQ7b7lnXuIoNQ6EI=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pygls/default.nix b/pkgs/development/python-modules/pygls/default.nix
index 9c4d50843e22..e85c985b6c5a 100644
--- a/pkgs/development/python-modules/pygls/default.nix
+++ b/pkgs/development/python-modules/pygls/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "pygls";
-  version = "1.3.0";
+  version = "1.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "openlawlibrary";
     repo = "pygls";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6+SMlBTi+jw+bAUYqbaxXT5QygZFj4FeeEp6bch8M1s=";
+    hash = "sha256-AvrGoQ0Be1xKZhFn9XXYJpt5w+ITbDbj6NFZpaDPKao=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/pyinsteon/default.nix b/pkgs/development/python-modules/pyinsteon/default.nix
index e2e25aa18dcd..22242ee62bf4 100644
--- a/pkgs/development/python-modules/pyinsteon/default.nix
+++ b/pkgs/development/python-modules/pyinsteon/default.nix
@@ -1,6 +1,7 @@
 { lib
 , aiofiles
 , aiohttp
+, async-timeout
 , async-generator
 , buildPythonPackage
 , fetchFromGitHub
@@ -12,31 +13,30 @@
 , pythonOlder
 , setuptools
 , voluptuous
-, wheel
 }:
 
 buildPythonPackage rec {
   pname = "pyinsteon";
   version = "1.5.3";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "pyinsteon";
+    repo = "pyinsteon";
     rev = "refs/tags/${version}";
     hash = "sha256-9d6QbekUv63sjKdK+ZogYOkGfFXVW+JB6ITHnehLwtM=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     aiohttp
+    async-timeout
     pypubsub
     pyserial
     pyserial-asyncio
@@ -48,20 +48,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.12") [
-    # AssertionError: Failed test 'read_eeprom_response' with argument 'group' value X vs expected value Z
-    "test_async_send"
-    "test_nak_response"
-    "test_no_direct_ack"
-    "test_on_level"
-    "test_on_level_group"
-    "test_on_level_nak"
-    # AssertionError: Failed test 'read_eeprom_response' with argument 'target' value X vs expected value Y
-    "test_other_status"
-    "test_status_command"
-    "test_status_request_hub"
-    # stuck in epoll
-    "test_read_all_peek"
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
+    # Tests are blocking or failing
+    "tests/test_handlers/"
   ];
 
   pythonImportsCheck = [
@@ -70,7 +59,6 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python library to support Insteon home automation projects";
-    mainProgram = "insteon_tools";
     longDescription = ''
       This is a Python package to interface with an Insteon Modem. It has been
       tested to work with most USB or RS-232 serial based devices such as the
@@ -80,5 +68,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/pyinsteon/pyinsteon/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "insteon_tools";
   };
 }
diff --git a/pkgs/development/python-modules/pyleri/default.nix b/pkgs/development/python-modules/pyleri/default.nix
index 98c71d06f55a..2ff3abf5978d 100644
--- a/pkgs/development/python-modules/pyleri/default.nix
+++ b/pkgs/development/python-modules/pyleri/default.nix
@@ -3,12 +3,13 @@
 , fetchFromGitHub
 , pythonOlder
 , unittestCheckHook
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "pyleri";
-  version = "1.4.2";
-  format = "setuptools";
+  version = "1.4.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -16,9 +17,13 @@ buildPythonPackage rec {
     owner = "cesbit";
     repo = "pyleri";
     rev = "refs/tags/${version}";
-    hash = "sha256-52Q2iTrXFNbDzXL0FM+Gypipvo5ciNqAtZa5sKOwQRc=";
+    hash = "sha256-4t+6wtYzJbmL0TB/OXr89uZ2s8DeGlUdWwHd4YPsCW0=";
   };
 
+  build-system = [
+    setuptools
+  ];
+
   nativeCheckInputs = [
     unittestCheckHook
   ];
diff --git a/pkgs/development/python-modules/pymaven-patch/default.nix b/pkgs/development/python-modules/pymaven-patch/default.nix
index 8218ccddcc61..4d98ded89637 100644
--- a/pkgs/development/python-modules/pymaven-patch/default.nix
+++ b/pkgs/development/python-modules/pymaven-patch/default.nix
@@ -11,12 +11,12 @@
 }:
 buildPythonPackage rec {
   pname = "pymaven-patch";
-  version = "0.3.0";
+  version = "0.3.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d55b29bd4aeef3510904a12885eb6856b5bd48f3e29925a123461429f9ad85c0";
+    sha256 = "sha256-DPfJPonwHwQI62Vu7FjLSiKMleA7PUfLc9MfiZBVzVA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pynobo/default.nix b/pkgs/development/python-modules/pynobo/default.nix
index 783415a2c2fb..c4da63a0e333 100644
--- a/pkgs/development/python-modules/pynobo/default.nix
+++ b/pkgs/development/python-modules/pynobo/default.nix
@@ -2,22 +2,27 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "pynobo";
-  version = "1.7.0";
-  format = "setuptools";
+  version = "1.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "echoromeo";
-    repo = pname;
+    repo = "pynobo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LJS4NJM+f+j53YzH8LradBDzHAsOprd4F7nH1cfC3B0=";
+    hash = "sha256-Hfyf7XGleDWTKKWNlItcBFuiS3UEwsYed7v5FPRdC0w=";
   };
 
+  build-system = [
+    setuptools
+  ];
+
   # Project has no tests
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/pyscf/default.nix b/pkgs/development/python-modules/pyscf/default.nix
index 7b60a47c44c3..a8c0911276b4 100644
--- a/pkgs/development/python-modules/pyscf/default.nix
+++ b/pkgs/development/python-modules/pyscf/default.nix
@@ -84,6 +84,7 @@ buildPythonPackage rec {
     "test_n3_cis_ewald"
     "test_veff"
     "test_collinear_kgks_gga"
+    "test_libxc_gga_deriv4"
   ];
 
   pytestFlagsArray = [
diff --git a/pkgs/development/python-modules/pysigma/default.nix b/pkgs/development/python-modules/pysigma/default.nix
index b883c5ea147f..bf7a00dd8fe1 100644
--- a/pkgs/development/python-modules/pysigma/default.nix
+++ b/pkgs/development/python-modules/pysigma/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pysigma";
-  version = "0.11.3";
+  version = "0.11.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma";
     rev = "refs/tags/v${version}";
-    hash = "sha256-G3/ksQXAN981i8iZC8/Ho0r/iHQqqtBPg/VdDTWxC9Y=";
+    hash = "sha256-tlFrUAwOTK+O/YJjfA6nwsVAcZrMNXFmCYoxHc2ykVY=";
   };
 
   pythonRelaxDeps = [
@@ -32,12 +32,12 @@ buildPythonPackage rec {
     "packaging"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jinja2
     packaging
     pyparsing
diff --git a/pkgs/development/python-modules/pyunifiprotect/default.nix b/pkgs/development/python-modules/pyunifiprotect/default.nix
index 9cf0773b0cb5..5356fd2e4ac0 100644
--- a/pkgs/development/python-modules/pyunifiprotect/default.nix
+++ b/pkgs/development/python-modules/pyunifiprotect/default.nix
@@ -13,6 +13,7 @@
 , orjson
 , packaging
 , pillow
+, platformdirs
 , poetry-core
 , py
 , pydantic
@@ -32,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "pyunifiprotect";
-  version = "5.0.2";
+  version = "5.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -41,22 +42,22 @@ buildPythonPackage rec {
     owner = "briis";
     repo = "pyunifiprotect";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bZjfpatw4lcOgMCqung/DMfRijxwtuIht6QusIYaCQ0=";
+    hash = "sha256-7D6/mIU3M4dfIa+lCgcc3APKVPCsZei+4Er+sxIxcHo=";
   };
 
   env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--strict-markers -ra -Wd --ignore=.* --no-cov-on-fail --cov=pyunifiprotect --cov-append --maxfail=10 -n=auto" ""
+      --replace-fail "--strict-markers -ra -Wd --ignore=.* --no-cov-on-fail --cov=pyunifiprotect --cov-append --maxfail=10 -n=auto" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     aiohttp
     aioshutil
@@ -64,6 +65,7 @@ buildPythonPackage rec {
     orjson
     packaging
     pillow
+    platformdirs
     pydantic
     pyjwt
     pytz
diff --git a/pkgs/development/python-modules/redis-om/default.nix b/pkgs/development/python-modules/redis-om/default.nix
index 551a251bc174..1549b891636f 100644
--- a/pkgs/development/python-modules/redis-om/default.nix
+++ b/pkgs/development/python-modules/redis-om/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "redis-om";
-  version = "0.2.1";
+  version = "0.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,10 +30,10 @@ buildPythonPackage rec {
     owner = "redis";
     repo = "redis-om-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jQS0VTYZeAj3+OVFy+JP4mUFBPo+a5D/kdJKagFraaA=";
+    hash = "sha256-E11wpTrE+HIT+jgn1zMC8L7RGas83DAJd1R0WWHp7Jc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     pythonRelaxDepsHook
     unasync
     poetry-core
@@ -44,7 +44,7 @@ buildPythonPackage rec {
   # https://github.com/redis/redis-om-python/pull/577
   pythonRelaxDeps = true;
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     hiredis
     more-itertools
diff --git a/pkgs/development/python-modules/requirements-parser/default.nix b/pkgs/development/python-modules/requirements-parser/default.nix
index 11fe8edf6a10..b2b7697a464a 100644
--- a/pkgs/development/python-modules/requirements-parser/default.nix
+++ b/pkgs/development/python-modules/requirements-parser/default.nix
@@ -10,23 +10,23 @@
 
 buildPythonPackage rec {
   pname = "requirements-parser";
-  version = "0.5.0";
-  format = "pyproject";
+  version = "0.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "madpah";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-e2dfVBMh1uGRMDw7OdPefO4/eRxc3BGwvy/D7u5ipkk=";
+    repo = "requirements-parser";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-fUx6NBD6qxAyArGgCiB2J1Ak7pudx/LI0+rCHjLnc1M=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     setuptools
     types-setuptools
   ];
@@ -42,7 +42,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Pip requirements file parser";
     homepage = "https://github.com/davidfischer/requirements-parser";
+    changelog = "https://github.com/madpah/requirements-parser/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd2;
-    maintainers = [ ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rpyc/default.nix b/pkgs/development/python-modules/rpyc/default.nix
index 7c9a13fc4d17..9d3d66b46f25 100644
--- a/pkgs/development/python-modules/rpyc/default.nix
+++ b/pkgs/development/python-modules/rpyc/default.nix
@@ -11,22 +11,22 @@
 buildPythonPackage rec {
   pname = "rpyc";
   version = "6.0.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tomerfiliba";
-    repo = pname;
+    repo = "rpyc";
     rev = "refs/tags/${version}";
     hash = "sha256-BvXEXZlVbOmKBwnSBCDksUkbT7JPcMX48KZe/Gd5Y8Q=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     plumbum
   ];
 
@@ -42,11 +42,22 @@ buildPythonPackage rec {
     "test_listing"
     "test_pruning"
     "test_rpyc"
+    "test_instancecheck_across_connections"
+    # Internal import error
+    "test_modules"
     # Test is outdated
     # ssl.SSLError: [SSL: NO_CIPHERS_AVAILABLE] no ciphers available (_ssl.c:997)
     "test_ssl_conenction"
   ];
 
+  disabledTestPaths = [
+    # Internal import issue
+    "tests/test_attributes.py"
+    "tests/test_service_pickle.py"
+    "tests/test_affinity.py"
+    "tests/test_magic.py"
+  ];
+
   pythonImportsCheck = [
     "rpyc"
   ];
diff --git a/pkgs/development/python-modules/rtfde/default.nix b/pkgs/development/python-modules/rtfde/default.nix
index c986d7b0c5e3..3b11adc34a1a 100644
--- a/pkgs/development/python-modules/rtfde/default.nix
+++ b/pkgs/development/python-modules/rtfde/default.nix
@@ -23,11 +23,17 @@ buildPythonPackage rec {
     hash = "sha256-ai9JQ3gphY/IievBNdHiblIpc0IPS9wp7CVvBIRzG/4=";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    # https://github.com/seamustuohy/RTFDE/issues/31
+    substituteInPlace setup.py \
+      --replace-fail "==" ">="
+  '';
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     lark
     oletools
   ];
diff --git a/pkgs/development/python-modules/scancode-toolkit/default.nix b/pkgs/development/python-modules/scancode-toolkit/default.nix
index 13bee07a1859..47f7eb93a349 100644
--- a/pkgs/development/python-modules/scancode-toolkit/default.nix
+++ b/pkgs/development/python-modules/scancode-toolkit/default.nix
@@ -60,23 +60,23 @@
 
 buildPythonPackage rec {
   pname = "scancode-toolkit";
-  version = "32.0.8";
+  version = "32.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-W6Ev1MV8cZU4bauAfmuZsBzMJKz7xpw8siO3Afn5mc8=";
+    hash = "sha256-WjVtE+3KtFdtBLqNUzFwDrWAUQLblE+DNGjABH+5zWc=";
   };
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     beautifulsoup4
     bitarray
diff --git a/pkgs/development/python-modules/scikit-hep-testdata/default.nix b/pkgs/development/python-modules/scikit-hep-testdata/default.nix
index 58e8ceadd0d4..b7571c828ab0 100644
--- a/pkgs/development/python-modules/scikit-hep-testdata/default.nix
+++ b/pkgs/development/python-modules/scikit-hep-testdata/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "scikit-hep-testdata";
-  version = "0.4.42";
+  version = "0.4.43";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "scikit-hep";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-2zUo/uGIQl0wSFWWxoTmttzUNq9rFGJRYr95PQJH/I8=";
+    hash = "sha256-+CJyo6motrS89eDJct1zh6zOOrrw+yfAODA/BaVm00A=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/sentence-transformers/default.nix b/pkgs/development/python-modules/sentence-transformers/default.nix
index 3803dc4d29c6..d0174236cebd 100644
--- a/pkgs/development/python-modules/sentence-transformers/default.nix
+++ b/pkgs/development/python-modules/sentence-transformers/default.nix
@@ -4,9 +4,12 @@
 , huggingface-hub
 , nltk
 , numpy
+, pytestCheckHook
+, pythonOlder
 , scikit-learn
 , scipy
 , sentencepiece
+, setuptools
 , tokenizers
 , torch
 , torchvision
@@ -16,17 +19,23 @@
 
 buildPythonPackage rec {
   pname = "sentence-transformers";
-  version = "2.5.1";
-  format = "setuptools";
+  version = "2.6.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "UKPLab";
     repo = "sentence-transformers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-HIOizBf8YnPAj95cG1HopO9B/bhAmT0u3q5CM6POEjQ=";
+    hash = "sha256-09AAuv/yXTbBvjA4gu5ueZrQkVja0BTIGNLZ2tLSyh8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     huggingface-hub
     nltk
     numpy
@@ -40,14 +49,37 @@ buildPythonPackage rec {
     transformers
   ];
 
-  pythonImportsCheck = [ "sentence_transformers" ];
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
 
-  doCheck = false; # tests fail at build_ext
+  pythonImportsCheck = [
+    "sentence_transformers"
+  ];
+
+  disabledTests = [
+    # Tests require network access
+    "test_simple_encode"
+    "test_paraphrase_mining"
+    "test_cmnrl_same_grad"
+    "test_LabelAccuracyEvaluator"
+    "test_ParaphraseMiningEvaluator"
+  ];
+
+  disabledTestPaths = [
+    # Tests require network access
+    "tests/test_pretrained_stsb.py"
+    "tests/test_sentence_transformer.py"
+    "tests/test_compute_embeddings.py"
+    "tests/test_multi_process.py"
+    "tests/test_cross_encoder.py"
+    "tests/test_train_stsb.py"
+  ];
 
   meta = with lib; {
     description = "Multilingual Sentence & Image Embeddings with BERT";
     homepage = "https://github.com/UKPLab/sentence-transformers";
-    changelog = "https://github.com/UKPLab/sentence-transformers/releases/tag/${src.rev}";
+    changelog = "https://github.com/UKPLab/sentence-transformers/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ dit7ya ];
   };
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 1055f45f55b7..fa1c101ecb38 100644
--- a/pkgs/development/python-modules/spacy/default.nix
+++ b/pkgs/development/python-modules/spacy/default.nix
@@ -51,6 +51,7 @@ buildPythonPackage rec {
   };
 
   pythonRelaxDeps = [
+    "smart-open"
     "typer"
   ];
 
diff --git a/pkgs/development/python-modules/sse-starlette/default.nix b/pkgs/development/python-modules/sse-starlette/default.nix
new file mode 100644
index 000000000000..149a37886ca0
--- /dev/null
+++ b/pkgs/development/python-modules/sse-starlette/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, anyio
+, asgi-lifespan
+, buildPythonPackage
+, fastapi
+, fetchFromGitHub
+, httpx
+, pdm-backend
+, psutil
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, starlette
+, uvicorn
+}:
+
+buildPythonPackage rec {
+  pname = "sse-starlette";
+  version = "2.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "sysid";
+    repo = "sse-starlette";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-kDcSG/3foP7fMZKYrkKx6FHvT9c9rSzxyv2EHjQ2WSA=";
+  };
+
+  build-system = [
+    pdm-backend
+  ];
+
+  dependencies = [
+    anyio
+    starlette
+    uvicorn
+  ];
+
+  nativeCheckInputs = [
+    asgi-lifespan
+    fastapi
+    httpx
+    psutil
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "sse_starlette"
+  ];
+
+  disabledTests = [
+    # AssertionError
+    "test_stop_server_with_many_consumers"
+    "test_stop_server_conditional"
+  ];
+
+  meta = with lib; {
+    description = "Server Sent Events for Starlette and FastAPI";
+    homepage = "https://github.com/sysid/sse-starlette";
+    changelog = "https://github.com/sysid/sse-starlette/blob/${version}/CHANGELOG.md";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/starlette-context/default.nix b/pkgs/development/python-modules/starlette-context/default.nix
new file mode 100644
index 000000000000..2657e9740a60
--- /dev/null
+++ b/pkgs/development/python-modules/starlette-context/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, httpx
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, starlette
+}:
+
+buildPythonPackage rec {
+  pname = "starlette-context";
+  version = "0.3.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "tomwojcik";
+    repo = "starlette-context";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ZKwE2M86clYKdptd0o/j8VYUOj/Y/72uUnpxFbJ65vw=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    starlette
+  ];
+
+  nativeCheckInputs = [
+    httpx
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "starlette_context"
+  ];
+
+  meta = with lib; {
+    description = "Middleware for Starlette that allows you to store and access the context data of a request";
+    homepage = "https://github.com/tomwojcik/starlette-context";
+    changelog = "https://github.com/tomwojcik/starlette-context/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/tendo/default.nix b/pkgs/development/python-modules/tendo/default.nix
new file mode 100644
index 000000000000..fe02bc0aed29
--- /dev/null
+++ b/pkgs/development/python-modules/tendo/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, setuptools
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "tendo";
+  version = "0.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pycontribs";
+    repo = "tendo";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ZOozMGxAKcEtmUEzHCFSojKc+9Ha+T2MOTmMvdMqNuQ=";
+  };
+
+  postPatch = ''
+    # marken broken and not required
+    sed -i '/setuptools_scm_git_archive/d' pyproject.toml
+    # unused
+    substituteInPlace setup.cfg \
+      --replace-fail "six" ""
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "tendo"
+  ];
+
+  meta = with lib; {
+    description = "Adds basic functionality that is not provided by Python";
+    homepage = "https://github.com/pycontribs/tendo";
+    changelog = "https://github.com/pycontribs/tendo/releases/tag/v${version}";
+    license = licenses.psfl;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/teslajsonpy/default.nix b/pkgs/development/python-modules/teslajsonpy/default.nix
index 0dbcd6bddc49..ab2315c1d9c8 100644
--- a/pkgs/development/python-modules/teslajsonpy/default.nix
+++ b/pkgs/development/python-modules/teslajsonpy/default.nix
@@ -17,23 +17,23 @@
 
 buildPythonPackage rec {
   pname = "teslajsonpy";
-  version = "3.10.1";
-  format = "pyproject";
+  version = "3.10.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "zabuldon";
-    repo = pname;
+    repo = "teslajsonpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Eez8ktPhbWauFNsIuwoxMkGpI7hnYsBwStmU80IDFw4=";
+    hash = "sha256-M3/1J73C3gUqyZYsu10O6FnACKYVbGuMH+8Ns0s2Rwc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     authcaptureproxy
     aiohttp
     backoff
diff --git a/pkgs/development/python-modules/tilequant/default.nix b/pkgs/development/python-modules/tilequant/default.nix
index 064b73707ad0..c25c9ff2659c 100644
--- a/pkgs/development/python-modules/tilequant/default.nix
+++ b/pkgs/development/python-modules/tilequant/default.nix
@@ -1,13 +1,14 @@
 { lib
 , buildPythonPackage
-, fetchPypi
 , click
+, fetchPypi
 , ordered-set
+, pillow
 , pythonOlder
 , pythonRelaxDepsHook
-, pillow
-, sortedcollections
+, setuptools
 , setuptools-dso
+, sortedcollections
 }:
 
 buildPythonPackage rec {
@@ -22,15 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-uW1g3nlT6Y+1beifo/MOlGxsGL7on/jcAROxSddySHk=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
   pythonRelaxDeps = [
     "pillow"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    pythonRelaxDepsHook
+    setuptools
+  ];
+
+  dependencies = [
     click
     ordered-set
     pillow
@@ -46,9 +48,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Tool for quantizing image colors using tile-based palette restrictions";
-    mainProgram = "tilequant";
     homepage = "https://github.com/SkyTemple/tilequant";
+    changelog = "https://github.com/SkyTemple/tilequant/releases/tag/${version}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ marius851000 xfix ];
+    mainProgram = "tilequant";
   };
 }
diff --git a/pkgs/development/python-modules/transformers/default.nix b/pkgs/development/python-modules/transformers/default.nix
index ac2af381ff02..86f39fff7938 100644
--- a/pkgs/development/python-modules/transformers/default.nix
+++ b/pkgs/development/python-modules/transformers/default.nix
@@ -53,7 +53,7 @@
 
 buildPythonPackage rec {
   pname = "transformers";
-  version = "4.39.1";
+  version = "4.39.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -62,7 +62,7 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "transformers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OzuiKzhgI9eRTPq3l7x4aw3fxvCe4080pK1RKzcC1RQ=";
+    hash = "sha256-eOtXHKTGVV3hYdSK+p2mTgCaG4akivnuMnB/lSh8Lxc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/typing-validation/default.nix b/pkgs/development/python-modules/typing-validation/default.nix
new file mode 100644
index 000000000000..975119b3be1b
--- /dev/null
+++ b/pkgs/development/python-modules/typing-validation/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+, pytestCheckHook
+
+, pythonOlder
+
+, setuptools
+, setuptools-scm
+, wheel
+
+, numpy
+
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "typing-validation";
+  version = "1.2.11";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "hashberg-io";
+    repo = "typing-validation";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-0scXoAPkx/VBIbNRMtFoRRbmGpC2RzNRmQG4mRXSxrs=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    wheel
+  ];
+
+  dependencies = [
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+  ];
+
+  pythonImportsCheck = [
+    "typing_validation"
+  ];
+
+  meta = with lib; {
+    description = "A simple library for runtime type-checking";
+    homepage = "https://github.com/hashberg-io/typing-validation";
+    changelog = "https://github.com/hashberg-io/typing-validation/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
+}
diff --git a/pkgs/development/tools/analysis/checkov/default.nix b/pkgs/development/tools/analysis/checkov/default.nix
index 6a457c6051ed..555c7ddf4307 100644
--- a/pkgs/development/tools/analysis/checkov/default.nix
+++ b/pkgs/development/tools/analysis/checkov/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "checkov";
-  version = "3.2.47";
+  version = "3.2.48";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bridgecrewio";
     repo = "checkov";
     rev = "refs/tags/${version}";
-    hash = "sha256-vwkTbHhgXaGeHrAkOM8gRDJ2VgbSmqt9Ia+qdOMxkko=";
+    hash = "sha256-B0wvUd94J+Q+ZuWitYMKYgOTSNGC4njPrUAhs1QPCuQ=";
   };
 
   patches = [
diff --git a/pkgs/development/tools/analysis/snyk/default.nix b/pkgs/development/tools/analysis/snyk/default.nix
index 67f8516c49b9..11ee2297e61d 100644
--- a/pkgs/development/tools/analysis/snyk/default.nix
+++ b/pkgs/development/tools/analysis/snyk/default.nix
@@ -1,20 +1,27 @@
-{ buildNpmPackage, fetchFromGitHub, lib, stdenv, testers, snyk }:
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+, stdenv
+, testers
+, snyk
+}:
 
 buildNpmPackage rec {
   pname = "snyk";
-  version = "1.1284.0";
+  version = "1.1286.0";
 
   src = fetchFromGitHub {
     owner = "snyk";
     repo = "cli";
-    rev = "v${version}";
-    hash = "sha256-CM9172gSeWf+12e6tsro6O1NtiZqUAT0EsA6LAhZ+8s=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-tckifLV+HC7NqTeBtZI+VjZveeVbRS5+63vL8k8qE4s=";
   };
 
-  npmDepsHash = "sha256-aode80HyGSyZoEiCdsnEPrVo8KSqTW0GxxsGdRyNdiQ=";
+  npmDepsHash = "sha256-deBtINc+P0NnCIb0jI0Mvn2zbWS6qLqCXL6nKSFGqOI=";
 
   postPatch = ''
-    substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"'
+    substituteInPlace package.json \
+      --replace-fail '"version": "1.0.0-monorepo"' '"version": "${version}"'
   '';
 
   env.NIX_CFLAGS_COMPILE =
@@ -29,9 +36,10 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Scans and monitors projects for security vulnerabilities";
-    mainProgram = "snyk";
     homepage = "https://snyk.io";
+    changelog = "https://github.com/snyk/cli/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
+    mainProgram = "snyk";
   };
 }
diff --git a/pkgs/development/tools/azcopy/default.nix b/pkgs/development/tools/azcopy/default.nix
index ed7db536bd83..b6074198be3c 100644
--- a/pkgs/development/tools/azcopy/default.nix
+++ b/pkgs/development/tools/azcopy/default.nix
@@ -6,18 +6,18 @@
 
 buildGoModule rec {
   pname = "azure-storage-azcopy";
-  version = "10.23.0";
+  version = "10.24.0";
 
   src = fetchFromGitHub {
     owner = "Azure";
     repo = "azure-storage-azcopy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Df45DHGA7EM4hx3iAmYNNUHjrUrkW6QniJkHaN7wNZM=";
+    hash = "sha256-K/Q0vlcMX6YKjvdWNzsJe1uUSS9WY8pN6SD5yiVF1Sg=";
   };
 
   subPackages = [ "." ];
 
-  vendorHash = "sha256-afqDnrmbTR6yZHT7NysysORci4b0Oh0sjpftgAXJ5Uk=";
+  vendorHash = "sha256-VWSr7K2WrBY4jzFv8B9ocp7GdBxTBSePMX8mLeSbKow=";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/backblaze-b2/default.nix b/pkgs/development/tools/backblaze-b2/default.nix
index 76301b5f4820..3ed49c05bec9 100644
--- a/pkgs/development/tools/backblaze-b2/default.nix
+++ b/pkgs/development/tools/backblaze-b2/default.nix
@@ -46,7 +46,9 @@ python3Packages.buildPythonApplication rec {
     backoff
     more-itertools
     pexpect
-    pytestCheckHook
+
+    # backblaze-b2 requires pytest 7 to complete tests.
+    (pytestCheckHook.override { pytest = pytest_7; })
   ];
 
   preCheck = ''
diff --git a/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix b/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
index 997eff21adf6..e6ae2f2f8ba6 100644
--- a/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
+++ b/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "cirrus-cli";
-  version = "0.113.0";
+  version = "0.113.1";
 
   src = fetchFromGitHub {
     owner = "cirruslabs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ws1OFcAz41uBgRIjLVU19nRdIIgdGnnBs6xthztyDmE=";
+    sha256 = "sha256-RAka5uYNsTq/zBT9sjdrZFY1CmJ5Vzdj1gfWvMERcPA=";
   };
 
   vendorHash = "sha256-NPtQM4nm8QiHY2wSd7VHx6T5LRb7EB39x+xFzHOUcNs=";
diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix
index 9ff5cc631b1f..ee9af03bb888 100644
--- a/pkgs/development/tools/cue/default.nix
+++ b/pkgs/development/tools/cue/default.nix
@@ -8,18 +8,18 @@
 
 buildGoModule rec {
   pname = "cue";
-  version = "0.7.1";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "cue-lang";
     repo = "cue";
     rev = "v${version}";
-    hash = "sha256-x8DXAKrkqrZE6mxkIfjMhxZBnFbQnqWhmrvjrFjnQuc=";
+    hash = "sha256-7gn8/35rpbyzSP4ZM21ig6Wsq5Tp18x1Ex/IVb2iE7k=";
   };
 
-  vendorHash = "sha256-Eq51sydt2eu3pSCRjepvxpU01T0vr0axx9XEk34db28=";
+  vendorHash = "sha256-0OZtKIDdEnQLnSj109EpGvaZvMIy7gPAZ+weHzYKGSg=";
 
-  subPackages = [ "cmd/cue" ];
+  subPackages = [ "cmd/*" ];
 
   nativeBuildInputs = [ installShellFiles ];
 
@@ -45,9 +45,9 @@ buildGoModule rec {
 
   meta = with lib;  {
     description = "A data constraint language which aims to simplify tasks involving defining and using data";
-    mainProgram = "cue";
     homepage = "https://cuelang.org/";
     license = lib.licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
+    mainProgram = "cue";
   };
 }
diff --git a/pkgs/development/tools/database/sqlfluff/default.nix b/pkgs/development/tools/database/sqlfluff/default.nix
index 8db953a8dca5..dcea75d51071 100644
--- a/pkgs/development/tools/database/sqlfluff/default.nix
+++ b/pkgs/development/tools/database/sqlfluff/default.nix
@@ -5,21 +5,21 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "sqlfluff";
-  version = "3.0.2";
+  version = "3.0.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "sqlfluff";
     repo = "sqlfluff";
     rev = "refs/tags/${version}";
-    hash = "sha256-GJpSBDxgI0UpIIVeF9dl9XzKJ2TuwWf/IOCzoTGJNRQ=";
+    hash = "sha256-/Zp/iAX6Y6MaXMjpk3dRYgZNhjJtl3cr/FiCyhGK9X4=";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
+  build-system = with python3.pkgs; [
     setuptools
   ];
 
-  propagatedBuildInputs = with python3.pkgs; [
+  dependencies = with python3.pkgs; [
     appdirs
     cached-property
     chardet
diff --git a/pkgs/development/tools/database/timescaledb-tune/default.nix b/pkgs/development/tools/database/timescaledb-tune/default.nix
index 444e947cdf4b..b0737ce85684 100644
--- a/pkgs/development/tools/database/timescaledb-tune/default.nix
+++ b/pkgs/development/tools/database/timescaledb-tune/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "timescaledb-tune";
-  version = "0.15.0";
+  version = "0.16.0";
 
   src = fetchFromGitHub {
     owner = "timescale";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-YgG8yuHnJrhrqJHNUkMjJvKNzEQ3ClY9OQzt+ET4LEk=";
+    sha256 = "sha256-rOAXCru3m31lVFUyxywkuyKWUOJneA7ECMPyvAfw4mg=";
   };
 
   vendorHash = "sha256-8Q+KMYu1yiHEYS035NmCvxSgIS/+oRhhcZa6SwmvGgk=";
diff --git a/pkgs/development/tools/firebase-tools/default.nix b/pkgs/development/tools/firebase-tools/default.nix
index 68968222bd3e..ebcf8abf0fea 100644
--- a/pkgs/development/tools/firebase-tools/default.nix
+++ b/pkgs/development/tools/firebase-tools/default.nix
@@ -8,16 +8,16 @@
 
 buildNpmPackage rec {
   pname = "firebase-tools";
-  version = "13.5.2";
+  version = "13.6.0";
 
   src = fetchFromGitHub {
     owner = "firebase";
     repo = "firebase-tools";
     rev = "v${version}";
-    hash = "sha256-uHh9schpVs9PNivZkIp8geG60MrEDwrlo58WN3499OM=";
+    hash = "sha256-69fIejqLs/27nISW7b7+kPRoUiEGQF0DSGz5nkus6Us=";
   };
 
-  npmDepsHash = "sha256-O3+9qqXbNLVqMP6Grh7p5rHWjOc3stG1e6zBxZSt/5M=";
+  npmDepsHash = "sha256-m9mAuR0lqC83uHY+b1rOLuv6bRSl9eVnYVE7pvLi9+s=";
 
   postPatch = ''
     ln -s npm-shrinkwrap.json package-lock.json
diff --git a/pkgs/development/tools/iferr/default.nix b/pkgs/development/tools/iferr/default.nix
index 9a7b25a4cb40..bf970ce1e9de 100644
--- a/pkgs/development/tools/iferr/default.nix
+++ b/pkgs/development/tools/iferr/default.nix
@@ -1,29 +1,28 @@
-{ buildGoPackage
+{ buildGoModule
 , lib
 , fetchFromGitHub
 }:
 
-buildGoPackage rec {
-  pname = "iferr-unstable";
-  version = "2018-06-15";
-  rev = "bb332a3b1d9129b6486c7ddcb7030c11b05cfc88";
-
-  goPackagePath = "github.com/koron/iferr";
+buildGoModule {
+  pname = "iferr";
+  version = "0-unstable-2024-01-22";
 
   src = fetchFromGitHub {
-    inherit rev;
-
     owner = "koron";
     repo = "iferr";
-    sha256 = "1nyqy1sgq2afiama4wy7wap8s03c0hiwwa0f6kwq3y59097rfc0c";
+    rev = "9c3e2fbe4bd19a7f0338e42bb483562ed4cf4d50";
+    hash = "sha256-qGuSsdQorb407rDl2o7w7kPCLng3W7YQsqo5JpoZFW8=";
   };
 
+  vendorHash = null;
+
+  ldflags = [ "-s" "-w" ];
+
   meta = with lib; {
     description = ''Generate "if err != nil {" block'';
-    mainProgram = "iferr";
     homepage = "https://github.com/koron/iferr";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
-    platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "iferr";
   };
 }
diff --git a/pkgs/development/tools/language-servers/gopls/default.nix b/pkgs/development/tools/language-servers/gopls/default.nix
index 63937dbfe865..509eb290c2e8 100644
--- a/pkgs/development/tools/language-servers/gopls/default.nix
+++ b/pkgs/development/tools/language-servers/gopls/default.nix
@@ -14,6 +14,9 @@ buildGoModule rec {
   modRoot = "gopls";
   vendorHash = "sha256-q7vWiXJAX4u8B4RyFc7kg1BvMCPaTBFOVkWXeE78Emo=";
 
+  # https://github.com/golang/tools/blob/9ed98faa/gopls/main.go#L27-L30
+  ldflags = [ "-X main.version=v${version}" ];
+
   doCheck = false;
 
   # Only build gopls, and not the integration tests or documentation generator.
diff --git a/pkgs/development/tools/language-servers/jq-lsp/default.nix b/pkgs/development/tools/language-servers/jq-lsp/default.nix
index 13f852790662..6952bea00d63 100644
--- a/pkgs/development/tools/language-servers/jq-lsp/default.nix
+++ b/pkgs/development/tools/language-servers/jq-lsp/default.nix
@@ -18,7 +18,7 @@ buildGoModule rec {
 
   # based on https://github.com/wader/jq-lsp/blob/master/.goreleaser.yml
   CGO_ENABLED = 0;
-  GOFLAGS = [ "-trimpath" ];
+
   ldflags = [
     "-s"
     "-w"
diff --git a/pkgs/development/tools/language-servers/postgres-lsp/default.nix b/pkgs/development/tools/language-servers/postgres-lsp/default.nix
index 6f9e41cb3c86..33855391ea5a 100644
--- a/pkgs/development/tools/language-servers/postgres-lsp/default.nix
+++ b/pkgs/development/tools/language-servers/postgres-lsp/default.nix
@@ -6,17 +6,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "postgres-lsp";
-  version = "unstable-2024-01-11";
+  version = "0-unstable-2024-03-24";
 
   src = fetchFromGitHub {
     owner = "supabase";
     repo = "postgres_lsp";
-    rev = "bbc24cc541cd1619997193ed81ad887252c7e467";
-    hash = "sha256-llVsHSEUDRsqjSTGr3hGUK6jYlKPX60rpjngBk1TG2Y=";
+    rev = "43ca9b675cb152ca7f38cfa6aff6dd2131dfa9a2";
+    hash = "sha256-n7Qbt9fGzC0CcleAtTWDInPz4oaPjI+pvIPrR5EYJ9U=";
     fetchSubmodules = true;
   };
 
-  cargoHash = "sha256-Npx/sSbMr4PKnNPslvjpOyKH0bpQLzW6cLNW+7H/TQ0=";
+  cargoHash = "sha256-UEcHlkbYMA6xETMryWXsDHyAZYtLncRJn2jA6tvw7gQ=";
 
   nativeBuildInputs = [
     protobuf
diff --git a/pkgs/development/tools/misc/grpc-client-cli/default.nix b/pkgs/development/tools/misc/grpc-client-cli/default.nix
index 5a337aafb9e9..aac07b56e2d5 100644
--- a/pkgs/development/tools/misc/grpc-client-cli/default.nix
+++ b/pkgs/development/tools/misc/grpc-client-cli/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "grpc-client-cli";
-  version = "1.20.0";
+  version = "1.20.1";
 
   src = fetchFromGitHub {
     owner = "vadimi";
     repo = "grpc-client-cli";
     rev = "v${version}";
-    sha256 = "sha256-MqzuVPY/IuJWfdzHvC/keTe5yi0aMhvq8SoKDlRAI0w=";
+    sha256 = "sha256-r3gbQntlWZ8Y2KiJOVkpzdakKnQUX2NIhk3eAyjnIV4=";
   };
 
-  vendorHash = "sha256-eRT1xMy9lsvF5sUF9jyDUWfNyLThIDTksaXff7xqyic=";
+  vendorHash = "sha256-23DdG/lLwzpgSRk9S6p1aNMh+AFzhO2qX2EE1EUovz8=";
 
   meta = with lib; {
     description = "generic gRPC command line client";
diff --git a/pkgs/development/tools/misc/terser/default.nix b/pkgs/development/tools/misc/terser/default.nix
index 2b9052ad79e6..ba30c6a4ffcd 100644
--- a/pkgs/development/tools/misc/terser/default.nix
+++ b/pkgs/development/tools/misc/terser/default.nix
@@ -2,16 +2,16 @@
 
 buildNpmPackage rec {
   pname = "terser";
-  version = "5.29.2";
+  version = "5.30.0";
 
   src = fetchFromGitHub {
     owner = "terser";
     repo = "terser";
     rev = "v${version}";
-    hash = "sha256-VGQ/mgMeeNA0koYgmb6PAZqBdVljgqY3MwuG0RLllCU=";
+    hash = "sha256-d3vnCEb9HzydpxsuoX66KqUtgYYt/+L2AcpZNFDleoY=";
   };
 
-  npmDepsHash = "sha256-8wKvV3vSzF6WdHzox1LXVi2FmeZf7qSo2rg93uCN3fI=";
+  npmDepsHash = "sha256-wrxa6/TKYb/pqT4zjTVbfONSYqko12pVzBQ9Ojm7H2o=";
 
   meta = with lib; {
     description = "JavaScript parser, mangler and compressor toolkit for ES6+";
diff --git a/pkgs/development/tools/misc/texlab/default.nix b/pkgs/development/tools/misc/texlab/default.nix
index afd4a23688ec..6c3b1707a405 100644
--- a/pkgs/development/tools/misc/texlab/default.nix
+++ b/pkgs/development/tools/misc/texlab/default.nix
@@ -15,16 +15,16 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "texlab";
-  version = "5.14.0";
+  version = "5.14.1";
 
   src = fetchFromGitHub {
     owner = "latex-lsp";
     repo = "texlab";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/VXhL03wZz0B0qoQe7JqmtzN020LSmcWB5QOkZFboz0=";
+    hash = "sha256-OqnV0ZpriiH69cTlmqPxorCgeO3x5h15e5Crn7DPwBM=";
   };
 
-  cargoHash = "sha256-hIQeo4FCEbgpa99ho5cwJgiXtAYbqgzyj6kW8fNtTWA=";
+  cargoHash = "sha256-V5FP24Cz1umffFD1Am4/IG3c7zKpT7MdghLpKvDxZwA=";
 
   outputs = [ "out" ] ++ lib.optional (!isCross) "man";
 
@@ -41,7 +41,7 @@ rustPlatform.buildRustPackage rec {
   # generate the man page
   postInstall = lib.optionalString (!isCross) ''
     # TexLab builds man page separately in CI:
-    # https://github.com/latex-lsp/texlab/blob/v5.13.1/.github/workflows/publish.yml#L117-L121
+    # https://github.com/latex-lsp/texlab/blob/v5.14.1/.github/workflows/publish.yml#L117-L121
     help2man --no-info "$out/bin/texlab" > texlab.1
     installManPage texlab.1
   '';
@@ -50,11 +50,11 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An implementation of the Language Server Protocol for LaTeX";
-    mainProgram = "texlab";
     homepage = "https://github.com/latex-lsp/texlab";
     changelog = "https://github.com/latex-lsp/texlab/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar kira-bruneau ];
     platforms = platforms.all;
+    mainProgram = "texlab";
   };
 }
diff --git a/pkgs/development/tools/mongosh/package-lock.json b/pkgs/development/tools/mongosh/package-lock.json
index f0fae4c8e245..13dcac0bb514 100644
--- a/pkgs/development/tools/mongosh/package-lock.json
+++ b/pkgs/development/tools/mongosh/package-lock.json
@@ -1,15 +1,15 @@
 {
   "name": "mongosh",
-  "version": "2.2.1",
+  "version": "2.2.2",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "mongosh",
-      "version": "2.2.1",
+      "version": "2.2.2",
       "license": "Apache-2.0",
       "dependencies": {
-        "@mongosh/cli-repl": "2.2.1"
+        "@mongosh/cli-repl": "2.2.2"
       },
       "bin": {
         "mongosh": "bin/mongosh.js"
@@ -122,22 +122,22 @@
       "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
     },
     "node_modules/@aws-sdk/client-cognito-identity": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.535.0.tgz",
-      "integrity": "sha512-7n9WAXAQzDgdaNkZlgdX+dmCW30tCrq3NpPs/f1WFWcF6g+s06ULkuWywTU+usG6ZTuRtajFKy2oMkMv9Wor0g==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.540.0.tgz",
+      "integrity": "sha512-03vUaIKjvdcOmjDi8Fv9JgY+VQrt9QBpRkI8A1lrdPNgWqTEZXZi/zBsFRsxTe6hgsrZtxVnxLu6krSRILuqtw==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/client-sts": "3.535.0",
+        "@aws-sdk/client-sts": "3.540.0",
         "@aws-sdk/core": "3.535.0",
-        "@aws-sdk/credential-provider-node": "3.535.0",
+        "@aws-sdk/credential-provider-node": "3.540.0",
         "@aws-sdk/middleware-host-header": "3.535.0",
         "@aws-sdk/middleware-logger": "3.535.0",
         "@aws-sdk/middleware-recursion-detection": "3.535.0",
-        "@aws-sdk/middleware-user-agent": "3.535.0",
+        "@aws-sdk/middleware-user-agent": "3.540.0",
         "@aws-sdk/region-config-resolver": "3.535.0",
         "@aws-sdk/types": "3.535.0",
-        "@aws-sdk/util-endpoints": "3.535.0",
+        "@aws-sdk/util-endpoints": "3.540.0",
         "@aws-sdk/util-user-agent-browser": "3.535.0",
         "@aws-sdk/util-user-agent-node": "3.535.0",
         "@smithy/config-resolver": "^2.2.0",
@@ -172,9 +172,9 @@
       }
     },
     "node_modules/@aws-sdk/client-sso": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso/-/client-sso-3.535.0.tgz",
-      "integrity": "sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso/-/client-sso-3.540.0.tgz",
+      "integrity": "sha512-rrQZMuw4sxIo3eyAUUzPQRA336mPRnrAeSlSdVHBKZD8Fjvoy0lYry2vNhkPLpFZLso1J66KRyuIv4LzRR3v1Q==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
@@ -182,10 +182,10 @@
         "@aws-sdk/middleware-host-header": "3.535.0",
         "@aws-sdk/middleware-logger": "3.535.0",
         "@aws-sdk/middleware-recursion-detection": "3.535.0",
-        "@aws-sdk/middleware-user-agent": "3.535.0",
+        "@aws-sdk/middleware-user-agent": "3.540.0",
         "@aws-sdk/region-config-resolver": "3.535.0",
         "@aws-sdk/types": "3.535.0",
-        "@aws-sdk/util-endpoints": "3.535.0",
+        "@aws-sdk/util-endpoints": "3.540.0",
         "@aws-sdk/util-user-agent-browser": "3.535.0",
         "@aws-sdk/util-user-agent-node": "3.535.0",
         "@smithy/config-resolver": "^2.2.0",
@@ -220,21 +220,21 @@
       }
     },
     "node_modules/@aws-sdk/client-sso-oidc": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.535.0.tgz",
-      "integrity": "sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.540.0.tgz",
+      "integrity": "sha512-LZYK0lBRQK8D8M3Sqc96XiXkAV2v70zhTtF6weyzEpgwxZMfSuFJjs0jFyhaeZBZbZv7BBghIdhJ5TPavNxGMQ==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/client-sts": "3.535.0",
+        "@aws-sdk/client-sts": "3.540.0",
         "@aws-sdk/core": "3.535.0",
         "@aws-sdk/middleware-host-header": "3.535.0",
         "@aws-sdk/middleware-logger": "3.535.0",
         "@aws-sdk/middleware-recursion-detection": "3.535.0",
-        "@aws-sdk/middleware-user-agent": "3.535.0",
+        "@aws-sdk/middleware-user-agent": "3.540.0",
         "@aws-sdk/region-config-resolver": "3.535.0",
         "@aws-sdk/types": "3.535.0",
-        "@aws-sdk/util-endpoints": "3.535.0",
+        "@aws-sdk/util-endpoints": "3.540.0",
         "@aws-sdk/util-user-agent-browser": "3.535.0",
         "@aws-sdk/util-user-agent-node": "3.535.0",
         "@smithy/config-resolver": "^2.2.0",
@@ -268,13 +268,13 @@
         "node": ">=14.0.0"
       },
       "peerDependencies": {
-        "@aws-sdk/credential-provider-node": "^3.535.0"
+        "@aws-sdk/credential-provider-node": "^3.540.0"
       }
     },
     "node_modules/@aws-sdk/client-sts": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sts/-/client-sts-3.535.0.tgz",
-      "integrity": "sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/client-sts/-/client-sts-3.540.0.tgz",
+      "integrity": "sha512-ITHUQxvpqfQX6obfpIi3KYGzZYfe/I5Ixjfxoi5lB7ISCtmxqObKB1fzD93wonkMJytJ7LUO8panZl/ojiJ1uw==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
@@ -282,10 +282,10 @@
         "@aws-sdk/middleware-host-header": "3.535.0",
         "@aws-sdk/middleware-logger": "3.535.0",
         "@aws-sdk/middleware-recursion-detection": "3.535.0",
-        "@aws-sdk/middleware-user-agent": "3.535.0",
+        "@aws-sdk/middleware-user-agent": "3.540.0",
         "@aws-sdk/region-config-resolver": "3.535.0",
         "@aws-sdk/types": "3.535.0",
-        "@aws-sdk/util-endpoints": "3.535.0",
+        "@aws-sdk/util-endpoints": "3.540.0",
         "@aws-sdk/util-user-agent-browser": "3.535.0",
         "@aws-sdk/util-user-agent-node": "3.535.0",
         "@smithy/config-resolver": "^2.2.0",
@@ -319,7 +319,7 @@
         "node": ">=14.0.0"
       },
       "peerDependencies": {
-        "@aws-sdk/credential-provider-node": "^3.535.0"
+        "@aws-sdk/credential-provider-node": "^3.540.0"
       }
     },
     "node_modules/@aws-sdk/core": {
@@ -340,11 +340,11 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-cognito-identity": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.535.0.tgz",
-      "integrity": "sha512-Lc+RJTNzp22H31W/O7iSmCZUP+KYZMuzK8hKU4/RXo7D8t/cFLb4VpvvcCCa4UOZqdmxVqEhwc1oXyMkoszITQ==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.540.0.tgz",
+      "integrity": "sha512-XOTAIuVgticX+43GMpRbi5OHmJAhHfoHYsVGu0eRLhri1yFqUHXJgHUd51QQtlA8cFQN7JnFFM6sF5EDCPF49g==",
       "dependencies": {
-        "@aws-sdk/client-cognito-identity": "3.535.0",
+        "@aws-sdk/client-cognito-identity": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/property-provider": "^2.2.0",
         "@smithy/types": "^2.12.0",
@@ -388,15 +388,15 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-ini": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.535.0.tgz",
-      "integrity": "sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.540.0.tgz",
+      "integrity": "sha512-igN/RbsnulIBwqXbwsWmR3srqmtbPF1dm+JteGvUY31FW65fTVvWvSr945Y/cf1UbhPmIQXntlsqESqpkhTHwg==",
       "dependencies": {
-        "@aws-sdk/client-sts": "3.535.0",
+        "@aws-sdk/client-sts": "3.540.0",
         "@aws-sdk/credential-provider-env": "3.535.0",
         "@aws-sdk/credential-provider-process": "3.535.0",
-        "@aws-sdk/credential-provider-sso": "3.535.0",
-        "@aws-sdk/credential-provider-web-identity": "3.535.0",
+        "@aws-sdk/credential-provider-sso": "3.540.0",
+        "@aws-sdk/credential-provider-web-identity": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/credential-provider-imds": "^2.3.0",
         "@smithy/property-provider": "^2.2.0",
@@ -409,16 +409,16 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-node": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.535.0.tgz",
-      "integrity": "sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.540.0.tgz",
+      "integrity": "sha512-HKQZJbLHlrHX9A0B1poiYNXIIQfy8whTjuosTCYKPDBhhUyVAQfxy/KG726j0v43IhaNPLgTGZCJve4hAsazSw==",
       "dependencies": {
         "@aws-sdk/credential-provider-env": "3.535.0",
         "@aws-sdk/credential-provider-http": "3.535.0",
-        "@aws-sdk/credential-provider-ini": "3.535.0",
+        "@aws-sdk/credential-provider-ini": "3.540.0",
         "@aws-sdk/credential-provider-process": "3.535.0",
-        "@aws-sdk/credential-provider-sso": "3.535.0",
-        "@aws-sdk/credential-provider-web-identity": "3.535.0",
+        "@aws-sdk/credential-provider-sso": "3.540.0",
+        "@aws-sdk/credential-provider-web-identity": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/credential-provider-imds": "^2.3.0",
         "@smithy/property-provider": "^2.2.0",
@@ -446,12 +446,12 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-sso": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.535.0.tgz",
-      "integrity": "sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.540.0.tgz",
+      "integrity": "sha512-tKkFqK227LF5ajc5EL6asXS32p3nkofpP8G7NRpU7zOEOQCg01KUc4JRX+ItI0T007CiN1J19yNoFqHLT/SqHg==",
       "dependencies": {
-        "@aws-sdk/client-sso": "3.535.0",
-        "@aws-sdk/token-providers": "3.535.0",
+        "@aws-sdk/client-sso": "3.540.0",
+        "@aws-sdk/token-providers": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/property-provider": "^2.2.0",
         "@smithy/shared-ini-file-loader": "^2.4.0",
@@ -463,11 +463,11 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-web-identity": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.535.0.tgz",
-      "integrity": "sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.540.0.tgz",
+      "integrity": "sha512-OpDm9w3A168B44hSjpnvECP4rvnFzD86rN4VYdGADuCvEa5uEcdA/JuT5WclFPDqdWEmFBqS1pxBIJBf0g2Q9Q==",
       "dependencies": {
-        "@aws-sdk/client-sts": "3.535.0",
+        "@aws-sdk/client-sts": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/property-provider": "^2.2.0",
         "@smithy/types": "^2.12.0",
@@ -478,21 +478,21 @@
       }
     },
     "node_modules/@aws-sdk/credential-providers": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-providers/-/credential-providers-3.535.0.tgz",
-      "integrity": "sha512-rC3TguTFbeua3EyTwGm84xeARKE1RO0oIWdtuTmSS5ZCPwllcePGkOVg7gQiPRc01Ebj816S/6P2QbvAfSUxqA==",
-      "dependencies": {
-        "@aws-sdk/client-cognito-identity": "3.535.0",
-        "@aws-sdk/client-sso": "3.535.0",
-        "@aws-sdk/client-sts": "3.535.0",
-        "@aws-sdk/credential-provider-cognito-identity": "3.535.0",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-providers/-/credential-providers-3.540.0.tgz",
+      "integrity": "sha512-tAmvqdZngCrER5/AAwTmDSjO05LGIshKL+lwcJr2OUV5jtQVzfbFrorf+b5dnI+3i8+zGcEAV9omra4XGrO9Kg==",
+      "dependencies": {
+        "@aws-sdk/client-cognito-identity": "3.540.0",
+        "@aws-sdk/client-sso": "3.540.0",
+        "@aws-sdk/client-sts": "3.540.0",
+        "@aws-sdk/credential-provider-cognito-identity": "3.540.0",
         "@aws-sdk/credential-provider-env": "3.535.0",
         "@aws-sdk/credential-provider-http": "3.535.0",
-        "@aws-sdk/credential-provider-ini": "3.535.0",
-        "@aws-sdk/credential-provider-node": "3.535.0",
+        "@aws-sdk/credential-provider-ini": "3.540.0",
+        "@aws-sdk/credential-provider-node": "3.540.0",
         "@aws-sdk/credential-provider-process": "3.535.0",
-        "@aws-sdk/credential-provider-sso": "3.535.0",
-        "@aws-sdk/credential-provider-web-identity": "3.535.0",
+        "@aws-sdk/credential-provider-sso": "3.540.0",
+        "@aws-sdk/credential-provider-web-identity": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/credential-provider-imds": "^2.3.0",
         "@smithy/property-provider": "^2.2.0",
@@ -545,12 +545,12 @@
       }
     },
     "node_modules/@aws-sdk/middleware-user-agent": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.535.0.tgz",
-      "integrity": "sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz",
+      "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==",
       "dependencies": {
         "@aws-sdk/types": "3.535.0",
-        "@aws-sdk/util-endpoints": "3.535.0",
+        "@aws-sdk/util-endpoints": "3.540.0",
         "@smithy/protocol-http": "^3.3.0",
         "@smithy/types": "^2.12.0",
         "tslib": "^2.6.2"
@@ -576,11 +576,11 @@
       }
     },
     "node_modules/@aws-sdk/token-providers": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.535.0.tgz",
-      "integrity": "sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.540.0.tgz",
+      "integrity": "sha512-9BvtiVEZe5Ev88Wa4ZIUbtT6BVcPwhxmVInQ6c12MYNb0WNL54BN6wLy/eknAfF05gpX2/NDU2pUDOyMPdm/+g==",
       "dependencies": {
-        "@aws-sdk/client-sso-oidc": "3.535.0",
+        "@aws-sdk/client-sso-oidc": "3.540.0",
         "@aws-sdk/types": "3.535.0",
         "@smithy/property-provider": "^2.2.0",
         "@smithy/shared-ini-file-loader": "^2.4.0",
@@ -604,9 +604,9 @@
       }
     },
     "node_modules/@aws-sdk/util-endpoints": {
-      "version": "3.535.0",
-      "resolved": "https://registry.npmmirror.com/@aws-sdk/util-endpoints/-/util-endpoints-3.535.0.tgz",
-      "integrity": "sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==",
+      "version": "3.540.0",
+      "resolved": "https://registry.npmmirror.com/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz",
+      "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==",
       "dependencies": {
         "@aws-sdk/types": "3.535.0",
         "@smithy/types": "^2.12.0",
@@ -690,12 +690,12 @@
       }
     },
     "node_modules/@babel/core": {
-      "version": "7.24.1",
-      "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.1.tgz",
-      "integrity": "sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==",
+      "version": "7.24.3",
+      "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.3.tgz",
+      "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==",
       "dependencies": {
         "@ampproject/remapping": "^2.2.0",
-        "@babel/code-frame": "^7.24.1",
+        "@babel/code-frame": "^7.24.2",
         "@babel/generator": "^7.24.1",
         "@babel/helper-compilation-targets": "^7.23.6",
         "@babel/helper-module-transforms": "^7.23.3",
@@ -791,9 +791,9 @@
       }
     },
     "node_modules/@babel/helper-module-imports": {
-      "version": "7.24.1",
-      "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.1.tgz",
-      "integrity": "sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==",
+      "version": "7.24.3",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
+      "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
       "dependencies": {
         "@babel/types": "^7.24.0"
       },
@@ -1168,12 +1168,12 @@
       }
     },
     "node_modules/@mongosh/arg-parser": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/arg-parser/-/arg-parser-2.2.1.tgz",
-      "integrity": "sha512-qz/RDf0go1irs/c/B5ZjN1OwPNplm8cQJU8eB037NVg0jCuDn/V+ERw3cSkinYdN1iZgLDtE/l3rgmEvkxz9Yg==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/arg-parser/-/arg-parser-2.2.2.tgz",
+      "integrity": "sha512-jonJbUjRBmMTgd1y3loyG09GJoYRZW/heWCbRGq5K9Gc4QHYDKwWPS8yaGTaw168UaBkCoCsSySNRs9MI0wJWA==",
       "dependencies": {
-        "@mongosh/errors": "2.2.1",
-        "@mongosh/i18n": "2.2.1",
+        "@mongosh/errors": "2.2.2",
+        "@mongosh/i18n": "2.2.2",
         "mongodb-connection-string-url": "^3.0.0"
       },
       "engines": {
@@ -1181,9 +1181,9 @@
       }
     },
     "node_modules/@mongosh/async-rewriter2": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/async-rewriter2/-/async-rewriter2-2.2.1.tgz",
-      "integrity": "sha512-xlSoweQUlX5nwW2FTOssQPpoJGZX1gZhfkaZ8qoanUdUMGDN+FfwjhUxMf8vUlOP8s899PUqDktCfc4UYo31mQ==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/async-rewriter2/-/async-rewriter2-2.2.2.tgz",
+      "integrity": "sha512-9F/rVauIZlxMFtVzddW5fs2a8Sr5/54Bc4qoBbwUjkGkV/I62Zx2fwoUm/JUM8iwnJwmXbjA/z0aK7div1OOdg==",
       "dependencies": {
         "@babel/core": "^7.22.8",
         "@babel/plugin-transform-destructuring": "^7.22.5",
@@ -1200,12 +1200,12 @@
       }
     },
     "node_modules/@mongosh/autocomplete": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/autocomplete/-/autocomplete-2.2.1.tgz",
-      "integrity": "sha512-M02TfYQvIXy7HWWXT36aEvZ/LfkurET4F1M7y4J9aVb5GL6j3pkSmubOjJNzwkt9vEIJlHFlJFQfPDgq5DWFUA==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/autocomplete/-/autocomplete-2.2.2.tgz",
+      "integrity": "sha512-S7awMS1OBQHXyjpU7QglzwuzcYbkb+emFA+ox7rAEGUFfjxnHT+TN69SiNO6Hm63ryq+2w/lXyuAnLzml8ZdTA==",
       "dependencies": {
         "@mongodb-js/mongodb-constants": "^0.8.10",
-        "@mongosh/shell-api": "2.2.1",
+        "@mongosh/shell-api": "2.2.2",
         "semver": "^7.5.4"
       },
       "engines": {
@@ -1213,25 +1213,25 @@
       }
     },
     "node_modules/@mongosh/cli-repl": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/cli-repl/-/cli-repl-2.2.1.tgz",
-      "integrity": "sha512-KrnRS5IzdIvWG46n274Ay2c9ZhiMJqJryExNjs00H56VjepGq2HY7hop3U9vY31eQ/s+xLjzChR9qNJ+2E9WwA==",
-      "dependencies": {
-        "@mongosh/arg-parser": "2.2.1",
-        "@mongosh/autocomplete": "2.2.1",
-        "@mongosh/editor": "2.2.1",
-        "@mongosh/errors": "2.2.1",
-        "@mongosh/history": "2.2.1",
-        "@mongosh/i18n": "2.2.1",
-        "@mongosh/import-node-fetch": "2.2.1",
-        "@mongosh/js-multiline-to-singleline": "2.2.1",
-        "@mongosh/logging": "2.2.1",
-        "@mongosh/service-provider-core": "2.2.1",
-        "@mongosh/service-provider-server": "2.2.1",
-        "@mongosh/shell-api": "2.2.1",
-        "@mongosh/shell-evaluator": "2.2.1",
-        "@mongosh/snippet-manager": "2.2.1",
-        "@mongosh/types": "2.2.1",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/cli-repl/-/cli-repl-2.2.2.tgz",
+      "integrity": "sha512-dPzJ+PN+xFzJ+11iGSMwzeQRcm8i+gUicc+BH2Oj5Y6pw4/Zljuk7uycu6nf5MMqxgzVyozaHfEUocOox59+1g==",
+      "dependencies": {
+        "@mongosh/arg-parser": "2.2.2",
+        "@mongosh/autocomplete": "2.2.2",
+        "@mongosh/editor": "2.2.2",
+        "@mongosh/errors": "2.2.2",
+        "@mongosh/history": "2.2.2",
+        "@mongosh/i18n": "2.2.2",
+        "@mongosh/import-node-fetch": "2.2.2",
+        "@mongosh/js-multiline-to-singleline": "2.2.2",
+        "@mongosh/logging": "2.2.2",
+        "@mongosh/service-provider-core": "2.2.2",
+        "@mongosh/service-provider-server": "2.2.2",
+        "@mongosh/shell-api": "2.2.2",
+        "@mongosh/shell-evaluator": "2.2.2",
+        "@mongosh/snippet-manager": "2.2.2",
+        "@mongosh/types": "2.2.2",
         "@segment/analytics-node": "^1.3.0",
         "ansi-escape-sequences": "^5.1.2",
         "askcharacter": "^1.0.0",
@@ -1262,15 +1262,15 @@
       }
     },
     "node_modules/@mongosh/editor": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/editor/-/editor-2.2.1.tgz",
-      "integrity": "sha512-z0nxSIVvCiR+kG2md24diMNou/9NBQvhn5334OeGyNk6y3/EEp52VN9Grmk9HL70d1tfr0A8F7c3kUpwJ6Q3XQ==",
-      "dependencies": {
-        "@mongosh/js-multiline-to-singleline": "2.2.1",
-        "@mongosh/service-provider-core": "2.2.1",
-        "@mongosh/shell-api": "2.2.1",
-        "@mongosh/shell-evaluator": "2.2.1",
-        "@mongosh/types": "2.2.1",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/editor/-/editor-2.2.2.tgz",
+      "integrity": "sha512-loUUjTtUnzWo/LTRUrEdvENVTHXNS+ohhuKd65mbT/n5XciVamozYhuLuTTsrGUMbVpHeaPXquryIKLEOqgi6w==",
+      "dependencies": {
+        "@mongosh/js-multiline-to-singleline": "2.2.2",
+        "@mongosh/service-provider-core": "2.2.2",
+        "@mongosh/shell-api": "2.2.2",
+        "@mongosh/shell-evaluator": "2.2.2",
+        "@mongosh/types": "2.2.2",
         "js-beautify": "^1.14.0"
       },
       "engines": {
@@ -1278,17 +1278,17 @@
       }
     },
     "node_modules/@mongosh/errors": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/errors/-/errors-2.2.1.tgz",
-      "integrity": "sha512-pwBI8Bv1KWYUSBoY2gh48dzvabCH8WlWYfo3Kzci7DPVK1vOccZpzr4PZony6ajvJ0KUswGGSaRFVdS54lO9QA==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/errors/-/errors-2.2.2.tgz",
+      "integrity": "sha512-FA4xuRZrYiYl9MxNzwl1adXZqQGXDHrVZyrL8Qrz28mGpvhfaQCENkE11C3DOpT2G/bHIFfiCxsmKs3ko7rwXw==",
       "engines": {
         "node": ">=14.15.1"
       }
     },
     "node_modules/@mongosh/history": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/history/-/history-2.2.1.tgz",
-      "integrity": "sha512-AfqtzjrfvJl0EwM3co4fTYGs12E76WUOfJbRejaBI1aLZZ7h36cjQjOG0bAckEuPYRw0sygkql5X0DLjZHDB/A==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/history/-/history-2.2.2.tgz",
+      "integrity": "sha512-llgGAt9ErtutDo5bQAYw+bpN0mOUHwh4rztIs0wT5vNplIkTxPOQMRXCYe1naXjyUV+2cFZN9aoNV1BuIH/9Gw==",
       "dependencies": {
         "mongodb-connection-string-url": "^3.0.0",
         "mongodb-redact": "^0.2.2"
@@ -1298,21 +1298,20 @@
       }
     },
     "node_modules/@mongosh/i18n": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/i18n/-/i18n-2.2.1.tgz",
-      "integrity": "sha512-ZbWV4Sykz4WIsLLGq9MfKR5baNXo5caM2pdBFVF6fwJMOcR87meBFcQ3SkbI7ZKezrMaQi/o9l6o6amI0vr2Rg==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/i18n/-/i18n-2.2.2.tgz",
+      "integrity": "sha512-FHUbQ7W02uN0ZRM/5tW3v9H0khooJGoxh5i9RaKU1SD8MVeyVToWP5LMIRdD1VQqJhQrEo8lB9G6nOjkXBNrgw==",
       "dependencies": {
-        "@mongosh/errors": "2.2.1",
-        "mustache": "^4.0.0"
+        "@mongosh/errors": "2.2.2"
       },
       "engines": {
         "node": ">=14.15.1"
       }
     },
     "node_modules/@mongosh/import-node-fetch": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/import-node-fetch/-/import-node-fetch-2.2.1.tgz",
-      "integrity": "sha512-rN9BBe3Z/zhnNjTc4cBYpt4oDa+JS7Th5grg/rYurb6Bs8f68Rzn1BTDACix7jzzHM6pVtptuk+b2QXIb2sAlw==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/import-node-fetch/-/import-node-fetch-2.2.2.tgz",
+      "integrity": "sha512-jKLAj5uHGC0Znn/KYlkj18naeup0gJxAVz9wJ9qcw7Sjk+zFXix4FR7J4kFw4OvVRVli2+lrQJxqRNOWdSC9Pg==",
       "dependencies": {
         "node-fetch": "^3.3.2"
       },
@@ -1321,9 +1320,9 @@
       }
     },
     "node_modules/@mongosh/js-multiline-to-singleline": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/js-multiline-to-singleline/-/js-multiline-to-singleline-2.2.1.tgz",
-      "integrity": "sha512-e3F8ukzBfJibVaT22lqNdTKMW2UnOTGwEGmAgJC6MLElNjo+zR2z+OBWdLbuOdkY5nsXFDYB2IWgPYbKFiWu/A==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/js-multiline-to-singleline/-/js-multiline-to-singleline-2.2.2.tgz",
+      "integrity": "sha512-Bbjn2dkxuW1PETNZkPIE/vybNe1fiAAdY7Kp4zy+hExiPb0bxalJVhh91kX5tGllGtk4lhcXgNHVpQvn44+UCw==",
       "dependencies": {
         "@babel/core": "^7.16.12",
         "@babel/types": "^7.21.2"
@@ -1333,14 +1332,14 @@
       }
     },
     "node_modules/@mongosh/logging": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/logging/-/logging-2.2.1.tgz",
-      "integrity": "sha512-2YYLnBvx5GI4zof0sQw8bqLULGf/hOsn8rNIhosfbHKNUPrCCyWlPnjeFD3npaAt7zffkI7Acpev6hWlEDuulA==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/logging/-/logging-2.2.2.tgz",
+      "integrity": "sha512-q7YtlypGHFxvrTXc62elQXoQjcpUzTcEpldAtB3LyJ/q4Tw09+Fu4ypgLwXQ+sdFodd0qpAsk/EXJL79mGVokA==",
       "dependencies": {
         "@mongodb-js/devtools-connect": "^2.6.0",
-        "@mongosh/errors": "2.2.1",
-        "@mongosh/history": "2.2.1",
-        "@mongosh/types": "2.2.1",
+        "@mongosh/errors": "2.2.2",
+        "@mongosh/history": "2.2.2",
+        "@mongosh/types": "2.2.2",
         "mongodb-log-writer": "^1.4.0",
         "mongodb-redact": "^0.2.2"
       },
@@ -1349,12 +1348,12 @@
       }
     },
     "node_modules/@mongosh/service-provider-core": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-core/-/service-provider-core-2.2.1.tgz",
-      "integrity": "sha512-D+sGmdKjeuTln5vTDqgg3Yx6DfidNuS/8keM14VGafRpVV8CEBD0My8F3kHpimV9w7xZnrAMKBqczcL1ZcJeww==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-core/-/service-provider-core-2.2.2.tgz",
+      "integrity": "sha512-6E8qCRmV0lmO/9rRF6/L9zWt4XWbZuQWrh+xo3aceGD4jaBat16yZ0bqO+HTId7CxdZnOD9MqAXoBqXAWi4o3A==",
       "dependencies": {
         "@aws-sdk/credential-providers": "^3.525.0",
-        "@mongosh/errors": "2.2.1",
+        "@mongosh/errors": "2.2.2",
         "bson": "^6.5.0",
         "mongodb": "^6.5.0",
         "mongodb-build-info": "^1.7.1"
@@ -1367,15 +1366,15 @@
       }
     },
     "node_modules/@mongosh/service-provider-server": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-server/-/service-provider-server-2.2.1.tgz",
-      "integrity": "sha512-dZ2YlTWANFnfwSjDNxpMbdbFDAqru2pMXoxIyPzEW3ISnathRfJjObiSO0+i56AoGPPG0lTFEdHAb0r9lPgxew==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/service-provider-server/-/service-provider-server-2.2.2.tgz",
+      "integrity": "sha512-Gaps3+FosBcVNW36KcLa6iQV0Ynbnq4Xw/0Eddd6IF2UZTrqyZDhl9pOicP5d1G6xjS833dlWy6cRSYki+rQIQ==",
       "dependencies": {
         "@mongodb-js/devtools-connect": "^2.6.0",
         "@mongodb-js/oidc-plugin": "^0.4.0",
-        "@mongosh/errors": "2.2.1",
-        "@mongosh/service-provider-core": "2.2.1",
-        "@mongosh/types": "2.2.1",
+        "@mongosh/errors": "2.2.2",
+        "@mongosh/service-provider-core": "2.2.2",
+        "@mongosh/types": "2.2.2",
         "@types/sinon-chai": "^3.2.4",
         "aws4": "^1.12.0",
         "mongodb": "^6.5.0",
@@ -1391,15 +1390,15 @@
       }
     },
     "node_modules/@mongosh/shell-api": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/shell-api/-/shell-api-2.2.1.tgz",
-      "integrity": "sha512-v7SNBBYms8SoHgDdDqN+jkG6V9GlpEJe5pY7tpLwlrQJ7ioBc8SOidsmHviStYP4oMzhkWQMXWETayWO92Fn+g==",
-      "dependencies": {
-        "@mongosh/arg-parser": "2.2.1",
-        "@mongosh/errors": "2.2.1",
-        "@mongosh/history": "2.2.1",
-        "@mongosh/i18n": "2.2.1",
-        "@mongosh/service-provider-core": "2.2.1",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/shell-api/-/shell-api-2.2.2.tgz",
+      "integrity": "sha512-VzgYSzcA6uceo3moQXchgpnbiY/ZVCOKqiJxRufPP9ALWmxvii7qnmIL1NjLZzqqYdeJ5ZReRqX8WWMOSZvLSg==",
+      "dependencies": {
+        "@mongosh/arg-parser": "2.2.2",
+        "@mongosh/errors": "2.2.2",
+        "@mongosh/history": "2.2.2",
+        "@mongosh/i18n": "2.2.2",
+        "@mongosh/service-provider-core": "2.2.2",
         "mongodb-redact": "^0.2.2"
       },
       "engines": {
@@ -1407,27 +1406,27 @@
       }
     },
     "node_modules/@mongosh/shell-evaluator": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/shell-evaluator/-/shell-evaluator-2.2.1.tgz",
-      "integrity": "sha512-drs0wUGjMwsh5RCcTatuUE+xOcggASmMnRfJTrCF/qq/Zvt4Jdx2g0VYfU6QjwPU7X1xqRC+0efMo9ixEVIDVQ==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/shell-evaluator/-/shell-evaluator-2.2.2.tgz",
+      "integrity": "sha512-38AegwWGi/6U51JJQWW8y2yfs0Tbr75BZFF7HeLwqGnf4ASpNdB/bVAaRxz5x7v/GcIBmPNcyj7zjLrq2IP2Cg==",
       "dependencies": {
-        "@mongosh/async-rewriter2": "2.2.1",
-        "@mongosh/history": "2.2.1",
-        "@mongosh/shell-api": "2.2.1"
+        "@mongosh/async-rewriter2": "2.2.2",
+        "@mongosh/history": "2.2.2",
+        "@mongosh/shell-api": "2.2.2"
       },
       "engines": {
         "node": ">=14.15.1"
       }
     },
     "node_modules/@mongosh/snippet-manager": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/snippet-manager/-/snippet-manager-2.2.1.tgz",
-      "integrity": "sha512-jjDAjaPCdWQAmlbWhZ1Jso7D19oKaxuEl3avn6vkxMIQIMML4IWrNOHoqWkfx5Z3NPteyx4grVfPyzjvipi94g==",
-      "dependencies": {
-        "@mongosh/errors": "2.2.1",
-        "@mongosh/import-node-fetch": "2.2.1",
-        "@mongosh/shell-api": "2.2.1",
-        "@mongosh/types": "2.2.1",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/snippet-manager/-/snippet-manager-2.2.2.tgz",
+      "integrity": "sha512-6ARX2s8XeieyLAh7ManT8e4f8CXj+copeMgNfgLR2KTsUVImHSaGk75rp1/haEed0NieHivPJnLjxdckhve3wA==",
+      "dependencies": {
+        "@mongosh/errors": "2.2.2",
+        "@mongosh/import-node-fetch": "2.2.2",
+        "@mongosh/shell-api": "2.2.2",
+        "@mongosh/types": "2.2.2",
         "bson": "^6.5.0",
         "cross-spawn": "^7.0.3",
         "escape-string-regexp": "^4.0.0",
@@ -1439,9 +1438,9 @@
       }
     },
     "node_modules/@mongosh/types": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmmirror.com/@mongosh/types/-/types-2.2.1.tgz",
-      "integrity": "sha512-lV1khTdJ8s3ldithGRa06nl4wlmKZm6eDnILPqW3QrZa0j6a2GBBe0GSUFo8kZkq4x3Y6SkT05ZHe1mnhh1gJQ==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@mongosh/types/-/types-2.2.2.tgz",
+      "integrity": "sha512-nFJlltmiDXryIrsJUvYvoU69P38j5u0plOtsxjhi4zlghQVt9qgjycdAD5F8E2tlV+dKUvQD4vulU7lASQcrBg==",
       "dependencies": {
         "@mongodb-js/devtools-connect": "^2.6.0"
       },
@@ -2115,9 +2114,9 @@
       }
     },
     "node_modules/@types/chai": {
-      "version": "4.3.13",
-      "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-4.3.13.tgz",
-      "integrity": "sha512-+LxQEbg4BDUf88utmhpUpTyYn1zHao443aGnXIAQak9ZMt9Rtsic0Oig0OS1xyIqdDXc5uMekoC6NaiUlkT/qA=="
+      "version": "4.3.14",
+      "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-4.3.14.tgz",
+      "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w=="
     },
     "node_modules/@types/sinon": {
       "version": "17.0.3",
@@ -2508,9 +2507,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001599",
-      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz",
-      "integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA=="
+      "version": "1.0.30001600",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz",
+      "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ=="
     },
     "node_modules/chalk": {
       "version": "2.4.2",
@@ -2596,9 +2595,9 @@
       "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
     },
     "node_modules/cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+      "version": "0.6.0",
+      "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz",
+      "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
       "engines": {
         "node": ">= 0.6"
       }
@@ -2775,9 +2774,9 @@
       "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.711",
-      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz",
-      "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w=="
+      "version": "1.4.717",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz",
+      "integrity": "sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A=="
     },
     "node_modules/emoji-regex": {
       "version": "9.2.2",
@@ -2959,16 +2958,16 @@
       }
     },
     "node_modules/express": {
-      "version": "4.18.3",
-      "resolved": "https://registry.npmmirror.com/express/-/express-4.18.3.tgz",
-      "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==",
+      "version": "4.19.2",
+      "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz",
+      "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
       "dependencies": {
         "accepts": "~1.3.8",
         "array-flatten": "1.1.1",
         "body-parser": "1.20.2",
         "content-disposition": "0.5.4",
         "content-type": "~1.0.4",
-        "cookie": "0.5.0",
+        "cookie": "0.6.0",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
         "depd": "2.0.0",
@@ -3898,14 +3897,6 @@
       "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
-    "node_modules/mustache": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmmirror.com/mustache/-/mustache-4.2.0.tgz",
-      "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
-      "bin": {
-        "mustache": "bin/mustache"
-      }
-    },
     "node_modules/napi-build-utils": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
@@ -4805,9 +4796,9 @@
       }
     },
     "node_modules/tar": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz",
-      "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz",
+      "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
       "dependencies": {
         "chownr": "^2.0.0",
         "fs-minipass": "^2.0.0",
diff --git a/pkgs/development/tools/mongosh/source.json b/pkgs/development/tools/mongosh/source.json
index 8f771e9917ee..3a9d6a9a0ab1 100644
--- a/pkgs/development/tools/mongosh/source.json
+++ b/pkgs/development/tools/mongosh/source.json
@@ -1,6 +1,6 @@
 {
-  "version": "2.2.1",
-  "integrity": "sha512-jqgOlNl5ZE/jasl6LIDZ8lKP658I+XFZh1e16eYo+c9UfL+NqRXwVJCRWKaZ/tph9Hc3dzCd9dKCN7OC0T50iQ==",
-  "filename": "mongosh-2.2.1.tgz",
-  "deps": "sha256-sZ2zSFi2tuYhjLHHrewNHcmSxwIHggL+wbHvEScK38Y="
+  "version": "2.2.2",
+  "integrity": "sha512-IfPcqu5xPfNKGmrk+zprDhHkKzAeiyI4QjHbbmrVFiXFg6J2Dk7i25NvndNxOALRqxnQ/bWnfl1qrEZJmWerWQ==",
+  "filename": "mongosh-2.2.2.tgz",
+  "deps": "sha256-96EVcBanbCyNg18T3jgryhP2hA7Gmcmf2EiGfzIju28="
 }
diff --git a/pkgs/development/tools/reshape/default.nix b/pkgs/development/tools/reshape/default.nix
index 82eeb6e7b0b6..d7c4701b9983 100644
--- a/pkgs/development/tools/reshape/default.nix
+++ b/pkgs/development/tools/reshape/default.nix
@@ -1,8 +1,10 @@
 { lib
 , rustPlatform
 , fetchCrate
+, darwin
 , postgresqlTestHook
 , postgresql
+, stdenv
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -16,6 +18,9 @@ rustPlatform.buildRustPackage rec {
 
   cargoHash = "sha256-VTJ3FNhVLgxo/VVBhk1yF9UUktLXcbrEkYwoyoWFhXA=";
 
+  buildInputs =
+    lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.SystemConfiguration ];
+
   nativeCheckInputs = [
     postgresqlTestHook
     postgresql
diff --git a/pkgs/development/tools/rstfmt/default.nix b/pkgs/development/tools/rstfmt/default.nix
index e09b18a138d1..25b20365a309 100644
--- a/pkgs/development/tools/rstfmt/default.nix
+++ b/pkgs/development/tools/rstfmt/default.nix
@@ -5,17 +5,21 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "rstfmt";
-  version = "0.0.13";
-  format = "pyproject";
+  version = "0.0.14";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "dzhu";
     repo = "rstfmt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SJRA14CfoT8XMt3hMB7cLdmuLwsJnBSwhKkD1pJvQCI=";
+    hash = "sha256-zvmKgNzfxyWYHoaD+q84I48r1Mpp4kU4oIGAwMSRRlA=";
   };
 
-  propagatedBuildInputs = with python3.pkgs; [
+  build-system = with python3.pkgs; [
+    setuptools
+  ];
+
+  dependencies = with python3.pkgs; [
     black
     docutils
     sphinx
@@ -31,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     description = "A formatter for reStructuredText";
     homepage = "https://github.com/dzhu/rstfmt";
+    changelog = "https://github.com/dzhu/rstfmt/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/tools/rust/cargo-deny/default.nix b/pkgs/development/tools/rust/cargo-deny/default.nix
index f4bdb252d400..cfeec591f672 100644
--- a/pkgs/development/tools/rust/cargo-deny/default.nix
+++ b/pkgs/development/tools/rust/cargo-deny/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-deny";
-  version = "0.14.18";
+  version = "0.14.20";
 
   src = fetchFromGitHub {
     owner = "EmbarkStudios";
     repo = "cargo-deny";
     rev = version;
-    hash = "sha256-aVWr7YXGpRDItub4CaUg9LYxj9Nf0Pe1L0FUr9bJoG0=";
+    hash = "sha256-KThJynV/LrT1CYHIs/B3yS6ylNr9AezoHhVPe1m/eiU=";
   };
 
-  cargoHash = "sha256-AD4WFM0yAIKgi9y8015qxukAa3YBJmPnkUhV7qp0quk=";
+  cargoHash = "sha256-S5aRucNq5vgUIsu4ToRqLVZZ8/IXkbniJXInhnybTNY=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/development/tools/rust/cargo-generate/default.nix b/pkgs/development/tools/rust/cargo-generate/default.nix
index 4cf34bbe6a3d..dd6630d8d309 100644
--- a/pkgs/development/tools/rust/cargo-generate/default.nix
+++ b/pkgs/development/tools/rust/cargo-generate/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-generate";
-  version = "0.19.0";
+  version = "0.20.0";
 
   src = fetchFromGitHub {
     owner = "cargo-generate";
     repo = "cargo-generate";
     rev = "v${version}";
-    sha256 = "sha256-OT2cjNYcEKk6Thnlq7SZvK2RJ6M1Zn62GrqpKbtrUdM=";
+    sha256 = "sha256-k4bTuTRZMWx8mMi/hdAr4YPCWqe39fG8nkmHH2D80ew=";
   };
 
-  cargoHash = "sha256-DAJsW3uKrSyIju7K13dMQFNOwE9WDuBuPx8imdPAxqk=";
+  cargoHash = "sha256-wi1Y1eU+v9Q/4nkLNCUluPlDGfz6ld8nuVWR9orkDV4=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/development/tools/sentry-cli/default.nix b/pkgs/development/tools/sentry-cli/default.nix
index 06b77135d484..92711b2d72df 100644
--- a/pkgs/development/tools/sentry-cli/default.nix
+++ b/pkgs/development/tools/sentry-cli/default.nix
@@ -11,13 +11,13 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "sentry-cli";
-  version = "2.30.2";
+  version = "2.30.4";
 
   src = fetchFromGitHub {
     owner = "getsentry";
     repo = "sentry-cli";
     rev = version;
-    sha256 = "sha256-ThZb6/Mprz9qgEGsJ+EbENvjmgehDsjVgFGBq4PZMRM=";
+    sha256 = "sha256-J+8/sCFSd2BYQgKOl8OZoxlFLB8scDY5Bl7GAQ54/RM=";
   };
   doCheck = false;
 
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
   nativeBuildInputs = [ installShellFiles pkg-config ];
 
-  cargoHash = "sha256-yoBoPk5PvMLGvhU/kg+WwO5WgwEnfKQlnkCC6IctfAI=";
+  cargoHash = "sha256-622cEaHEMmVspabsIYgQ5ySbaDr9qB1FjxJ5NwbeGx8=";
 
   postInstall = ''
     installShellCompletion --cmd sentry-cli \
diff --git a/pkgs/development/web/flyctl/default.nix b/pkgs/development/web/flyctl/default.nix
index 0d7f9f2c38f6..84caa116eea4 100644
--- a/pkgs/development/web/flyctl/default.nix
+++ b/pkgs/development/web/flyctl/default.nix
@@ -2,16 +2,16 @@
 
 buildGo122Module rec {
   pname = "flyctl";
-  version = "0.2.17";
+  version = "0.2.25";
 
   src = fetchFromGitHub {
     owner = "superfly";
     repo = "flyctl";
     rev = "v${version}";
-    hash = "sha256-XE1kZdR9ZbWMqp0neouZBvNtIJbOdzp/aMe+uA85zL8=";
+    hash = "sha256-yMkTLUM/1P9VrsYaF4m9YyRLV6qz6uMiYlhUN5S58uU=";
   };
 
-  vendorHash = "sha256-ZX7hcxQJdSLwY37DnV3vKcBW+K9F5RMPUeMtWzm48Dc=";
+  vendorHash = "sha256-TMlJbh9tMRNdeZlem27lgknuJ/YNFkVaWS9BNTTuXic=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/development/web/nodejs/v18.nix b/pkgs/development/web/nodejs/v18.nix
index 3fffdf909e6c..a4121b9575fd 100644
--- a/pkgs/development/web/nodejs/v18.nix
+++ b/pkgs/development/web/nodejs/v18.nix
@@ -19,8 +19,11 @@ let
 in
 buildNodejs {
   inherit enableNpm;
-  version = "18.20.0";
-  sha256 = "sha256-BMhneaLMfu/fzzeanYWIOqHTsdyJCbYiGxY2hIF4VqQ=";
+  # The change to minor version 18.20.0 breaks compatibility with ffi-napi
+  # This breaks the compilation of some nix packages.
+  # While this is investigated and fixed, do not upgrade the minor version.
+  version = "18.19.1";
+  sha256 = "sha256-CQ+WouzeCAtrOCxtZCvKXQvkcCp4y1Vb578CsgvRbe0=";
   patches = [
     ./disable-darwin-v8-system-instrumentation.patch
     ./bypass-darwin-xcrun-node16.patch