about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers')
-rw-r--r--nixpkgs/pkgs/development/compilers/aspectj/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/assemblyscript/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/ballerina/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/cairo/default.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/cairo/ensure-consistency-of-cargo-lock.patch1165
-rw-r--r--nixpkgs/pkgs/development/compilers/cmdstan/default.nix68
-rw-r--r--nixpkgs/pkgs/development/compilers/dart/sources.nix12
-rw-r--r--nixpkgs/pkgs/development/compilers/dotnet/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/ecl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/emscripten/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/erg/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/fbc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix54
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/artifacts/hashes.nix75
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/artifacts/overrides/linux.nix10
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix26
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/default.nix58
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix243
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix118
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix51
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/flutter.nix94
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/deps.json1020
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/pubspec.lock677
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/deregister-pub-dependencies-artifact.patch19
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch23
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/move-cache.patch53
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/override-host-platform.patch21
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/sdk-symlink.nix17
-rw-r--r--nixpkgs/pkgs/development/compilers/flutter/wrapper.nix114
-rw-r--r--nixpkgs/pkgs/development/compilers/fstar/default.nix88
-rw-r--r--nixpkgs/pkgs/development/compilers/fstar/dune.nix51
-rw-r--r--nixpkgs/pkgs/development/compilers/fstar/ulib.nix26
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix9
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix9
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix392
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix398
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix398
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix398
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.7.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.4.8.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/9.6.2.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch (renamed from nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix23
-rw-r--r--nixpkgs/pkgs/development/compilers/gleam/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/go/1.19.nix1
-rw-r--r--nixpkgs/pkgs/development/compilers/go/1.20.nix1
-rw-r--r--nixpkgs/pkgs/development/compilers/go/1.21.nix1
-rw-r--r--nixpkgs/pkgs/development/compilers/idris2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/inform6/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/julia/1.6-bin.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/julia/1.8-bin.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/julia/1.8.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/julia/1.9-bin.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/julia/1.9.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/julia/default.nix20
-rw-r--r--nixpkgs/pkgs/development/compilers/kotlin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/kotlin/native.nix8
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/12/compiler-rt/default.nix7
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/13/compiler-rt/default.nix7
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/14/compiler-rt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/14/default.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/14/lldb/gnu-install-dirs.patch67
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/15/compiler-rt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/15/default.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/15/lldb/gnu-install-dirs.patch23
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/16/compiler-rt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/16/default.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/16/lldb/gnu-install-dirs.patch23
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/17/compiler-rt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/17/default.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/17/lldb/gnu-install-dirs.patch23
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/common/lldb.nix5
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch49
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/git/compiler-rt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/git/default.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/git/lldb/gnu-install-dirs.patch23
-rw-r--r--nixpkgs/pkgs/development/compilers/lunarml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/minimacy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/mlkit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/nim/default.nix8
-rw-r--r--nixpkgs/pkgs/development/compilers/odin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/rust/binary.nix8
-rw-r--r--nixpkgs/pkgs/development/compilers/rust/cargo.nix2
-rw-r--r--nixpkgs/pkgs/development/compilers/swift/swift-format/default.nix1
-rw-r--r--nixpkgs/pkgs/development/compilers/typescript/default.nix14
-rw-r--r--nixpkgs/pkgs/development/compilers/unison/default.nix6
-rw-r--r--nixpkgs/pkgs/development/compilers/zig/generic.nix1
94 files changed, 3670 insertions, 2571 deletions
diff --git a/nixpkgs/pkgs/development/compilers/aspectj/default.nix b/nixpkgs/pkgs/development/compilers/aspectj/default.nix
index 507c0c9e1454..ee5528953c41 100644
--- a/nixpkgs/pkgs/development/compilers/aspectj/default.nix
+++ b/nixpkgs/pkgs/development/compilers/aspectj/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   pname = "aspectj";
-  version = "1.9.20.1";
+  version = "1.9.21";
   builder = ./builder.sh;
 
   src = let
     versionSnakeCase = builtins.replaceStrings ["."] ["_"] version;
   in fetchurl {
     url = "https://github.com/eclipse/org.aspectj/releases/download/V${versionSnakeCase}/aspectj-${version}.jar";
-    sha256 = "sha256-nzeDi1WdnIZ5DFxpZFSB/4c6FgV7wRQyO1uxRlaTZBY=";
+    sha256 = "sha256-/cdfEpUrK39ssVualCKWdGhpymIhq7y2oRxYJAENhU0=";
   };
 
   inherit jre;
diff --git a/nixpkgs/pkgs/development/compilers/assemblyscript/default.nix b/nixpkgs/pkgs/development/compilers/assemblyscript/default.nix
index a47d1f6bb74f..c297ad56c557 100644
--- a/nixpkgs/pkgs/development/compilers/assemblyscript/default.nix
+++ b/nixpkgs/pkgs/development/compilers/assemblyscript/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "assemblyscript";
-  version = "0.27.9";
+  version = "0.27.22";
 
   src = fetchFromGitHub {
     owner = "AssemblyScript";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-UOMWUM1wOhX2pR29DSYpPKLnjb1CWrKk6BtyXK7kqDk=";
+    sha256 = "sha256-8j012eAM+tl8AH5vNhg9xKDRJt5pZKV9KNwJFmUgXMY=";
   };
 
-  npmDepsHash = "sha256-9ILa1qY2GpP2RckcZYcCMmgCwdXIImOm+D8nldeoQL8=";
+  npmDepsHash = "sha256-y7gY9VhbR+xfXf3OvKvpcohk2mwfa0uOQO7Nmg+L6ug=";
 
   meta = with lib; {
     homepage = "https://github.com/AssemblyScript/${pname}";
diff --git a/nixpkgs/pkgs/development/compilers/ballerina/default.nix b/nixpkgs/pkgs/development/compilers/ballerina/default.nix
index 8b528aa77a95..c979b0225298 100644
--- a/nixpkgs/pkgs/development/compilers/ballerina/default.nix
+++ b/nixpkgs/pkgs/development/compilers/ballerina/default.nix
@@ -1,6 +1,6 @@
 { ballerina, lib, writeText, runCommand, makeWrapper, fetchzip, stdenv, openjdk }:
 let
-  version = "2201.8.3";
+  version = "2201.8.4";
   codeName = "swan-lake";
 in stdenv.mkDerivation {
   pname = "ballerina";
@@ -8,7 +8,7 @@ in stdenv.mkDerivation {
 
   src = fetchzip {
     url = "https://dist.ballerina.io/downloads/${version}/ballerina-${version}-${codeName}.zip";
-    hash = "sha256-Vj+q0pm8uwsNt6n0o6Y/XpoWnb4HksJBgCujDFubS3w=";
+    hash = "sha256-9+h5tK77ebbob1fOIB98mi9t6QJFB230yJMba6o+yEI=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/nixpkgs/pkgs/development/compilers/cairo/default.nix b/nixpkgs/pkgs/development/compilers/cairo/default.nix
index daf086e587b8..0e7283e52caa 100644
--- a/nixpkgs/pkgs/development/compilers/cairo/default.nix
+++ b/nixpkgs/pkgs/development/compilers/cairo/default.nix
@@ -6,16 +6,21 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cairo";
-  version = "2.3.0";
+  version = "2.4.0";
 
   src = fetchFromGitHub {
     owner = "starkware-libs";
     repo = "cairo";
     rev = "v${version}";
-    hash = "sha256-5UOLfsNgtg5EDDId23ysmWfeqMeh8R2UfMeBAtFCx6s=";
+    hash = "sha256-5bCPklk9u21/9cZYisszK0Lo7is9+iFrQxve41Fy5hg=";
   };
 
-  cargoHash = "sha256-YoPStyPeEqLoUvGLEPwXR8XVhXtb6XwFuPNoDCiT7OA=";
+  cargoPatches = [
+    # Upstream Cargo.lock is not up-to-date.
+    # https://github.com/starkware-libs/cairo/issues/4530
+    ./ensure-consistency-of-cargo-lock.patch
+  ];
+  cargoHash = "sha256-YCW6nwmUXMiP65QHCH6k29672gIkuz+MCmTqI+qaOyA=";
 
   nativeCheckInputs = [
     rustfmt
diff --git a/nixpkgs/pkgs/development/compilers/cairo/ensure-consistency-of-cargo-lock.patch b/nixpkgs/pkgs/development/compilers/cairo/ensure-consistency-of-cargo-lock.patch
new file mode 100644
index 000000000000..c2c9a7ed7be3
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/cairo/ensure-consistency-of-cargo-lock.patch
@@ -0,0 +1,1165 @@
+From c99824dd005062d1df8c6df79a36dc4e368159f3 Mon Sep 17 00:00:00 2001
+From: Raito Bezarius <masterancpp@gmail.com>
+Date: Fri, 8 Dec 2023 23:32:20 +0100
+Subject: [PATCH] packaging: ensure consistency of Cargo.lock with Cargo.toml
+
+2.4.0 failed to generate a consistent Cargo.lock, which made impossible
+offline installs of Cairo 2.4.0.
+---
+ Cargo.lock | 384 +++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 223 insertions(+), 161 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 17d139184..67c438c18 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -57,9 +57,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+ 
+ [[package]]
+ name = "anstream"
+-version = "0.6.4"
++version = "0.6.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
++checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6"
+ dependencies = [
+  "anstyle",
+  "anstyle-parse",
+@@ -77,30 +77,30 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+ 
+ [[package]]
+ name = "anstyle-parse"
+-version = "0.2.2"
++version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
++checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+ dependencies = [
+  "utf8parse",
+ ]
+ 
+ [[package]]
+ name = "anstyle-query"
+-version = "1.0.0"
++version = "1.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
++checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+ dependencies = [
+- "windows-sys 0.48.0",
++ "windows-sys 0.52.0",
+ ]
+ 
+ [[package]]
+ name = "anstyle-wincon"
+-version = "3.0.1"
++version = "3.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
++checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+ dependencies = [
+  "anstyle",
+- "windows-sys 0.48.0",
++ "windows-sys 0.52.0",
+ ]
+ 
+ [[package]]
+@@ -395,7 +395,7 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+ 
+ [[package]]
+ name = "cairo-compile"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-compiler",
+@@ -419,7 +419,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-format"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-formatter",
+@@ -432,7 +432,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-casm"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-utils",
+  "env_logger",
+@@ -452,7 +452,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-compiler"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-defs",
+@@ -473,7 +473,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-debug"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-proc-macros",
+  "cairo-lang-utils",
+@@ -484,7 +484,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-defs"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-diagnostics",
+@@ -504,7 +504,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-diagnostics"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-filesystem",
+@@ -518,7 +518,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-eq-solver"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-utils",
+  "env_logger",
+@@ -528,7 +528,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-filesystem"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-utils",
+@@ -543,7 +543,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-formatter"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-diagnostics",
+@@ -563,7 +563,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-language-server"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-compiler",
+@@ -591,7 +591,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-lowering"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-defs",
+@@ -621,7 +621,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-parser"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-diagnostics",
+  "cairo-lang-filesystem",
+@@ -643,7 +643,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-plugins"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-defs",
+@@ -665,7 +665,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-proc-macros"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "quote",
+@@ -674,7 +674,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-project"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-filesystem",
+  "cairo-lang-utils",
+@@ -687,7 +687,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-runner"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "ark-ff",
+  "ark-secp256k1",
+@@ -714,7 +714,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-semantic"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-defs",
+@@ -742,7 +742,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-sierra"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "bimap",
+@@ -772,7 +772,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-sierra-ap-change"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-eq-solver",
+  "cairo-lang-sierra",
+@@ -785,7 +785,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-sierra-gas"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-eq-solver",
+  "cairo-lang-sierra",
+@@ -803,7 +803,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-sierra-generator"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-defs",
+@@ -833,7 +833,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-sierra-to-casm"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "assert_matches",
+  "cairo-felt",
+@@ -856,7 +856,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-sierra-type-size"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-sierra",
+  "cairo-lang-utils",
+@@ -864,7 +864,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-starknet"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-felt",
+@@ -905,7 +905,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-syntax"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-debug",
+  "cairo-lang-filesystem",
+@@ -922,7 +922,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-syntax-codegen"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "env_logger",
+  "genco",
+@@ -932,7 +932,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-test-plugin"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-felt",
+@@ -957,7 +957,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-test-runner"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-felt",
+@@ -978,7 +978,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-test-utils"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-utils",
+  "colored",
+@@ -990,7 +990,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-lang-utils"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "env_logger",
+  "indexmap 2.1.0",
+@@ -1009,7 +1009,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-language-server"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-language-server",
+  "cairo-lang-utils",
+@@ -1019,7 +1019,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-run"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-compiler",
+@@ -1032,7 +1032,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "cairo-test"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-compiler",
+@@ -1051,7 +1051,7 @@ dependencies = [
+  "bitvec",
+  "cairo-felt",
+  "generic-array",
+- "hashbrown 0.14.2",
++ "hashbrown 0.14.3",
+  "hex",
+  "keccak",
+  "lazy_static",
+@@ -1081,9 +1081,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "cc"
+-version = "1.0.84"
++version = "1.0.83"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "0f8e7c90afad890484a21653d08b6e209ae34770fb5ee298f9c699fcc1e5c856"
++checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+ dependencies = [
+  "libc",
+ ]
+@@ -1096,9 +1096,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+ 
+ [[package]]
+ name = "clap"
+-version = "4.4.8"
++version = "4.4.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64"
++checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
+ dependencies = [
+  "clap_builder",
+  "clap_derive",
+@@ -1106,9 +1106,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "clap_builder"
+-version = "4.4.8"
++version = "4.4.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc"
++checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
+ dependencies = [
+  "anstream",
+  "anstyle",
+@@ -1249,9 +1249,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+ 
+ [[package]]
+ name = "crypto-bigint"
+-version = "0.5.3"
++version = "0.5.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124"
++checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
+ dependencies = [
+  "generic-array",
+  "subtle",
+@@ -1275,7 +1275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+ dependencies = [
+  "cfg-if",
+- "hashbrown 0.14.2",
++ "hashbrown 0.14.3",
+  "lock_api",
+  "once_cell",
+  "parking_lot_core 0.9.9",
+@@ -1283,9 +1283,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "deranged"
+-version = "0.3.9"
++version = "0.3.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
++checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
+ dependencies = [
+  "powerfmt",
+ ]
+@@ -1396,12 +1396,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+ 
+ [[package]]
+ name = "errno"
+-version = "0.3.6"
++version = "0.3.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e"
++checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+ dependencies = [
+  "libc",
+- "windows-sys 0.48.0",
++ "windows-sys 0.52.0",
+ ]
+ 
+ [[package]]
+@@ -1418,9 +1418,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+ 
+ [[package]]
+ name = "form_urlencoded"
+-version = "1.2.0"
++version = "1.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
++checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+ dependencies = [
+  "percent-encoding",
+ ]
+@@ -1550,7 +1550,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "generate-syntax"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "cairo-lang-syntax-codegen",
+  "cairo-lang-utils",
+@@ -1582,9 +1582,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "gimli"
+-version = "0.28.0"
++version = "0.28.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
++checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+ 
+ [[package]]
+ name = "glob"
+@@ -1594,15 +1594,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+ 
+ [[package]]
+ name = "globset"
+-version = "0.4.13"
++version = "0.4.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
++checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+ dependencies = [
+  "aho-corasick",
+  "bstr",
+- "fnv",
+  "log",
+- "regex",
++ "regex-automata",
++ "regex-syntax 0.8.2",
+ ]
+ 
+ [[package]]
+@@ -1635,9 +1635,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "hashbrown"
+-version = "0.14.2"
++version = "0.14.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
++checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+ dependencies = [
+  "ahash 0.8.6",
+  "allocator-api2",
+@@ -1700,9 +1700,9 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
+ 
+ [[package]]
+ name = "idna"
+-version = "0.4.0"
++version = "0.5.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
++checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+ dependencies = [
+  "unicode-bidi",
+  "unicode-normalization",
+@@ -1710,17 +1710,16 @@ dependencies = [
+ 
+ [[package]]
+ name = "ignore"
+-version = "0.4.20"
++version = "0.4.21"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
++checksum = "747ad1b4ae841a78e8aba0d63adbfbeaea26b517b63705d47856b73015d27060"
+ dependencies = [
++ "crossbeam-deque",
+  "globset",
+- "lazy_static",
+  "log",
+  "memchr",
+- "regex",
++ "regex-automata",
+  "same-file",
+- "thread_local",
+  "walkdir",
+  "winapi-util",
+ ]
+@@ -1760,7 +1759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+ dependencies = [
+  "equivalent",
+- "hashbrown 0.14.2",
++ "hashbrown 0.14.3",
+  "serde",
+ ]
+ 
+@@ -1829,9 +1828,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+ 
+ [[package]]
+ name = "js-sys"
+-version = "0.3.65"
++version = "0.3.66"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
++checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
+ dependencies = [
+  "wasm-bindgen",
+ ]
+@@ -1915,9 +1914,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "linux-raw-sys"
+-version = "0.4.11"
++version = "0.4.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
++checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+ 
+ [[package]]
+ name = "lock_api"
+@@ -2017,9 +2016,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "mio"
+-version = "0.8.9"
++version = "0.8.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
++checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+ dependencies = [
+  "libc",
+  "wasi",
+@@ -2179,9 +2178,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "once_cell"
+-version = "1.18.0"
++version = "1.19.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
++checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+ 
+ [[package]]
+ name = "oorandom"
+@@ -2197,9 +2196,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+ 
+ [[package]]
+ name = "parity-scale-codec"
+-version = "3.6.5"
++version = "3.6.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb"
++checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe"
+ dependencies = [
+  "arrayvec",
+  "bitvec",
+@@ -2210,9 +2209,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "parity-scale-codec-derive"
+-version = "3.6.5"
++version = "3.6.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260"
++checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b"
+ dependencies = [
+  "proc-macro-crate",
+  "proc-macro2",
+@@ -2282,9 +2281,9 @@ checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef"
+ 
+ [[package]]
+ name = "percent-encoding"
+-version = "2.3.0"
++version = "2.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
++checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+ 
+ [[package]]
+ name = "petgraph"
+@@ -2345,9 +2344,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+ 
+ [[package]]
+ name = "portable-atomic"
+-version = "1.5.1"
++version = "1.6.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b"
++checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+ 
+ [[package]]
+ name = "powerfmt"
+@@ -2379,12 +2378,11 @@ dependencies = [
+ 
+ [[package]]
+ name = "proc-macro-crate"
+-version = "1.3.1"
++version = "2.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
++checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
+ dependencies = [
+- "once_cell",
+- "toml_edit 0.19.15",
++ "toml_edit 0.20.7",
+ ]
+ 
+ [[package]]
+@@ -2413,9 +2411,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "proc-macro2"
+-version = "1.0.69"
++version = "1.0.70"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
++checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
+ dependencies = [
+  "unicode-ident",
+ ]
+@@ -2623,15 +2621,15 @@ dependencies = [
+ 
+ [[package]]
+ name = "rustix"
+-version = "0.38.21"
++version = "0.38.27"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
++checksum = "bfeae074e687625746172d639330f1de242a178bf3189b51e35a7a21573513ac"
+ dependencies = [
+  "bitflags 2.4.1",
+  "errno",
+  "libc",
+  "linux-raw-sys",
+- "windows-sys 0.48.0",
++ "windows-sys 0.52.0",
+ ]
+ 
+ [[package]]
+@@ -2739,18 +2737,18 @@ dependencies = [
+ 
+ [[package]]
+ name = "serde"
+-version = "1.0.192"
++version = "1.0.193"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001"
++checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+ dependencies = [
+  "serde_derive",
+ ]
+ 
+ [[package]]
+ name = "serde_derive"
+-version = "1.0.192"
++version = "1.0.193"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1"
++checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+ dependencies = [
+  "proc-macro2",
+  "quote",
+@@ -2822,7 +2820,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "sierra-compile"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-sierra",
+@@ -2901,7 +2899,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "starknet-compile"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-compiler",
+@@ -2992,7 +2990,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "starknet-sierra-compile"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-sierra",
+@@ -3005,7 +3003,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "starknet-sierra-extract-code"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-starknet",
+@@ -3015,7 +3013,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "starknet-sierra-upgrade-validate"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "anyhow",
+  "cairo-lang-starknet",
+@@ -3093,30 +3091,29 @@ dependencies = [
+ 
+ [[package]]
+ name = "termcolor"
+-version = "1.3.0"
++version = "1.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
++checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
+ dependencies = [
+  "winapi-util",
+ ]
+ 
+ [[package]]
+ name = "test-case"
+-version = "3.2.1"
++version = "3.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c8f1e820b7f1d95a0cdbf97a5df9de10e1be731983ab943e56703ac1b8e9d425"
++checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8"
+ dependencies = [
+  "test-case-macros",
+ ]
+ 
+ [[package]]
+ name = "test-case-core"
+-version = "3.2.1"
++version = "3.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "54c25e2cb8f5fcd7318157634e8838aa6f7e4715c96637f969fabaccd1ef5462"
++checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f"
+ dependencies = [
+  "cfg-if",
+- "proc-macro-error",
+  "proc-macro2",
+  "quote",
+  "syn 2.0.39",
+@@ -3124,11 +3121,10 @@ dependencies = [
+ 
+ [[package]]
+ name = "test-case-macros"
+-version = "3.2.1"
++version = "3.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "37cfd7bbc88a0104e304229fba519bdc45501a30b760fb72240342f1289ad257"
++checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
+ dependencies = [
+- "proc-macro-error",
+  "proc-macro2",
+  "quote",
+  "syn 2.0.39",
+@@ -3137,9 +3133,19 @@ dependencies = [
+ 
+ [[package]]
+ name = "test-log"
+-version = "0.2.13"
++version = "0.2.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "f66edd6b6cd810743c0c71e1d085e92b01ce6a72782032e3f794c8284fe4bcdd"
++checksum = "6159ab4116165c99fc88cce31f99fa2c9dbe08d3691cb38da02fc3b45f357d2b"
++dependencies = [
++ "env_logger",
++ "test-log-macros",
++]
++
++[[package]]
++name = "test-log-macros"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ba277e77219e9eea169e8508942db1bf5d8a41ff2db9b20aab5a5aadc9fa25d"
+ dependencies = [
+  "proc-macro2",
+  "quote",
+@@ -3148,7 +3154,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "tests"
+-version = "2.4.0-rc5"
++version = "2.4.0"
+ dependencies = [
+  "assert_matches",
+  "cairo-felt",
+@@ -3220,16 +3226,6 @@ dependencies = [
+  "thiserror-impl-no-std",
+ ]
+ 
+-[[package]]
+-name = "thread_local"
+-version = "1.1.7"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+-dependencies = [
+- "cfg-if",
+- "once_cell",
+-]
+-
+ [[package]]
+ name = "time"
+ version = "0.3.30"
+@@ -3352,9 +3348,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "toml_edit"
+-version = "0.19.15"
++version = "0.20.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
++checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
+ dependencies = [
+  "indexmap 2.1.0",
+  "toml_datetime",
+@@ -3473,18 +3469,18 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+ 
+ [[package]]
+ name = "unescaper"
+-version = "0.1.2"
++version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "a96a44ae11e25afb520af4534fd7b0bd8cd613e35a78def813b8cf41631fa3c8"
++checksum = "d8f0f68e58d297ba8b22b8b5a96a87b863ba6bb46aaf51e19a4b02c5a6dd5b7f"
+ dependencies = [
+  "thiserror",
+ ]
+ 
+ [[package]]
+ name = "unicode-bidi"
+-version = "0.3.13"
++version = "0.3.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
++checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
+ 
+ [[package]]
+ name = "unicode-ident"
+@@ -3521,9 +3517,9 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+ 
+ [[package]]
+ name = "url"
+-version = "2.4.1"
++version = "2.5.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
++checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+ dependencies = [
+  "form_urlencoded",
+  "idna",
+@@ -3561,9 +3557,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+ 
+ [[package]]
+ name = "wasm-bindgen"
+-version = "0.2.88"
++version = "0.2.89"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
++checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+ dependencies = [
+  "cfg-if",
+  "wasm-bindgen-macro",
+@@ -3571,9 +3567,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "wasm-bindgen-backend"
+-version = "0.2.88"
++version = "0.2.89"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
++checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+ dependencies = [
+  "bumpalo",
+  "log",
+@@ -3586,9 +3582,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "wasm-bindgen-macro"
+-version = "0.2.88"
++version = "0.2.89"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
++checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+ dependencies = [
+  "quote",
+  "wasm-bindgen-macro-support",
+@@ -3596,9 +3592,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "wasm-bindgen-macro-support"
+-version = "0.2.88"
++version = "0.2.89"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
++checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+ dependencies = [
+  "proc-macro2",
+  "quote",
+@@ -3609,9 +3605,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "wasm-bindgen-shared"
+-version = "0.2.88"
++version = "0.2.89"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
++checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+ 
+ [[package]]
+ name = "winapi"
+@@ -3662,6 +3658,15 @@ dependencies = [
+  "windows-targets 0.48.5",
+ ]
+ 
++[[package]]
++name = "windows-sys"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
++dependencies = [
++ "windows-targets 0.52.0",
++]
++
+ [[package]]
+ name = "windows-targets"
+ version = "0.42.2"
+@@ -3692,6 +3697,21 @@ dependencies = [
+  "windows_x86_64_msvc 0.48.5",
+ ]
+ 
++[[package]]
++name = "windows-targets"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
++dependencies = [
++ "windows_aarch64_gnullvm 0.52.0",
++ "windows_aarch64_msvc 0.52.0",
++ "windows_i686_gnu 0.52.0",
++ "windows_i686_msvc 0.52.0",
++ "windows_x86_64_gnu 0.52.0",
++ "windows_x86_64_gnullvm 0.52.0",
++ "windows_x86_64_msvc 0.52.0",
++]
++
+ [[package]]
+ name = "windows_aarch64_gnullvm"
+ version = "0.42.2"
+@@ -3704,6 +3724,12 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+ 
++[[package]]
++name = "windows_aarch64_gnullvm"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
++
+ [[package]]
+ name = "windows_aarch64_msvc"
+ version = "0.42.2"
+@@ -3716,6 +3742,12 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+ 
++[[package]]
++name = "windows_aarch64_msvc"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
++
+ [[package]]
+ name = "windows_i686_gnu"
+ version = "0.42.2"
+@@ -3728,6 +3760,12 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+ 
++[[package]]
++name = "windows_i686_gnu"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
++
+ [[package]]
+ name = "windows_i686_msvc"
+ version = "0.42.2"
+@@ -3740,6 +3778,12 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+ 
++[[package]]
++name = "windows_i686_msvc"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
++
+ [[package]]
+ name = "windows_x86_64_gnu"
+ version = "0.42.2"
+@@ -3752,6 +3796,12 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+ 
++[[package]]
++name = "windows_x86_64_gnu"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
++
+ [[package]]
+ name = "windows_x86_64_gnullvm"
+ version = "0.42.2"
+@@ -3764,6 +3814,12 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+ 
++[[package]]
++name = "windows_x86_64_gnullvm"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
++
+ [[package]]
+ name = "windows_x86_64_msvc"
+ version = "0.42.2"
+@@ -3776,11 +3832,17 @@ version = "0.48.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+ 
++[[package]]
++name = "windows_x86_64_msvc"
++version = "0.52.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
++
+ [[package]]
+ name = "winnow"
+-version = "0.5.19"
++version = "0.5.26"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b"
++checksum = "b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff"
+ dependencies = [
+  "memchr",
+ ]
+@@ -3817,18 +3879,18 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+ 
+ [[package]]
+ name = "zerocopy"
+-version = "0.7.25"
++version = "0.7.30"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557"
++checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7"
+ dependencies = [
+  "zerocopy-derive",
+ ]
+ 
+ [[package]]
+ name = "zerocopy-derive"
+-version = "0.7.25"
++version = "0.7.30"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b"
++checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba"
+ dependencies = [
+  "proc-macro2",
+  "quote",
+@@ -3837,9 +3899,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "zeroize"
+-version = "1.6.0"
++version = "1.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
++checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+ dependencies = [
+  "zeroize_derive",
+ ]
+-- 
+2.42.0
+
diff --git a/nixpkgs/pkgs/development/compilers/cmdstan/default.nix b/nixpkgs/pkgs/development/compilers/cmdstan/default.nix
index 8d3e738aa1b4..ad84e13d369e 100644
--- a/nixpkgs/pkgs/development/compilers/cmdstan/default.nix
+++ b/nixpkgs/pkgs/development/compilers/cmdstan/default.nix
@@ -1,4 +1,13 @@
-{ lib, stdenv, fetchFromGitHub, stanc, python3, buildPackages, runtimeShell }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, python3
+, stanc
+, buildPackages
+, runtimeShell
+, runCommandCC
+, cmdstan
+}:
 
 stdenv.mkDerivation rec {
   pname = "cmdstan";
@@ -12,39 +21,43 @@ stdenv.mkDerivation rec {
     hash = "sha256-c+L/6PjW7YgmXHuKhKjiRofBRAhKYCzFCZ6BOX5AmC4=";
   };
 
-  nativeBuildInputs = [ stanc ];
-
-  buildFlags = [ "build" ];
-  enableParallelBuilding = true;
-
-  doCheck = true;
-  nativeCheckInputs = [ python3 ];
-
-  CXXFLAGS = lib.optionalString stdenv.isDarwin "-D_BOOST_LGAMMA";
-
   postPatch = ''
     substituteInPlace stan/lib/stan_math/make/libraries \
       --replace "/usr/bin/env bash" "bash"
-    patchShebangs .
-  '' + lib.optionalString stdenv.isAarch64 ''
-    sed -z -i "s/TEST(CommandStansummary, check_console_output).*TEST(CommandStansummary, check_csv_output)/TEST(CommandStansummary, check_csv_output)/" \
-      src/test/interface/stansummary_test.cpp
   '';
 
+  nativeBuildInputs = [
+    python3
+    stanc
+  ];
+
   preConfigure = ''
+    patchShebangs test-all.sh runCmdStanTests.py stan/
+  ''
+  # Fix inclusion of hardcoded paths in PCH files, by building in the store.
+  + ''
+    mkdir -p $out/opt
+    cp -R . $out/opt/cmdstan
+    cd $out/opt/cmdstan
     mkdir -p bin
     ln -s ${buildPackages.stanc}/bin/stanc bin/stanc
   '';
 
-  makeFlags = lib.optional stdenv.isDarwin "arch=${stdenv.hostPlatform.darwinArch}";
+  makeFlags = [
+    "build"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "arch=${stdenv.hostPlatform.darwinArch}"
+  ];
 
-  checkPhase = ''
-    ./runCmdStanTests.py -j$NIX_BUILD_CORES src/test/interface
-  '';
+  # Disable inclusion of timestamps in PCH files when using Clang.
+  env.CXXFLAGS = lib.optionalString stdenv.cc.isClang "-Xclang -fno-pch-timestamp";
+
+  enableParallelBuilding = true;
 
   installPhase = ''
-    mkdir -p $out/opt $out/bin
-    cp -r . $out/opt/cmdstan
+    runHook preInstall
+
+    mkdir -p $out/bin
     ln -s $out/opt/cmdstan/bin/stanc $out/bin/stanc
     ln -s $out/opt/cmdstan/bin/stansummary $out/bin/stansummary
     cat > $out/bin/stan <<EOF
@@ -52,10 +65,19 @@ stdenv.mkDerivation rec {
     make -C $out/opt/cmdstan "\$(realpath "\$1")"
     EOF
     chmod a+x $out/bin/stan
+
+    runHook postInstall
   '';
 
-  # Hack to ensure that patchelf --shrink-rpath get rids of a $TMPDIR reference.
-  preFixup = "rm -rf stan";
+  passthru.tests = {
+    test = runCommandCC "cmdstan-test" { } ''
+      cp -R ${cmdstan}/opt/cmdstan cmdstan
+      chmod -R +w cmdstan
+      cd cmdstan
+      ./runCmdStanTests.py -j$NIX_BUILD_CORES src/test/interface
+      touch $out
+    '';
+  };
 
   meta = with lib; {
     description = "Command-line interface to Stan";
diff --git a/nixpkgs/pkgs/development/compilers/dart/sources.nix b/nixpkgs/pkgs/development/compilers/dart/sources.nix
index c711e02d396f..600e284d8449 100644
--- a/nixpkgs/pkgs/development/compilers/dart/sources.nix
+++ b/nixpkgs/pkgs/development/compilers/dart/sources.nix
@@ -1,24 +1,24 @@
-let version = "3.2.0"; in
+let version = "3.2.4"; in
 { fetchurl }: {
   versionUsed = version;
   "${version}-x86_64-darwin" = fetchurl {
     url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-macos-x64-release.zip";
-    sha256 = "0a1mbi2si0ww9b96hx633xviwrbqk4skf7gxs0h95npw2cf6n9kd";
+    sha256 = "107sq5m684mxw5k21zfs3iyihzbqkfmh0vpj17qca19rghnxgn02";
   };
   "${version}-aarch64-darwin" = fetchurl {
     url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-macos-arm64-release.zip";
-    sha256 = "0yhmhvfq8w6l8q5ahlxk5qbr3ji319snb8ghpi6y7px2pfbv5gwr";
+    sha256 = "08jbcdm5li30xdy85whdah186g0yiasgl12h6vi1vgld15ifjsab";
   };
   "${version}-aarch64-linux" = fetchurl {
     url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-linux-arm64-release.zip";
-    sha256 = "052vz5zjjwjbww81qws3vyj39wkw2i9mqqs8fcifzgzbfdyc8lb0";
+    sha256 = "0f40riqcdnjwjnv6si5186h6akrnhnwqrfrgfvm4y0gpblw88c2s";
   };
   "${version}-x86_64-linux" = fetchurl {
     url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-linux-x64-release.zip";
-    sha256 = "0wvpyjpvyaasazjmizb0ha3p70q3rhqpqq8bzl1bv9jrsgcniqsf";
+    sha256 = "1bkrfg3xzkc4zrbl5ialg5jwpb7l0xmrd9aj7x5kwz2v8n8w013n";
   };
   "${version}-i686-linux" = fetchurl {
     url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-linux-ia32-release.zip";
-    sha256 = "1z187sl652fzkp3nf044snjh09svnvmlxh0ribzf3b955a40l8cd";
+    sha256 = "0jddia0s7byl7p6qbljp444qs11r8ff58s5fbchcrsmkry3pg8gi";
   };
 }
diff --git a/nixpkgs/pkgs/development/compilers/dotnet/default.nix b/nixpkgs/pkgs/development/compilers/dotnet/default.nix
index 915f3b08652b..814560e49bee 100644
--- a/nixpkgs/pkgs/development/compilers/dotnet/default.nix
+++ b/nixpkgs/pkgs/development/compilers/dotnet/default.nix
@@ -5,7 +5,7 @@ dotnetCombined = with dotnetCorePackages; combinePackages [ sdk_6_0 aspnetcore_7
 Hashes and urls are retrieved from:
 https://dotnet.microsoft.com/download/dotnet
 */
-{ callPackage }:
+{ lib, config, callPackage }:
 let
   buildDotnet = attrs: callPackage (import ./build-dotnet.nix attrs) {};
   buildAttrs = {
@@ -35,7 +35,7 @@ in
   inherit systemToDotnetRid;
 
   combinePackages = attrs: callPackage (import ./combine-packages.nix attrs) {};
-
+} // lib.optionalAttrs config.allowAliases {
   # EOL
   sdk_2_1 = throw "Dotnet SDK 2.1 is EOL, please use 6.0 (LTS) or 7.0 (Current)";
   sdk_2_2 = throw "Dotnet SDK 2.2 is EOL, please use 6.0 (LTS) or 7.0 (Current)";
diff --git a/nixpkgs/pkgs/development/compilers/ecl/default.nix b/nixpkgs/pkgs/development/compilers/ecl/default.nix
index bba1b3026362..a9a7471275e5 100644
--- a/nixpkgs/pkgs/development/compilers/ecl/default.nix
+++ b/nixpkgs/pkgs/development/compilers/ecl/default.nix
@@ -19,11 +19,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ecl";
-  version = "21.2.1";
+  version = "23.9.9";
 
   src = fetchurl {
     url = "https://common-lisp.net/project/ecl/static/files/release/ecl-${version}.tgz";
-    sha256 = "sha256-sVp13PhLj2LmhyDMqxOT+WEcB4/NOv3WOaEIbK0BCQA=";
+    sha256 = "107q6gmxlsya4yv38r1x1axrgyyfgdrfkkz97zfp64bcrasdl6y5";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/compilers/emscripten/default.nix b/nixpkgs/pkgs/development/compilers/emscripten/default.nix
index 1f8d2f55da34..c31f109f8908 100644
--- a/nixpkgs/pkgs/development/compilers/emscripten/default.nix
+++ b/nixpkgs/pkgs/development/compilers/emscripten/default.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   pname = "emscripten";
-  version = "3.1.50";
+  version = "3.1.51";
 
   llvmEnv = symlinkJoin {
     name = "emscripten-llvm-${version}";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     name = "emscripten-node-modules-${version}";
     inherit pname version src;
 
-    npmDepsHash = "sha256-Qft+//za5ed6Oquxtcdpv7g5oOc2WmWuRJ/CDe+FEiI=";
+    npmDepsHash = "sha256-N7WbxzKvW6FljY6g3R//9RdNiezhXGEvKPbOSJgdA0g=";
 
     dontBuild = true;
 
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "emscripten-core";
     repo = "emscripten";
-    hash = "sha256-iFZF+DxGaq279QPPugoLhYmoXmyLPkmn1x4rBCkdW+I=";
+    hash = "sha256-oXecS6B0u8YLeoybjxLwx5INGj/Kp/8GA6s3A1S0y4k=";
     rev = version;
   };
 
diff --git a/nixpkgs/pkgs/development/compilers/erg/default.nix b/nixpkgs/pkgs/development/compilers/erg/default.nix
index 6d052179ebd8..e012957fb7a9 100644
--- a/nixpkgs/pkgs/development/compilers/erg/default.nix
+++ b/nixpkgs/pkgs/development/compilers/erg/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "erg";
-  version = "0.6.25";
+  version = "0.6.28";
 
   src = fetchFromGitHub {
     owner = "erg-lang";
     repo = "erg";
     rev = "v${version}";
-    hash = "sha256-z3481/vWmR5QlULfJZtLdGhwsJKBbLcvyC87SCngMVg=";
+    hash = "sha256-TK7Ak6ZKjEBcwimV0W/CgD3yd9q1aSgSkp9MuGE3d8k=";
   };
 
-  cargoHash = "sha256-+jN+6At8tLHA/ilSBxugHIS79Cw8bGhE0RUNU4sSGeM=";
+  cargoHash = "sha256-DD6RXGdkQHMKZCJhHRTbTrRQ15MdOZHbREJ31LePHUY=";
 
   nativeBuildInputs = [
     makeWrapper
diff --git a/nixpkgs/pkgs/development/compilers/fbc/default.nix b/nixpkgs/pkgs/development/compilers/fbc/default.nix
index 8609c841b22a..631bf9c7bfe0 100644
--- a/nixpkgs/pkgs/development/compilers/fbc/default.nix
+++ b/nixpkgs/pkgs/development/compilers/fbc/default.nix
@@ -14,12 +14,12 @@
 
 stdenv.mkDerivation rec {
   pname = "fbc";
-  version = "1.10.0";
+  version = "1.10.1";
 
   src = fetchzip {
     # Bootstrap tarball has sources pretranslated from FreeBASIC to C
     url = "https://github.com/freebasic/fbc/releases/download/${version}/FreeBASIC-${version}-source-bootstrap.tar.xz";
-    hash = "sha256-7FmyEfykOAgHaL2AG8zIgftzOszhwVzNKEqskiLGpfk=";
+    hash = "sha256-LBROv3m1DrEfSStMbNuLC+fldYNfSS+D09bJyNMNPP0=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix b/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix
new file mode 100644
index 000000000000..e0c1440a604f
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix
@@ -0,0 +1,54 @@
+{ lib
+, runCommand
+, xorg
+, cacert
+, unzip
+
+, platform
+, flutter
+, hash
+}:
+
+let
+  platforms = [
+    "android"
+    "ios"
+    "web"
+    "linux"
+    "windows"
+    "macos"
+    "fuchsia"
+    "universal"
+  ];
+
+  flutter' = flutter.override {
+    # Use a version of Flutter with just enough capabilities to download
+    # artifacts.
+    supportedTargetPlatforms = [ ];
+  };
+in
+runCommand "flutter-artifacts-${platform}"
+{
+  nativeBuildInputs = [ xorg.lndir flutter' unzip ];
+
+  NIX_FLUTTER_TOOLS_VM_OPTIONS = "--root-certs-file=${cacert}/etc/ssl/certs/ca-bundle.crt";
+
+  outputHash = hash;
+  outputHashMode = "recursive";
+  outputHashAlgo = "sha256";
+
+  passthru = {
+    inherit platform;
+  };
+} ''
+  export FLUTTER_ROOT="$NIX_BUILD_TOP"
+  lndir -silent '${flutter'}' "$FLUTTER_ROOT"
+  rm -rf "$FLUTTER_ROOT/bin/cache"
+  mkdir "$FLUTTER_ROOT/bin/cache"
+
+  HOME="$(mktemp -d)" flutter precache -v '--${platform}' ${builtins.concatStringsSep " " (map (p: "'--no-${p}'") (lib.remove platform platforms))}
+  rm -rf "$FLUTTER_ROOT/bin/cache/lockfile"
+  find "$FLUTTER_ROOT" -type l -lname '${flutter'}/*' -delete
+
+  cp -r bin/cache "$out"
+''
diff --git a/nixpkgs/pkgs/development/compilers/flutter/artifacts/hashes.nix b/nixpkgs/pkgs/development/compilers/flutter/artifacts/hashes.nix
new file mode 100644
index 000000000000..551975acf662
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/artifacts/hashes.nix
@@ -0,0 +1,75 @@
+# NOTICE: When updating these hashes, make sure that no additional platforms
+# have been added to the `flutter precache` CLI. If any have, they may be
+# included in every derivation, unless they are also added to the platform list
+# in fetch-artifacts.nix.
+#
+# The known arguments are as follows:
+# $ flutter precache --help --verbose
+# Usage: flutter precache [arguments]
+# -h, --help                              Print this usage information.
+# -a, --all-platforms                     Precache artifacts for all host platforms.
+# -f, --force                             Force re-downloading of artifacts.
+#     --[no-]android                      Precache artifacts for Android development.
+#     --[no-]android_gen_snapshot         Precache gen_snapshot for Android development.
+#     --[no-]android_maven                Precache Gradle dependencies for Android development.
+#     --[no-]android_internal_build       Precache dependencies for internal Android development.
+#     --[no-]ios                          Precache artifacts for iOS development.
+#     --[no-]web                          Precache artifacts for web development.
+#     --[no-]linux                        Precache artifacts for Linux desktop development.
+#     --[no-]windows                      Precache artifacts for Windows desktop development.
+#     --[no-]macos                        Precache artifacts for macOS desktop development.
+#     --[no-]fuchsia                      Precache artifacts for Fuchsia development.
+#     --[no-]universal                    Precache artifacts required for any development platform.
+#                                         (defaults to on)
+#     --[no-]flutter_runner               Precache the flutter runner artifacts.
+#     --[no-]use-unsigned-mac-binaries    Precache the unsigned macOS binaries when available.
+
+# Schema:
+# ${flutterVersion}.${targetPlatform}.${hostPlatform}
+#
+# aarch64-darwin as a host is not yet supported.
+# https://github.com/flutter/flutter/issues/60118
+{
+  "3.13.8" = {
+    android = {
+      x86_64-linux = "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=";
+      aarch64-linux = "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=";
+      x86_64-darwin = "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ=";
+    };
+    fuchsia = {
+      x86_64-linux = "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=";
+      aarch64-linux = "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=";
+      x86_64-darwin = "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=";
+    };
+    ios = {
+      x86_64-linux = "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=";
+      aarch64-linux = "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=";
+      x86_64-darwin = "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=";
+    };
+    linux = {
+      x86_64-linux = "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=";
+      aarch64-linux = "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M=";
+      x86_64-darwin = "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=";
+    };
+    macos = {
+      x86_64-linux = "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=";
+      aarch64-linux = "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=";
+      x86_64-darwin = "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=";
+    };
+    universal = {
+      x86_64-linux = "sha256-wATt1UPjo/fh7RFO1vvcUAdo0dMAaaOUIuzYodsM0v0=";
+      aarch64-linux = "sha256-Z9bszNaIpCccG7OfvE5WFsw36dITiyCQAZ6p29+Yq68=";
+      x86_64-darwin = "sha256-qN5bAXRfQ78TWF3FLBIxWzUB5y5OrZVQTEilY5J/+2k=";
+    };
+    web = {
+      x86_64-linux = "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=";
+      aarch64-linux = "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=";
+      x86_64-darwin = "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=";
+    };
+    windows = {
+      x86_64-linux = "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=";
+      aarch64-linux = "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=";
+      x86_64-darwin = "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/development/compilers/flutter/artifacts/overrides/linux.nix b/nixpkgs/pkgs/development/compilers/flutter/artifacts/overrides/linux.nix
new file mode 100644
index 000000000000..bc6114415b90
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/artifacts/overrides/linux.nix
@@ -0,0 +1,10 @@
+{ gtk3
+}:
+
+{ buildInputs ? [ ]
+, ...
+}:
+
+{
+  buildInputs = buildInputs ++ [ gtk3 ];
+}
diff --git a/nixpkgs/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix b/nixpkgs/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix
new file mode 100644
index 000000000000..9714d25c6f9b
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix
@@ -0,0 +1,26 @@
+{ lib
+, stdenv
+, callPackage
+, autoPatchelfHook
+, src
+}:
+
+(stdenv.mkDerivation {
+  inherit (src) name;
+  inherit src;
+
+  nativeBuildInputs = lib.optional stdenv.hostPlatform.isLinux autoPatchelfHook;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/bin"
+    cp -r . "$out/bin/cache"
+
+    runHook postInstall
+  '';
+}).overrideAttrs (
+  if builtins.pathExists ./overrides/${src.platform}.nix
+  then callPackage ./overrides/${src.platform}.nix { }
+  else ({ ... }: { })
+)
diff --git a/nixpkgs/pkgs/development/compilers/flutter/default.nix b/nixpkgs/pkgs/development/compilers/flutter/default.nix
index ff18036677a1..f9c0320edec8 100644
--- a/nixpkgs/pkgs/development/compilers/flutter/default.nix
+++ b/nixpkgs/pkgs/development/compilers/flutter/default.nix
@@ -1,14 +1,24 @@
-{ callPackage, fetchzip, dart, lib, stdenv }:
+{ callPackage, fetchzip, fetchFromGitHub, dart, lib, stdenv }:
 let
   mkCustomFlutter = args: callPackage ./flutter.nix args;
   wrapFlutter = flutter: callPackage ./wrapper.nix { inherit flutter; };
   getPatches = dir:
     let files = builtins.attrNames (builtins.readDir dir);
     in map (f: dir + ("/" + f)) files;
-  mkFlutter = { version, engineVersion, dartVersion, flutterHash, dartHash, patches }:
+  mkFlutter =
+    { version
+    , engineVersion
+    , dartVersion
+    , flutterHash
+    , dartHash
+    , patches
+    , pubspecLockFile
+    , vendorHash
+    , depsListFile
+    }:
     let
       args = {
-        inherit version engineVersion patches;
+        inherit version engineVersion patches pubspecLockFile vendorHash depsListFile;
 
         dart = dart.override {
           version = dartVersion;
@@ -31,24 +41,12 @@ let
             };
           };
         };
-        src = {
-          x86_64-linux = fetchzip {
-            url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz";
-            sha256 = flutterHash.x86_64-linux;
-          };
-          aarch64-linux = fetchzip {
-            url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz";
-            sha256 = flutterHash.aarch64-linux;
-          };
-          x86_64-darwin = fetchzip {
-            url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${version}-stable.zip";
-            sha256 = flutterHash.x86_64-darwin;
-          };
-          aarch64-darwin = fetchzip {
-            url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_${version}-stable.zip";
-            sha256 = flutterHash.aarch64-darwin;
-          };
-        }.${stdenv.hostPlatform.system};
+        src = fetchFromGitHub {
+          owner = "flutter";
+          repo = "flutter";
+          rev = version;
+          hash = flutterHash;
+        };
       };
     in
     (mkCustomFlutter args).overrideAttrs (prev: next: {
@@ -57,13 +55,7 @@ let
         buildFlutterApplication = callPackage ../../../build-support/flutter {
           # Package a minimal version of Flutter that only uses Linux desktop release artifacts.
           flutter = (wrapFlutter (mkCustomFlutter args)).override {
-            supportsAndroid = false;
-            includedEngineArtifacts = {
-              common = [ "flutter_patched_sdk_product" ];
-              platform.linux = lib.optionals stdenv.hostPlatform.isLinux
-                (lib.genAttrs ((lib.optional stdenv.hostPlatform.isx86_64 "x64") ++ (lib.optional stdenv.hostPlatform.isAarch64 "arm64"))
-                  (architecture: [ "release" ]));
-            };
+            supportedTargetPlatforms = [ "universal" "linux" ];
           };
         };
       };
@@ -83,12 +75,10 @@ in
       x86_64-darwin = "sha256-BchKowKd6BscVuk/dXibcQzdFkW9//GDfll77mHEI4M=";
       aarch64-darwin = "sha256-9yrx09vYrOTmdqkfJI7mfh7DI1/rg67tPlf82m5+iKI=";
     };
-    flutterHash = rec {
-      x86_64-linux = "sha256-ouI1gjcynSQfPTnfTVXQ4r/NEDdhmzUsKdcALLRiCbg=";
-      aarch64-linux = x86_64-linux;
-      x86_64-darwin = "sha256-k6KNazP/I71zG5mbx3iEtXBJ8EZi9Qq+7PgL/HAJrgE=";
-      aarch64-darwin = "sha256-Duvw8EqrGb3PmBHBH/prZjyij2xJd9sLkNfPRYpC0pQ=";
-    };
+    flutterHash = "sha256-00G030FvZZTsdf9ruFs9jdIHcC5h+xpp4NlmL64qVZA=";
     patches = flutter3Patches;
+    pubspecLockFile = ./lockfiles/stable/pubspec.lock;
+    vendorHash = "sha256-lsFOvvmhszBcFb9XvabpqfL2Ek4wjhmB0OrcWUOURFQ=";
+    depsListFile = ./lockfiles/stable/deps.json;
   };
 }
diff --git a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix b/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix
deleted file mode 100644
index 30c293c8d75d..000000000000
--- a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix
+++ /dev/null
@@ -1,243 +0,0 @@
-{ lib
-, stdenv
-, hostPlatform
-, engineVersion
-, fetchurl
-, fetchzip
-, autoPatchelfHook
-, gtk3
-, flutterVersion
-, unzip
-, stdenvNoCC
-}:
-
-let
-  hashes = (import ./hashes.nix).${engineVersion} or
-    (throw "There are no known artifact hashes for Flutter engine version ${engineVersion}.");
-  noticeText = stdenvNoCC.mkDerivation (finalAttrs: {
-    pname = "flutter-notice";
-    version = engineVersion;
-    dontUnpack = true;
-    src = fetchurl {
-      pname = "flutter-sky_engine-LICENSE";
-      version = engineVersion;
-      url = "https://raw.githubusercontent.com/flutter/engine/${engineVersion}/sky/packages/sky_engine/LICENSE";
-      sha256 = hashes.skyNotice;
-    };
-    flutterNotice = fetchurl {
-      pname = "flutter-LICENSE";
-      version = engineVersion;
-      url = "https://raw.githubusercontent.com/flutter/flutter/${flutterVersion}/LICENSE";
-      sha256 = hashes.flutterNotice;
-    };
-    installPhase =
-      ''
-        SRC_TEXT="$(cat $src)"
-        FLUTTER_NOTICE_TEXT="$(cat $flutterNotice)"
-        cat << EOF > $out
-        This artifact is from the Flutter SDK's engine.
-        This file carries third-party notices for its dependencies.
-        See also other files, that have LICENSE in the name, in the artifact directory.
-
-        Appendix 1/2: merged sky_engine LICENSE file (also found at ${finalAttrs.src.url})
-        $SRC_TEXT
-
-        Appendix 2/2: Flutter license (also found at ${finalAttrs.flutterNotice.url})
-        $FLUTTER_NOTICE_TEXT
-        EOF
-      '';
-  });
-  artifacts =
-    {
-      common = {
-        flutter_patched_sdk = { archive = "flutter_patched_sdk.zip"; };
-        flutter_patched_sdk_product = { archive = "flutter_patched_sdk_product.zip"; };
-      };
-      platform = {
-        android =
-          (lib.genAttrs
-            [ "arm" "arm64" "x64" ]
-            (arch:
-              {
-                base = [
-                  { archive = "artifacts.zip"; }
-                ];
-                variants = lib.genAttrs [ "profile" "release" ]
-                  (variant: [
-                    { archive = "artifacts.zip"; }
-                    { subdirectory = true; archive = "${lib.toLower hostPlatform.uname.system}-x64.zip"; }
-                  ]);
-              })) //
-          {
-            "x86" = {
-              base = [
-                { archive = "artifacts.zip"; }
-              ];
-              variants.jit-release = [
-                { archive = "artifacts.zip"; }
-              ];
-            };
-          };
-
-        darwin = {
-          "arm64" = {
-            base = [
-              { archive = "artifacts.zip"; }
-              { archive = "font-subset.zip"; }
-            ];
-            variants = lib.genAttrs [ "profile" "release" ]
-              (variant: [
-                { archive = "artifacts.zip"; }
-              ]);
-          };
-          "x64" = {
-            base = [
-              { archive = "FlutterEmbedder.framework.zip"; }
-              { archive = "FlutterMacOS.framework.zip"; }
-              { archive = "artifacts.zip"; }
-              { archive = "font-subset.zip"; }
-              { archive = "gen_snapshot.zip"; }
-            ];
-            variants.profile = [
-              { archive = "FlutterMacOS.framework.zip"; }
-              { archive = "artifacts.zip"; }
-              { archive = "gen_snapshot.zip"; }
-            ];
-            variants.release = [
-              { archive = "FlutterMacOS.dSYM.zip"; }
-              { archive = "FlutterMacOS.framework.zip"; }
-              { archive = "artifacts.zip"; }
-              { archive = "gen_snapshot.zip"; }
-            ];
-          };
-        };
-
-        ios =
-          (lib.genAttrs
-            [ "" ]
-            (arch:
-              {
-                base = [
-                  { archive = "artifacts.zip"; }
-                ];
-                variants.profile = [
-                  { archive = "artifacts.zip"; }
-                ];
-                variants.release = [
-                  { archive = "artifacts.zip"; }
-                  { archive = "Flutter.dSYM.zip"; }
-                ];
-              }));
-
-        linux = lib.genAttrs
-          [ "arm64" "x64" ]
-          (arch:
-            let
-              linux-flutter-gtk = {
-                archive = "linux-${arch}-flutter-gtk.zip";
-                buildInputs = [ gtk3 ];
-              };
-            in
-            {
-              base = [
-                ({ archive = "artifacts.zip"; } // lib.optionalAttrs (arch == "arm64") {
-                  # For some reason, the arm64 artifacts are missing shader code in Flutter < 3.10.0.
-                  postPatch = ''
-                    if [ ! -d shader_lib ]; then
-                      ln -s ${lib.findSingle
-                        (pkg: lib.getName pkg == "flutter-artifact-linux-x64-artifacts")
-                        (throw "Could not find the x64 artifact archive.")
-                        (throw "Could not find the correct x64 artifact archive.")
-                        artifactDerivations.platform.linux.x64.base
-                      }/shader_lib .
-                    fi
-                  '';
-                })
-                { archive = "font-subset.zip"; }
-                (linux-flutter-gtk // {
-                  # https://github.com/flutter/flutter/commit/9d94a51b607600a39c14470c35c676eb3e30eed6
-                  variant = "debug";
-                })
-              ];
-              variants = lib.genAttrs [ "debug" "profile" "release" ] (variant: [
-                linux-flutter-gtk
-              ]);
-            });
-      };
-    };
-
-  mkArtifactDerivation = { platform ? null, variant ? null, subdirectory ? null, archive, ... }@args:
-    let
-      artifactDirectory = if platform == null then null else "${platform}${lib.optionalString (variant != null) "-${variant}"}";
-      archiveBasename = lib.removeSuffix ".${(lib.last (lib.splitString "." archive))}" archive;
-      overrideUnpackCmd = builtins.elem archive [ "FlutterEmbedder.framework.zip" "FlutterMacOS.framework.zip" ];
-    in
-    stdenv.mkDerivation ({
-      pname = "flutter-artifact${lib.optionalString (platform != null) "-${artifactDirectory}"}-${archiveBasename}";
-      version = engineVersion;
-
-      nativeBuildInputs = [ unzip ]
-        ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
-
-      src =
-        if overrideUnpackCmd then
-          (fetchurl {
-            url = "https://storage.googleapis.com/flutter_infra_release/flutter/${engineVersion}${lib.optionalString (platform != null) "/${artifactDirectory}"}/${archive}";
-            hash = (if artifactDirectory == null then hashes else hashes.${artifactDirectory}).${archive};
-          }) else
-          (fetchzip {
-            url = "https://storage.googleapis.com/flutter_infra_release/flutter/${engineVersion}${lib.optionalString (platform != null) "/${artifactDirectory}"}/${archive}";
-            stripRoot = false;
-            hash = (if artifactDirectory == null then hashes else hashes.${artifactDirectory}).${archive};
-          });
-
-      sourceRoot = if overrideUnpackCmd then "." else null;
-      unpackCmd = if overrideUnpackCmd then "unzip -o $src -d $out" else null;
-
-      installPhase =
-        let
-          destination = "$out/${if subdirectory == true then archiveBasename else if subdirectory != null then subdirectory else "."}";
-        in
-        ''
-          # ship the notice near all artifacts. if the artifact directory is / multiple directories are nested in $src, link it there. If there isn't a directory, link it in root
-          # this *isn't the same as the subdirectory variable above*
-          DIR_CNT="$(echo */ | wc -w)"
-          if [[ "$DIR_CNT" == 0 ]]; then
-            ln -s ${noticeText} LICENSE.README
-          else
-            for dir in */
-            do
-              ln -s ${noticeText} "$dir/LICENSE.README"
-            done
-          fi
-          mkdir -p "${destination}"
-          cp -r . "${destination}"
-        '';
-    } // args);
-
-  artifactDerivations = {
-    common = builtins.mapAttrs (name: mkArtifactDerivation) artifacts.common;
-    platform =
-      builtins.mapAttrs
-        (os: architectures:
-          builtins.mapAttrs
-            (architecture: variants: {
-              base = map
-                (args: mkArtifactDerivation ({
-                  platform = "${os}${lib.optionalString (architecture != "") "-${architecture}"}";
-                } // args))
-                variants.base;
-              variants = builtins.mapAttrs
-                (variant: variantArtifacts: map
-                  (args: mkArtifactDerivation ({
-                    platform = "${os}${lib.optionalString (architecture != "") "-${architecture}"}";
-                    inherit variant;
-                  } // args))
-                  variantArtifacts)
-                variants.variants;
-            })
-            architectures)
-        artifacts.platform;
-  };
-in
-artifactDerivations
diff --git a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix b/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix
deleted file mode 100644
index 7bfb60d7a9ac..000000000000
--- a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix
+++ /dev/null
@@ -1,118 +0,0 @@
-{
-  "767d8c75e898091b925519803830fc2721658d07" = {
-    skyNotice = "sha256-bJMktK26wC9fVzdhLNcTHqOg5sHRZ535LB5u5dgwjlY=";
-    flutterNotice = "sha256-pZjblLYpD/vhC17PkRBXtqlDNRxyf92p5fKJHWhwCiA=";
-    android-arm = {
-      "artifacts.zip" = "sha256-pnUDY2sUN2r/LrivyNkfTUpQC90GKOI6Ya+0lgIz+c0=";
-    };
-    android-arm-profile = {
-      "artifacts.zip" = "sha256-/kDNI+no4u2Ri/FqqsQEp2iEqifULYGqzz8w0G4pzCM=";
-      "linux-x64.zip" = "sha256-fUfaDJIo1VcdJHcd0jO98Az3OdNQ+JtA5Mp6nQVVU4E=";
-      "darwin-x64.zip" = "sha256-J7vDD5VEsgnWmbI8acM3vQwrnrqcfMaCijiItDfniLY=";
-    };
-    android-arm-release = {
-      "artifacts.zip" = "sha256-tVAFHHG8A8vlgQu6l6ybdfm6OmBf2vrYf3PZByWvs08=";
-      "linux-x64.zip" = "sha256-lrejG7zpUBox9kPvs1uPM/lyR1d/SAc1w+c6kcqghHI=";
-      "darwin-x64.zip" = "sha256-8lKOsqLgbnuoCR87v84dn8V3PRzl1+maWFIHopiGvbc=";
-    };
-    android-arm64 = {
-      "artifacts.zip" = "sha256-rcU2mX0nP1ot+6DU+uxvILUOAuwTPGH23UQ6riBs0d4=";
-    };
-    android-arm64-profile = {
-      "artifacts.zip" = "sha256-x4TEJWi3c6mEPGh+3l4PtRqsg4Tq7mxHtGz+4MqwzPw=";
-      "linux-x64.zip" = "sha256-PsDKOq3DXaNeNtaFtDQJ9JIEESXBHm8XHHpOw2u1cGg=";
-      "darwin-x64.zip" = "sha256-K4W1CEBOlZVsHjuhvKCUZWv45VSohRd23vviaLqMNjQ=";
-    };
-    android-arm64-release = {
-      "artifacts.zip" = "sha256-w+J4sNhYoj44IiHpZ0BkemCYlE9wOTvWL57Y8RCstkI=";
-      "linux-x64.zip" = "sha256-MJsmck27V14/f0IAT6b/R47p8/eCMX9Nn//PEAbEeOY=";
-      "darwin-x64.zip" = "sha256-xXa5GFatJPiwBANqeWUpAdM9gibD4xH85aI6YpJrcpI=";
-    };
-    android-x64 = {
-      "artifacts.zip" = "sha256-doNUwEJkwncHPIf2c8xOZByUU8dmogtWlc6q7n7ElDY=";
-    };
-    android-x64-profile = {
-      "artifacts.zip" = "sha256-N3AjdHdzj4s6v3f3Gf6n/1Xk0W7xFQP70SneCNlj2sk=";
-      "linux-x64.zip" = "sha256-pNn75iZqLwOGO3ZmymmrSasDPMmDWwp9ZWBv9Xti4cU=";
-      "darwin-x64.zip" = "sha256-6O4lA/4wZ91ODUUYHe4HpjvraAEbhHiehBmf3sT37Dc=";
-    };
-    android-x64-release = {
-      "artifacts.zip" = "sha256-odDS/m8fgSA24EYt+W2sEDmOlPO17FZxxomWuYUHmns=";
-      "linux-x64.zip" = "sha256-sVQYmu0KaPADlL59XZc26Ks+TbmaJxRGPiJKlWxUhRA=";
-      "darwin-x64.zip" = "sha256-dep/CmBIDkvqYKQPWMCDTDbFhVvOk6N7JAF8v3dr/P8=";
-    };
-    android-x86 = {
-      "artifacts.zip" = "sha256-MzTFQ0XPtd9OXvKfM98bwpxN/xfEcXox24gn/4aS/Do=";
-    };
-    android-x86-jit-release = {
-      "artifacts.zip" = "sha256-cUsBqJxOOluwnYEFzdtZof8c4Vp1D81HkEEH8aRGLyY=";
-    };
-    darwin-arm64 = {
-      "artifacts.zip" = "sha256-df+rmN0RqLM7MgEKjTcybMY0bFYCB1jsTvaVE1J0BzY=";
-      "font-subset.zip" = "sha256-hJ5fECxN4oZX6E9ivzSDGejNSj56t2SKccbyfozXxps=";
-    };
-    darwin-arm64-profile = {
-      "artifacts.zip" = "sha256-EaXOr998zE4cG5G5FRtsDGt3jjg1GjkRGE/ZDD3Coto=";
-    };
-    darwin-arm64-release = {
-      "artifacts.zip" = "sha256-1XMoM8jDRoUSPMauKD5lsgC25B7Htod8wYouDKSEGJY=";
-    };
-    darwin-x64 = {
-      "FlutterEmbedder.framework.zip" = "sha256-vzvt0pwo1HbIxxym/jn2Y+1+Iqm/Gw2TfymEcuUHIXQ=";
-      "FlutterMacOS.framework.zip" = "sha256-cMTCULaVOKDq8VrqCmZLo0IPBve0GSh0K2yvtdCvX8c=";
-      "artifacts.zip" = "sha256-8BViZUz4b0XurQJM+FCU2toONKmhajabCc66gBUVGgY=";
-      "font-subset.zip" = "sha256-VgqNdUmvTbSedQtJNT+Eq90GWS4hXCDCBDBjno6s1dk=";
-      "gen_snapshot.zip" = "sha256-4O0ZfKt96x8/Jwh8DgBoPFiv84Tqf9tR/f0PVRJlJiQ=";
-    };
-    darwin-x64-profile = {
-      "FlutterMacOS.framework.zip" = "sha256-IrXK0Mjllic3OKaYKKpAE9gPIceTO32hGqgxGR66QmY=";
-      "artifacts.zip" = "sha256-IHllbxwRMrEWA1MI0DRCYYRzYAdQIL8B9b5rZHsOvjc=";
-      "gen_snapshot.zip" = "sha256-bPI6pHrWQR1X7CzytbJA90TYe3cg1yN+9v7JtsCCrbQ=";
-    };
-    darwin-x64-release = {
-      "FlutterMacOS.dSYM.zip" = "sha256-HjU8sLPwvOwO3LP7krpZZW6/t3sN3rX2frFnBp1Kk0I=";
-      "FlutterMacOS.framework.zip" = "sha256-GuTWojZFdSEeOiSYxH8XGSWsxcrkUpnXA61B0NpDa5A=";
-      "artifacts.zip" = "sha256-tQCm1HHrhffNz9a0lNIHXLBqFMbT4QiaibKvRKuuhJ4=";
-      "gen_snapshot.zip" = "sha256-0na+yx0Nxe/FuHVZqhgbRniZLInShoKE3USaJg0829o=";
-    };
-    "flutter_patched_sdk.zip" = "sha256-AVjXLND3nJAaGyBAhytBRUvbkJtwZEcndQSrq+D2c08=";
-    "flutter_patched_sdk_product.zip" = "sha256-31qgieDI897sXtEf8ok2SdFgrlN57bwhT3FUfdofZi0=";
-    ios = {
-      "artifacts.zip" = "sha256-RicBTTBX5aIQwfcolDrKe0MVG9uTp56RYMWgR75AVEw=";
-    };
-    ios-profile = {
-      "artifacts.zip" = "sha256-6EXHvy36K+rRGpjt0GL/DyuOhpAGeaOrZAZvPZuLyys=";
-    };
-    ios-release = {
-      "Flutter.dSYM.zip" = "sha256-zYqlX4QhxnDb9LasMcBcPO/+30LCfVbwC+z+wZiiEqk=";
-      "artifacts.zip" = "sha256-DVpynf2LxU6CPC1BPQbi8OStcIwJKX55rDSWNiJ4KNk=";
-    };
-    linux-arm64 = {
-      "artifacts.zip" = "sha256-djesma+IqQZgGlxQj4Gv6hAkQhQKQp7Gsa1I4hksqNc=";
-      "font-subset.zip" = "sha256-Wo11dks0uhLI2nu+9QJ7aLmvfsPcuqvcmquak4qv5XM=";
-    };
-    linux-arm64-debug = {
-      "linux-arm64-flutter-gtk.zip" = "sha256-6T2Ycxe3GTVnFGfBFfXLZwPklIndQ6hojnCSnMeXJso=";
-    };
-    linux-arm64-profile = {
-      "linux-arm64-flutter-gtk.zip" = "sha256-ycInFHuRu7r+50GsoFR4v/rIRiAQaQ9zFemd2d9AnpQ=";
-    };
-    linux-arm64-release = {
-      "linux-arm64-flutter-gtk.zip" = "sha256-J60MU8pHDVL9DyX5A3YdCRkKXnTgvALhHiEzYiPSSuA=";
-    };
-    linux-x64 = {
-      "artifacts.zip" = "sha256-ZUMRJ0dzaeRQUYy5S7gDLWa3w9CVhNPORN9l+lwxAMs=";
-      "font-subset.zip" = "sha256-pmtHAgIj5tXzUsDrrxB5JwfLDNzMCqouUCOyYN5BOEQ=";
-    };
-    linux-x64-debug = {
-      "linux-x64-flutter-gtk.zip" = "sha256-otmghZAiUlpLYfFaWd18UWlfctKcYsMRBMP78ZyBj/E=";
-    };
-    linux-x64-profile = {
-      "linux-x64-flutter-gtk.zip" = "sha256-bT6xMYlwTB9JOV1790cJqTSEXYstdI4sZCQzFzcpa5s=";
-    };
-    linux-x64-release = {
-      "linux-x64-flutter-gtk.zip" = "sha256-E8Eogr0nD7yaxjuoNhpvF4tTx9N53y3iOkI71Eqx5Ko=";
-    };
-  };
-}
-
diff --git a/nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix b/nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix
new file mode 100644
index 000000000000..0aedd174e2ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix
@@ -0,0 +1,51 @@
+{ hostPlatform
+, buildDartApplication
+, git
+, which
+, dart
+, version
+, flutterSrc
+, patches ? [ ]
+, pubspecLockFile
+, vendorHash
+, depsListFile
+}:
+
+buildDartApplication.override { inherit dart; } rec {
+  pname = "flutter-tools";
+  inherit version;
+  dartOutputType = "jit-snapshot";
+
+  src = flutterSrc;
+  sourceRoot = "source/packages/flutter_tools";
+  postUnpack = ''chmod -R u+w "$NIX_BUILD_TOP/source"'';
+
+  inherit patches;
+  # The given patches are made for the entire SDK source tree.
+  prePatch = ''pushd "$NIX_BUILD_TOP/source"'';
+  postPatch = ''popd'';
+
+  # When the JIT snapshot is being built, the application needs to run.
+  # It attempts to generate configuration files, and relies on a few external
+  # tools.
+  nativeBuildInputs = [ git which ];
+  preConfigure = ''
+    export HOME=.
+    export FLUTTER_ROOT="$NIX_BUILD_TOP/source"
+    mkdir -p "$FLUTTER_ROOT/bin/cache"
+    ln -s '${dart}' "$FLUTTER_ROOT/bin/cache/dart-sdk"
+  '';
+
+  dartEntryPoints."flutter_tools.snapshot" = "bin/flutter_tools.dart";
+  dartCompileFlags = [ "--define=NIX_FLUTTER_HOST_PLATFORM=${hostPlatform.system}" ];
+
+  # The Dart wrapper launchers are useless for the Flutter tool - it is designed
+  # to be launched from a snapshot by the SDK.
+  postInstall = ''
+    pushd "$out"
+    rm ${builtins.concatStringsSep " " (builtins.attrNames dartEntryPoints)}
+    popd
+  '';
+
+  inherit pubspecLockFile vendorHash depsListFile;
+}
diff --git a/nixpkgs/pkgs/development/compilers/flutter/flutter.nix b/nixpkgs/pkgs/development/compilers/flutter/flutter.nix
index da45fee420d0..69efe678dc5a 100644
--- a/nixpkgs/pkgs/development/compilers/flutter/flutter.nix
+++ b/nixpkgs/pkgs/development/compilers/flutter/flutter.nix
@@ -3,23 +3,33 @@
 , patches
 , dart
 , src
+, pubspecLockFile
+, vendorHash
+, depsListFile
 , lib
 , stdenv
+, callPackage
+, makeWrapper
 , darwin
 , git
 , which
 }:
 
 let
+  tools = callPackage ./flutter-tools.nix {
+    inherit dart version;
+    flutterSrc = src;
+    inherit patches;
+    inherit pubspecLockFile vendorHash depsListFile;
+  };
+
   unwrapped =
     stdenv.mkDerivation {
       name = "flutter-${version}-unwrapped";
       inherit src patches version;
 
-      outputs = [ "out" "cache" ];
-
       buildInputs = [ git ];
-      nativeBuildInputs = [ ]
+      nativeBuildInputs = [ makeWrapper ]
         ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ];
 
       preConfigure = ''
@@ -34,46 +44,31 @@ let
       '';
 
       buildPhase = ''
-        export FLUTTER_ROOT="$(pwd)"
-        export FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools"
-        export SCRIPT_PATH="$FLUTTER_TOOLS_DIR/bin/flutter_tools.dart"
-
-        export SNAPSHOT_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.snapshot"
-        export STAMP_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.stamp"
-
-        export DART_SDK_PATH="${dart}"
-
-        # The Flutter tool compilation requires dependencies to be cached, as there is no Internet access.
-        # Dart expects package caches to be mutable, and does not support composing cache directories.
-        # The packages cached during the build therefore cannot be easily used. They are provided through
-        # the derivation's "cache" output, though, in case they are needed.
-        #
-        # Note that non-cached packages will normally be fetched from the Internet when they are needed, so Flutter
-        # will function without an existing package cache as long as it has an Internet connection.
-        export PUB_CACHE="$cache"
-
-        if [ -d .pub-preload-cache ]; then
-          ${dart}/bin/dart pub cache preload .pub-preload-cache/*
-        elif [ -d .pub-cache ]; then
-          mv .pub-cache "$PUB_CACHE"
-        else
-          echo 'ERROR: Failed to locate the Dart package cache required to build the Flutter tool.'
-          exit 1
-        fi
+        # The flutter_tools package tries to run many Git commands. In most
+        # cases, unexpected output is handled gracefully, but commands are never
+        # expected to fail completely. A blank repository needs to be created.
+        rm -rf .git # Remove any existing Git directory
+        git init -b nixpkgs
+        GIT_AUTHOR_NAME=Nixpkgs GIT_COMMITTER_NAME=Nixpkgs \
+        GIT_AUTHOR_EMAIL= GIT_COMMITTER_EMAIL= \
+        GIT_AUTHOR_DATE='1/1/1970 00:00:00 +0000' GIT_COMMITTER_DATE='1/1/1970 00:00:00 +0000' \
+          git commit --allow-empty -m "Initial commit"
+        (. '${../../../build-support/fetchgit/deterministic-git}'; make_deterministic_repo .)
+
+        mkdir -p bin/cache
+
+        # Add a flutter_tools artifact stamp, and build a snapshot.
+        # This is the Flutter CLI application.
+        echo "$(git rev-parse HEAD)" > bin/cache/flutter_tools.stamp
+        ln -s '${tools}/share/flutter_tools.snapshot' bin/cache/flutter_tools.snapshot
+
+        # Some of flutter_tools's dependencies contain static assets. The
+        # application attempts to read its own package_config.json to find these
+        # assets at runtime.
+        mkdir -p packages/flutter_tools/.dart_tool
+        ln -s '${tools.dartDeps.packageConfig}' packages/flutter_tools/.dart_tool/package_config.json
 
-        pushd "$FLUTTER_TOOLS_DIR"
-        ${dart}/bin/dart pub get --offline
-        popd
-
-        local revision="$(cd "$FLUTTER_ROOT"; git rev-parse HEAD)"
-        ${dart}/bin/dart --snapshot="$SNAPSHOT_PATH" --packages="$FLUTTER_TOOLS_DIR/.dart_tool/package_config.json" "$SCRIPT_PATH"
-        echo "$revision" > "$STAMP_PATH"
         echo -n "${version}" > version
-
-        # Certain prebuilts should be replaced with Nix-built (or at least Nix-patched) equivalents.
-        rm -r \
-          $FLUTTER_ROOT/bin/cache/dart-sdk \
-          $FLUTTER_ROOT/bin/cache/artifacts/engine
       '';
 
       installPhase = ''
@@ -81,8 +76,19 @@ let
 
         mkdir -p $out
         cp -r . $out
+        rm -rf $out/bin/cache/dart-sdk
         ln -sf ${dart} $out/bin/cache/dart-sdk
 
+        # The regular launchers are designed to download/build/update SDK
+        # components, and are not very useful in Nix.
+        # Replace them with simple links and wrappers.
+        rm "$out/bin"/{dart,flutter}
+        ln -s "$out/bin/cache/dart-sdk/bin/dart" "$out/bin/dart"
+        makeShellWrapper "$out/bin/dart" "$out/bin/flutter" \
+          --set-default FLUTTER_ROOT "$out" \
+          --set FLUTTER_ALREADY_LOCKED true \
+          --add-flags "--disable-dart-dev \$NIX_FLUTTER_TOOLS_VM_OPTIONS $out/bin/cache/flutter_tools.snapshot"
+
         runHook postInstall
       '';
 
@@ -95,13 +101,13 @@ let
         export HOME="$(mktemp -d)"
         $out/bin/flutter config --android-studio-dir $HOME
         $out/bin/flutter config --android-sdk $HOME
-        $out/bin/flutter --version | fgrep -q '${version}'
+        $out/bin/flutter --version | fgrep -q '${builtins.substring 0 10 engineVersion}'
 
         runHook postInstallCheck
       '';
 
       passthru = {
-        inherit dart engineVersion;
+        inherit dart engineVersion tools;
         # The derivation containing the original Flutter SDK files.
         # When other derivations wrap this one, any unmodified files
         # found here should be included as-is, for tooling compatibility.
@@ -116,7 +122,7 @@ let
         '';
         homepage = "https://flutter.dev";
         license = licenses.bsd3;
-        platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+        platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
         maintainers = with maintainers; [ babariviere ericdallo FlafyDev hacker1024 ];
       };
     };
diff --git a/nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/deps.json b/nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/deps.json
new file mode 100644
index 000000000000..30924f7d513b
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/deps.json
@@ -0,0 +1,1020 @@
+[
+  {
+    "name": "flutter_tools",
+    "version": "0.0.0",
+    "kind": "root",
+    "source": "root",
+    "dependencies": [
+      "archive",
+      "args",
+      "browser_launcher",
+      "dds",
+      "dwds",
+      "completion",
+      "coverage",
+      "crypto",
+      "file",
+      "flutter_template_images",
+      "html",
+      "http",
+      "intl",
+      "meta",
+      "multicast_dns",
+      "mustache_template",
+      "package_config",
+      "process",
+      "fake_async",
+      "stack_trace",
+      "usage",
+      "webdriver",
+      "webkit_inspection_protocol",
+      "xml",
+      "yaml",
+      "native_stack_traces",
+      "shelf",
+      "vm_snapshot_analysis",
+      "uuid",
+      "web_socket_channel",
+      "stream_channel",
+      "shelf_web_socket",
+      "shelf_static",
+      "pub_semver",
+      "pool",
+      "path",
+      "mime",
+      "logging",
+      "http_multi_server",
+      "convert",
+      "async",
+      "unified_analytics",
+      "test_api",
+      "test_core",
+      "vm_service",
+      "standard_message_codec",
+      "_fe_analyzer_shared",
+      "analyzer",
+      "boolean_selector",
+      "built_collection",
+      "built_value",
+      "clock",
+      "csslib",
+      "dap",
+      "dds_service_extensions",
+      "devtools_shared",
+      "fixnum",
+      "frontend_server_client",
+      "glob",
+      "http_parser",
+      "io",
+      "js",
+      "json_rpc_2",
+      "matcher",
+      "petitparser",
+      "platform",
+      "shelf_packages_handler",
+      "shelf_proxy",
+      "source_map_stack_trace",
+      "source_maps",
+      "source_span",
+      "sse",
+      "string_scanner",
+      "sync_http",
+      "term_glyph",
+      "typed_data",
+      "watcher",
+      "collection",
+      "file_testing",
+      "pubspec_parse",
+      "checked_yaml",
+      "json_annotation",
+      "node_preamble",
+      "test"
+    ]
+  },
+  {
+    "name": "test",
+    "version": "1.24.3",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": [
+      "analyzer",
+      "async",
+      "boolean_selector",
+      "collection",
+      "coverage",
+      "http_multi_server",
+      "io",
+      "js",
+      "node_preamble",
+      "package_config",
+      "path",
+      "pool",
+      "shelf",
+      "shelf_packages_handler",
+      "shelf_static",
+      "shelf_web_socket",
+      "source_span",
+      "stack_trace",
+      "stream_channel",
+      "typed_data",
+      "web_socket_channel",
+      "webkit_inspection_protocol",
+      "yaml",
+      "test_api",
+      "test_core",
+      "matcher"
+    ]
+  },
+  {
+    "name": "matcher",
+    "version": "0.12.16",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "meta",
+      "stack_trace",
+      "term_glyph",
+      "test_api"
+    ]
+  },
+  {
+    "name": "test_api",
+    "version": "0.6.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "boolean_selector",
+      "collection",
+      "meta",
+      "source_span",
+      "stack_trace",
+      "stream_channel",
+      "string_scanner",
+      "term_glyph"
+    ]
+  },
+  {
+    "name": "term_glyph",
+    "version": "1.2.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "string_scanner",
+    "version": "1.2.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "source_span"
+    ]
+  },
+  {
+    "name": "source_span",
+    "version": "1.10.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection",
+      "path",
+      "term_glyph"
+    ]
+  },
+  {
+    "name": "path",
+    "version": "1.8.3",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "collection",
+    "version": "1.17.2",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "stream_channel",
+    "version": "2.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async"
+    ]
+  },
+  {
+    "name": "async",
+    "version": "2.11.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection",
+      "meta"
+    ]
+  },
+  {
+    "name": "meta",
+    "version": "1.9.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "stack_trace",
+    "version": "1.11.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "path"
+    ]
+  },
+  {
+    "name": "boolean_selector",
+    "version": "2.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "source_span",
+      "string_scanner"
+    ]
+  },
+  {
+    "name": "test_core",
+    "version": "0.5.3",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "analyzer",
+      "async",
+      "args",
+      "boolean_selector",
+      "collection",
+      "coverage",
+      "frontend_server_client",
+      "glob",
+      "io",
+      "meta",
+      "package_config",
+      "path",
+      "pool",
+      "source_map_stack_trace",
+      "source_maps",
+      "source_span",
+      "stack_trace",
+      "stream_channel",
+      "vm_service",
+      "yaml",
+      "test_api"
+    ]
+  },
+  {
+    "name": "yaml",
+    "version": "3.1.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection",
+      "source_span",
+      "string_scanner"
+    ]
+  },
+  {
+    "name": "vm_service",
+    "version": "11.7.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "source_maps",
+    "version": "0.10.12",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "source_span"
+    ]
+  },
+  {
+    "name": "source_map_stack_trace",
+    "version": "2.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "path",
+      "source_maps",
+      "stack_trace"
+    ]
+  },
+  {
+    "name": "pool",
+    "version": "1.5.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "stack_trace"
+    ]
+  },
+  {
+    "name": "package_config",
+    "version": "2.1.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "path"
+    ]
+  },
+  {
+    "name": "io",
+    "version": "1.0.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta",
+      "path",
+      "string_scanner"
+    ]
+  },
+  {
+    "name": "glob",
+    "version": "2.1.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "collection",
+      "file",
+      "path",
+      "string_scanner"
+    ]
+  },
+  {
+    "name": "file",
+    "version": "6.1.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta",
+      "path"
+    ]
+  },
+  {
+    "name": "frontend_server_client",
+    "version": "3.2.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "path"
+    ]
+  },
+  {
+    "name": "coverage",
+    "version": "1.6.3",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "args",
+      "logging",
+      "package_config",
+      "path",
+      "source_maps",
+      "stack_trace",
+      "vm_service"
+    ]
+  },
+  {
+    "name": "logging",
+    "version": "1.2.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "args",
+    "version": "2.4.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "analyzer",
+    "version": "5.13.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "_fe_analyzer_shared",
+      "collection",
+      "convert",
+      "crypto",
+      "glob",
+      "meta",
+      "package_config",
+      "path",
+      "pub_semver",
+      "source_span",
+      "watcher",
+      "yaml"
+    ]
+  },
+  {
+    "name": "watcher",
+    "version": "1.1.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "path"
+    ]
+  },
+  {
+    "name": "pub_semver",
+    "version": "2.1.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection",
+      "meta"
+    ]
+  },
+  {
+    "name": "crypto",
+    "version": "3.0.3",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "typed_data"
+    ]
+  },
+  {
+    "name": "typed_data",
+    "version": "1.3.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection"
+    ]
+  },
+  {
+    "name": "convert",
+    "version": "3.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "typed_data"
+    ]
+  },
+  {
+    "name": "_fe_analyzer_shared",
+    "version": "61.0.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta"
+    ]
+  },
+  {
+    "name": "webkit_inspection_protocol",
+    "version": "1.2.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "logging"
+    ]
+  },
+  {
+    "name": "web_socket_channel",
+    "version": "2.4.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "crypto",
+      "stream_channel"
+    ]
+  },
+  {
+    "name": "shelf_web_socket",
+    "version": "1.0.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "shelf",
+      "stream_channel",
+      "web_socket_channel"
+    ]
+  },
+  {
+    "name": "shelf",
+    "version": "1.4.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "collection",
+      "http_parser",
+      "path",
+      "stack_trace",
+      "stream_channel"
+    ]
+  },
+  {
+    "name": "http_parser",
+    "version": "4.0.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection",
+      "source_span",
+      "string_scanner",
+      "typed_data"
+    ]
+  },
+  {
+    "name": "shelf_static",
+    "version": "1.1.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "convert",
+      "http_parser",
+      "mime",
+      "path",
+      "shelf"
+    ]
+  },
+  {
+    "name": "mime",
+    "version": "1.0.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "shelf_packages_handler",
+    "version": "3.0.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "path",
+      "shelf",
+      "shelf_static"
+    ]
+  },
+  {
+    "name": "node_preamble",
+    "version": "2.0.2",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "js",
+    "version": "0.6.7",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta"
+    ]
+  },
+  {
+    "name": "http_multi_server",
+    "version": "3.2.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async"
+    ]
+  },
+  {
+    "name": "json_annotation",
+    "version": "4.8.1",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": [
+      "meta"
+    ]
+  },
+  {
+    "name": "checked_yaml",
+    "version": "2.0.3",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": [
+      "json_annotation",
+      "source_span",
+      "yaml"
+    ]
+  },
+  {
+    "name": "pubspec_parse",
+    "version": "1.2.3",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": [
+      "checked_yaml",
+      "collection",
+      "json_annotation",
+      "pub_semver",
+      "yaml"
+    ]
+  },
+  {
+    "name": "file_testing",
+    "version": "3.0.0",
+    "kind": "dev",
+    "source": "hosted",
+    "dependencies": [
+      "test"
+    ]
+  },
+  {
+    "name": "sync_http",
+    "version": "0.3.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "sse",
+    "version": "4.1.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "collection",
+      "js",
+      "logging",
+      "pool",
+      "shelf",
+      "stream_channel"
+    ]
+  },
+  {
+    "name": "shelf_proxy",
+    "version": "1.0.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "http",
+      "path",
+      "shelf"
+    ]
+  },
+  {
+    "name": "http",
+    "version": "0.13.6",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "http_parser",
+      "meta"
+    ]
+  },
+  {
+    "name": "platform",
+    "version": "3.1.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "petitparser",
+    "version": "5.4.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta"
+    ]
+  },
+  {
+    "name": "json_rpc_2",
+    "version": "3.0.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "stack_trace",
+      "stream_channel"
+    ]
+  },
+  {
+    "name": "fixnum",
+    "version": "1.1.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "devtools_shared",
+    "version": "2.24.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "path",
+      "shelf",
+      "usage",
+      "vm_service",
+      "webkit_inspection_protocol"
+    ]
+  },
+  {
+    "name": "usage",
+    "version": "4.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta",
+      "path"
+    ]
+  },
+  {
+    "name": "dds_service_extensions",
+    "version": "1.5.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "dap",
+      "vm_service"
+    ]
+  },
+  {
+    "name": "dap",
+    "version": "1.0.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "csslib",
+    "version": "1.0.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "source_span"
+    ]
+  },
+  {
+    "name": "clock",
+    "version": "1.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "built_value",
+    "version": "8.6.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "built_collection",
+      "collection",
+      "fixnum",
+      "meta"
+    ]
+  },
+  {
+    "name": "built_collection",
+    "version": "5.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "standard_message_codec",
+    "version": "0.0.1+3",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "unified_analytics",
+    "version": "2.0.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "clock",
+      "file",
+      "http",
+      "intl",
+      "meta",
+      "path"
+    ]
+  },
+  {
+    "name": "intl",
+    "version": "0.18.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "clock",
+      "meta",
+      "path"
+    ]
+  },
+  {
+    "name": "uuid",
+    "version": "3.0.7",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "crypto"
+    ]
+  },
+  {
+    "name": "vm_snapshot_analysis",
+    "version": "0.7.6",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "args",
+      "collection",
+      "path"
+    ]
+  },
+  {
+    "name": "native_stack_traces",
+    "version": "0.5.6",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "args",
+      "path"
+    ]
+  },
+  {
+    "name": "xml",
+    "version": "6.3.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "collection",
+      "meta",
+      "petitparser"
+    ]
+  },
+  {
+    "name": "webdriver",
+    "version": "3.0.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "matcher",
+      "path",
+      "stack_trace",
+      "sync_http"
+    ]
+  },
+  {
+    "name": "fake_async",
+    "version": "1.3.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "clock",
+      "collection"
+    ]
+  },
+  {
+    "name": "process",
+    "version": "4.2.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "file",
+      "path",
+      "platform"
+    ]
+  },
+  {
+    "name": "mustache_template",
+    "version": "2.0.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "multicast_dns",
+    "version": "0.3.2+3",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "meta"
+    ]
+  },
+  {
+    "name": "html",
+    "version": "0.15.4",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "csslib",
+      "source_span"
+    ]
+  },
+  {
+    "name": "flutter_template_images",
+    "version": "4.2.0",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": []
+  },
+  {
+    "name": "completion",
+    "version": "1.0.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "args",
+      "logging",
+      "path"
+    ]
+  },
+  {
+    "name": "dwds",
+    "version": "19.0.1+1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "async",
+      "built_collection",
+      "built_value",
+      "collection",
+      "crypto",
+      "dds",
+      "file",
+      "http",
+      "http_multi_server",
+      "logging",
+      "meta",
+      "package_config",
+      "path",
+      "pool",
+      "pub_semver",
+      "shelf",
+      "shelf_packages_handler",
+      "shelf_proxy",
+      "shelf_static",
+      "shelf_web_socket",
+      "source_maps",
+      "stack_trace",
+      "sse",
+      "uuid",
+      "vm_service",
+      "web_socket_channel",
+      "webkit_inspection_protocol"
+    ]
+  },
+  {
+    "name": "dds",
+    "version": "2.9.0+hotfix",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "args",
+      "async",
+      "browser_launcher",
+      "collection",
+      "dds_service_extensions",
+      "dap",
+      "devtools_shared",
+      "http_multi_server",
+      "json_rpc_2",
+      "meta",
+      "path",
+      "shelf_proxy",
+      "shelf_static",
+      "shelf_web_socket",
+      "shelf",
+      "sse",
+      "stack_trace",
+      "stream_channel",
+      "vm_service",
+      "web_socket_channel"
+    ]
+  },
+  {
+    "name": "browser_launcher",
+    "version": "1.1.1",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "path",
+      "webkit_inspection_protocol"
+    ]
+  },
+  {
+    "name": "archive",
+    "version": "3.3.2",
+    "kind": "direct",
+    "source": "hosted",
+    "dependencies": [
+      "crypto",
+      "path"
+    ]
+  }
+]
diff --git a/nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/pubspec.lock b/nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/pubspec.lock
new file mode 100644
index 000000000000..8b11ae73ee03
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/lockfiles/stable/pubspec.lock
@@ -0,0 +1,677 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+  _fe_analyzer_shared:
+    dependency: "direct main"
+    description:
+      name: _fe_analyzer_shared
+      sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
+      url: "https://pub.dev"
+    source: hosted
+    version: "61.0.0"
+  analyzer:
+    dependency: "direct main"
+    description:
+      name: analyzer
+      sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.13.0"
+  archive:
+    dependency: "direct main"
+    description:
+      name: archive
+      sha256: "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.3.2"
+  args:
+    dependency: "direct main"
+    description:
+      name: args
+      sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.4.2"
+  async:
+    dependency: "direct main"
+    description:
+      name: async
+      sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.11.0"
+  boolean_selector:
+    dependency: "direct main"
+    description:
+      name: boolean_selector
+      sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
+  browser_launcher:
+    dependency: "direct main"
+    description:
+      name: browser_launcher
+      sha256: "6ee4c6b1f68a42e769ef6e663c4f56708522f7bce9d2ab6e308a37b612ffa4ec"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.1"
+  built_collection:
+    dependency: "direct main"
+    description:
+      name: built_collection
+      sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.1.1"
+  built_value:
+    dependency: "direct main"
+    description:
+      name: built_value
+      sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166"
+      url: "https://pub.dev"
+    source: hosted
+    version: "8.6.1"
+  checked_yaml:
+    dependency: "direct dev"
+    description:
+      name: checked_yaml
+      sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.3"
+  clock:
+    dependency: "direct main"
+    description:
+      name: clock
+      sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.1"
+  collection:
+    dependency: "direct dev"
+    description:
+      name: collection
+      sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.17.2"
+  completion:
+    dependency: "direct main"
+    description:
+      name: completion
+      sha256: f11b7a628e6c42b9edc9b0bc3aa490e2d930397546d2f794e8e1325909d11c60
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.1"
+  convert:
+    dependency: "direct main"
+    description:
+      name: convert
+      sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.1"
+  coverage:
+    dependency: "direct main"
+    description:
+      name: coverage
+      sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.6.3"
+  crypto:
+    dependency: "direct main"
+    description:
+      name: crypto
+      sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.3"
+  csslib:
+    dependency: "direct main"
+    description:
+      name: csslib
+      sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.0"
+  dap:
+    dependency: "direct main"
+    description:
+      name: dap
+      sha256: "2120d4a8cbad45e5dbd518b713e8f064274e0a4c0e3edcaef1f4cf9ccbc90cd9"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.0"
+  dds:
+    dependency: "direct main"
+    description:
+      name: dds
+      sha256: "397c3c80919ee187b2efc28205af3c0378b6b757ea6d059083dece145a2e31e9"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.9.0+hotfix"
+  dds_service_extensions:
+    dependency: "direct main"
+    description:
+      name: dds_service_extensions
+      sha256: "9ac669bef49a4c13ed62073685089be121200fb213800ec59c202e90d569ea44"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.5.0"
+  devtools_shared:
+    dependency: "direct main"
+    description:
+      name: devtools_shared
+      sha256: ad58ac3a5df41adf08d0d6f0a4d73349533edcc383ee93a30ac3d0fd0bb6df49
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.24.0"
+  dwds:
+    dependency: "direct main"
+    description:
+      name: dwds
+      sha256: b6dad73ae56f00bff7647f531b9db018005f713328e816e7a277b544184e9170
+      url: "https://pub.dev"
+    source: hosted
+    version: "19.0.1+1"
+  fake_async:
+    dependency: "direct main"
+    description:
+      name: fake_async
+      sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.1"
+  file:
+    dependency: "direct main"
+    description:
+      name: file
+      sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+      url: "https://pub.dev"
+    source: hosted
+    version: "6.1.4"
+  file_testing:
+    dependency: "direct dev"
+    description:
+      name: file_testing
+      sha256: "0aaadb4025bd350403f4308ad6c4cea953278d9407814b8342558e4946840fb5"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.0"
+  fixnum:
+    dependency: "direct main"
+    description:
+      name: fixnum
+      sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.0"
+  flutter_template_images:
+    dependency: "direct main"
+    description:
+      name: flutter_template_images
+      sha256: fd3e55af73c577b9e3f88d4080d3e366cb5c8ef3fbd50b94dfeca56bb0235df6
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.2.0"
+  frontend_server_client:
+    dependency: "direct main"
+    description:
+      name: frontend_server_client
+      sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.2.0"
+  glob:
+    dependency: "direct main"
+    description:
+      name: glob
+      sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.2"
+  html:
+    dependency: "direct main"
+    description:
+      name: html
+      sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.15.4"
+  http:
+    dependency: "direct main"
+    description:
+      name: http
+      sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.13.6"
+  http_multi_server:
+    dependency: "direct main"
+    description:
+      name: http_multi_server
+      sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.2.1"
+  http_parser:
+    dependency: "direct main"
+    description:
+      name: http_parser
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.0.2"
+  intl:
+    dependency: "direct main"
+    description:
+      name: intl
+      sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.18.1"
+  io:
+    dependency: "direct main"
+    description:
+      name: io
+      sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.4"
+  js:
+    dependency: "direct main"
+    description:
+      name: js
+      sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.6.7"
+  json_annotation:
+    dependency: "direct dev"
+    description:
+      name: json_annotation
+      sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.8.1"
+  json_rpc_2:
+    dependency: "direct main"
+    description:
+      name: json_rpc_2
+      sha256: "5e469bffa23899edacb7b22787780068d650b106a21c76db3c49218ab7ca447e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.2"
+  logging:
+    dependency: "direct main"
+    description:
+      name: logging
+      sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.0"
+  matcher:
+    dependency: "direct main"
+    description:
+      name: matcher
+      sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.12.16"
+  meta:
+    dependency: "direct main"
+    description:
+      name: meta
+      sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.9.1"
+  mime:
+    dependency: "direct main"
+    description:
+      name: mime
+      sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.4"
+  multicast_dns:
+    dependency: "direct main"
+    description:
+      name: multicast_dns
+      sha256: "80e54aba906a7cc68fdc6a201e76b135af27155e2f8e958181d85e2b73786591"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.3.2+3"
+  mustache_template:
+    dependency: "direct main"
+    description:
+      name: mustache_template
+      sha256: a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.0"
+  native_stack_traces:
+    dependency: "direct main"
+    description:
+      name: native_stack_traces
+      sha256: c797830b9910d13b0f4e70ddef15cde034214fe3bdb8092c4ea5ffad2f74013f
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.5.6"
+  node_preamble:
+    dependency: "direct dev"
+    description:
+      name: node_preamble
+      sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.2"
+  package_config:
+    dependency: "direct main"
+    description:
+      name: package_config
+      sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.0"
+  path:
+    dependency: "direct main"
+    description:
+      name: path
+      sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.8.3"
+  petitparser:
+    dependency: "direct main"
+    description:
+      name: petitparser
+      sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.4.0"
+  platform:
+    dependency: "direct main"
+    description:
+      name: platform
+      sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.0"
+  pool:
+    dependency: "direct main"
+    description:
+      name: pool
+      sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.5.1"
+  process:
+    dependency: "direct main"
+    description:
+      name: process
+      sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.2.4"
+  pub_semver:
+    dependency: "direct main"
+    description:
+      name: pub_semver
+      sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.4"
+  pubspec_parse:
+    dependency: "direct dev"
+    description:
+      name: pubspec_parse
+      sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.3"
+  shelf:
+    dependency: "direct main"
+    description:
+      name: shelf
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.4.1"
+  shelf_packages_handler:
+    dependency: "direct main"
+    description:
+      name: shelf_packages_handler
+      sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.2"
+  shelf_proxy:
+    dependency: "direct main"
+    description:
+      name: shelf_proxy
+      sha256: a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.4"
+  shelf_static:
+    dependency: "direct main"
+    description:
+      name: shelf_static
+      sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.2"
+  shelf_web_socket:
+    dependency: "direct main"
+    description:
+      name: shelf_web_socket
+      sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.4"
+  source_map_stack_trace:
+    dependency: "direct main"
+    description:
+      name: source_map_stack_trace
+      sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
+  source_maps:
+    dependency: "direct main"
+    description:
+      name: source_maps
+      sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.10.12"
+  source_span:
+    dependency: "direct main"
+    description:
+      name: source_span
+      sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.10.0"
+  sse:
+    dependency: "direct main"
+    description:
+      name: sse
+      sha256: "3ff9088cac3f45aa8b91336f1962e3ea6c81baaba0bbba361c05f8aa7fb59442"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.1.2"
+  stack_trace:
+    dependency: "direct main"
+    description:
+      name: stack_trace
+      sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.11.0"
+  standard_message_codec:
+    dependency: "direct main"
+    description:
+      name: standard_message_codec
+      sha256: "906e66549f0ea90d87c5320e0b0f04738c5d14bc7fb121a15da31b60e84f5b15"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.0.1+3"
+  stream_channel:
+    dependency: "direct main"
+    description:
+      name: stream_channel
+      sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
+  string_scanner:
+    dependency: "direct main"
+    description:
+      name: string_scanner
+      sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.0"
+  sync_http:
+    dependency: "direct main"
+    description:
+      name: sync_http
+      sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.3.1"
+  term_glyph:
+    dependency: "direct main"
+    description:
+      name: term_glyph
+      sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.1"
+  test:
+    dependency: "direct dev"
+    description:
+      name: test
+      sha256: "13b41f318e2a5751c3169137103b60c584297353d4b1761b66029bae6411fe46"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.24.3"
+  test_api:
+    dependency: "direct main"
+    description:
+      name: test_api
+      sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.6.0"
+  test_core:
+    dependency: "direct main"
+    description:
+      name: test_core
+      sha256: "99806e9e6d95c7b059b7a0fc08f07fc53fabe54a829497f0d9676299f1e8637e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.5.3"
+  typed_data:
+    dependency: "direct main"
+    description:
+      name: typed_data
+      sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.2"
+  unified_analytics:
+    dependency: "direct main"
+    description:
+      name: unified_analytics
+      sha256: "4f9f29e5fd357d68fce270e37c7ad9bb489ee20098529199d6bc786b2b624298"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.0"
+  usage:
+    dependency: "direct main"
+    description:
+      name: usage
+      sha256: "0bdbde65a6e710343d02a56552eeaefd20b735e04bfb6b3ee025b6b22e8d0e15"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.1.1"
+  uuid:
+    dependency: "direct main"
+    description:
+      name: uuid
+      sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.7"
+  vm_service:
+    dependency: "direct main"
+    description:
+      name: vm_service
+      sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f
+      url: "https://pub.dev"
+    source: hosted
+    version: "11.7.1"
+  vm_snapshot_analysis:
+    dependency: "direct main"
+    description:
+      name: vm_snapshot_analysis
+      sha256: "5a79b9fbb6be2555090f55b03b23907e75d44c3fd7bdd88da09848aa5a1914c8"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.7.6"
+  watcher:
+    dependency: "direct main"
+    description:
+      name: watcher
+      sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.0"
+  web_socket_channel:
+    dependency: "direct main"
+    description:
+      name: web_socket_channel
+      sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.4.0"
+  webdriver:
+    dependency: "direct main"
+    description:
+      name: webdriver
+      sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.2"
+  webkit_inspection_protocol:
+    dependency: "direct main"
+    description:
+      name: webkit_inspection_protocol
+      sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.0"
+  xml:
+    dependency: "direct main"
+    description:
+      name: xml
+      sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
+      url: "https://pub.dev"
+    source: hosted
+    version: "6.3.0"
+  yaml:
+    dependency: "direct main"
+    description:
+      name: yaml
+      sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.2"
+sdks:
+  dart: ">=3.0.0 <4.0.0"
diff --git a/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/deregister-pub-dependencies-artifact.patch b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/deregister-pub-dependencies-artifact.patch
new file mode 100644
index 000000000000..01e34c6d292c
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/deregister-pub-dependencies-artifact.patch
@@ -0,0 +1,19 @@
+diff --git a/packages/flutter_tools/lib/src/flutter_cache.dart b/packages/flutter_tools/lib/src/flutter_cache.dart
+index 252021cf78..e50ef0885d 100644
+--- a/packages/flutter_tools/lib/src/flutter_cache.dart
++++ b/packages/flutter_tools/lib/src/flutter_cache.dart
+@@ -51,14 +51,6 @@ class FlutterCache extends Cache {
+       registerArtifact(IosUsbArtifacts(artifactName, this, platform: platform));
+     }
+     registerArtifact(FontSubsetArtifacts(this, platform: platform));
+-    registerArtifact(PubDependencies(
+-      logger: logger,
+-      // flutter root and pub must be lazily initialized to avoid accessing
+-      // before the version is determined.
+-      flutterRoot: () => Cache.flutterRoot!,
+-      pub: () => pub,
+-      projectFactory: projectFactory,
+-    ));
+   }
+ }
+ 
\ No newline at end of file
diff --git a/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch
index ceaf59b5f535..23a657e7c6a9 100644
--- a/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch
+++ b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch
@@ -11,18 +11,19 @@ index 3532c23114..25dfcae4c7 100644
    BIN_NAME="$(basename "$PROG_NAME")"
    case "$BIN_NAME" in
      flutter*)
-diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart
-index 13efbde879..467b3a7cbf 100644
---- a/packages/flutter_tools/lib/src/cache.dart
-+++ b/packages/flutter_tools/lib/src/cache.dart
-@@ -664,6 +664,7 @@ class Cache {
+diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
+index b7e624b4e2..edfdde118b 100644
+--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
++++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
+@@ -1554,7 +1554,7 @@ Run 'flutter -h' (or 'flutter <command> -h') for available flutter commands and
  
-   /// Update the cache to contain all `requiredArtifacts`.
-   Future<void> updateAll(Set<DevelopmentArtifact> requiredArtifacts, {bool offline = false}) async {
-+    return;
-     if (!_lockEnabled) {
-       return;
-     }
+     // Populate the cache. We call this before pub get below so that the
+     // sky_engine package is available in the flutter cache for pub to find.
+-    if (shouldUpdateCache) {
++    if (false) {
+       // First always update universal artifacts, as some of these (e.g.
+       // ios-deploy on macOS) are required to determine `requiredArtifacts`.
+       final bool offline;
 diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
 index 5d6d78639f..90a4dfa555 100644
 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
diff --git a/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/move-cache.patch b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/move-cache.patch
deleted file mode 100644
index cc6e5e8f49e0..000000000000
--- a/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/move-cache.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart
-index dd80b1e46e..8e54517765 100644
---- a/packages/flutter_tools/lib/src/cache.dart
-+++ b/packages/flutter_tools/lib/src/cache.dart
-@@ -22,6 +22,7 @@ import 'base/user_messages.dart';
- import 'build_info.dart';
- import 'convert.dart';
- import 'features.dart';
-+import 'globals.dart' as globals;
- 
- const String kFlutterRootEnvironmentVariableName = 'FLUTTER_ROOT'; // should point to //flutter/ (root of flutter/flutter repo)
- const String kFlutterEngineEnvironmentVariableName = 'FLUTTER_ENGINE'; // should point to //engine/src/ (root of flutter/engine repo)
-@@ -318,8 +319,13 @@ class Cache {
-       return;
-     }
-     assert(_lock == null);
-+    final Directory dir = _fileSystem.directory(_fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter'));
-+    if (!dir.existsSync()) {
-+      dir.createSync(recursive: true);
-+      globals.os.chmod(dir, '755');
-+    }
-     final File lockFile =
--      _fileSystem.file(_fileSystem.path.join(flutterRoot!, 'bin', 'cache', 'lockfile'));
-+      _fileSystem.file(_fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter', 'lockfile'));
-     try {
-       _lock = lockFile.openSync(mode: FileMode.write);
-     } on FileSystemException catch (e) {
-@@ -378,8 +384,7 @@ class Cache {
- 
-   String get devToolsVersion {
-     if (_devToolsVersion == null) {
--      const String devToolsDirPath = 'dart-sdk/bin/resources/devtools';
--      final Directory devToolsDir = getCacheDir(devToolsDirPath, shouldCreate: false);
-+      final Directory devToolsDir = _fileSystem.directory(_fileSystem.path.join(flutterRoot!, 'bin/cache/dart-sdk/bin/resources/devtools'));
-       if (!devToolsDir.existsSync()) {
-         throw Exception('Could not find directory at ${devToolsDir.path}');
-       }
-diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart
-index 1c31c1b5db..76c7210d3b 100644
---- a/packages/flutter_tools/lib/src/cache.dart
-+++ b/packages/flutter_tools/lib/src/cache.dart
-@@ -529,6 +529,11 @@ class Cache {
- 
-   /// Return the top-level directory in the cache; this is `bin/cache`.
-   Directory getRoot() {
-+    const Platform platform = LocalPlatform();
-+    if (platform.environment.containsKey('FLUTTER_CACHE_DIR')) {
-+      return _fileSystem.directory(platform.environment['FLUTTER_CACHE_DIR']);
-+    }
-+
-     if (_rootOverride != null) {
-       return _fileSystem.directory(_fileSystem.path.join(_rootOverride!.path, 'bin', 'cache'));
-     } else {
diff --git a/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/override-host-platform.patch b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/override-host-platform.patch
new file mode 100644
index 000000000000..51dcfdb5cc57
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/flutter/patches/flutter3/override-host-platform.patch
@@ -0,0 +1,21 @@
+diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart
+index 1ce1951cef..1bd7602318 100644
+--- a/packages/flutter_tools/lib/src/base/os.dart
++++ b/packages/flutter_tools/lib/src/base/os.dart
+@@ -260,7 +260,15 @@ class _PosixUtils extends OperatingSystemUtils {
+   @override
+   String get pathVarSeparator => ':';
+ 
+-  HostPlatform? _hostPlatform;
++  // uname outputs build platform characteristics, not host platform characteristics.
++  // _MacOSUtils uses sysctl instead, which is still incorrect.
++  HostPlatform? _hostPlatform = switch (const String.fromEnvironment('NIX_FLUTTER_HOST_PLATFORM')) {
++    'x86_64-linux' => HostPlatform.linux_x64,
++    'aarch64-linux' => HostPlatform.linux_arm64,
++    'x86_64-darwin' => HostPlatform.darwin_x64,
++    'arm64-darwin' => HostPlatform.darwin_arm64,
++    String value => throw ArgumentError.value(value, 'NIX_FLUTTER_HOST_PLATFORM', 'Unknown Nix host platform!'),
++  };
+ 
+   @override
+   HostPlatform get hostPlatform {
diff --git a/nixpkgs/pkgs/development/compilers/flutter/sdk-symlink.nix b/nixpkgs/pkgs/development/compilers/flutter/sdk-symlink.nix
index 6fb4f5edc0ee..044a508805f5 100644
--- a/nixpkgs/pkgs/development/compilers/flutter/sdk-symlink.nix
+++ b/nixpkgs/pkgs/development/compilers/flutter/sdk-symlink.nix
@@ -1,10 +1,23 @@
-{ symlinkJoin }: flutter:
+{ symlinkJoin
+, makeWrapper
+}: flutter:
 
 let
   self =
     symlinkJoin {
       name = "${flutter.name}-sdk-links";
-      paths = [ flutter flutter.sdk ];
+      paths = [ flutter flutter.cacheDir flutter.sdk ];
+
+      nativeBuildInputs = [ makeWrapper ];
+      postBuild = ''
+        wrapProgram "$out/bin/flutter" \
+          --set-default FLUTTER_ROOT "$out"
+
+        # symlinkJoin seems to be missing the .git directory for some reason.
+        if [ -d '${flutter.sdk}/.git' ]; then
+          ln -s '${flutter.sdk}/.git' "$out"
+        fi
+      '';
 
       passthru = flutter.passthru // {
         # Update the SDK attribute.
diff --git a/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix b/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix
index f525bcc7ab31..38c2eb289310 100644
--- a/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix
+++ b/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix
@@ -3,27 +3,14 @@
 , darwin
 , callPackage
 , flutter
-, supportsLinuxDesktop ? stdenv.hostPlatform.isLinux
-, supportsAndroid ? (stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin)
-, supportsDarwin ? stdenv.hostPlatform.isDarwin
-, supportsIOS ? stdenv.hostPlatform.isDarwin
-, includedEngineArtifacts ? {
-    common = [
-      "flutter_patched_sdk"
-      "flutter_patched_sdk_product"
-    ];
-    platform = {
-      android = lib.optionalAttrs supportsAndroid
-        ((lib.genAttrs [ "arm" "arm64" "x64" ] (architecture: [ "profile" "release" ])) // { x86 = [ "jit-release" ]; });
-      darwin = lib.optionalAttrs supportsDarwin
-        ((lib.genAttrs [ "arm64" "x64" ] (architecture: [ "profile" "release" ])));
-      ios = lib.optionalAttrs supportsIOS
-        ((lib.genAttrs [ "" ] (architecture: [ "profile" "release" ])));
-      linux = lib.optionalAttrs supportsLinuxDesktop
-        (lib.genAttrs ((lib.optional stdenv.hostPlatform.isx86_64 "x64") ++ (lib.optional stdenv.hostPlatform.isAarch64 "arm64"))
-          (architecture: [ "debug" "profile" "release" ]));
-    };
-  }
+, supportedTargetPlatforms ? [
+    "universal"
+    "web"
+  ]
+  ++ lib.optional stdenv.hostPlatform.isLinux "linux"
+  ++ lib.optional (stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin) "android"
+  ++ lib.optionals stdenv.hostPlatform.isDarwin [ "macos" "ios" ]
+, artifactHashes ? (import ./artifacts/hashes.nix).${flutter.version}
 , extraPkgConfigPackages ? [ ]
 , extraLibraries ? [ ]
 , extraIncludes ? [ ]
@@ -57,70 +44,31 @@
 }:
 
 let
-  engineArtifacts = callPackage ./engine-artifacts {
-    inherit (flutter) engineVersion;
-    flutterVersion = flutter.version;
-  };
-  mkCommonArtifactLinkCommand = { artifact }:
-    ''
-      mkdir -p $out/artifacts/engine/common
-      lndir -silent ${artifact} $out/artifacts/engine/common
-    '';
-  mkPlatformArtifactLinkCommand = { artifact, os, architecture, variant ? null }:
-    let
-      artifactDirectory = "${os}-${architecture}${lib.optionalString (variant != null) "-${variant}"}";
-    in
-    ''
-      mkdir -p $out/artifacts/engine/${artifactDirectory}
-      lndir -silent ${artifact} $out/artifacts/engine/${artifactDirectory}
-    '';
-  engineArtifactDirectory =
-    runCommandLocal "flutter-engine-artifacts-${flutter.version}" { nativeBuildInputs = [ lndir ]; }
-      (
-        builtins.concatStringsSep "\n"
-          ((map
-            (name: mkCommonArtifactLinkCommand {
-              artifact = engineArtifacts.common.${name};
-            })
-            (includedEngineArtifacts.common or [ ])) ++
-          (builtins.foldl'
-            (commands: os: commands ++
-              (builtins.foldl'
-                (commands: architecture: commands ++
-                  (builtins.foldl'
-                    (commands: variant: commands ++
-                      (map
-                        (artifact: mkPlatformArtifactLinkCommand {
-                          inherit artifact os architecture variant;
-                        })
-                        engineArtifacts.platform.${os}.${architecture}.variants.${variant}))
-                    (map
-                      (artifact: mkPlatformArtifactLinkCommand {
-                        inherit artifact os architecture;
-                      })
-                      engineArtifacts.platform.${os}.${architecture}.base)
-                    includedEngineArtifacts.platform.${os}.${architecture}))
-                [ ]
-                (builtins.attrNames includedEngineArtifacts.platform.${os})))
-            [ ]
-            (builtins.attrNames (includedEngineArtifacts.platform or { }))))
-      );
-
-  cacheDir = symlinkJoin {
+  supportsLinuxDesktopTarget = builtins.elem "linux" supportedTargetPlatforms;
+
+  platformArtifacts = lib.genAttrs supportedTargetPlatforms (platform:
+    (callPackage ./artifacts/prepare-artifacts.nix {
+      src = callPackage ./artifacts/fetch-artifacts.nix {
+        inherit platform;
+        flutter = callPackage ./wrapper.nix { inherit flutter; };
+        hash = artifactHashes.${platform}.${stdenv.hostPlatform.system} or "";
+      };
+    }));
+
+  cacheDir = symlinkJoin rec {
     name = "flutter-cache-dir";
-    paths = [
-      engineArtifactDirectory
-      "${flutter}/bin/cache"
-    ];
+    paths = builtins.attrValues platformArtifacts;
+    postBuild = ''
+      mkdir -p "$out/bin/cache"
+      ln -s '${flutter}/bin/cache/dart-sdk' "$out/bin/cache"
+    '';
+    passthru.platform = platformArtifacts;
   };
 
   # By default, Flutter stores downloaded files (such as the Pub cache) in the SDK directory.
   # Wrap it to ensure that it does not do that, preferring home directories instead.
-  # The sh file `$out/bin/internal/shared.sh` runs when launching Flutter and calls `"$FLUTTER_ROOT/bin/cache/` instead of our environment variable `FLUTTER_CACHE_DIR`.
-  # We do not patch it since the script doesn't require engine artifacts(which are the only thing not added by the unwrapped derivation), so it shouldn't fail, and patching it will just be harder to maintain.
   immutableFlutter = writeShellScript "flutter_immutable" ''
     export PUB_CACHE=''${PUB_CACHE:-"$HOME/.pub-cache"}
-    export FLUTTER_CACHE_DIR=${cacheDir}
     ${flutter}/bin/flutter "$@"
   '';
 
@@ -128,7 +76,7 @@ let
   tools = [ git which ];
 
   # Libraries that Flutter apps depend on at runtime.
-  appRuntimeDeps = lib.optionals supportsLinuxDesktop [
+  appRuntimeDeps = lib.optionals supportsLinuxDesktopTarget [
     atk
     cairo
     gdk-pixbuf
@@ -152,10 +100,10 @@ let
 
   # Some header files and libraries are not properly located by the Flutter SDK.
   # They must be manually included.
-  appStaticBuildDeps = (lib.optionals supportsLinuxDesktop [ libX11 xorgproto zlib ]) ++ extraLibraries;
+  appStaticBuildDeps = (lib.optionals supportsLinuxDesktopTarget [ libX11 xorgproto zlib ]) ++ extraLibraries;
 
   # Tools used by the Flutter SDK to compile applications.
-  buildTools = lib.optionals supportsLinuxDesktop [
+  buildTools = lib.optionals supportsLinuxDesktopTarget [
     pkg-config
     cmake
     ninja
@@ -174,12 +122,12 @@ in
 
   nativeBuildInputs = [ makeWrapper ]
     ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ]
-    ++ lib.optionals supportsLinuxDesktop [ glib wrapGAppsHook ];
+    ++ lib.optionals supportsLinuxDesktopTarget [ glib wrapGAppsHook ];
 
   passthru = flutter.passthru // {
     inherit (flutter) version;
     unwrapped = flutter;
-    inherit engineArtifacts;
+    inherit cacheDir;
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/development/compilers/fstar/default.nix b/nixpkgs/pkgs/development/compilers/fstar/default.nix
index 8bb3366655c7..773a0dde281f 100644
--- a/nixpkgs/pkgs/development/compilers/fstar/default.nix
+++ b/nixpkgs/pkgs/development/compilers/fstar/default.nix
@@ -1,7 +1,17 @@
-{ lib, stdenv, writeScript, fetchFromGitHub, z3, ocamlPackages, makeWrapper, installShellFiles, removeReferencesTo }:
+{ callPackage
+, fetchFromGitHub
+, installShellFiles
+, lib
+, makeWrapper
+, ocamlPackages
+, removeReferencesTo
+, stdenv
+, writeScript
+, z3
+}:
+
+let
 
-stdenv.mkDerivation rec {
-  pname = "fstar";
   version = "2023.09.03";
 
   src = fetchFromGitHub {
@@ -11,66 +21,54 @@ stdenv.mkDerivation rec {
     hash = "sha256-ymoP5DvaLdrdwJcnhZnLEvwNxUFzhkICajPyK4lvacc=";
   };
 
-  strictDeps = true;
+  fstar-dune = ocamlPackages.callPackage ./dune.nix { inherit version src; };
+
+  fstar-ulib = callPackage ./ulib.nix { inherit version src fstar-dune z3; };
+
+in
+
+stdenv.mkDerivation {
+  pname = "fstar";
+  inherit version src;
 
   nativeBuildInputs = [
-    z3
-    makeWrapper
     installShellFiles
+    makeWrapper
     removeReferencesTo
-  ] ++ (with ocamlPackages; [
-    ocaml
-    dune_3
-    findlib
-    ocamlbuild
-    menhir
-  ]);
-
-  buildInputs = with ocamlPackages; [
-    batteries
-    zarith
-    stdint
-    yojson
-    fileutils
-    memtrace
-    menhirLib
-    pprint
-    sedlex
-    ppxlib
-    ppx_deriving
-    ppx_deriving_yojson
-    process
   ];
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  inherit (fstar-dune) propagatedBuildInputs;
 
-  enableParallelBuilding = true;
+  dontBuild = true;
 
-  postPatch = ''
-    patchShebangs ulib/install-ulib.sh
-  '';
+  installPhase = ''
+    mkdir $out
 
-  preInstall = ''
-    mkdir -p $out/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/fstarlib
-  '';
-  postInstall = ''
-    # Remove build artifacts
-    find $out -name _build -type d | xargs -I{} rm -rf "{}"
+    CP="cp -r --no-preserve=mode"
+    $CP ${fstar-dune}/* $out
+    $CP ${fstar-ulib}/* $out
+
+    PREFIX=$out make -C src/ocaml-output install-sides
+
+    chmod +x $out/bin/fstar.exe
+    wrapProgram $out/bin/fstar.exe --prefix PATH ":" ${z3}/bin
     remove-references-to -t '${ocamlPackages.ocaml}' $out/bin/fstar.exe
 
-    wrapProgram $out/bin/fstar.exe --prefix PATH ":" "${z3}/bin"
+    substituteInPlace $out/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/fstar/dune-package \
+      --replace ${fstar-dune} $out
+
     installShellCompletion --bash .completion/bash/fstar.exe.bash
     installShellCompletion --fish .completion/fish/fstar.exe.fish
     installShellCompletion --zsh --name _fstar.exe .completion/zsh/__fstar.exe
   '';
 
   passthru.updateScript = writeScript "update-fstar" ''
-      #!/usr/bin/env nix-shell
-      #!nix-shell -i bash -p git gnugrep common-updater-scripts
-      set -eu -o pipefail
+    #!/usr/bin/env nix-shell
+    #!nix-shell -i bash -p git gnugrep common-updater-scripts
+    set -eu -o pipefail
 
-      version="$(git ls-remote --tags git@github.com:FStarLang/FStar.git | grep -Po 'v\K\d{4}\.\d{2}\.\d{2}' | sort | tail -n1)"
-      update-source-version fstar "$version"
+    version="$(git ls-remote --tags git@github.com:FStarLang/FStar.git | grep -Po 'v\K\d{4}\.\d{2}\.\d{2}' | sort | tail -n1)"
+    update-source-version fstar "$version"
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/compilers/fstar/dune.nix b/nixpkgs/pkgs/development/compilers/fstar/dune.nix
new file mode 100644
index 000000000000..1ca476838c8b
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/fstar/dune.nix
@@ -0,0 +1,51 @@
+{ batteries
+, buildDunePackage
+, memtrace
+, menhir
+, menhirLib
+, pprint
+, ppx_deriving
+, ppx_deriving_yojson
+, ppxlib
+, process
+, sedlex
+, src
+, stdint
+, version
+, yojson
+, zarith
+}:
+
+buildDunePackage {
+  pname = "fstar";
+  inherit version src;
+
+  postPatch = ''
+    patchShebangs ocaml/fstar-lib/make_fstar_version.sh
+    cd ocaml
+  '';
+
+  nativeBuildInputs = [
+    menhir
+  ];
+
+  buildInputs = [
+    memtrace
+  ];
+
+  propagatedBuildInputs = [
+    batteries
+    menhirLib
+    pprint
+    ppx_deriving
+    ppx_deriving_yojson
+    ppxlib
+    process
+    sedlex
+    stdint
+    yojson
+    zarith
+  ];
+
+  enableParallelBuilding = true;
+}
diff --git a/nixpkgs/pkgs/development/compilers/fstar/ulib.nix b/nixpkgs/pkgs/development/compilers/fstar/ulib.nix
new file mode 100644
index 000000000000..4390a7bdb55e
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/fstar/ulib.nix
@@ -0,0 +1,26 @@
+{ fstar-dune
+, src
+, stdenv
+, version
+, z3
+}:
+
+stdenv.mkDerivation {
+  pname = "fstar-ulib";
+  inherit version src;
+
+  nativeBuildInputs = [
+    z3
+  ];
+
+  postPatch = ''
+    mkdir -p bin
+    cp ${fstar-dune}/bin/fstar.exe bin
+    patchShebangs ulib/install-ulib.sh
+    cd ulib
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  enableParallelBuilding = true;
+}
diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix b/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix
index 6eedcb6374be..c49c274c67d4 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix
@@ -44,12 +44,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix b/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix
index 92ed154a02ba..bdfff2b795a4 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix
@@ -46,12 +46,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pullls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix
deleted file mode 100644
index 97539cd54321..000000000000
--- a/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix
+++ /dev/null
@@ -1,392 +0,0 @@
-{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages
-
-# build-tools
-, bootPkgs
-, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx
-, xattr, autoSignDarwinBinariesHook
-, bash
-
-, libiconv ? null, ncurses
-, glibcLocales ? null
-
-, # GHC can be built with system libffi or a bundled one.
-  libffi ? null
-
-, useLLVM ? !(stdenv.targetPlatform.isx86
-              || stdenv.targetPlatform.isPower
-              || stdenv.targetPlatform.isSparc
-              || stdenv.targetPlatform.isAarch64)
-, # LLVM is conceptually a run-time-only dependency, but for
-  # non-x86, we need LLVM to bootstrap later stages, so it becomes a
-  # build-time dependency too.
-  buildTargetLlvmPackages, llvmPackages
-
-, # If enabled, GHC will be built with the GPL-free but slightly slower native
-  # bignum backend instead of the faster but GPLed gmp backend.
-  enableNativeBignum ? !(lib.meta.availableOn stdenv.hostPlatform gmp
-                         && lib.meta.availableOn stdenv.targetPlatform gmp)
-, gmp
-
-, # If enabled, use -fPIC when compiling static libs.
-  enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
-
-, enableProfiledLibs ? true
-
-, # Whether to build dynamic libs for the standard library (on the target
-  # platform). Static libs are always built.
-  enableShared ? with stdenv.targetPlatform; !isWindows && !useiOSPrebuilt && !isStatic
-
-, # Whether to build terminfo.
-  enableTerminfo ? !stdenv.targetPlatform.isWindows
-
-, # What flavour to build. An empty string indicates no
-  # specific flavour and falls back to ghc default values.
-  ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
-    (if useLLVM then "perf-cross" else "perf-cross-ncg")
-
-, #  Whether to build sphinx documentation.
-  enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
-  )
-
-, enableHaddockProgram ?
-    # Disabled for cross; see note [HADDOCK_DOCS].
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-
-, # Whether to disable the large address space allocator
-  # necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
-  disableLargeAddressSpace ? stdenv.targetPlatform.isiOS
-}:
-
-assert !enableNativeBignum -> gmp != null;
-
-# Cross cannot currently build the `haddock` program for silly reasons,
-# see note [HADDOCK_DOCS].
-assert (stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram;
-
-let
-  inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-  inherit (bootPkgs) ghc;
-
-  # TODO(@Ericson2314) Make unconditional
-  targetPrefix = lib.optionalString
-    (targetPlatform != hostPlatform)
-    "${targetPlatform.config}-";
-
-  buildMK = ''
-    BuildFlavour = ${ghcFlavour}
-    ifneq \"\$(BuildFlavour)\" \"\"
-    include mk/flavours/\$(BuildFlavour).mk
-    endif
-    BUILD_SPHINX_HTML = ${if enableDocs then "YES" else "NO"}
-    BUILD_SPHINX_PDF = NO
-  '' +
-  # Note [HADDOCK_DOCS]:
-  # Unfortunately currently `HADDOCK_DOCS` controls both whether the `haddock`
-  # program is built (which we generally always want to have a complete GHC install)
-  # and whether it is run on the GHC sources to generate hyperlinked source code
-  # (which is impossible for cross-compilation); see:
-  # https://gitlab.haskell.org/ghc/ghc/-/issues/20077
-  # This implies that currently a cross-compiled GHC will never have a `haddock`
-  # program, so it can never generate haddocks for any packages.
-  # If this is solved in the future, we'd like to unconditionally
-  # build the haddock program (removing the `enableHaddockProgram` option).
-  ''
-    HADDOCK_DOCS = ${if enableHaddockProgram then "YES" else "NO"}
-    # Build haddocks for boot packages with hyperlinking
-    EXTRA_HADDOCK_OPTS += --hyperlinked-source --quickjump
-
-    DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
-    BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
-  '' + lib.optionalString (targetPlatform != hostPlatform) ''
-    Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
-    CrossCompilePrefix = ${targetPrefix}
-  '' + lib.optionalString (!enableProfiledLibs) ''
-    GhcLibWays = "v dyn"
-  '' +
-  # -fexternal-dynamic-refs apparently (because it's not clear from the documentation)
-  # makes the GHC RTS able to load static libraries, which may be needed for TemplateHaskell.
-  # This solution was described in https://www.tweag.io/blog/2020-09-30-bazel-static-haskell
-  lib.optionalString enableRelocatedStaticLibs ''
-    GhcLibHcOpts += -fPIC -fexternal-dynamic-refs
-    GhcRtsHcOpts += -fPIC -fexternal-dynamic-refs
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    EXTRA_CC_OPTS += -std=gnu99
-  '';
-
-  # Splicer will pull out correct variations
-  libDeps = platform: lib.optional enableTerminfo ncurses
-    ++ [libffi]
-    ++ lib.optional (!enableNativeBignum) gmp
-    ++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
-
-  # TODO(@sternenseemann): is buildTarget LLVM unnecessary?
-  # GHC doesn't seem to have {LLC,OPT}_HOST
-  toolsForTarget = [
-    pkgsBuildTarget.targetPackages.stdenv.cc
-  ] ++ lib.optional useLLVM buildTargetLlvmPackages.llvm;
-
-  targetCC = builtins.head toolsForTarget;
-
-  # Sometimes we have to dispatch between the bintools wrapper and the unwrapped
-  # derivation for certain tools depending on the platform.
-  bintoolsFor = {
-    # GHC needs install_name_tool on all darwin platforms. On aarch64-darwin it is
-    # part of the bintools wrapper (due to codesigning requirements), but not on
-    # x86_64-darwin.
-    install_name_tool =
-      if stdenv.targetPlatform.isAarch64
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-    # Same goes for strip.
-    strip =
-      # TODO(@sternenseemann): also use wrapper if linker == "bfd" or "gold"
-      if stdenv.targetPlatform.isAarch64 && stdenv.targetPlatform.isDarwin
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-  };
-
-  # Use gold either following the default, or to avoid the BFD linker due to some bugs / perf issues.
-  # But we cannot avoid BFD when using musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
-  # see #84670 and #49071 for more background.
-  useLdGold = targetPlatform.linker == "gold" ||
-    (targetPlatform.linker == "bfd" && (targetCC.bintools.bintools.hasGold or false) && !targetPlatform.isMusl);
-
-  # Makes debugging easier to see which variant is at play in `nix-store -q --tree`.
-  variantSuffix = lib.concatStrings [
-    (lib.optionalString stdenv.hostPlatform.isMusl "-musl")
-    (lib.optionalString enableNativeBignum "-native-bignum")
-  ];
-
-in
-
-# C compiler, bintools and LLVM are used at build time, but will also leak into
-# the resulting GHC's settings file and used at runtime. This means that we are
-# currently only able to build GHC if hostPlatform == buildPlatform.
-assert targetCC == pkgsHostTarget.targetPackages.stdenv.cc;
-assert buildTargetLlvmPackages.llvm == llvmPackages.llvm;
-assert stdenv.targetPlatform.isDarwin -> buildTargetLlvmPackages.clang == llvmPackages.clang;
-
-stdenv.mkDerivation (rec {
-  version = "9.2.4";
-  pname = "${targetPrefix}ghc${variantSuffix}";
-
-  src = fetchurl {
-    url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
-    sha256 = "15213888064a0ec4e7723d075f31b87a678ce0851773d58b44ef7aa3de996458";
-  };
-
-  enableParallelBuilding = true;
-
-  outputs = [ "out" "doc" ];
-
-  patches = [
-    # Fix docs build with sphinx >= 6.0
-    # https://gitlab.haskell.org/ghc/ghc/-/issues/22766
-    (fetchpatch {
-      name = "ghc-docs-sphinx-6.0.patch";
-      url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch";
-      sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv";
-    })
-    # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
-    ./docs-sphinx-7.patch
-    # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482
-    (fetchpatch {
-      url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch";
-      sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk=";
-      extraPrefix = "utils/haddock/";
-      stripLen = 1;
-    })
-    # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs
-    # Can be removed if the Cabal library included with ghc backports the linked fix
-    (fetchpatch {
-      url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch";
-      stripLen = 1;
-      extraPrefix = "libraries/Cabal/";
-      sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY=";
-    })
-  ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [
-    # Prevent the paths module from emitting symbols that we don't use
-    # when building with separate outputs.
-    #
-    # These cause problems as they're not eliminated by GHC's dead code
-    # elimination on aarch64-darwin. (see
-    # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
-  ];
-
-  postPatch = "patchShebangs .";
-
-  # GHC needs the locale configured during the Haddock phase.
-  LANG = "en_US.UTF-8";
-
-  # GHC is a bit confused on its cross terminology.
-  # TODO(@sternenseemann): investigate coreutils dependencies and pass absolute paths
-  preConfigure = ''
-    for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
-      export "''${env#TARGET_}=''${!env}"
-    done
-    # GHC is a bit confused on its cross terminology, as these would normally be
-    # the *host* tools.
-    export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
-    export CXX="${targetCC}/bin/${targetCC.targetPrefix}c++"
-    # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
-    export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
-    export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
-    export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
-    export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
-    export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
-    export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
-    export STRIP="${bintoolsFor.strip}/bin/${bintoolsFor.strip.targetPrefix}strip"
-  '' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") ''
-    export OTOOL="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}otool"
-    export INSTALL_NAME_TOOL="${bintoolsFor.install_name_tool}/bin/${bintoolsFor.install_name_tool.targetPrefix}install_name_tool"
-  '' + lib.optionalString useLLVM ''
-    export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc"
-    export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt"
-  '' + lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) ''
-    # LLVM backend on Darwin needs clang: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/codegens.html#llvm-code-generator-fllvm
-    export CLANG="${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang"
-  '' + ''
-    echo -n "${buildMK}" > mk/build.mk
-  '' + lib.optionalString (stdenv.isLinux && hostPlatform.libc == "glibc") ''
-    export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
-  '' + lib.optionalString stdenv.isDarwin ''
-    export NIX_LDFLAGS+=" -no_dtrace_dof"
-
-    # GHC tries the host xattr /usr/bin/xattr by default which fails since it expects python to be 2.7
-    export XATTR=${lib.getBin xattr}/bin/xattr
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
-  '' + lib.optionalString targetPlatform.isMusl ''
-      echo "patching llvm-targets for musl targets..."
-      echo "Cloning these existing '*-linux-gnu*' targets:"
-      grep linux-gnu llvm-targets | sed 's/^/  /'
-      echo "(go go gadget sed)"
-      sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
-      echo "llvm-targets now contains these '*-linux-musl*' targets:"
-      grep linux-musl llvm-targets | sed 's/^/  /'
-
-      echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
-      # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
-      for x in configure aclocal.m4; do
-        substituteInPlace $x \
-          --replace '*-android*|*-gnueabi*)' \
-                    '*-android*|*-gnueabi*|*-musleabi*)'
-      done
-  '';
-
-  # TODO(@Ericson2314): Always pass "--target" and always prefix.
-  configurePlatforms = [ "build" "host" ]
-    ++ lib.optional (targetPlatform != hostPlatform) "target";
-
-  # `--with` flags for libraries needed for RTS linker
-  configureFlags = [
-    "--datadir=$doc/share/doc/ghc"
-    "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
-  ] ++ lib.optionals (libffi != null) [
-    "--with-system-libffi"
-    "--with-ffi-includes=${targetPackages.libffi.dev}/include"
-    "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && !enableNativeBignum) [
-    "--with-gmp-includes=${targetPackages.gmp.dev}/include"
-    "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
-    "--with-iconv-includes=${libiconv}/include"
-    "--with-iconv-libraries=${libiconv}/lib"
-  ] ++ lib.optionals (targetPlatform != hostPlatform) [
-    "--enable-bootstrap-with-devel-snapshot"
-  ] ++ lib.optionals useLdGold [
-    "CFLAGS=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
-  ] ++ lib.optionals (disableLargeAddressSpace) [
-    "--disable-large-address-space"
-  ];
-
-  # Make sure we never relax`$PATH` and hooks support for compatibility.
-  strictDeps = true;
-
-  # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
-  dontAddExtraLibs = true;
-
-  nativeBuildInputs = [
-    perl autoconf automake m4 python3
-    ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    autoSignDarwinBinariesHook
-  ] ++ lib.optionals enableDocs [
-    sphinx
-  ];
-
-  # For building runtime libs
-  depsBuildTarget = toolsForTarget;
-
-  buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
-
-  depsTargetTarget = map lib.getDev (libDeps targetPlatform);
-  depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
-
-  # required, because otherwise all symbols from HSffi.o are stripped, and
-  # that in turn causes GHCi to abort
-  stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
-
-  checkTarget = "test";
-
-  hardeningDisable =
-    [ "format" ]
-    # In nixpkgs, musl based builds currently enable `pie` hardening by default
-    # (see `defaultHardeningFlags` in `make-derivation.nix`).
-    # But GHC cannot currently produce outputs that are ready for `-pie` linking.
-    # Thus, disable `pie` hardening, otherwise `recompile with -fPIE` errors appear.
-    # See:
-    # * https://github.com/NixOS/nixpkgs/issues/129247
-    # * https://gitlab.haskell.org/ghc/ghc/-/issues/19580
-    ++ lib.optional stdenv.targetPlatform.isMusl "pie";
-
-  # big-parallel allows us to build with more than 2 cores on
-  # Hydra which already warrants a significant speedup
-  requiredSystemFeatures = [ "big-parallel" ];
-
-  postInstall = ''
-    # Install the bash completion file.
-    install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
-  '';
-
-  passthru = {
-    inherit bootPkgs targetPrefix;
-
-    inherit llvmPackages;
-    inherit enableShared;
-
-    # This is used by the haskell builder to query
-    # the presence of the haddock program.
-    hasHaddock = enableHaddockProgram;
-
-    # Our Cabal compiler name
-    haskellCompilerName = "ghc-${version}";
-  };
-
-  meta = {
-    homepage = "http://haskell.org/ghc";
-    description = "The Glasgow Haskell Compiler";
-    maintainers = with lib.maintainers; [
-      guibou
-    ] ++ lib.teams.haskell.members;
-    timeout = 24 * 3600;
-    inherit (ghc.meta) license platforms;
-  };
-
-} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
-  dontStrip = true;
-  dontPatchELF = true;
-  noAuditTmpdir = true;
-})
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix
index a54894bda952..034a09511b2b 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix
@@ -46,12 +46,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -218,7 +215,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix
index 5079578239ea..83cd1e051c6a 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix
@@ -46,12 +46,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -218,7 +215,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix
index 3db132036652..4bf7252643de 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix
@@ -46,12 +46,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -218,7 +215,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix
index 499f463e801a..0d469f733525 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix
@@ -46,12 +46,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -218,7 +215,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix
deleted file mode 100644
index 3d7852ec701e..000000000000
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix
+++ /dev/null
@@ -1,398 +0,0 @@
-# DO NOT port this expression to hadrian. It is not possible to build a GHC
-# cross compiler with 9.4.* and hadrian.
-{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages
-
-# build-tools
-, bootPkgs
-, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx
-, xattr, autoSignDarwinBinariesHook
-, bash
-
-, libiconv ? null, ncurses
-, glibcLocales ? null
-
-, # GHC can be built with system libffi or a bundled one.
-  libffi ? null
-
-, useLLVM ? !(stdenv.targetPlatform.isx86
-              || stdenv.targetPlatform.isPower
-              || stdenv.targetPlatform.isSparc
-              || stdenv.targetPlatform.isAarch64)
-, # LLVM is conceptually a run-time-only dependency, but for
-  # non-x86, we need LLVM to bootstrap later stages, so it becomes a
-  # build-time dependency too.
-  buildTargetLlvmPackages, llvmPackages
-
-, # If enabled, GHC will be built with the GPL-free but slightly slower native
-  # bignum backend instead of the faster but GPLed gmp backend.
-  enableNativeBignum ? !(lib.meta.availableOn stdenv.hostPlatform gmp
-                         && lib.meta.availableOn stdenv.targetPlatform gmp)
-, gmp
-
-, # If enabled, use -fPIC when compiling static libs.
-  enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
-
-, enableProfiledLibs ? true
-
-, # Whether to build dynamic libs for the standard library (on the target
-  # platform). Static libs are always built.
-  enableShared ? with stdenv.targetPlatform; !isWindows && !useiOSPrebuilt && !isStatic
-
-, # Whether to build terminfo.
-  enableTerminfo ? !stdenv.targetPlatform.isWindows
-
-, # What flavour to build. An empty string indicates no
-  # specific flavour and falls back to ghc default values.
-  ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
-    (if useLLVM then "perf-cross" else "perf-cross-ncg")
-
-, #  Whether to build sphinx documentation.
-  enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
-  )
-
-, enableHaddockProgram ?
-    # Disabled for cross; see note [HADDOCK_DOCS].
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-
-, # Whether to disable the large address space allocator
-  # necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
-  disableLargeAddressSpace ? stdenv.targetPlatform.isiOS
-}:
-
-assert !enableNativeBignum -> gmp != null;
-
-# Cross cannot currently build the `haddock` program for silly reasons,
-# see note [HADDOCK_DOCS].
-assert (stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram;
-
-let
-  inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-  inherit (bootPkgs) ghc;
-
-  # TODO(@Ericson2314) Make unconditional
-  targetPrefix = lib.optionalString
-    (targetPlatform != hostPlatform)
-    "${targetPlatform.config}-";
-
-  buildMK = ''
-    BuildFlavour = ${ghcFlavour}
-    ifneq \"\$(BuildFlavour)\" \"\"
-    include mk/flavours/\$(BuildFlavour).mk
-    endif
-    BUILD_SPHINX_HTML = ${if enableDocs then "YES" else "NO"}
-    BUILD_SPHINX_PDF = NO
-  '' +
-  # Note [HADDOCK_DOCS]:
-  # Unfortunately currently `HADDOCK_DOCS` controls both whether the `haddock`
-  # program is built (which we generally always want to have a complete GHC install)
-  # and whether it is run on the GHC sources to generate hyperlinked source code
-  # (which is impossible for cross-compilation); see:
-  # https://gitlab.haskell.org/ghc/ghc/-/issues/20077
-  # This implies that currently a cross-compiled GHC will never have a `haddock`
-  # program, so it can never generate haddocks for any packages.
-  # If this is solved in the future, we'd like to unconditionally
-  # build the haddock program (removing the `enableHaddockProgram` option).
-  ''
-    HADDOCK_DOCS = ${if enableHaddockProgram then "YES" else "NO"}
-    # Build haddocks for boot packages with hyperlinking
-    EXTRA_HADDOCK_OPTS += --hyperlinked-source --quickjump
-
-    DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
-    BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
-  '' + lib.optionalString (targetPlatform != hostPlatform) ''
-    Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
-    CrossCompilePrefix = ${targetPrefix}
-  '' + lib.optionalString (!enableProfiledLibs) ''
-    GhcLibWays = "v dyn"
-  '' +
-  # -fexternal-dynamic-refs apparently (because it's not clear from the documentation)
-  # makes the GHC RTS able to load static libraries, which may be needed for TemplateHaskell.
-  # This solution was described in https://www.tweag.io/blog/2020-09-30-bazel-static-haskell
-  lib.optionalString enableRelocatedStaticLibs ''
-    GhcLibHcOpts += -fPIC -fexternal-dynamic-refs
-    GhcRtsHcOpts += -fPIC -fexternal-dynamic-refs
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    EXTRA_CC_OPTS += -std=gnu99
-  '';
-
-  # Splicer will pull out correct variations
-  libDeps = platform: lib.optional enableTerminfo ncurses
-    ++ [libffi]
-    ++ lib.optional (!enableNativeBignum) gmp
-    ++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
-
-  # TODO(@sternenseemann): is buildTarget LLVM unnecessary?
-  # GHC doesn't seem to have {LLC,OPT}_HOST
-  toolsForTarget = [
-    pkgsBuildTarget.targetPackages.stdenv.cc
-  ] ++ lib.optional useLLVM buildTargetLlvmPackages.llvm;
-
-  targetCC = builtins.head toolsForTarget;
-
-  # Sometimes we have to dispatch between the bintools wrapper and the unwrapped
-  # derivation for certain tools depending on the platform.
-  bintoolsFor = {
-    # GHC needs install_name_tool on all darwin platforms. On aarch64-darwin it is
-    # part of the bintools wrapper (due to codesigning requirements), but not on
-    # x86_64-darwin.
-    install_name_tool =
-      if stdenv.targetPlatform.isAarch64
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-    # Same goes for strip.
-    strip =
-      # TODO(@sternenseemann): also use wrapper if linker == "bfd" or "gold"
-      if stdenv.targetPlatform.isAarch64 && stdenv.targetPlatform.isDarwin
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-  };
-
-  # Use gold either following the default, or to avoid the BFD linker due to some bugs / perf issues.
-  # But we cannot avoid BFD when using musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
-  # see #84670 and #49071 for more background.
-  useLdGold = targetPlatform.linker == "gold" ||
-    (targetPlatform.linker == "bfd" && (targetCC.bintools.bintools.hasGold or false) && !targetPlatform.isMusl);
-
-  # Makes debugging easier to see which variant is at play in `nix-store -q --tree`.
-  variantSuffix = lib.concatStrings [
-    (lib.optionalString stdenv.hostPlatform.isMusl "-musl")
-    (lib.optionalString enableNativeBignum "-native-bignum")
-  ];
-
-in
-
-# C compiler, bintools and LLVM are used at build time, but will also leak into
-# the resulting GHC's settings file and used at runtime. This means that we are
-# currently only able to build GHC if hostPlatform == buildPlatform.
-assert targetCC == pkgsHostTarget.targetPackages.stdenv.cc;
-assert buildTargetLlvmPackages.llvm == llvmPackages.llvm;
-assert stdenv.targetPlatform.isDarwin -> buildTargetLlvmPackages.clang == llvmPackages.clang;
-
-stdenv.mkDerivation (rec {
-  version = "9.4.2";
-  pname = "${targetPrefix}ghc${variantSuffix}";
-
-  src = fetchurl {
-    url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
-    sha256 = "7227ef3b5e15a0d70b8f1a43aec32867e2a9b2d857cc0ed556aeed172d4db3a5";
-  };
-
-  enableParallelBuilding = true;
-
-  outputs = [ "out" "doc" ];
-
-  patches = [
-    # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs
-    # Can be removed if the Cabal library included with ghc backports the linked fix
-    (fetchpatch {
-      url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch";
-      stripLen = 1;
-      extraPrefix = "libraries/Cabal/";
-      sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY=";
-    })
-
-    # Fix docs build with sphinx >= 6.0
-    # https://gitlab.haskell.org/ghc/ghc/-/issues/22766
-    (fetchpatch {
-      name = "ghc-docs-sphinx-6.0.patch";
-      url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch";
-      sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv";
-    })
-    # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
-    ./docs-sphinx-7.patch
-  ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [
-    # Prevent the paths module from emitting symbols that we don't use
-    # when building with separate outputs.
-    #
-    # These cause problems as they're not eliminated by GHC's dead code
-    # elimination on aarch64-darwin. (see
-    # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
-  ];
-
-  postPatch = "patchShebangs .";
-
-  # GHC needs the locale configured during the Haddock phase.
-  LANG = "en_US.UTF-8";
-
-  # GHC is a bit confused on its cross terminology.
-  # TODO(@sternenseemann): investigate coreutils dependencies and pass absolute paths
-  preConfigure = ''
-    for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
-      export "''${env#TARGET_}=''${!env}"
-    done
-    # GHC is a bit confused on its cross terminology, as these would normally be
-    # the *host* tools.
-    export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
-    export CXX="${targetCC}/bin/${targetCC.targetPrefix}c++"
-    # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
-    export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
-    export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
-    export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
-    export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
-    export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
-    export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
-    export STRIP="${bintoolsFor.strip}/bin/${bintoolsFor.strip.targetPrefix}strip"
-  '' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") ''
-    export OTOOL="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}otool"
-    export INSTALL_NAME_TOOL="${bintoolsFor.install_name_tool}/bin/${bintoolsFor.install_name_tool.targetPrefix}install_name_tool"
-  '' + lib.optionalString useLLVM ''
-    export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc"
-    export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt"
-  '' + lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) ''
-    # LLVM backend on Darwin needs clang: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/codegens.html#llvm-code-generator-fllvm
-    export CLANG="${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang"
-  '' + ''
-
-    echo -n "${buildMK}" > mk/build.mk
-
-    sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
-  '' + lib.optionalString (stdenv.isLinux && hostPlatform.libc == "glibc") ''
-    export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
-  '' + lib.optionalString stdenv.isDarwin ''
-    export NIX_LDFLAGS+=" -no_dtrace_dof"
-
-    # GHC tries the host xattr /usr/bin/xattr by default which fails since it expects python to be 2.7
-    export XATTR=${lib.getBin xattr}/bin/xattr
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
-  '' + lib.optionalString targetPlatform.isMusl ''
-      echo "patching llvm-targets for musl targets..."
-      echo "Cloning these existing '*-linux-gnu*' targets:"
-      grep linux-gnu llvm-targets | sed 's/^/  /'
-      echo "(go go gadget sed)"
-      sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
-      echo "llvm-targets now contains these '*-linux-musl*' targets:"
-      grep linux-musl llvm-targets | sed 's/^/  /'
-
-      echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
-      # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
-      for x in configure aclocal.m4; do
-        substituteInPlace $x \
-          --replace '*-android*|*-gnueabi*)' \
-                    '*-android*|*-gnueabi*|*-musleabi*)'
-      done
-  ''
-  # HACK: allow bootstrapping with GHC 8.10 which works fine, as we don't have
-  # binary 9.0 packaged. Bootstrapping with 9.2 is broken without hadrian.
-  + ''
-    substituteInPlace configure --replace \
-      'MinBootGhcVersion="9.0"' \
-      'MinBootGhcVersion="8.10"'
-  '';
-
-  # TODO(@Ericson2314): Always pass "--target" and always prefix.
-  configurePlatforms = [ "build" "host" ]
-    ++ lib.optional (targetPlatform != hostPlatform) "target";
-
-  # `--with` flags for libraries needed for RTS linker
-  configureFlags = [
-    "--datadir=$doc/share/doc/ghc"
-    "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
-  ] ++ lib.optionals (libffi != null) [
-    "--with-system-libffi"
-    "--with-ffi-includes=${targetPackages.libffi.dev}/include"
-    "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && !enableNativeBignum) [
-    "--with-gmp-includes=${targetPackages.gmp.dev}/include"
-    "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
-    "--with-iconv-includes=${libiconv}/include"
-    "--with-iconv-libraries=${libiconv}/lib"
-  ] ++ lib.optionals (targetPlatform != hostPlatform) [
-    "--enable-bootstrap-with-devel-snapshot"
-  ] ++ lib.optionals useLdGold [
-    "CFLAGS=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
-  ] ++ lib.optionals (disableLargeAddressSpace) [
-    "--disable-large-address-space"
-  ];
-
-  # Make sure we never relax`$PATH` and hooks support for compatibility.
-  strictDeps = true;
-
-  # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
-  dontAddExtraLibs = true;
-
-  nativeBuildInputs = [
-    perl autoconf automake m4 python3
-    ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    autoSignDarwinBinariesHook
-  ] ++ lib.optionals enableDocs [
-    sphinx
-  ];
-
-  # For building runtime libs
-  depsBuildTarget = toolsForTarget;
-
-  buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
-
-  depsTargetTarget = map lib.getDev (libDeps targetPlatform);
-  depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
-
-  # required, because otherwise all symbols from HSffi.o are stripped, and
-  # that in turn causes GHCi to abort
-  stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
-
-  checkTarget = "test";
-
-  hardeningDisable =
-    [ "format" ]
-    # In nixpkgs, musl based builds currently enable `pie` hardening by default
-    # (see `defaultHardeningFlags` in `make-derivation.nix`).
-    # But GHC cannot currently produce outputs that are ready for `-pie` linking.
-    # Thus, disable `pie` hardening, otherwise `recompile with -fPIE` errors appear.
-    # See:
-    # * https://github.com/NixOS/nixpkgs/issues/129247
-    # * https://gitlab.haskell.org/ghc/ghc/-/issues/19580
-    ++ lib.optional stdenv.targetPlatform.isMusl "pie";
-
-  # big-parallel allows us to build with more than 2 cores on
-  # Hydra which already warrants a significant speedup
-  requiredSystemFeatures = [ "big-parallel" ];
-
-  postInstall = ''
-    # Install the bash completion file.
-    install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
-  '';
-
-  passthru = {
-    inherit bootPkgs targetPrefix;
-
-    inherit llvmPackages;
-    inherit enableShared;
-
-    # This is used by the haskell builder to query
-    # the presence of the haddock program.
-    hasHaddock = enableHaddockProgram;
-
-    # Our Cabal compiler name
-    haskellCompilerName = "ghc-${version}";
-  };
-
-  meta = {
-    homepage = "http://haskell.org/ghc";
-    description = "The Glasgow Haskell Compiler";
-    maintainers = with lib.maintainers; [
-      guibou
-    ] ++ lib.teams.haskell.members;
-    timeout = 24 * 3600;
-    inherit (ghc.meta) license platforms;
-  };
-
-} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
-  dontStrip = true;
-  dontPatchELF = true;
-  noAuditTmpdir = true;
-})
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix
deleted file mode 100644
index 7dc90444d008..000000000000
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix
+++ /dev/null
@@ -1,398 +0,0 @@
-# DO NOT port this expression to hadrian. It is not possible to build a GHC
-# cross compiler with 9.4.* and hadrian.
-{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages
-
-# build-tools
-, bootPkgs
-, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx
-, xattr, autoSignDarwinBinariesHook
-, bash
-
-, libiconv ? null, ncurses
-, glibcLocales ? null
-
-, # GHC can be built with system libffi or a bundled one.
-  libffi ? null
-
-, useLLVM ? !(stdenv.targetPlatform.isx86
-              || stdenv.targetPlatform.isPower
-              || stdenv.targetPlatform.isSparc
-              || stdenv.targetPlatform.isAarch64)
-, # LLVM is conceptually a run-time-only dependency, but for
-  # non-x86, we need LLVM to bootstrap later stages, so it becomes a
-  # build-time dependency too.
-  buildTargetLlvmPackages, llvmPackages
-
-, # If enabled, GHC will be built with the GPL-free but slightly slower native
-  # bignum backend instead of the faster but GPLed gmp backend.
-  enableNativeBignum ? !(lib.meta.availableOn stdenv.hostPlatform gmp
-                         && lib.meta.availableOn stdenv.targetPlatform gmp)
-, gmp
-
-, # If enabled, use -fPIC when compiling static libs.
-  enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
-
-, enableProfiledLibs ? true
-
-, # Whether to build dynamic libs for the standard library (on the target
-  # platform). Static libs are always built.
-  enableShared ? with stdenv.targetPlatform; !isWindows && !useiOSPrebuilt && !isStatic
-
-, # Whether to build terminfo.
-  enableTerminfo ? !stdenv.targetPlatform.isWindows
-
-, # What flavour to build. An empty string indicates no
-  # specific flavour and falls back to ghc default values.
-  ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
-    (if useLLVM then "perf-cross" else "perf-cross-ncg")
-
-, #  Whether to build sphinx documentation.
-  enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
-  )
-
-, enableHaddockProgram ?
-    # Disabled for cross; see note [HADDOCK_DOCS].
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-
-, # Whether to disable the large address space allocator
-  # necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
-  disableLargeAddressSpace ? stdenv.targetPlatform.isiOS
-}:
-
-assert !enableNativeBignum -> gmp != null;
-
-# Cross cannot currently build the `haddock` program for silly reasons,
-# see note [HADDOCK_DOCS].
-assert (stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram;
-
-let
-  inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-  inherit (bootPkgs) ghc;
-
-  # TODO(@Ericson2314) Make unconditional
-  targetPrefix = lib.optionalString
-    (targetPlatform != hostPlatform)
-    "${targetPlatform.config}-";
-
-  buildMK = ''
-    BuildFlavour = ${ghcFlavour}
-    ifneq \"\$(BuildFlavour)\" \"\"
-    include mk/flavours/\$(BuildFlavour).mk
-    endif
-    BUILD_SPHINX_HTML = ${if enableDocs then "YES" else "NO"}
-    BUILD_SPHINX_PDF = NO
-  '' +
-  # Note [HADDOCK_DOCS]:
-  # Unfortunately currently `HADDOCK_DOCS` controls both whether the `haddock`
-  # program is built (which we generally always want to have a complete GHC install)
-  # and whether it is run on the GHC sources to generate hyperlinked source code
-  # (which is impossible for cross-compilation); see:
-  # https://gitlab.haskell.org/ghc/ghc/-/issues/20077
-  # This implies that currently a cross-compiled GHC will never have a `haddock`
-  # program, so it can never generate haddocks for any packages.
-  # If this is solved in the future, we'd like to unconditionally
-  # build the haddock program (removing the `enableHaddockProgram` option).
-  ''
-    HADDOCK_DOCS = ${if enableHaddockProgram then "YES" else "NO"}
-    # Build haddocks for boot packages with hyperlinking
-    EXTRA_HADDOCK_OPTS += --hyperlinked-source --quickjump
-
-    DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
-    BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
-  '' + lib.optionalString (targetPlatform != hostPlatform) ''
-    Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
-    CrossCompilePrefix = ${targetPrefix}
-  '' + lib.optionalString (!enableProfiledLibs) ''
-    GhcLibWays = "v dyn"
-  '' +
-  # -fexternal-dynamic-refs apparently (because it's not clear from the documentation)
-  # makes the GHC RTS able to load static libraries, which may be needed for TemplateHaskell.
-  # This solution was described in https://www.tweag.io/blog/2020-09-30-bazel-static-haskell
-  lib.optionalString enableRelocatedStaticLibs ''
-    GhcLibHcOpts += -fPIC -fexternal-dynamic-refs
-    GhcRtsHcOpts += -fPIC -fexternal-dynamic-refs
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    EXTRA_CC_OPTS += -std=gnu99
-  '';
-
-  # Splicer will pull out correct variations
-  libDeps = platform: lib.optional enableTerminfo ncurses
-    ++ [libffi]
-    ++ lib.optional (!enableNativeBignum) gmp
-    ++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
-
-  # TODO(@sternenseemann): is buildTarget LLVM unnecessary?
-  # GHC doesn't seem to have {LLC,OPT}_HOST
-  toolsForTarget = [
-    pkgsBuildTarget.targetPackages.stdenv.cc
-  ] ++ lib.optional useLLVM buildTargetLlvmPackages.llvm;
-
-  targetCC = builtins.head toolsForTarget;
-
-  # Sometimes we have to dispatch between the bintools wrapper and the unwrapped
-  # derivation for certain tools depending on the platform.
-  bintoolsFor = {
-    # GHC needs install_name_tool on all darwin platforms. On aarch64-darwin it is
-    # part of the bintools wrapper (due to codesigning requirements), but not on
-    # x86_64-darwin.
-    install_name_tool =
-      if stdenv.targetPlatform.isAarch64
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-    # Same goes for strip.
-    strip =
-      # TODO(@sternenseemann): also use wrapper if linker == "bfd" or "gold"
-      if stdenv.targetPlatform.isAarch64 && stdenv.targetPlatform.isDarwin
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-  };
-
-  # Use gold either following the default, or to avoid the BFD linker due to some bugs / perf issues.
-  # But we cannot avoid BFD when using musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
-  # see #84670 and #49071 for more background.
-  useLdGold = targetPlatform.linker == "gold" ||
-    (targetPlatform.linker == "bfd" && (targetCC.bintools.bintools.hasGold or false) && !targetPlatform.isMusl);
-
-  # Makes debugging easier to see which variant is at play in `nix-store -q --tree`.
-  variantSuffix = lib.concatStrings [
-    (lib.optionalString stdenv.hostPlatform.isMusl "-musl")
-    (lib.optionalString enableNativeBignum "-native-bignum")
-  ];
-
-in
-
-# C compiler, bintools and LLVM are used at build time, but will also leak into
-# the resulting GHC's settings file and used at runtime. This means that we are
-# currently only able to build GHC if hostPlatform == buildPlatform.
-assert targetCC == pkgsHostTarget.targetPackages.stdenv.cc;
-assert buildTargetLlvmPackages.llvm == llvmPackages.llvm;
-assert stdenv.targetPlatform.isDarwin -> buildTargetLlvmPackages.clang == llvmPackages.clang;
-
-stdenv.mkDerivation (rec {
-  version = "9.4.3";
-  pname = "${targetPrefix}ghc${variantSuffix}";
-
-  src = fetchurl {
-    url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
-    sha256 = "eaf63949536ede50ee39179f2299d5094eb9152d87cc6fb2175006bc98e8905a";
-  };
-
-  enableParallelBuilding = true;
-
-  outputs = [ "out" "doc" ];
-
-  patches = [
-    # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs
-    # Can be removed if the Cabal library included with ghc backports the linked fix
-    (fetchpatch {
-      url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch";
-      stripLen = 1;
-      extraPrefix = "libraries/Cabal/";
-      sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY=";
-    })
-
-    # Fix docs build with sphinx >= 6.0
-    # https://gitlab.haskell.org/ghc/ghc/-/issues/22766
-    (fetchpatch {
-      name = "ghc-docs-sphinx-6.0.patch";
-      url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch";
-      sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv";
-    })
-    # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
-    ./docs-sphinx-7.patch
-  ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [
-    # Prevent the paths module from emitting symbols that we don't use
-    # when building with separate outputs.
-    #
-    # These cause problems as they're not eliminated by GHC's dead code
-    # elimination on aarch64-darwin. (see
-    # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
-  ];
-
-  postPatch = "patchShebangs .";
-
-  # GHC needs the locale configured during the Haddock phase.
-  LANG = "en_US.UTF-8";
-
-  # GHC is a bit confused on its cross terminology.
-  # TODO(@sternenseemann): investigate coreutils dependencies and pass absolute paths
-  preConfigure = ''
-    for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
-      export "''${env#TARGET_}=''${!env}"
-    done
-    # GHC is a bit confused on its cross terminology, as these would normally be
-    # the *host* tools.
-    export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
-    export CXX="${targetCC}/bin/${targetCC.targetPrefix}c++"
-    # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
-    export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
-    export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
-    export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
-    export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
-    export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
-    export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
-    export STRIP="${bintoolsFor.strip}/bin/${bintoolsFor.strip.targetPrefix}strip"
-  '' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") ''
-    export OTOOL="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}otool"
-    export INSTALL_NAME_TOOL="${bintoolsFor.install_name_tool}/bin/${bintoolsFor.install_name_tool.targetPrefix}install_name_tool"
-  '' + lib.optionalString useLLVM ''
-    export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc"
-    export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt"
-  '' + lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) ''
-    # LLVM backend on Darwin needs clang: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/codegens.html#llvm-code-generator-fllvm
-    export CLANG="${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang"
-  '' + ''
-
-    echo -n "${buildMK}" > mk/build.mk
-
-    sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
-  '' + lib.optionalString (stdenv.isLinux && hostPlatform.libc == "glibc") ''
-    export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
-  '' + lib.optionalString stdenv.isDarwin ''
-    export NIX_LDFLAGS+=" -no_dtrace_dof"
-
-    # GHC tries the host xattr /usr/bin/xattr by default which fails since it expects python to be 2.7
-    export XATTR=${lib.getBin xattr}/bin/xattr
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
-  '' + lib.optionalString targetPlatform.isMusl ''
-      echo "patching llvm-targets for musl targets..."
-      echo "Cloning these existing '*-linux-gnu*' targets:"
-      grep linux-gnu llvm-targets | sed 's/^/  /'
-      echo "(go go gadget sed)"
-      sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
-      echo "llvm-targets now contains these '*-linux-musl*' targets:"
-      grep linux-musl llvm-targets | sed 's/^/  /'
-
-      echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
-      # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
-      for x in configure aclocal.m4; do
-        substituteInPlace $x \
-          --replace '*-android*|*-gnueabi*)' \
-                    '*-android*|*-gnueabi*|*-musleabi*)'
-      done
-  ''
-  # HACK: allow bootstrapping with GHC 8.10 which works fine, as we don't have
-  # binary 9.0 packaged. Bootstrapping with 9.2 is broken without hadrian.
-  + ''
-    substituteInPlace configure --replace \
-      'MinBootGhcVersion="9.0"' \
-      'MinBootGhcVersion="8.10"'
-  '';
-
-  # TODO(@Ericson2314): Always pass "--target" and always prefix.
-  configurePlatforms = [ "build" "host" ]
-    ++ lib.optional (targetPlatform != hostPlatform) "target";
-
-  # `--with` flags for libraries needed for RTS linker
-  configureFlags = [
-    "--datadir=$doc/share/doc/ghc"
-    "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
-  ] ++ lib.optionals (libffi != null) [
-    "--with-system-libffi"
-    "--with-ffi-includes=${targetPackages.libffi.dev}/include"
-    "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && !enableNativeBignum) [
-    "--with-gmp-includes=${targetPackages.gmp.dev}/include"
-    "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
-    "--with-iconv-includes=${libiconv}/include"
-    "--with-iconv-libraries=${libiconv}/lib"
-  ] ++ lib.optionals (targetPlatform != hostPlatform) [
-    "--enable-bootstrap-with-devel-snapshot"
-  ] ++ lib.optionals useLdGold [
-    "CFLAGS=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
-  ] ++ lib.optionals (disableLargeAddressSpace) [
-    "--disable-large-address-space"
-  ];
-
-  # Make sure we never relax`$PATH` and hooks support for compatibility.
-  strictDeps = true;
-
-  # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
-  dontAddExtraLibs = true;
-
-  nativeBuildInputs = [
-    perl autoconf automake m4 python3
-    ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    autoSignDarwinBinariesHook
-  ] ++ lib.optionals enableDocs [
-    sphinx
-  ];
-
-  # For building runtime libs
-  depsBuildTarget = toolsForTarget;
-
-  buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
-
-  depsTargetTarget = map lib.getDev (libDeps targetPlatform);
-  depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
-
-  # required, because otherwise all symbols from HSffi.o are stripped, and
-  # that in turn causes GHCi to abort
-  stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
-
-  checkTarget = "test";
-
-  hardeningDisable =
-    [ "format" ]
-    # In nixpkgs, musl based builds currently enable `pie` hardening by default
-    # (see `defaultHardeningFlags` in `make-derivation.nix`).
-    # But GHC cannot currently produce outputs that are ready for `-pie` linking.
-    # Thus, disable `pie` hardening, otherwise `recompile with -fPIE` errors appear.
-    # See:
-    # * https://github.com/NixOS/nixpkgs/issues/129247
-    # * https://gitlab.haskell.org/ghc/ghc/-/issues/19580
-    ++ lib.optional stdenv.targetPlatform.isMusl "pie";
-
-  # big-parallel allows us to build with more than 2 cores on
-  # Hydra which already warrants a significant speedup
-  requiredSystemFeatures = [ "big-parallel" ];
-
-  postInstall = ''
-    # Install the bash completion file.
-    install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
-  '';
-
-  passthru = {
-    inherit bootPkgs targetPrefix;
-
-    inherit llvmPackages;
-    inherit enableShared;
-
-    # This is used by the haskell builder to query
-    # the presence of the haddock program.
-    hasHaddock = enableHaddockProgram;
-
-    # Our Cabal compiler name
-    haskellCompilerName = "ghc-${version}";
-  };
-
-  meta = {
-    homepage = "http://haskell.org/ghc";
-    description = "The Glasgow Haskell Compiler";
-    maintainers = with lib.maintainers; [
-      guibou
-    ] ++ lib.teams.haskell.members;
-    timeout = 24 * 3600;
-    inherit (ghc.meta) license platforms;
-  };
-
-} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
-  dontStrip = true;
-  dontPatchELF = true;
-  noAuditTmpdir = true;
-})
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix
deleted file mode 100644
index 7a06d124dfdb..000000000000
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix
+++ /dev/null
@@ -1,398 +0,0 @@
-# DO NOT port this expression to hadrian. It is not possible to build a GHC
-# cross compiler with 9.4.* and hadrian.
-{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages
-
-# build-tools
-, bootPkgs
-, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx
-, xattr, autoSignDarwinBinariesHook
-, bash
-
-, libiconv ? null, ncurses
-, glibcLocales ? null
-
-, # GHC can be built with system libffi or a bundled one.
-  libffi ? null
-
-, useLLVM ? !(stdenv.targetPlatform.isx86
-              || stdenv.targetPlatform.isPower
-              || stdenv.targetPlatform.isSparc
-              || stdenv.targetPlatform.isAarch64)
-, # LLVM is conceptually a run-time-only dependency, but for
-  # non-x86, we need LLVM to bootstrap later stages, so it becomes a
-  # build-time dependency too.
-  buildTargetLlvmPackages, llvmPackages
-
-, # If enabled, GHC will be built with the GPL-free but slightly slower native
-  # bignum backend instead of the faster but GPLed gmp backend.
-  enableNativeBignum ? !(lib.meta.availableOn stdenv.hostPlatform gmp
-                         && lib.meta.availableOn stdenv.targetPlatform gmp)
-, gmp
-
-, # If enabled, use -fPIC when compiling static libs.
-  enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform
-
-, enableProfiledLibs ? true
-
-, # Whether to build dynamic libs for the standard library (on the target
-  # platform). Static libs are always built.
-  enableShared ? with stdenv.targetPlatform; !isWindows && !useiOSPrebuilt && !isStatic
-
-, # Whether to build terminfo.
-  enableTerminfo ? !stdenv.targetPlatform.isWindows
-
-, # What flavour to build. An empty string indicates no
-  # specific flavour and falls back to ghc default values.
-  ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
-    (if useLLVM then "perf-cross" else "perf-cross-ncg")
-
-, #  Whether to build sphinx documentation.
-  enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
-  )
-
-, enableHaddockProgram ?
-    # Disabled for cross; see note [HADDOCK_DOCS].
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-
-, # Whether to disable the large address space allocator
-  # necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
-  disableLargeAddressSpace ? stdenv.targetPlatform.isiOS
-}:
-
-assert !enableNativeBignum -> gmp != null;
-
-# Cross cannot currently build the `haddock` program for silly reasons,
-# see note [HADDOCK_DOCS].
-assert (stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram;
-
-let
-  inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-  inherit (bootPkgs) ghc;
-
-  # TODO(@Ericson2314) Make unconditional
-  targetPrefix = lib.optionalString
-    (targetPlatform != hostPlatform)
-    "${targetPlatform.config}-";
-
-  buildMK = ''
-    BuildFlavour = ${ghcFlavour}
-    ifneq \"\$(BuildFlavour)\" \"\"
-    include mk/flavours/\$(BuildFlavour).mk
-    endif
-    BUILD_SPHINX_HTML = ${if enableDocs then "YES" else "NO"}
-    BUILD_SPHINX_PDF = NO
-  '' +
-  # Note [HADDOCK_DOCS]:
-  # Unfortunately currently `HADDOCK_DOCS` controls both whether the `haddock`
-  # program is built (which we generally always want to have a complete GHC install)
-  # and whether it is run on the GHC sources to generate hyperlinked source code
-  # (which is impossible for cross-compilation); see:
-  # https://gitlab.haskell.org/ghc/ghc/-/issues/20077
-  # This implies that currently a cross-compiled GHC will never have a `haddock`
-  # program, so it can never generate haddocks for any packages.
-  # If this is solved in the future, we'd like to unconditionally
-  # build the haddock program (removing the `enableHaddockProgram` option).
-  ''
-    HADDOCK_DOCS = ${if enableHaddockProgram then "YES" else "NO"}
-    # Build haddocks for boot packages with hyperlinking
-    EXTRA_HADDOCK_OPTS += --hyperlinked-source --quickjump
-
-    DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
-    BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
-  '' + lib.optionalString (targetPlatform != hostPlatform) ''
-    Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
-    CrossCompilePrefix = ${targetPrefix}
-  '' + lib.optionalString (!enableProfiledLibs) ''
-    GhcLibWays = "v dyn"
-  '' +
-  # -fexternal-dynamic-refs apparently (because it's not clear from the documentation)
-  # makes the GHC RTS able to load static libraries, which may be needed for TemplateHaskell.
-  # This solution was described in https://www.tweag.io/blog/2020-09-30-bazel-static-haskell
-  lib.optionalString enableRelocatedStaticLibs ''
-    GhcLibHcOpts += -fPIC -fexternal-dynamic-refs
-    GhcRtsHcOpts += -fPIC -fexternal-dynamic-refs
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    EXTRA_CC_OPTS += -std=gnu99
-  '';
-
-  # Splicer will pull out correct variations
-  libDeps = platform: lib.optional enableTerminfo ncurses
-    ++ [libffi]
-    ++ lib.optional (!enableNativeBignum) gmp
-    ++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
-
-  # TODO(@sternenseemann): is buildTarget LLVM unnecessary?
-  # GHC doesn't seem to have {LLC,OPT}_HOST
-  toolsForTarget = [
-    pkgsBuildTarget.targetPackages.stdenv.cc
-  ] ++ lib.optional useLLVM buildTargetLlvmPackages.llvm;
-
-  targetCC = builtins.head toolsForTarget;
-
-  # Sometimes we have to dispatch between the bintools wrapper and the unwrapped
-  # derivation for certain tools depending on the platform.
-  bintoolsFor = {
-    # GHC needs install_name_tool on all darwin platforms. On aarch64-darwin it is
-    # part of the bintools wrapper (due to codesigning requirements), but not on
-    # x86_64-darwin.
-    install_name_tool =
-      if stdenv.targetPlatform.isAarch64
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-    # Same goes for strip.
-    strip =
-      # TODO(@sternenseemann): also use wrapper if linker == "bfd" or "gold"
-      if stdenv.targetPlatform.isAarch64 && stdenv.targetPlatform.isDarwin
-      then targetCC.bintools
-      else targetCC.bintools.bintools;
-  };
-
-  # Use gold either following the default, or to avoid the BFD linker due to some bugs / perf issues.
-  # But we cannot avoid BFD when using musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856
-  # see #84670 and #49071 for more background.
-  useLdGold = targetPlatform.linker == "gold" ||
-    (targetPlatform.linker == "bfd" && (targetCC.bintools.bintools.hasGold or false) && !targetPlatform.isMusl);
-
-  # Makes debugging easier to see which variant is at play in `nix-store -q --tree`.
-  variantSuffix = lib.concatStrings [
-    (lib.optionalString stdenv.hostPlatform.isMusl "-musl")
-    (lib.optionalString enableNativeBignum "-native-bignum")
-  ];
-
-in
-
-# C compiler, bintools and LLVM are used at build time, but will also leak into
-# the resulting GHC's settings file and used at runtime. This means that we are
-# currently only able to build GHC if hostPlatform == buildPlatform.
-assert targetCC == pkgsHostTarget.targetPackages.stdenv.cc;
-assert buildTargetLlvmPackages.llvm == llvmPackages.llvm;
-assert stdenv.targetPlatform.isDarwin -> buildTargetLlvmPackages.clang == llvmPackages.clang;
-
-stdenv.mkDerivation (rec {
-  version = "9.4.4";
-  pname = "${targetPrefix}ghc${variantSuffix}";
-
-  src = fetchurl {
-    url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
-    sha256 = "e8cef25a6ded1531cda7a90488d0cfb6d780657d16636daa59430be030cd67e2";
-  };
-
-  enableParallelBuilding = true;
-
-  outputs = [ "out" "doc" ];
-
-  patches = [
-    # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs
-    # Can be removed if the Cabal library included with ghc backports the linked fix
-    (fetchpatch {
-      url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch";
-      stripLen = 1;
-      extraPrefix = "libraries/Cabal/";
-      sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY=";
-    })
-
-    # Fix docs build with sphinx >= 6.0
-    # https://gitlab.haskell.org/ghc/ghc/-/issues/22766
-    (fetchpatch {
-      name = "ghc-docs-sphinx-6.0.patch";
-      url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch";
-      sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv";
-    })
-    # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
-    ./docs-sphinx-7.patch
-  ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [
-    # Prevent the paths module from emitting symbols that we don't use
-    # when building with separate outputs.
-    #
-    # These cause problems as they're not eliminated by GHC's dead code
-    # elimination on aarch64-darwin. (see
-    # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
-  ];
-
-  postPatch = "patchShebangs .";
-
-  # GHC needs the locale configured during the Haddock phase.
-  LANG = "en_US.UTF-8";
-
-  # GHC is a bit confused on its cross terminology.
-  # TODO(@sternenseemann): investigate coreutils dependencies and pass absolute paths
-  preConfigure = ''
-    for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
-      export "''${env#TARGET_}=''${!env}"
-    done
-    # GHC is a bit confused on its cross terminology, as these would normally be
-    # the *host* tools.
-    export CC="${targetCC}/bin/${targetCC.targetPrefix}cc"
-    export CXX="${targetCC}/bin/${targetCC.targetPrefix}c++"
-    # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177
-    export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${lib.optionalString useLdGold ".gold"}"
-    export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as"
-    export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar"
-    export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm"
-    export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib"
-    export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf"
-    export STRIP="${bintoolsFor.strip}/bin/${bintoolsFor.strip.targetPrefix}strip"
-  '' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") ''
-    export OTOOL="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}otool"
-    export INSTALL_NAME_TOOL="${bintoolsFor.install_name_tool}/bin/${bintoolsFor.install_name_tool.targetPrefix}install_name_tool"
-  '' + lib.optionalString useLLVM ''
-    export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc"
-    export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt"
-  '' + lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) ''
-    # LLVM backend on Darwin needs clang: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/codegens.html#llvm-code-generator-fllvm
-    export CLANG="${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang"
-  '' + ''
-
-    echo -n "${buildMK}" > mk/build.mk
-
-    sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
-  '' + lib.optionalString (stdenv.isLinux && hostPlatform.libc == "glibc") ''
-    export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
-  '' + lib.optionalString stdenv.isDarwin ''
-    export NIX_LDFLAGS+=" -no_dtrace_dof"
-
-    # GHC tries the host xattr /usr/bin/xattr by default which fails since it expects python to be 2.7
-    export XATTR=${lib.getBin xattr}/bin/xattr
-  '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
-    sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
-  '' + lib.optionalString targetPlatform.isMusl ''
-      echo "patching llvm-targets for musl targets..."
-      echo "Cloning these existing '*-linux-gnu*' targets:"
-      grep linux-gnu llvm-targets | sed 's/^/  /'
-      echo "(go go gadget sed)"
-      sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets
-      echo "llvm-targets now contains these '*-linux-musl*' targets:"
-      grep linux-musl llvm-targets | sed 's/^/  /'
-
-      echo "And now patching to preserve '-musleabi' as done with '-gnueabi'"
-      # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen)
-      for x in configure aclocal.m4; do
-        substituteInPlace $x \
-          --replace '*-android*|*-gnueabi*)' \
-                    '*-android*|*-gnueabi*|*-musleabi*)'
-      done
-  ''
-  # HACK: allow bootstrapping with GHC 8.10 which works fine, as we don't have
-  # binary 9.0 packaged. Bootstrapping with 9.2 is broken without hadrian.
-  + ''
-    substituteInPlace configure --replace \
-      'MinBootGhcVersion="9.0"' \
-      'MinBootGhcVersion="8.10"'
-  '';
-
-  # TODO(@Ericson2314): Always pass "--target" and always prefix.
-  configurePlatforms = [ "build" "host" ]
-    ++ lib.optional (targetPlatform != hostPlatform) "target";
-
-  # `--with` flags for libraries needed for RTS linker
-  configureFlags = [
-    "--datadir=$doc/share/doc/ghc"
-    "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
-  ] ++ lib.optionals (libffi != null) [
-    "--with-system-libffi"
-    "--with-ffi-includes=${targetPackages.libffi.dev}/include"
-    "--with-ffi-libraries=${targetPackages.libffi.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && !enableNativeBignum) [
-    "--with-gmp-includes=${targetPackages.gmp.dev}/include"
-    "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
-  ] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
-    "--with-iconv-includes=${libiconv}/include"
-    "--with-iconv-libraries=${libiconv}/lib"
-  ] ++ lib.optionals (targetPlatform != hostPlatform) [
-    "--enable-bootstrap-with-devel-snapshot"
-  ] ++ lib.optionals useLdGold [
-    "CFLAGS=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold"
-    "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
-  ] ++ lib.optionals (disableLargeAddressSpace) [
-    "--disable-large-address-space"
-  ];
-
-  # Make sure we never relax`$PATH` and hooks support for compatibility.
-  strictDeps = true;
-
-  # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself.
-  dontAddExtraLibs = true;
-
-  nativeBuildInputs = [
-    perl autoconf automake m4 python3
-    ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    autoSignDarwinBinariesHook
-  ] ++ lib.optionals enableDocs [
-    sphinx
-  ];
-
-  # For building runtime libs
-  depsBuildTarget = toolsForTarget;
-
-  buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
-
-  depsTargetTarget = map lib.getDev (libDeps targetPlatform);
-  depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
-
-  # required, because otherwise all symbols from HSffi.o are stripped, and
-  # that in turn causes GHCi to abort
-  stripDebugFlags = [ "-S" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols";
-
-  checkTarget = "test";
-
-  hardeningDisable =
-    [ "format" ]
-    # In nixpkgs, musl based builds currently enable `pie` hardening by default
-    # (see `defaultHardeningFlags` in `make-derivation.nix`).
-    # But GHC cannot currently produce outputs that are ready for `-pie` linking.
-    # Thus, disable `pie` hardening, otherwise `recompile with -fPIE` errors appear.
-    # See:
-    # * https://github.com/NixOS/nixpkgs/issues/129247
-    # * https://gitlab.haskell.org/ghc/ghc/-/issues/19580
-    ++ lib.optional stdenv.targetPlatform.isMusl "pie";
-
-  # big-parallel allows us to build with more than 2 cores on
-  # Hydra which already warrants a significant speedup
-  requiredSystemFeatures = [ "big-parallel" ];
-
-  postInstall = ''
-    # Install the bash completion file.
-    install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
-  '';
-
-  passthru = {
-    inherit bootPkgs targetPrefix;
-
-    inherit llvmPackages;
-    inherit enableShared;
-
-    # This is used by the haskell builder to query
-    # the presence of the haddock program.
-    hasHaddock = enableHaddockProgram;
-
-    # Our Cabal compiler name
-    haskellCompilerName = "ghc-${version}";
-  };
-
-  meta = {
-    homepage = "http://haskell.org/ghc";
-    description = "The Glasgow Haskell Compiler";
-    maintainers = with lib.maintainers; [
-      guibou
-    ] ++ lib.teams.haskell.members;
-    timeout = 24 * 3600;
-    inherit (ghc.meta) license platforms;
-  };
-
-} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
-  dontStrip = true;
-  dontPatchELF = true;
-  noAuditTmpdir = true;
-})
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix
index 522eab95794f..9670d4a4fd57 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix
@@ -48,12 +48,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -215,7 +212,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix
index affebd95763e..f971f4e5a309 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix
@@ -48,12 +48,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -211,7 +208,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.7.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.7.nix
index 705b85fb1159..ac060dce91d0 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.7.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.7.nix
@@ -48,12 +48,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -207,7 +204,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.8.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.8.nix
index e915c549dc62..db79b72830d5 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/9.4.8.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.8.nix
@@ -48,12 +48,9 @@
 
 , #  Whether to build sphinx documentation.
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , enableHaddockProgram ?
@@ -207,7 +204,7 @@ stdenv.mkDerivation (rec {
     # These cause problems as they're not eliminated by GHC's dead code
     # elimination on aarch64-darwin. (see
     # https://github.com/NixOS/nixpkgs/issues/140774 for details).
-    ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
 
   postPatch = "patchShebangs .";
diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.6.2.nix b/nixpkgs/pkgs/development/compilers/ghc/9.6.2.nix
deleted file mode 100644
index a0f764d016b5..000000000000
--- a/nixpkgs/pkgs/development/compilers/ghc/9.6.2.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-import ./common-hadrian.nix rec {
-  version = "9.6.2";
-  sha256 = "1b510c5f8753c3ba24851702c6c9da7d81dc5e47fe3ecb7af39c7c2613abf170";
-}
diff --git a/nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch b/nixpkgs/pkgs/development/compilers/ghc/Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
index 1f7a79cc6885..1f7a79cc6885 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch
+++ b/nixpkgs/pkgs/development/compilers/ghc/Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
diff --git a/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix b/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix
index 8bc9a5835177..f4d2a279a678 100644
--- a/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix
+++ b/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix
@@ -162,13 +162,11 @@
   }
 
 , #  Whether to build sphinx documentation.
+  # TODO(@sternenseemann): Hadrian ignores the --docs flag if finalStage = Stage1
   enableDocs ? (
-    # Docs disabled for musl and cross because it's a large task to keep
-    # all `sphinx` dependencies building in those environments.
-    # `sphinx` pulls in among others:
-    # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM.
-    (stdenv.targetPlatform == stdenv.hostPlatform)
-    && !stdenv.hostPlatform.isMusl
+    # Docs disabled if we are building on musl because it's a large task to keep
+    # all `sphinx` dependencies building in this environment.
+    !stdenv.buildPlatform.isMusl
   )
 
 , # Whether to disable the large address space allocator
@@ -271,7 +269,16 @@ stdenv.mkDerivation ({
     (if lib.versionAtLeast version "9.8"
       then ./docs-sphinx-7-ghc98.patch
       else ./docs-sphinx-7.patch )
+  ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [
+    # Prevent the paths module from emitting symbols that we don't use
+    # when building with separate outputs.
+    #
+    # These cause problems as they're not eliminated by GHC's dead code
+    # elimination on aarch64-darwin. (see
+    # https://github.com/NixOS/nixpkgs/issues/140774 for details).
+    ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
   ];
+
   postPatch = ''
     patchShebangs --build .
   '';
@@ -507,6 +514,10 @@ stdenv.mkDerivation ({
 
     # Expose hadrian used for bootstrapping, for debugging purposes
     inherit hadrian;
+
+    # TODO(@sternenseemann): there's no stage0:exe:haddock target by default,
+    # so haddock isn't available for GHC cross-compilers. Can we fix that?
+    hasHaddock = stdenv.hostPlatform == stdenv.targetPlatform;
   };
 
   meta = {
diff --git a/nixpkgs/pkgs/development/compilers/gleam/default.nix b/nixpkgs/pkgs/development/compilers/gleam/default.nix
index 0f49384d6e7c..ff3fa0de1b72 100644
--- a/nixpkgs/pkgs/development/compilers/gleam/default.nix
+++ b/nixpkgs/pkgs/development/compilers/gleam/default.nix
@@ -12,13 +12,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "gleam";
-  version = "0.32.4";
+  version = "0.33.0";
 
   src = fetchFromGitHub {
     owner = "gleam-lang";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-xl75692d8h1uvh32pf+VJcXwQJwocxDaBNbfolHJKXU=";
+    hash = "sha256-fAI4GKdMg2FlNLqXtqAEpmvi63RApRZdQEWPqEf+Dyw=";
   };
 
   nativeBuildInputs = [ git pkg-config ];
@@ -26,7 +26,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [ openssl ] ++
     lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
 
-  cargoHash = "sha256-SwG7cfoDYGyBu+1qF3+ynnw9rOA6jNExRV9uOVwgO60=";
+  cargoHash = "sha256-Ogjt6lIOvoTPWQhtNFqMgACNrH/27+8JRDlFb//9oUg=";
 
   passthru.updateScript = nix-update-script { };
 
diff --git a/nixpkgs/pkgs/development/compilers/go/1.19.nix b/nixpkgs/pkgs/development/compilers/go/1.19.nix
index 29ffd316747d..d3f60b8f6e98 100644
--- a/nixpkgs/pkgs/development/compilers/go/1.19.nix
+++ b/nixpkgs/pkgs/development/compilers/go/1.19.nix
@@ -192,5 +192,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.bsd3;
     maintainers = teams.golang.members;
     platforms = platforms.darwin ++ platforms.linux;
+    mainProgram = "go";
   };
 })
diff --git a/nixpkgs/pkgs/development/compilers/go/1.20.nix b/nixpkgs/pkgs/development/compilers/go/1.20.nix
index 8a0b86864b9d..0b83a57994c2 100644
--- a/nixpkgs/pkgs/development/compilers/go/1.20.nix
+++ b/nixpkgs/pkgs/development/compilers/go/1.20.nix
@@ -184,5 +184,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.bsd3;
     maintainers = teams.golang.members;
     platforms = platforms.darwin ++ platforms.linux;
+    mainProgram = "go";
   };
 })
diff --git a/nixpkgs/pkgs/development/compilers/go/1.21.nix b/nixpkgs/pkgs/development/compilers/go/1.21.nix
index 715050cc0a73..5dec10e3e477 100644
--- a/nixpkgs/pkgs/development/compilers/go/1.21.nix
+++ b/nixpkgs/pkgs/development/compilers/go/1.21.nix
@@ -184,5 +184,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.bsd3;
     maintainers = teams.golang.members;
     platforms = platforms.darwin ++ platforms.linux;
+    mainProgram = "go";
   };
 })
diff --git a/nixpkgs/pkgs/development/compilers/idris2/default.nix b/nixpkgs/pkgs/development/compilers/idris2/default.nix
index 2760eb268c19..4bac5d33b1eb 100644
--- a/nixpkgs/pkgs/development/compilers/idris2/default.nix
+++ b/nixpkgs/pkgs/development/compilers/idris2/default.nix
@@ -23,13 +23,13 @@ let
 # Uses scheme to bootstrap the build of idris2
 in stdenv.mkDerivation rec {
   pname = "idris2";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "idris-lang";
     repo = "Idris2";
     rev = "v${version}";
-    sha256 = "sha256-80MAGM1IEtI09h5aCYfDL4PRrjGq2gT8OUEibOVk8H4=";
+    sha256 = "sha256-VwveX3fZfrxEsytpbOc5Tm6rySpLFhTt5132J6rmrmM=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/development/compilers/inform6/default.nix b/nixpkgs/pkgs/development/compilers/inform6/default.nix
index 770f26ca443a..107ffaf57233 100644
--- a/nixpkgs/pkgs/development/compilers/inform6/default.nix
+++ b/nixpkgs/pkgs/development/compilers/inform6/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "inform6";
-  version = "6.41-r6";
+  version = "6.41-r10";
 
   src = fetchurl  {
     url = "https://ifarchive.org/if-archive/infocom/compilers/inform6/source/inform-${version}.tar.gz";
-    sha256 = "sha256-YJ3k9c+uYRzI5vMzPXAWvbLoAv45CWxZ21DFsx4UtVc=";
+    sha256 = "sha256-o2eBpzLczNjeCjoEtZsGgfobEwPVj1FEliDKC5qN6Hk=";
   };
 
   buildInputs = [ perl ];
diff --git a/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix b/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix
index 7bb0d3742a97..dcb2bf87692f 100644
--- a/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix
+++ b/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "jasmin-compiler";
-  version = "2023.06.1";
+  version = "2023.06.2";
 
   src = fetchurl {
     url = "https://github.com/jasmin-lang/jasmin/releases/download/v${version}/jasmin-compiler-v${version}.tar.bz2";
-    hash = "sha256-3+eIR8wkBlcUQVDsugHo/rHNHbE2vpE9gutp55kRY4Y=";
+    hash = "sha256-I3+MP2Q7ENOdQdvvCqcyD+I8ImF6c+9HQDpY6QUWuY8=";
   };
 
   sourceRoot = "jasmin-compiler-v${version}/compiler";
diff --git a/nixpkgs/pkgs/development/compilers/julia/1.6-bin.nix b/nixpkgs/pkgs/development/compilers/julia/1.6-bin.nix
index cf72457a1434..dea8a140ee5f 100644
--- a/nixpkgs/pkgs/development/compilers/julia/1.6-bin.nix
+++ b/nixpkgs/pkgs/development/compilers/julia/1.6-bin.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "julia-bin";
-  version = "1.6.6";
+  version = "1.6.7";
 
   src = {
     x86_64-linux = fetchurl {
       url = "https://julialang-s3.julialang.org/bin/linux/x64/${lib.versions.majorMinor version}/julia-${version}-linux-x86_64.tar.gz";
-      sha256 = "0ia9a4h7w0n5rg57fkl1kzcyj500ymfwq3qsd2r7l82288dgfpy2";
+      sha256 = "sha256-bEUi1ZXky80AFXrEWKcviuwBdXBT0gc/mdqjnkQrKjY=";
     };
   }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
@@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
     homepage = "https://julialang.org";
     # Bundled and linked with various GPL code, although Julia itself is MIT.
     license = lib.licenses.gpl2Plus;
-    maintainers = with lib.maintainers; [ raskin ];
+    maintainers = with lib.maintainers; [ raskin thomasjm ];
     platforms = [ "x86_64-linux" ];
     mainProgram = "julia";
   };
diff --git a/nixpkgs/pkgs/development/compilers/julia/1.8-bin.nix b/nixpkgs/pkgs/development/compilers/julia/1.8-bin.nix
index 24eac49df9db..d7a548a8d137 100644
--- a/nixpkgs/pkgs/development/compilers/julia/1.8-bin.nix
+++ b/nixpkgs/pkgs/development/compilers/julia/1.8-bin.nix
@@ -89,7 +89,7 @@ stdenv.mkDerivation rec {
     homepage = "https://julialang.org";
     # Bundled and linked with various GPL code, although Julia itself is MIT.
     license = lib.licenses.gpl2Plus;
-    maintainers = with lib.maintainers; [ raskin nickcao wegank ];
+    maintainers = with lib.maintainers; [ raskin nickcao wegank thomasjm ];
     platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     mainProgram = "julia";
   };
diff --git a/nixpkgs/pkgs/development/compilers/julia/1.8.nix b/nixpkgs/pkgs/development/compilers/julia/1.8.nix
index 1a6d6e7332c1..8bd0b536e149 100644
--- a/nixpkgs/pkgs/development/compilers/julia/1.8.nix
+++ b/nixpkgs/pkgs/development/compilers/julia/1.8.nix
@@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
     description = "High-level performance-oriented dynamical language for technical computing";
     homepage = "https://julialang.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [ nickcao ];
+    maintainers = with maintainers; [ nickcao thomasjm ];
     platforms = [ "x86_64-linux" "aarch64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/development/compilers/julia/1.9-bin.nix b/nixpkgs/pkgs/development/compilers/julia/1.9-bin.nix
index 04e768d0bff8..a52e62139abe 100644
--- a/nixpkgs/pkgs/development/compilers/julia/1.9-bin.nix
+++ b/nixpkgs/pkgs/development/compilers/julia/1.9-bin.nix
@@ -97,7 +97,7 @@ stdenv.mkDerivation rec {
     homepage = "https://julialang.org";
     # Bundled and linked with various GPL code, although Julia itself is MIT.
     license = lib.licenses.gpl2Plus;
-    maintainers = with lib.maintainers; [ raskin nickcao wegank ];
+    maintainers = with lib.maintainers; [ raskin nickcao wegank thomasjm ];
     platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     mainProgram = "julia";
   };
diff --git a/nixpkgs/pkgs/development/compilers/julia/1.9.nix b/nixpkgs/pkgs/development/compilers/julia/1.9.nix
index 715414e7dab9..8c0585fd4e19 100644
--- a/nixpkgs/pkgs/development/compilers/julia/1.9.nix
+++ b/nixpkgs/pkgs/development/compilers/julia/1.9.nix
@@ -79,7 +79,7 @@ stdenv.mkDerivation rec {
     description = "High-level performance-oriented dynamical language for technical computing";
     homepage = "https://julialang.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [ nickcao joshniemela ];
+    maintainers = with maintainers; [ nickcao joshniemela thomasjm ];
     platforms = [ "x86_64-linux" "aarch64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/development/compilers/julia/default.nix b/nixpkgs/pkgs/development/compilers/julia/default.nix
new file mode 100644
index 000000000000..d4cd0ab6b83e
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/julia/default.nix
@@ -0,0 +1,20 @@
+{ callPackage }:
+
+let
+  juliaWithPackages = callPackage ../../julia-modules {};
+
+  wrapJulia = julia: julia.overrideAttrs (oldAttrs: {
+    passthru = (oldAttrs.passthru or {}) // {
+      withPackages = juliaWithPackages.override { inherit julia; };
+    };
+  });
+
+in
+
+{
+  julia_16-bin = wrapJulia (callPackage ./1.6-bin.nix {});
+  julia_18-bin = wrapJulia (callPackage ./1.8-bin.nix {});
+  julia_19-bin = wrapJulia (callPackage ./1.9-bin.nix {});
+  julia_18 = wrapJulia (callPackage ./1.8.nix {});
+  julia_19 = wrapJulia (callPackage ./1.9.nix {});
+}
diff --git a/nixpkgs/pkgs/development/compilers/kotlin/default.nix b/nixpkgs/pkgs/development/compilers/kotlin/default.nix
index 50b9d0fadee7..fee4889e1add 100644
--- a/nixpkgs/pkgs/development/compilers/kotlin/default.nix
+++ b/nixpkgs/pkgs/development/compilers/kotlin/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kotlin";
-  version = "1.9.20";
+  version = "1.9.22";
 
   src = fetchurl {
     url = "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-compiler-${version}.zip";
-    sha256 = "sha256-Faiiglt0zPbETgTpdnLbgC0t91zi+7Y+8FOb865QBvA=";
+    sha256 = "1rn3rabwyqqhs6xgyfwl326hrzpfpc3qqd2nzwbchck5a09r5cw8";
   };
 
   propagatedBuildInputs = [ jre ] ;
diff --git a/nixpkgs/pkgs/development/compilers/kotlin/native.nix b/nixpkgs/pkgs/development/compilers/kotlin/native.nix
index 16599c9b96c8..bc2018665ca7 100644
--- a/nixpkgs/pkgs/development/compilers/kotlin/native.nix
+++ b/nixpkgs/pkgs/development/compilers/kotlin/native.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   pname = "kotlin-native";
-  version = "1.9.20";
+  version = "1.9.22";
 
   src = let
     getArch = {
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
       "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-native-${arch}-${version}.tar.gz";
 
     getHash = arch: {
-      "macos-aarch64" = "sha256-Yw6IO8pj0C9XHfzVshcovkoFBUXJ3KixhGoybBRFL2U=";
-      "macos-x86_64" = "sha256-mnDi8dMCDzGsdPdD1dw4YMBxAfo5FvwDJVU/ew70z9U=";
-      "linux-x86_64" = "sha256-faMuBYUG5qj0N4vg5EcfWIC3UjXiPhFJuikzXVgNsjw=";
+      "macos-aarch64" = "1pf81rplikbp194pjrm2la101iz8vz3jv55109nipd26xghc15ca";
+      "macos-x86_64" = "1r7dmk8cc7f3iwaxamlnlcjl4mbvx443nwvsp8141a21ibrvrmx9";
+      "linux-x86_64" = "1m77qld44gbarjxm99gsdscncx4v0cf6ca3h9bdh2m7d3i4adc62";
     }.${arch};
   in
     fetchurl {
diff --git a/nixpkgs/pkgs/development/compilers/llvm/12/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/12/compiler-rt/default.nix
index 02c20016bad0..9362ee8d1147 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/12/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/12/compiler-rt/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, llvm_meta, version, fetch, cmake, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+{ lib, stdenv, llvm_meta, version, fetch
+, cmake, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -18,7 +19,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString [
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/13/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/13/compiler-rt/default.nix
index 18be4499d0fd..e36aec42e905 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/13/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/13/compiler-rt/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, llvm_meta, version, src, cmake, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+{ lib, stdenv, llvm_meta, version, src
+, cmake, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -20,7 +21,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString [
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/14/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/14/compiler-rt/default.nix
index 98ee8135b8fa..3aa91bc953b2 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/14/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/14/compiler-rt/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, llvm_meta, version
 , monorepoSrc, runCommand
-, cmake, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+, cmake, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -29,7 +29,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString [
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/14/default.nix b/nixpkgs/pkgs/development/compilers/llvm/14/default.nix
index d6d3c2d088b0..3513833c6f56 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/14/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/14/default.nix
@@ -158,7 +158,7 @@ in let
         [
           ./lldb/procfs.patch
           resourceDirPatch
-          ./lldb/gnu-install-dirs.patch
+          ../common/lldb/gnu-install-dirs.patch
         ]
         # This is a stopgap solution if/until the macOS SDK used for x86_64 is
         # updated.
diff --git a/nixpkgs/pkgs/development/compilers/llvm/14/lldb/gnu-install-dirs.patch b/nixpkgs/pkgs/development/compilers/llvm/14/lldb/gnu-install-dirs.patch
deleted file mode 100644
index f2a3b27296c1..000000000000
--- a/nixpkgs/pkgs/development/compilers/llvm/14/lldb/gnu-install-dirs.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 79d451965ed4..78188978d6de 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -10,6 +10,8 @@ set(CMAKE_MODULE_PATH
- # If we are not building as part of LLVM, build LLDB as a standalone project,
- # using LLVM as an external library.
- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
-+  include(GNUInstallDirs)
-+
-   project(lldb)
-   set(LLDB_BUILT_STANDALONE TRUE)
- endif()
-@@ -108,7 +110,7 @@ if (LLDB_ENABLE_PYTHON)
-   if(LLDB_BUILD_FRAMEWORK)
-     set(lldb_python_target_dir "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Resources/Python/lldb")
-   else()
--    set(lldb_python_target_dir "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_PYTHON_RELATIVE_PATH}/lldb")
-+    set(lldb_python_target_dir "${CMAKE_INSTALL_LIBDIR}/../${LLDB_PYTHON_RELATIVE_PATH}/lldb")
-   endif()
-   get_target_property(lldb_python_bindings_dir swig_wrapper_python BINARY_DIR)
-   finish_swig_python("lldb-python" "${lldb_python_bindings_dir}" "${lldb_python_target_dir}")
-@@ -118,7 +120,7 @@ if (LLDB_ENABLE_LUA)
-   if(LLDB_BUILD_FRAMEWORK)
-     set(lldb_lua_target_dir "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Resources/Lua")
-   else()
--    set(lldb_lua_target_dir "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_LUA_RELATIVE_PATH}")
-+    set(lldb_lua_target_dir "${CMAKE_INSTALL_LIBDIR}/../${LLDB_LUA_RELATIVE_PATH}")
-   endif()
-   get_target_property(lldb_lua_bindings_dir swig_wrapper_lua BINARY_DIR)
-   finish_swig_lua("lldb-lua" "${lldb_lua_bindings_dir}" "${lldb_lua_target_dir}")
-diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
-index 3291a7c808e1..b27d27ce6a87 100644
---- a/cmake/modules/AddLLDB.cmake
-+++ b/cmake/modules/AddLLDB.cmake
-@@ -109,7 +109,7 @@ function(add_lldb_library name)
-   endif()
- 
-   if(PARAM_SHARED)
--    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
-+    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-     if(PARAM_INSTALL_PREFIX)
-       set(install_dest ${PARAM_INSTALL_PREFIX})
-     endif()
-diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
-index 7d48491ec89a..c04543585588 100644
---- a/tools/intel-features/CMakeLists.txt
-+++ b/tools/intel-features/CMakeLists.txt
-@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
-   )
- 
- install(TARGETS lldbIntelFeatures
--  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-diff --git a/cmake/modules/LLDBStandalone.cmake b/cmake/modules/LLDBStandalone.cmake
-index 7d48491ec89a..c04543585588 100644
---- a/cmake/modules/LLDBStandalone.cmake
-+++ b/cmake/modules/LLDBStandalone.cmake
-@@ -70,7 +70,7 @@ endif()
-
- # They are used as destination of target generators.
- set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
--set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
-+set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
- if(WIN32 OR CYGWIN)
-   # DLL platform -- put DLLs into bin.
-   set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
\ No newline at end of file
diff --git a/nixpkgs/pkgs/development/compilers/llvm/15/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/15/compiler-rt/default.nix
index bfdeeff6db5b..9817899345a9 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/15/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/15/compiler-rt/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, llvm_meta, version
 , monorepoSrc, runCommand
-, cmake, ninja, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+, cmake, ninja, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -29,7 +29,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake ninja python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString [
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/15/default.nix b/nixpkgs/pkgs/development/compilers/llvm/15/default.nix
index 095da445a990..9e9008c7f1ee 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/15/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/15/default.nix
@@ -157,7 +157,7 @@ in let
         [
           ./lldb/procfs.patch
           resourceDirPatch
-          ./lldb/gnu-install-dirs.patch
+          ../common/lldb/gnu-install-dirs.patch
         ]
         # This is a stopgap solution if/until the macOS SDK used for x86_64 is
         # updated.
diff --git a/nixpkgs/pkgs/development/compilers/llvm/15/lldb/gnu-install-dirs.patch b/nixpkgs/pkgs/development/compilers/llvm/15/lldb/gnu-install-dirs.patch
deleted file mode 100644
index 4388f5c7f593..000000000000
--- a/nixpkgs/pkgs/development/compilers/llvm/15/lldb/gnu-install-dirs.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
-index 3291a7c808e1..b27d27ce6a87 100644
---- a/cmake/modules/AddLLDB.cmake
-+++ b/cmake/modules/AddLLDB.cmake
-@@ -109,7 +109,7 @@ function(add_lldb_library name)
-   endif()
- 
-   if(PARAM_SHARED)
--    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
-+    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-     if(PARAM_INSTALL_PREFIX)
-       set(install_dest ${PARAM_INSTALL_PREFIX})
-     endif()
-diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
-index 7d48491ec89a..c04543585588 100644
---- a/tools/intel-features/CMakeLists.txt
-+++ b/tools/intel-features/CMakeLists.txt
-@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
-   )
- 
- install(TARGETS lldbIntelFeatures
--  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
diff --git a/nixpkgs/pkgs/development/compilers/llvm/16/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/16/compiler-rt/default.nix
index 7add8fab0f91..808df140e772 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/16/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/16/compiler-rt/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, llvm_meta, version
 , monorepoSrc, runCommand
-, cmake, ninja, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+, cmake, ninja, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -30,7 +30,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake ninja python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString ([
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/16/default.nix b/nixpkgs/pkgs/development/compilers/llvm/16/default.nix
index 580821cc0d2c..30da7d57e791 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/16/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/16/default.nix
@@ -162,7 +162,7 @@ in let
         [
           # FIXME: do we need this? ./procfs.patch
           resourceDirPatch
-          ./lldb/gnu-install-dirs.patch
+          ../common/lldb/gnu-install-dirs.patch
         ]
         # This is a stopgap solution if/until the macOS SDK used for x86_64 is
         # updated.
diff --git a/nixpkgs/pkgs/development/compilers/llvm/16/lldb/gnu-install-dirs.patch b/nixpkgs/pkgs/development/compilers/llvm/16/lldb/gnu-install-dirs.patch
deleted file mode 100644
index 4388f5c7f593..000000000000
--- a/nixpkgs/pkgs/development/compilers/llvm/16/lldb/gnu-install-dirs.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
-index 3291a7c808e1..b27d27ce6a87 100644
---- a/cmake/modules/AddLLDB.cmake
-+++ b/cmake/modules/AddLLDB.cmake
-@@ -109,7 +109,7 @@ function(add_lldb_library name)
-   endif()
- 
-   if(PARAM_SHARED)
--    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
-+    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-     if(PARAM_INSTALL_PREFIX)
-       set(install_dest ${PARAM_INSTALL_PREFIX})
-     endif()
-diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
-index 7d48491ec89a..c04543585588 100644
---- a/tools/intel-features/CMakeLists.txt
-+++ b/tools/intel-features/CMakeLists.txt
-@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
-   )
- 
- install(TARGETS lldbIntelFeatures
--  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
diff --git a/nixpkgs/pkgs/development/compilers/llvm/17/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/17/compiler-rt/default.nix
index 7add8fab0f91..808df140e772 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/17/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/17/compiler-rt/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, llvm_meta, version
 , monorepoSrc, runCommand
-, cmake, ninja, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+, cmake, ninja, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -30,7 +30,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake ninja python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString ([
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/17/default.nix b/nixpkgs/pkgs/development/compilers/llvm/17/default.nix
index 2c422da8f9f8..95281df892e5 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/17/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/17/default.nix
@@ -153,7 +153,7 @@ in let
       patches =
         [
           # FIXME: do we need this? ./procfs.patch
-          ./lldb/gnu-install-dirs.patch
+          ../common/lldb/gnu-install-dirs.patch
         ]
         # This is a stopgap solution if/until the macOS SDK used for x86_64 is
         # updated.
diff --git a/nixpkgs/pkgs/development/compilers/llvm/17/lldb/gnu-install-dirs.patch b/nixpkgs/pkgs/development/compilers/llvm/17/lldb/gnu-install-dirs.patch
deleted file mode 100644
index 4388f5c7f593..000000000000
--- a/nixpkgs/pkgs/development/compilers/llvm/17/lldb/gnu-install-dirs.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
-index 3291a7c808e1..b27d27ce6a87 100644
---- a/cmake/modules/AddLLDB.cmake
-+++ b/cmake/modules/AddLLDB.cmake
-@@ -109,7 +109,7 @@ function(add_lldb_library name)
-   endif()
- 
-   if(PARAM_SHARED)
--    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
-+    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-     if(PARAM_INSTALL_PREFIX)
-       set(install_dest ${PARAM_INSTALL_PREFIX})
-     endif()
-diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
-index 7d48491ec89a..c04543585588 100644
---- a/tools/intel-features/CMakeLists.txt
-+++ b/tools/intel-features/CMakeLists.txt
-@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
-   )
- 
- install(TARGETS lldbIntelFeatures
--  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
diff --git a/nixpkgs/pkgs/development/compilers/llvm/common/lldb.nix b/nixpkgs/pkgs/development/compilers/llvm/common/lldb.nix
index 2444c1795a78..3ab71a8d3e9d 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/common/lldb.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/common/lldb.nix
@@ -69,6 +69,11 @@ stdenv.mkDerivation (rec {
     libedit
     libxml2
     libllvm
+  ] ++ lib.optionals (lib.versionAtLeast release_version "16") [
+    # Starting with LLVM 16, the resource dir patch is no longer enough to get
+    # libclang into the rpath of the lldb executables. By putting it into
+    # buildInputs cc-wrapper will set up rpath correctly for us.
+    (lib.getLib libclang)
   ] ++ lib.optionals stdenv.isDarwin [
     darwin.libobjc
     darwin.apple_sdk.libs.xpc
diff --git a/nixpkgs/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch b/nixpkgs/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch
new file mode 100644
index 000000000000..093b9a8ba3ec
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch
@@ -0,0 +1,49 @@
+diff --git a/bindings/lua/CMakeLists.txt b/bindings/lua/CMakeLists.txt
+index 1a739a980..59f8fc3a0 100644
+--- a/bindings/lua/CMakeLists.txt
++++ b/bindings/lua/CMakeLists.txt
+@@ -56,7 +56,7 @@ function(finish_swig_lua swig_target lldb_lua_bindings_dir lldb_lua_target_dir)
+   if(LLDB_BUILD_FRAMEWORK)
+     set(LLDB_LUA_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Resources/Python)
+   else()
+-    set(LLDB_LUA_INSTALL_PATH ${LLDB_LUA_RELATIVE_PATH})
++    set(LLDB_LUA_INSTALL_PATH ${CMAKE_INSTALL_LIBDIR}/../${LLDB_LUA_RELATIVE_PATH})
+   endif()
+   install(DIRECTORY ${lldb_lua_target_dir}/
+           DESTINATION ${LLDB_LUA_INSTALL_PATH}
+diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
+index c631faf52ac3..1d92d069960b 100644
+--- a/bindings/python/CMakeLists.txt
++++ b/bindings/python/CMakeLists.txt
+@@ -160,7 +160,7 @@ function(finish_swig_python swig_target lldb_python_bindings_dir lldb_python_tar
+   if(LLDB_BUILD_FRAMEWORK)
+     set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources/Python)
+   else()
+-    set(LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_RELATIVE_PATH})
++    set(LLDB_PYTHON_INSTALL_PATH ${CMAKE_INSTALL_LIBDIR}/../${LLDB_PYTHON_RELATIVE_PATH})
+   endif()
+   if (NOT CMAKE_CFG_INTDIR STREQUAL  ".")
+     string(REPLACE ${CMAKE_CFG_INTDIR} "\$\{CMAKE_INSTALL_CONFIG_NAME\}" LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_INSTALL_PATH})
+diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
+index 3291a7c808e1..b27d27ce6a87 100644
+--- a/cmake/modules/AddLLDB.cmake
++++ b/cmake/modules/AddLLDB.cmake
+@@ -109,7 +109,7 @@ function(add_lldb_library name)
+   endif()
+ 
+   if(PARAM_SHARED)
+-    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
++    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
+     if(PARAM_INSTALL_PREFIX)
+       set(install_dest ${PARAM_INSTALL_PREFIX})
+     endif()
+diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
+index 7d48491ec89a..c04543585588 100644
+--- a/tools/intel-features/CMakeLists.txt
++++ b/tools/intel-features/CMakeLists.txt
+@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
+   )
+ 
+ install(TARGETS lldbIntelFeatures
+-  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
++  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
diff --git a/nixpkgs/pkgs/development/compilers/llvm/git/compiler-rt/default.nix b/nixpkgs/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
index 7add8fab0f91..808df140e772 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, llvm_meta, version
 , monorepoSrc, runCommand
-, cmake, ninja, python3, xcbuild, libllvm, libcxxabi, libxcrypt
+, cmake, ninja, python3, xcbuild, libllvm, linuxHeaders, libcxxabi, libxcrypt
 , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
 }:
 
@@ -30,7 +30,9 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ cmake ninja python3 libllvm.dev ]
     ++ lib.optional stdenv.isDarwin xcbuild.xcrun;
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
+  buildInputs =
+    lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders
+    ++ lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   env.NIX_CFLAGS_COMPILE = toString ([
     "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
diff --git a/nixpkgs/pkgs/development/compilers/llvm/git/default.nix b/nixpkgs/pkgs/development/compilers/llvm/git/default.nix
index 337809e85e63..41ce6076da5f 100644
--- a/nixpkgs/pkgs/development/compilers/llvm/git/default.nix
+++ b/nixpkgs/pkgs/development/compilers/llvm/git/default.nix
@@ -158,7 +158,7 @@ in let
       patches =
         [
           # FIXME: do we need this? ./procfs.patch
-          ./lldb/gnu-install-dirs.patch
+          ../common/lldb/gnu-install-dirs.patch
         ]
         # This is a stopgap solution if/until the macOS SDK used for x86_64 is
         # updated.
diff --git a/nixpkgs/pkgs/development/compilers/llvm/git/lldb/gnu-install-dirs.patch b/nixpkgs/pkgs/development/compilers/llvm/git/lldb/gnu-install-dirs.patch
deleted file mode 100644
index 4388f5c7f593..000000000000
--- a/nixpkgs/pkgs/development/compilers/llvm/git/lldb/gnu-install-dirs.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
-index 3291a7c808e1..b27d27ce6a87 100644
---- a/cmake/modules/AddLLDB.cmake
-+++ b/cmake/modules/AddLLDB.cmake
-@@ -109,7 +109,7 @@ function(add_lldb_library name)
-   endif()
- 
-   if(PARAM_SHARED)
--    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
-+    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-     if(PARAM_INSTALL_PREFIX)
-       set(install_dest ${PARAM_INSTALL_PREFIX})
-     endif()
-diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
-index 7d48491ec89a..c04543585588 100644
---- a/tools/intel-features/CMakeLists.txt
-+++ b/tools/intel-features/CMakeLists.txt
-@@ -30,4 +30,4 @@ add_lldb_library(lldbIntelFeatures SHARED
-   )
- 
- install(TARGETS lldbIntelFeatures
--  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
diff --git a/nixpkgs/pkgs/development/compilers/lunarml/default.nix b/nixpkgs/pkgs/development/compilers/lunarml/default.nix
index 1fa448fe9d8e..558a4e435a41 100644
--- a/nixpkgs/pkgs/development/compilers/lunarml/default.nix
+++ b/nixpkgs/pkgs/development/compilers/lunarml/default.nix
@@ -6,7 +6,7 @@
 }:
 
 let
-  version = "0.0.20231113";
+  version = "0.1.0";
 in
 stdenvNoCC.mkDerivation {
   inherit version;
@@ -17,7 +17,7 @@ stdenvNoCC.mkDerivation {
     owner = "minoki";
     repo = "LunarML";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LmS+pkdCraY8sor+lsq/vCODFyVneKkZqjZqbJ1trb4=";
+    hash = "sha256-wM6ppH0g8yIi+4fwTejzZGn1uv/Wvlajn87A+IKbPXw=";
   };
 
   outputs = [ "out" "doc" ];
diff --git a/nixpkgs/pkgs/development/compilers/minimacy/default.nix b/nixpkgs/pkgs/development/compilers/minimacy/default.nix
index 00b3db5ef06d..6928ba4cdc42 100644
--- a/nixpkgs/pkgs/development/compilers/minimacy/default.nix
+++ b/nixpkgs/pkgs/development/compilers/minimacy/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "minimacy";
-  version = "1.1.2";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "ambermind";
     repo = pname;
     rev =  version;
-    hash = "sha256-WBmpinMnGr7Tmf1jLhdq5DXdR+ohOY0CpOBJ6fewKFU=";
+    hash = "sha256-uA+4dnhOnv7qRE7nqew8a14DGaQblsMY2uBZ+iyLtFU=";
   };
 
   nativeBuildInputs = [ makeBinaryWrapper ];
diff --git a/nixpkgs/pkgs/development/compilers/mlkit/default.nix b/nixpkgs/pkgs/development/compilers/mlkit/default.nix
index a91273a3523a..082b768a2b00 100644
--- a/nixpkgs/pkgs/development/compilers/mlkit/default.nix
+++ b/nixpkgs/pkgs/development/compilers/mlkit/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mlkit";
-  version = "4.7.5";
+  version = "4.7.8";
 
   src = fetchFromGitHub {
     owner = "melsman";
     repo = "mlkit";
     rev = "v${version}";
-    sha256 = "sha256-LAlJCAF8nyXVUlkOEdcoxq5bZn1bd7dqwx6PxOxJRsM=";
+    sha256 = "sha256-IAlcf4McvWoCflrH6d6PQP1aosHq2QNKBwde7i38Mc4=";
   };
 
   nativeBuildInputs = [ autoreconfHook mlton ];
diff --git a/nixpkgs/pkgs/development/compilers/nim/default.nix b/nixpkgs/pkgs/development/compilers/nim/default.nix
index 425eda585c27..70d46dc46061 100644
--- a/nixpkgs/pkgs/development/compilers/nim/default.nix
+++ b/nixpkgs/pkgs/development/compilers/nim/default.nix
@@ -76,12 +76,12 @@ in {
 
   nim-unwrapped-2 = stdenv.mkDerivation (finalAttrs: {
     pname = "nim-unwrapped";
-    version = "2.0.0";
+    version = "2.0.2";
     strictDeps = true;
 
     src = fetchurl {
       url = "https://nim-lang.org/download/nim-${finalAttrs.version}.tar.xz";
-      hash = "sha256-vWEB2EADb7eOk6ad9s8/n9DCHNdUtpX/hKO0rdjtCvc=";
+      hash = "sha256-ZPUdO/Vt6dDueeLKapzpRFSvmmOhQaaWnOjFmmC4LM8=";
     };
 
     buildInputs = [ boehmgc openssl pcre readline sqlite ]
@@ -161,10 +161,10 @@ in {
   });
 
   nim-unwrapped-1 = nim-unwrapped-2.overrideAttrs (finalAttrs: prevAttrs: {
-    version = "1.6.14";
+    version = "1.6.18";
     src = fetchurl {
       url = "https://nim-lang.org/download/nim-${finalAttrs.version}.tar.xz";
-      hash = "sha256-0HDS8oriQA33/kpJ7OufRc1TmQaxB0gYVqCveo+oLck=";
+      hash = "sha256-UCQaxyIpG6ljdT8EWqo1h7c8GqKK4pxXPBWluKYCoss=";
     };
 
     patches = [
diff --git a/nixpkgs/pkgs/development/compilers/odin/default.nix b/nixpkgs/pkgs/development/compilers/odin/default.nix
index 152ee99fcb1c..0197c0888a11 100644
--- a/nixpkgs/pkgs/development/compilers/odin/default.nix
+++ b/nixpkgs/pkgs/development/compilers/odin/default.nix
@@ -12,13 +12,13 @@ let
   inherit (llvmPackages) stdenv;
 in stdenv.mkDerivation rec {
   pname = "odin";
-  version = "dev-2023-11";
+  version = "dev-2023-12";
 
   src = fetchFromGitHub {
     owner = "odin-lang";
     repo = "Odin";
     rev = version;
-    hash = "sha256-5plcr+j9aFSaLfLQXbG4WD1GH6rE7D3uhlUbPaDEYf8=";
+    hash = "sha256-XFaXs9zNQ/53QprF8pM2pOtiB0nGu8mGbBozNl0EMyA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/compilers/rust/binary.nix b/nixpkgs/pkgs/development/compilers/rust/binary.nix
index efef07aba4c6..c546e278e7fa 100644
--- a/nixpkgs/pkgs/development/compilers/rust/binary.nix
+++ b/nixpkgs/pkgs/development/compilers/rust/binary.nix
@@ -26,7 +26,8 @@ rec {
     inherit src;
 
     meta = with lib; {
-      homepage = "http://www.rust-lang.org/";
+      homepage = "https://www.rust-lang.org/";
+      sourceProvenance = with sourceTypes; [ binaryNativeCode ];
       description = "A safe, concurrent, practical language";
       maintainers = with maintainers; [ qknight ];
       license = [ licenses.mit licenses.asl20 ];
@@ -70,8 +71,9 @@ rec {
     inherit src;
 
     meta = with lib; {
-      homepage = "http://www.rust-lang.org/";
-      description = "A safe, concurrent, practical language";
+      homepage = "https://doc.rust-lang.org/cargo/";
+      sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+      description = "The Rust package manager";
       maintainers = with maintainers; [ qknight ];
       license = [ licenses.mit licenses.asl20 ];
     };
diff --git a/nixpkgs/pkgs/development/compilers/rust/cargo.nix b/nixpkgs/pkgs/development/compilers/rust/cargo.nix
index 1bc1777acd47..ff0ecf45fd23 100644
--- a/nixpkgs/pkgs/development/compilers/rust/cargo.nix
+++ b/nixpkgs/pkgs/development/compilers/rust/cargo.nix
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage.override {
 
   passthru = {
     rustc = rustc;
-    inherit (rustc) tests;
+    inherit (rustc.unwrapped) tests;
   };
 
   # Upstream rustc still assumes that musl = static[1].  The fix for
diff --git a/nixpkgs/pkgs/development/compilers/swift/swift-format/default.nix b/nixpkgs/pkgs/development/compilers/swift/swift-format/default.nix
index 188208ebf492..d68801aac6e2 100644
--- a/nixpkgs/pkgs/development/compilers/swift/swift-format/default.nix
+++ b/nixpkgs/pkgs/development/compilers/swift/swift-format/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation {
     platforms = with lib.platforms; linux ++ darwin;
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ dtzWill trepetti dduan trundle stephank ];
+    mainProgram = "swift-format";
   };
 }
diff --git a/nixpkgs/pkgs/development/compilers/typescript/default.nix b/nixpkgs/pkgs/development/compilers/typescript/default.nix
index ae59f26757c7..50ddbacb2013 100644
--- a/nixpkgs/pkgs/development/compilers/typescript/default.nix
+++ b/nixpkgs/pkgs/development/compilers/typescript/default.nix
@@ -1,21 +1,27 @@
-{ lib, buildNpmPackage, fetchFromGitHub}:
+{ lib, buildNpmPackage, fetchFromGitHub, testers, typescript }:
 
 buildNpmPackage rec {
   pname = "typescript";
-  version = "5.3.2";
+  version = "5.3.3";
 
   src = fetchFromGitHub {
     owner = "microsoft";
     repo = "TypeScript";
     rev = "v${version}";
-    hash = "sha256-lwc2bYC2f8x3Np/LxbN+5x6Apuekp7LmHXNutqL9Z2E=";
+    hash = "sha256-gZdS4TGbafaOdNc1ZB24uAjMu9g0hef6mEsOr/dPqvY=";
   };
 
   patches = [
     ./disable-dprint-dstBundler.patch
   ];
 
-  npmDepsHash = "sha256-vD/tax5RjREdsdte3ONahVf9GPOkxPqeP9jmsxjCYkY=";
+  npmDepsHash = "sha256-gj59jjko13UBPqqy/3z1KgVMFUQPUAIg47UTTaseF+w=";
+
+  passthru.tests = {
+    version = testers.testVersion {
+      package = typescript;
+    };
+  };
 
   meta = with lib; {
     description = "A superset of JavaScript that compiles to clean JavaScript output";
diff --git a/nixpkgs/pkgs/development/compilers/unison/default.nix b/nixpkgs/pkgs/development/compilers/unison/default.nix
index 392a699857a3..bad47d45e11a 100644
--- a/nixpkgs/pkgs/development/compilers/unison/default.nix
+++ b/nixpkgs/pkgs/development/compilers/unison/default.nix
@@ -11,17 +11,17 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "unison-code-manager";
-  version = "M5j";
+  version = "0.5.12";
 
   src = if stdenv.isDarwin then
     fetchurl {
       url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-macos.tar.gz";
-      hash = "sha256-CDm5a4TR8GfM8QK5mYmEb63PSz469X3R5LaikAcvILI=";
+      hash = "sha256-naX80UdSAwFAGS04Zd5VyVS2KQWnotE4+mJxWYRXXNU=";
     }
   else
     fetchurl {
       url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-linux.tar.gz";
-      hash = "sha256-5H4qOPh2tFgOp+uHNndwwh1K+Wb42Umfl0ok9Ixrlc8=";
+      hash = "sha256-RD6pHDQI8ssU/E8LzLXmqtedLCL5wZV/bO3KHIWiYN8=";
     };
 
   # The tarball is just the prebuilt binary, in the archive root.
diff --git a/nixpkgs/pkgs/development/compilers/zig/generic.nix b/nixpkgs/pkgs/development/compilers/zig/generic.nix
index a0dbea04869e..220f3240f285 100644
--- a/nixpkgs/pkgs/development/compilers/zig/generic.nix
+++ b/nixpkgs/pkgs/development/compilers/zig/generic.nix
@@ -66,6 +66,7 @@ stdenv.mkDerivation (finalAttrs: {
     changelog = "https://ziglang.org/download/${finalAttrs.version}/release-notes.html";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members;
+    mainProgram = "zig";
     platforms = lib.platforms.unix;
   };
 } // removeAttrs args [ "hash" ])