about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/spotify/linux.nix7
-rw-r--r--pkgs/applications/editors/android-studio/common.nix2
-rwxr-xr-xpkgs/applications/editors/android-studio/update.sh68
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix6
-rw-r--r--pkgs/applications/editors/jetbrains/plugins/plugins.json161
-rw-r--r--pkgs/applications/editors/ldtk/default.nix2
-rw-r--r--pkgs/applications/editors/vim/plugins/generated.nix12
-rw-r--r--pkgs/applications/editors/vim/plugins/overrides.nix5
-rw-r--r--pkgs/applications/editors/vim/plugins/vim-plugin-names1
-rw-r--r--pkgs/applications/networking/ktailctl/default.nix24
-rw-r--r--pkgs/applications/networking/ktailctl/install-missing-libraries.diff9
-rw-r--r--pkgs/by-name/le/lefthook/package.nix4
-rw-r--r--pkgs/by-name/pr/protoc-gen-prost-crate/package.nix (renamed from pkgs/development/tools/protoc-gen-prost-crate/default.nix)22
-rw-r--r--pkgs/by-name/pr/protoc-gen-prost-serde/package.nix (renamed from pkgs/development/tools/protoc-gen-prost-serde/default.nix)22
-rw-r--r--pkgs/by-name/pr/protoc-gen-prost/package.nix (renamed from pkgs/development/tools/protoc-gen-prost/default.nix)22
-rw-r--r--pkgs/by-name/pr/protoc-gen-tonic/package.nix (renamed from pkgs/development/tools/protoc-gen-tonic/default.nix)22
-rw-r--r--pkgs/by-name/qu/quickemu/package.nix21
-rw-r--r--pkgs/by-name/te/technitium-dns-server/package.nix8
-rw-r--r--pkgs/by-name/te/tenv/package.nix6
-rw-r--r--pkgs/by-name/vm/vmctl/package.nix70
-rw-r--r--pkgs/development/compilers/flutter/default.nix4
-rw-r--r--pkgs/development/compilers/flutter/engine/dart.nix13
-rw-r--r--pkgs/development/compilers/flutter/engine/default.nix24
-rw-r--r--pkgs/development/compilers/flutter/engine/package.nix144
-rw-r--r--pkgs/development/compilers/flutter/engine/source.nix14
-rw-r--r--pkgs/development/compilers/flutter/flutter.nix26
-rw-r--r--pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in5
-rwxr-xr-xpkgs/development/compilers/flutter/update/update.py40
-rw-r--r--pkgs/development/compilers/flutter/versions/3_13/data.json37
-rw-r--r--pkgs/development/compilers/flutter/versions/3_16/data.json21
-rw-r--r--pkgs/development/compilers/flutter/versions/3_19/data.json7
-rw-r--r--pkgs/development/compilers/flutter/versions/3_22/data.json6
-rw-r--r--pkgs/development/compilers/flutter/versions/3_23/data.json5
-rw-r--r--pkgs/development/compilers/flutter/wrapper.nix4
-rw-r--r--pkgs/development/libraries/gtest/default.nix24
-rw-r--r--pkgs/development/python-modules/slackclient/default.nix4
-rw-r--r--pkgs/development/rocm-modules/5/clr/default.nix4
-rw-r--r--pkgs/development/rocm-modules/6/clr/default.nix4
-rw-r--r--pkgs/development/tools/analysis/lcov/default.nix61
-rw-r--r--pkgs/development/tools/reindeer/default.nix6
-rw-r--r--pkgs/development/tools/rye/Cargo.lock2
-rw-r--r--pkgs/development/tools/rye/default.nix18
-rw-r--r--pkgs/games/path-of-building/default.nix69
-rw-r--r--pkgs/games/stepmania/default.nix5
-rw-r--r--pkgs/tools/filesystems/dwarfs/default.nix68
-rw-r--r--pkgs/tools/filesystems/dwarfs/version_info.patch58
-rw-r--r--pkgs/tools/misc/wyrd/default.nix2
-rw-r--r--pkgs/tools/package-management/nix-eval-jobs/2.19.nix47
-rw-r--r--pkgs/tools/package-management/nix-eval-jobs/default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix19
-rw-r--r--pkgs/top-level/perl-packages.nix46
51 files changed, 886 insertions, 401 deletions
diff --git a/pkgs/applications/audio/spotify/linux.nix b/pkgs/applications/audio/spotify/linux.nix
index 12487ef3e86e1..8886e851c3c95 100644
--- a/pkgs/applications/audio/spotify/linux.nix
+++ b/pkgs/applications/audio/spotify/linux.nix
@@ -14,14 +14,14 @@ let
   # If an update breaks things, one of those might have valuable info:
   # https://aur.archlinux.org/packages/spotify/
   # https://community.spotify.com/t5/Desktop-Linux
-  version = "1.2.31.1205.g4d59ad7c";
+  version = "1.2.37.701.ge66eb7bc";
   # To get the latest stable revision:
   # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
   # To get general information:
   # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
   # More examples of api usage:
   # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
-  rev = "75";
+  rev = "76";
 
   deps = [
     alsa-lib
@@ -86,8 +86,9 @@ stdenv.mkDerivation {
   # spotify ourselves:
   # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
   src = fetchurl {
+    name = "spotify-${version}-${rev}.snap";
     url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
-    hash = "sha512-o4iLcbNqbsxo9YJMy0SXO7Udv4CMhhBcsf53UuqWKFFWY/jKVN+Lb+dB7Jf9+UowpmbrP44w97Oi+dnbfFXYjQ==";
+    hash = "sha512-k7aw1QM3NCFkm0tXcHgYyeEBagGFpCL6JdWlFruJszPloiCy5vopOsD4PdqyiSEs0rSUP0rLxX2UBs3XuI5cUA==";
   };
 
   nativeBuildInputs = [ wrapGAppsHook3 makeShellWrapper squashfsTools ];
diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix
index 9a247d0bc870b..74f7d3c8f7a47 100644
--- a/pkgs/applications/editors/android-studio/common.nix
+++ b/pkgs/applications/editors/android-studio/common.nix
@@ -257,10 +257,12 @@ let
     passthru = let
       withSdk = androidSdk: mkAndroidStudioWrapper { inherit androidStudio androidSdk; };
     in {
+      inherit version;
       unwrapped = androidStudio;
       full = withSdk androidenv.androidPkgs.androidsdk;
       inherit withSdk;
       sdk = androidSdk;
+      updateScript = [ ./update.sh "${channel}" ];
     };
     meta = {
       description = "Official IDE for Android (${channel} channel)";
diff --git a/pkgs/applications/editors/android-studio/update.sh b/pkgs/applications/editors/android-studio/update.sh
new file mode 100755
index 0000000000000..04efbb3667540
--- /dev/null
+++ b/pkgs/applications/editors/android-studio/update.sh
@@ -0,0 +1,68 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -I nixpkgs=./. -i bash -p jq nix-prefetch-scripts
+
+set -euo pipefail
+
+DEFAULT_NIX="$(realpath "./pkgs/applications/editors/android-studio/default.nix")"
+RELEASES_JSON="$(curl --silent -L https://jb.gg/android-studio-releases-list.json)"
+
+# Available channels: Release/Patch (stable), Beta, Canary
+getLatest() {
+    local attribute="$1"
+    local channel="$2"
+    case "$channel" in
+        "stable") local select='.channel == "Release" or .channel == "Patch"' ;;
+        "beta") local select='.channel == "Beta" or .channel == "RC"' ;;
+        *) local select=".channel == \"${channel^}\"" ;;
+    esac
+    local result="$(echo "$RELEASES_JSON" \
+        | jq -r ".content.item[] | select(${select}) | [.version, .${attribute}] | join(\" \")" \
+        | sort --version-sort \
+        | cut -d' ' -f 2- \
+        | tail -n 1)"
+
+    if [[ -n "$result" ]]; then
+        echo "$result"
+    else
+        echo "could not find the latest $attribute for $channel"
+        exit 1
+    fi
+}
+
+updateChannel() {
+    local channel="$1"
+    local latestVersion="$(getLatest "version" "$channel")"
+
+    local localVersion="$(nix --extra-experimental-features nix-command eval --raw --file . androidStudioPackages."${channel}".version)"
+    if [[ "${latestVersion}" == "${localVersion}" ]]; then
+        echo "$channel is already up to date at $latestVersion"
+        return 0
+    fi
+    echo "updating $channel from $localVersion to $latestVersion"
+
+    local latestHash="$(nix-prefetch-url "https://dl.google.com/dl/android/studio/ide-zips/${latestVersion}/android-studio-${latestVersion}-linux.tar.gz")"
+    local latestSri="$(nix --extra-experimental-features nix-command hash to-sri --type sha256 "$latestHash")"
+    local localHash="$(nix --extra-experimental-features nix-command eval --raw --file . androidStudioPackages."${channel}".unwrapped.src.drvAttrs.outputHash)"
+    sed -i "s~${localHash}~${latestSri}~g" "${DEFAULT_NIX}"
+
+    # Match the formatting of default.nix: `version = "2021.3.1.14"; # "Android Studio Dolphin (2021.3.1) Beta 5"`
+    local versionString="${latestVersion}\"; # \"$(getLatest "name" "${channel}")\""
+    sed -i "s~${localVersion}.*~${versionString}~g" "${DEFAULT_NIX}"
+    echo "updated ${channel} to ${latestVersion}"
+}
+
+if (( $# == 0 )); then
+    for channel in "beta" "canary" "stable"; do
+        updateChannel "$channel"
+    done
+else
+    while (( "$#" )); do
+        case "$1" in
+            beta|canary|stable)
+                updateChannel "$1" ;;
+            *)
+                echo "unknown channel: $1" && exit 1 ;;
+        esac
+        shift 1
+    done
+fi
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix
index 62048d867619c..b85128816aa61 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix
@@ -16,7 +16,7 @@
 }:
 
 let
-  rev = "152431c0b1d731d0302e1849690e2361f3caf7c1";
+  rev = "4bfbbe4e6c44d80b15cb501fa3444ad03dba2824";
   python = python3.withPackages (ps: with ps; [
     epc
     orjson
@@ -28,13 +28,13 @@ let
 in
 melpaBuild {
   pname = "lsp-bridge";
-  version = "20240615.2321";
+  version = "20240622.236";
 
   src = fetchFromGitHub {
     owner = "manateelazycat";
     repo = "lsp-bridge";
     inherit rev;
-    hash = "sha256-LIjqr1IntQ6WTFOO3b6cAuB6LslG1HzVa9C+GYUyQOU=";
+    hash = "sha256-rzaUtUYDEZAuRjSgThHKxrQ7U8ZIO0k750aH08VpA08=";
   };
 
   commit = rev;
diff --git a/pkgs/applications/editors/jetbrains/plugins/plugins.json b/pkgs/applications/editors/jetbrains/plugins/plugins.json
index 48b9fed7f85ab..2441c8a545cf1 100644
--- a/pkgs/applications/editors/jetbrains/plugins/plugins.json
+++ b/pkgs/applications/editors/jetbrains/plugins/plugins.json
@@ -40,6 +40,37 @@
       },
       "name": "python"
     },
+    "2162": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip"
+      },
+      "name": "string-manipulation"
+    },
     "6954": {
       "compatible": [
         "clion",
@@ -102,6 +133,37 @@
       },
       "name": "ini"
     },
+    "7086": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip"
+      },
+      "name": "acejump"
+    },
     "7219": {
       "compatible": [
         "idea-ultimate",
@@ -145,6 +207,37 @@
       },
       "name": "python-community-edition"
     },
+    "7391": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip"
+      },
+      "name": "asciidoc"
+    },
     "8182": {
       "compatible": [
         "clion",
@@ -293,6 +386,37 @@
       },
       "name": "csv-editor"
     },
+    "11349": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/11349/556097/aws-toolkit-jetbrains-standalone-3.11-233.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip"
+      },
+      "name": "aws-toolkit"
+    },
     "12062": {
       "compatible": [
         "clion",
@@ -479,6 +603,37 @@
       },
       "name": "netbeans-6-5-keymap"
     },
+    "20146": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip"
+      },
+      "name": "mermaid"
+    },
     "22407": {
       "compatible": [
         "clion",
@@ -496,6 +651,8 @@
   "files": {
     "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip": "sha256-P8AFMVp/rFi7zTh9f/i45q/QalvI37itnK57Dz/W/z4=",
     "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip": "sha256-C3l3Z9a7maCrMjc2Fk/wf3AoExRbvN+fn2mAtXigt0A=",
+    "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip": "sha256-wFC3nKCCHRxxAmhxF66BtuNrzXUByG7jfG6cVs2TqXQ=",
+    "https://plugins.jetbrains.com/files/11349/556097/aws-toolkit-jetbrains-standalone-3.11-233.zip": "sha256-78N3rm1l4l1OJpT1tg1cASOBc2Wt3IXs0hdjOtdF/Xg=",
     "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip": "sha256-9keDJ73bSHkzAEq8nT96I5sp05BgMZ08/4BzarOjO5g=",
     "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip": "sha256-LeQ5vi9PCJYmWNmT/sutWjSlwZaAYYuEljVJBYG2VpY=",
     "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip": "sha256-IsmoWuUroAp1LLuphp4F1dun4tQOOitZxoG+Nxs5pYk=",
@@ -506,15 +663,19 @@
     "https://plugins.jetbrains.com/files/164/546759/IdeaVim-2.12.0-signed.zip": "sha256-6ibo1vdwO4olQTCWpWAefT3QCwgtzTo1ojilDes8Rvg=",
     "https://plugins.jetbrains.com/files/17718/551329/github-copilot-intellij-1.5.6.5692.zip": "sha256-p2xY8eN3tOvlXhuZm4R7zl67lnKbaJwKwPZSolDTaX0=",
     "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip": "sha256-KrzZTKZMQqoEMw+vDUv2jjs0EX0leaPBkU8H/ecq/oI=",
+    "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip": "sha256-DUiIQYIzYoXmgtBakSLtMB+xxJMaR70Jgg9erySa3wQ=",
+    "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip": "sha256-OqeQCqFe8iW/8NPg+9i+UKh+twIPQ9uLZrItMukCi7k=",
     "https://plugins.jetbrains.com/files/22407/542571/intellij-rust-241.25989.199.zip": "sha256-ACeMU2llicj8VHBJJSAk2SIQaZrD2ykmY0b3VDiedV4=",
     "https://plugins.jetbrains.com/files/631/552809/python-241.17890.1.zip": "sha256-ASnW9SteKd88h2tAuZSHjnK+NMV7lm/3MN1tMqRvtmg=",
     "https://plugins.jetbrains.com/files/6981/547306/ini-241.17011.124.zip": "sha256-6EU2ExUMvXG2pJ77ZgZIsPC6gWX8MTZB0rRttYNRfX4=",
     "https://plugins.jetbrains.com/files/6981/552764/ini-241.17890.13.zip": "sha256-7JQpKNttNfTvzfZ2Qj42FZAtSqx6GjWHhT0WRecK3tc=",
+    "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip": "sha256-kVUEgfEKUupV/qlB4Dpzi5pFHjhVvX74XIPetKtjysM=",
     "https://plugins.jetbrains.com/files/7219/542990/Symfony_Plugin-2024.1.274.zip": "sha256-92uUIFz5kEjrbgPnomi0VXc9Du17evzGsO5ApsrtHrA=",
     "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip": "sha256-JIZ6Iq3sOcAm8fBXnjRrG9dqCZuD/WajyVmn1JjYMBA=",
     "https://plugins.jetbrains.com/files/7322/530366/python-ce-241.15989.150.zip": "sha256-VJWFzUk/lloFCfHbXX7lQRV6bGseCqEPA8XOLlkqNho=",
     "https://plugins.jetbrains.com/files/7322/540027/python-ce-241.17011.48.zip": "sha256-UrvhbGhcqxGke5tZTktyaWVYIWO5NhOU/WiswMYr83Y=",
     "https://plugins.jetbrains.com/files/7322/552840/python-ce-241.17890.1.zip": "sha256-njHcuJmpc/5JsfZ6mmjcRK2j78J0E4bu68T1A0DNdVU=",
+    "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip": "sha256-icVvR79Ut6RopPKqvUQf4ZHKg14LV8/KWUZfQh/BYV8=",
     "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip": "sha256-+Lc/avYBLpyIV63DlbhAJtieHDv4HdggqdGFDw9iqN0=",
     "https://plugins.jetbrains.com/files/8554/535094/featuresTrainer-241.17011.14.zip": "sha256-p26GW1NyVI8OR1VypeWUFWW8qlwB+LtzrEoKyXBwiCw=",
     "https://plugins.jetbrains.com/files/8607/555059/NixIDEA-0.4.0.14.zip": "sha256-oP/tvAqzMSDLJ0Jah1eLJDZIm9WhOZas7lPWrvjWFMM=",
diff --git a/pkgs/applications/editors/ldtk/default.nix b/pkgs/applications/editors/ldtk/default.nix
index f93e0c62e3857..4e05fc2b39117 100644
--- a/pkgs/applications/editors/ldtk/default.nix
+++ b/pkgs/applications/editors/ldtk/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
     install -Dm644 'LDtk ${finalAttrs.version} installer.AppImage' $out/share/ldtk.AppImage
     makeWrapper ${appimage-run}/bin/appimage-run $out/bin/ldtk \
       --add-flags $out/share/ldtk.AppImage
-    install -Dm644 src/ldtk.png $out/share/icons/hicolor/1024x1024/apps/ldtk.png
+    install -Dm644 src/ldtk.png $out/share/icons/hicolor/512x512/apps/ldtk.png
 
     runHook postInstall
   '';
diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix
index 70865e19174f4..1a5d3f50044e7 100644
--- a/pkgs/applications/editors/vim/plugins/generated.nix
+++ b/pkgs/applications/editors/vim/plugins/generated.nix
@@ -9676,18 +9676,6 @@ final: prev:
     meta.homepage = "https://github.com/mfukar/robotframework-vim/";
   };
 
-  rocks-nvim = buildNeovimPlugin {
-    pname = "rocks.nvim";
-    version = "2024-06-19";
-    src = fetchFromGitHub {
-      owner = "nvim-neorocks";
-      repo = "rocks.nvim";
-      rev = "6737e01a76eaaae06d11b45c8b5b774fa97c283b";
-      sha256 = "0vl6rm3rv1730iw3bwzrwjsgr1hw5h4ksdgpir5spd3vqj7i97lz";
-    };
-    meta.homepage = "https://github.com/nvim-neorocks/rocks.nvim/";
-  };
-
   ron-vim = buildVimPlugin {
     pname = "ron.vim";
     version = "2022-08-19";
diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix
index 84f5c0a92de66..1eb32501131a8 100644
--- a/pkgs/applications/editors/vim/plugins/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/overrides.nix
@@ -7,6 +7,7 @@
 , fetchFromSourcehut
 , fetchpatch
 , fetchurl
+, neovimUtils
 , substituteAll
 , # Language dependencies
   fetchYarnDeps
@@ -1286,6 +1287,10 @@
     ];
   };
 
+  rocks-nvim = neovimUtils.buildNeovimPlugin { luaAttr = "rocks-nvim"; };
+
+  rocks-config-nvim = neovimUtils.buildNeovimPlugin { luaAttr = "rocks-config-nvim"; };
+
   roslyn-nvim = super.roslyn-nvim.overrideAttrs {
     dependencies = with self; [ nvim-lspconfig ];
   };
diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names
index 962927e58924b..c31ea3ee4df14 100644
--- a/pkgs/applications/editors/vim/plugins/vim-plugin-names
+++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names
@@ -814,7 +814,6 @@ https://github.com/vim-scripts/restore_view.vim/,HEAD,restore-view-vim
 https://github.com/gu-fan/riv.vim/,,
 https://github.com/kevinhwang91/rnvimr/,,
 https://github.com/mfukar/robotframework-vim/,,
-https://github.com/nvim-neorocks/rocks.nvim/,,
 https://github.com/ron-rs/ron.vim/,,
 https://github.com/jmederosalvarado/roslyn.nvim/,HEAD,
 https://github.com/keith/rspec.vim/,,
diff --git a/pkgs/applications/networking/ktailctl/default.nix b/pkgs/applications/networking/ktailctl/default.nix
index 88caf1a5f43e3..0536fa2fdea61 100644
--- a/pkgs/applications/networking/ktailctl/default.nix
+++ b/pkgs/applications/networking/ktailctl/default.nix
@@ -10,6 +10,7 @@
 , qtbase
 , qtdeclarative
 , qtsvg
+, qtwayland
 , kconfig
 , kcoreaddons
 , kguiaddons
@@ -18,31 +19,37 @@
 , kirigami-addons
 , knotifications
 , nlohmann_json
+, qqc2-desktop-style
 }:
 
 let
-  version = "0.16.0";
+  version = "0.16.1";
 
   src = fetchFromGitHub {
     owner = "f-koehler";
     repo = "KTailctl";
     rev = "v${version}";
-    hash = "sha256-fIx6XfNGK+jDpeaoCzTKwv3J01yWoHOgWxjbwTGVK1U=";
+    hash = "sha256-rMvFwWTrYWZUAMWd6H/SXE26q5ASjwsa8bD1tFC6yBI=";
   };
 
   goDeps = (buildGoModule {
-    pname = "tailwrap";
+    pname = "ktailctl-go-wrapper";
     inherit src version;
-    modRoot = "tailwrap";
-    vendorHash = "sha256-egTzSdOKrhdEBKarIfROxZUsxbnR9F1JDbdoKzGf9UM=";
+    modRoot = "src/wrapper";
+    vendorHash = "sha256-GD+G+7b8GBwR3OrRPJbGJVom+kLC67VvlGFIA0S7UF8=";
   }).goModules;
 in
 stdenv.mkDerivation {
   pname = "ktailctl";
   inherit version src;
 
+  patches = [
+    # Install libktailctl_config.so https://github.com/f-koehler/KTailctl/pull/212
+    ./install-missing-libraries.diff
+  ];
+
   postPatch = ''
-    cp -r --reflink=auto ${goDeps} tailwrap/vendor
+    cp -r --reflink=auto ${goDeps} src/wrapper/vendor
   '';
 
   # needed for go build to work
@@ -67,13 +74,16 @@ stdenv.mkDerivation {
     qtbase
     qtdeclarative
     qtsvg
+    qtwayland
     kconfig
     kcoreaddons
     kguiaddons
     ki18n
     kirigami
+    kirigami-addons
     knotifications
     nlohmann_json
+    qqc2-desktop-style
   ];
 
   meta = with lib; {
@@ -82,6 +92,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ k900 ];
     mainProgram = "ktailctl";
-    platforms = platforms.all;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/networking/ktailctl/install-missing-libraries.diff b/pkgs/applications/networking/ktailctl/install-missing-libraries.diff
new file mode 100644
index 0000000000000..6153199a66638
--- /dev/null
+++ b/pkgs/applications/networking/ktailctl/install-missing-libraries.diff
@@ -0,0 +1,9 @@
+diff --git a/src/config/CMakeLists.txt b/src/config/CMakeLists.txt
+index ed0a64a..970e509 100644
+--- a/src/config/CMakeLists.txt
++++ b/src/config/CMakeLists.txt
+@@ -7,3 +7,4 @@ target_link_libraries(ktailctl_config
+     KF6::ConfigGui
+     ktailctl_wrapper
+ )
++install(TARGETS ktailctl_config)
diff --git a/pkgs/by-name/le/lefthook/package.nix b/pkgs/by-name/le/lefthook/package.nix
index 2931a41cc3efd..160029bae89d2 100644
--- a/pkgs/by-name/le/lefthook/package.nix
+++ b/pkgs/by-name/le/lefthook/package.nix
@@ -6,7 +6,7 @@
 
 let
   pname = "lefthook";
-  version = "1.6.16";
+  version = "1.6.18";
 in
 buildGoModule {
   inherit pname version;
@@ -15,7 +15,7 @@ buildGoModule {
     owner = "evilmartians";
     repo = "lefthook";
     rev = "v${version}";
-    hash = "sha256-5sGhm+ioH9hQLDuk7a0oUB1CqiiTt88UKAmBqUeCfic=";
+    hash = "sha256-jJKnBQ+49LtwSNTzX2xsL/lFFlaBBvJtIL9ltODPhEk=";
   };
 
   vendorHash = "sha256-ralnfqrP6R58Wjc/AWRf1motWZICPagZxHCkqVcwYoo=";
diff --git a/pkgs/development/tools/protoc-gen-prost-crate/default.nix b/pkgs/by-name/pr/protoc-gen-prost-crate/package.nix
index ed278646ee471..97c62110931cf 100644
--- a/pkgs/development/tools/protoc-gen-prost-crate/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-prost-crate/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-prost-crate";
-  version = "0.3.1";
+  version = "0.4.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-MtGeU2PnVYPXb3nly2UaryjmjMz1lxcvYDjFiwf58FA=";
+    hash = "sha256-+TSZ2QstAF8DXsHunV/nQyqF++0bFud1ZWJQEI3JEwc=";
   };
 
-  cargoSha256 = "sha256-dcKJRX/iHIWEmBD2nTMyQozxld8b7dhxxB85quPUysg=";
+  cargoHash = "sha256-KbErgnXG11ngzLVSktuyUAupYs1ZD64z3plKVtzLx1A=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protoc plugin that generates Cargo crates and include files for `protoc-gen-prost`";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/development/tools/protoc-gen-prost-serde/default.nix b/pkgs/by-name/pr/protoc-gen-prost-serde/package.nix
index e1595e0a2b868..3486fbea0e1e8 100644
--- a/pkgs/development/tools/protoc-gen-prost-serde/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-prost-serde/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-prost-serde";
-  version = "0.2.3";
+  version = "0.3.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-V2Z6m9y/bBwrr1mgKXKZjVg+LqTe+GalN/AeaICyE64=";
+    hash = "sha256-O2Mpft31ZQncqETWzwD73I1nX1Wt5XVHcTJUk5qhRLY=";
   };
 
-  cargoSha256 = "sha256-l27+Rs4TYIJXZVLj7Tjw8M5+7ivWEY0TXbLtbuzwxLw=";
+  cargoHash = "sha256-aUWmNS3jF1I0NLApBn3GMMv6ID9mM/j7r7sPFCsFIuw=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protoc plugin that generates serde serialization implementations for `protoc-gen-prost`";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/development/tools/protoc-gen-prost/default.nix b/pkgs/by-name/pr/protoc-gen-prost/package.nix
index 6012af0acf3c2..7c92095fbeee7 100644
--- a/pkgs/development/tools/protoc-gen-prost/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-prost/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-prost";
-  version = "0.2.3";
+  version = "0.3.1";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-QTt5mSUe41r2fxrgWj1l6fHC/utMVIgMi2ySsdGyl/Y=";
+    hash = "sha256-ma9sdt3/uq06BMELwsNadMkiEfstQhA4DAQEPdizZJM=";
   };
 
-  cargoSha256 = "sha256-ghXcyxG9zqUOFKGvUza29OgC3XiEtesqsAsfI/lFT08=";
+  cargoHash = "sha256-pJDrwX5uDIrycxtmbds8l4wadZE0RdgmNpMwVkUGJDs=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protocol Buffers compiler plugin powered by Prost";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/development/tools/protoc-gen-tonic/default.nix b/pkgs/by-name/pr/protoc-gen-tonic/package.nix
index 6855285341e57..55c1828618e9d 100644
--- a/pkgs/development/tools/protoc-gen-tonic/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-tonic/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-tonic";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-jgU1XvUxIrZ72dLNPqDGHCONMlHsjW4k4vkO626iqxs=";
+    hash = "sha256-3qz1ea9lEsZjhWNA0lcwqsPkNmjj2ZBljqNRr5/2lKM=";
   };
 
-  cargoSha256 = "sha256-FrkvL/uJitMkSyOytVSmlwr26yMVM12S2n+EaSw11CE=";
+  cargoHash = "sha256-nUsRoDaP+omZdOTnaxvHbJT1uNGtyfgXyEFZbp/CeYA=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protoc plugin that generates Tonic gRPC server and client code using the Prost code generation engine";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/by-name/qu/quickemu/package.nix b/pkgs/by-name/qu/quickemu/package.nix
index b650ef91f88ec..5349581aab119 100644
--- a/pkgs/by-name/qu/quickemu/package.nix
+++ b/pkgs/by-name/qu/quickemu/package.nix
@@ -56,13 +56,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "quickemu";
-  version = "4.9.4";
+  version = "4.9.4-unstable-2024-05-28";
 
   src = fetchFromGitHub {
     owner = "quickemu-project";
     repo = "quickemu";
-    rev = finalAttrs.version;
-    hash = "sha256-fjbXgze6klvbRgkJtPIUh9kEkP/As7dAj+cazpzelBY=";
+    rev = "d78255b097b599e8ab3713cb61c4085cc45f5a95"; # TODO: return to version on next release
+    hash = "sha256-fF306CdGqKM+779OLm0NNyqPBtm7TuU7UN/NanT12y8=";
   };
 
   postPatch = ''
@@ -74,16 +74,6 @@ stdenv.mkDerivation (finalAttrs: {
       quickemu
   '';
 
-  patches = [
-    # reduces windows vm ram requirements to 4G, to match microsoft recommendations
-    # TODO: remove on next release
-    (fetchpatch2 {
-      name = "decrease-windows-ram-requirements.patch";
-      url = "https://github.com/quickemu-project/quickemu/commit/f51697593a4650c5486661292e2febe1d16f8c71.patch";
-      hash = "sha256-J5hIvQGtkufOcjk2FZN65iox/W2zkLlg+Veg9TF11Fs=";
-    })
-  ];
-
   nativeBuildInputs = [
     makeWrapper
     installShellFiles
@@ -106,7 +96,10 @@ stdenv.mkDerivation (finalAttrs: {
     runHook postInstall
   '';
 
-  passthru.tests = testers.testVersion { package = quickemu; };
+  passthru.tests = testers.testVersion {
+    version = "4.9.5"; # required for passing tests, TODO: remove when release bump
+    package = quickemu;
+  };
 
   meta = {
     description = "Quickly create and run optimised Windows, macOS and Linux virtual machines";
diff --git a/pkgs/by-name/te/technitium-dns-server/package.nix b/pkgs/by-name/te/technitium-dns-server/package.nix
index b369a45869514..1844e08ddf8bd 100644
--- a/pkgs/by-name/te/technitium-dns-server/package.nix
+++ b/pkgs/by-name/te/technitium-dns-server/package.nix
@@ -8,13 +8,13 @@
 let
   technitium-library = buildDotnetModule rec {
     pname = "TechnitiumLibrary";
-    version = "40a7bc7a52cf5d2c371215ea7f5f6fdf71dc1d9c";
+    version = "570ec570b57d8591daa3df682ca9e6f37f373db6";
 
     src = fetchFromGitHub {
       owner = "TechnitiumSoftware";
       repo = "TechnitiumLibrary";
       rev = version;
-      hash = "sha256-FNCZH8LZXYyrz5SRIV8P7MruN+t6Qvl96Aa73q3InMI=";
+      hash = "sha256-xPwRoRp/XYrlGX3B9EiHUz2Tueh+hygbBopxFvdASLQ";
       name = "${pname}-${version}";
     };
 
@@ -30,13 +30,13 @@ let
 in
 buildDotnetModule rec {
   pname = "technitium-dns-server";
-  version = "12.1";
+  version = "12.2.1";
 
   src = fetchFromGitHub {
     owner = "TechnitiumSoftware";
     repo = "DnsServer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TfVWGomvKV7QeJUyFMNDAnHKY3YTEwWPxTlW6RhmsR4=";
+    hash = "sha256-2RB/pUlA9z7TJ4xd509nsbO1BnxY3mv2jou6OGRd/yM=";
     name = "${pname}-${version}";
   };
 
diff --git a/pkgs/by-name/te/tenv/package.nix b/pkgs/by-name/te/tenv/package.nix
index 042c389ac42e3..800bea1565501 100644
--- a/pkgs/by-name/te/tenv/package.nix
+++ b/pkgs/by-name/te/tenv/package.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "tenv";
-  version = "2.0.7";
+  version = "2.1.8";
 
   src = fetchFromGitHub {
     owner = "tofuutils";
     repo = "tenv";
     rev = "v${version}";
-    hash = "sha256-654ZaQ7KzAWEXwN9Xwzdmg4KsCCLCm+i2M0730gP/zM=";
+    hash = "sha256-9wY+9lAbrnwiXpLilMaqtQz0XmMGRMv+m+yR7BxmSsw=";
   };
 
-  vendorHash = "sha256-OrMCzqqOFQkI8IwcfO/JVPyd/sw+Ud0VySV7UPiucwc=";
+  vendorHash = "sha256-v1NWlZhfypoS+bZCtr+P2s1t4qYVncbjx9IyRhi2sa4=";
 
   # Tests disabled for requiring network access to release.hashicorp.com
   doCheck = false;
diff --git a/pkgs/by-name/vm/vmctl/package.nix b/pkgs/by-name/vm/vmctl/package.nix
new file mode 100644
index 0000000000000..910ecd5f9d6d6
--- /dev/null
+++ b/pkgs/by-name/vm/vmctl/package.nix
@@ -0,0 +1,70 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+  openssh,
+  socat,
+  gawk,
+  cloud-utils,
+  cdrtools,
+  qemu,
+  qemu-utils,
+  coreutils,
+  getopt,
+  makeWrapper,
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "vmctl";
+  version = "v0.99-unstable-2024-05-14";
+
+  src = fetchFromGitHub {
+    owner = "SamsungDS";
+    repo = "vmctl";
+    rev = "5b6b7084b8cba06b474c0e020df965237f2c832c";
+    hash = "sha256-yDgaY2RJXBjWkMSQb4JaJzMGLFzowfOGixSRzzv2iIk=";
+  };
+
+  dontBuild = true;
+
+  postPatch = ''
+    substituteInPlace vmctl \
+      --replace 'BASEDIR="$(dirname "$(readlink -f "''${BASH_SOURCE[0]}")")"' 'BASEDIR="${placeholder "out"}"'
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm555 vmctl -t "$out/bin"
+    wrapProgram "$out/bin/vmctl" \
+      --set PATH "${
+        lib.makeBinPath [
+          openssh
+          socat
+          gawk
+          cloud-utils
+          cdrtools
+          qemu
+          qemu-utils
+          coreutils
+          getopt
+        ]
+      }"
+    cp -r {cmd,common,contrib,lib} $out
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Command line tool focused on NVMe testing in QEMU";
+    homepage = "https://github.com/SamsungDS/vmctl";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ panky ];
+    platforms = [
+      "x86_64-linux"
+      "aarch64-linux"
+    ];
+  };
+}
diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix
index 3f2bb2e5cec83..c3ef3ab9db4a0 100644
--- a/pkgs/development/compilers/flutter/default.nix
+++ b/pkgs/development/compilers/flutter/default.nix
@@ -8,6 +8,8 @@ let
   mkFlutter =
     { version
     , engineVersion
+    , engineSwiftShaderHash
+    , engineSwiftShaderRev
     , engineHashes
     , enginePatches
     , dartVersion
@@ -20,7 +22,7 @@ let
     }@fargs:
     let
       args = {
-        inherit version engineVersion engineHashes enginePatches patches pubspecLock artifactHashes useNixpkgsEngine channel;
+        inherit version engineVersion engineSwiftShaderRev engineSwiftShaderHash engineHashes enginePatches patches pubspecLock artifactHashes useNixpkgsEngine channel;
 
         dart = dart.override {
           version = dartVersion;
diff --git a/pkgs/development/compilers/flutter/engine/dart.nix b/pkgs/development/compilers/flutter/engine/dart.nix
new file mode 100644
index 0000000000000..c872113f4a90e
--- /dev/null
+++ b/pkgs/development/compilers/flutter/engine/dart.nix
@@ -0,0 +1,13 @@
+{ engine, runCommand }:
+runCommand "flutter-engine-${engine.version}-dart" {
+  version = engine.dartSdkVersion;
+
+  inherit engine;
+  inherit (engine) outName;
+
+  meta = engine.meta // {
+    description = "Dart SDK compiled from the Flutter Engine";
+  };
+} ''
+  ln -s ${engine}/out/$outName/dart-sdk $out
+''
diff --git a/pkgs/development/compilers/flutter/engine/default.nix b/pkgs/development/compilers/flutter/engine/default.nix
index cea41933e4343..4aac2301f866c 100644
--- a/pkgs/development/compilers/flutter/engine/default.nix
+++ b/pkgs/development/compilers/flutter/engine/default.nix
@@ -2,6 +2,8 @@
   callPackage,
   dartSdkVersion,
   flutterVersion,
+  swiftshaderHash,
+  swiftshaderRev,
   version,
   hashes,
   url,
@@ -10,10 +12,13 @@
   isOptimized ? true,
   lib,
   stdenv,
-}:
+  dart,
+  mainRuntimeMode ? null,
+  altRuntimeMode ? null,
+}@args:
 let
-  mainRuntimeMode = builtins.elemAt runtimeModes 0;
-  altRuntimeMode = builtins.elemAt runtimeModes 1;
+  mainRuntimeMode = args.mainRuntimeMode or builtins.elemAt runtimeModes 0;
+  altRuntimeMode = args.altRuntimeMode or builtins.elemAt runtimeModes 1;
 
   runtimeModesBuilds = lib.genAttrs runtimeModes (
     runtimeMode:
@@ -21,6 +26,8 @@ let
       inherit
         dartSdkVersion
         flutterVersion
+        swiftshaderHash
+        swiftshaderRev
         version
         hashes
         url
@@ -42,6 +49,8 @@ stdenv.mkDerivation (
       dartSdkVersion
       isOptimized
       runtimeMode
+      outName
+      dart
       ;
     inherit altRuntimeMode;
 
@@ -51,19 +60,12 @@ stdenv.mkDerivation (
     installPhase =
       ''
         mkdir -p $out/out
-
-        for dir in $(find $src/src -mindepth 1 -maxdepth 1); do
-          ln -sf $dir $out/$(basename $dir)
-        done
-
       ''
       + lib.concatMapStrings (
         runtimeMode:
         let
           runtimeModeBuild = runtimeModesBuilds.${runtimeMode};
-          runtimeModeOut = "host_${runtimeMode}${
-            lib.optionalString (!runtimeModeBuild.isOptimized) "_unopt"
-          }";
+          runtimeModeOut = runtimeModeBuild.outName;
         in
         ''
           ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut}
diff --git a/pkgs/development/compilers/flutter/engine/package.nix b/pkgs/development/compilers/flutter/engine/package.nix
index 6f87b28f19098..7c2cd5cec2201 100644
--- a/pkgs/development/compilers/flutter/engine/package.nix
+++ b/pkgs/development/compilers/flutter/engine/package.nix
@@ -11,8 +11,12 @@
   tools ? callPackage ./tools.nix { inherit hostPlatform; },
   stdenv,
   stdenvNoCC,
+  dart,
+  fetchgit,
   runCommand,
+  llvmPackages,
   patchelf,
+  openbox,
   xorg,
   libglvnd,
   libepoxy,
@@ -33,6 +37,8 @@
   version,
   flutterVersion,
   dartSdkVersion,
+  swiftshaderHash,
+  swiftshaderRev,
   hashes,
   patches,
   url,
@@ -56,8 +62,24 @@ let
       url
       ;
   };
+
+  swiftshader = fetchgit {
+    url = "https://swiftshader.googlesource.com/SwiftShader.git";
+    hash = swiftshaderHash;
+    rev = swiftshaderRev;
+  };
+
+  llvm = symlinkJoin {
+    name = "llvm";
+    paths = with llvmPackages; [
+      clang
+      llvmPackages.llvm
+    ];
+  };
+
+  outName = "host_${runtimeMode}${lib.optionalString (!isOptimized) "_unopt --unoptimized"}";
 in
-stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "flutter-engine-${runtimeMode}${lib.optionalString (!isOptimized) "-unopt"}";
   inherit
     version
@@ -65,7 +87,9 @@ stdenv.mkDerivation {
     patches
     isOptimized
     dartSdkVersion
-    src;
+    src
+    outName
+    swiftshader;
 
   toolchain = symlinkJoin {
     name = "flutter-engine-toolchain-${version}";
@@ -107,11 +131,18 @@ stdenv.mkDerivation {
         stdenv.cc.libc_lib
       ];
 
+    # Needed due to Flutter expecting everything to be relative to $out
+    # and not true absolute path (ie relative to "/").
     postBuild = ''
-      ln -s /nix $out/nix
+      mkdir -p $(dirname $(dirname "$out/$out"))
+      ln -s $(dirname "$out") $out/$(dirname "$out")
     '';
   };
 
+  NIX_CFLAGS_COMPILE = "-I${finalAttrs.toolchain}/include";
+
+  nativeCheckInputs = lib.optionals stdenv.isLinux [ xorg.xorgserver openbox ];
+
   nativeBuildInputs =
     [
       python3
@@ -119,6 +150,7 @@ stdenv.mkDerivation {
       git
       pkg-config
       ninja
+      dart
     ]
     ++ lib.optionals (stdenv.isLinux) [ patchelf ]
     ++ optionals (stdenv.isDarwin) [
@@ -130,54 +162,10 @@ stdenv.mkDerivation {
 
   buildInputs = [ gtk3 ];
 
-  patchtools =
-    let
-      buildtoolsPath =
-        if lib.versionAtLeast flutterVersion "3.21" then "flutter/buildtools" else "buildtools";
-    in
-    [
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-apply-replacements"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-doc"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-format"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-include-fixer"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-refactor"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-scan-deps"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-tidy"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/clangd"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/dsymutil"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/find-all-symbols"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/lld"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-ar"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-bolt"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-cov"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-cxxfilt"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-debuginfod-find"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-dwarfdump"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-dwp"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-gsymutil"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-ifs"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-libtool-darwin"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-lipo"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-ml"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-mt"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-nm"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-objcopy"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-objdump"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-pdbutil"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-profdata"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-rc"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-readobj"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-size"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-symbolizer"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-undname"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-xray"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm"
-      "${buildtoolsPath}/${constants.alt-platform}/clang/bin/sancov"
-      "flutter/prebuilts/${constants.alt-platform}/dart-sdk/bin/dartaotruntime"
-      "flutter/prebuilts/${constants.alt-platform}/dart-sdk/bin/dart"
-      "flutter/third_party/gn/gn"
-      "third_party/dart/tools/sdks/dart-sdk/bin/dart"
-    ];
+  patchtools = [
+    "third_party/dart/tools/sdks/dart-sdk/bin/dart"
+    "flutter/third_party/gn/gn"
+  ];
 
   dontPatch = true;
 
@@ -189,6 +177,9 @@ stdenv.mkDerivation {
 
   postUnpack = ''
     pushd ${src.name}
+
+    ln -s $swiftshader src/flutter/third_party/swiftshader
+
     ${lib.optionalString (stdenv.isLinux) ''
       for patchtool in ''${patchtools[@]}; do
         patchelf src/$patchtool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
@@ -203,11 +194,14 @@ stdenv.mkDerivation {
       git add .
       git config user.name "nobody"
       git config user.email "nobody@local.host"
-      git commit -a -m "$rev"
+      git commit -a -m "$rev" --quiet
       popd
     done
 
-    src/flutter/prebuilts/${constants.alt-platform}/dart-sdk/bin/dart src/third_party/dart/tools/generate_package_config.dart
+    mkdir -p src/flutter/buildtools/${constants.alt-platform}
+    ln -s ${llvm} src/flutter/buildtools/${constants.alt-platform}/clang
+
+    dart src/third_party/dart/tools/generate_package_config.dart
     cp ${./pkg-config.py} src/build/config/linux/pkg-config.py
     echo "${dartSdkVersion}" >src/third_party/dart/sdk/version
 
@@ -250,8 +244,9 @@ stdenv.mkDerivation {
         --runtime-mode $runtimeMode \
         --out-dir $out \
         --target-sysroot $toolchain \
-        --target-dir host_$runtimeMode${lib.optionalString (!isOptimized) "_unopt --unoptimized"} \
-        --verbose
+        --target-dir $outName \
+        --target-triple ${targetPlatform.config} \
+        --enable-fontconfig
 
       runHook postConfigure
     '';
@@ -261,39 +256,48 @@ stdenv.mkDerivation {
 
     export TERM=dumb
     for tool in flatc scenec gen_snapshot dart impellerc shader_archiver gen_snapshot_product; do
-      ninja -C $out/out/host_$runtimeMode${
-        lib.optionalString (!isOptimized) "_unopt"
-      } -j$NIX_BUILD_CORES $tool
+      ninja -C $out/out/$outName -j$NIX_BUILD_CORES $tool
       ${lib.optionalString (stdenv.isLinux) ''
-        patchelf $out/out/host_$runtimeMode${
-          lib.optionalString (!isOptimized) "_unopt"
-        }/$tool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
+        patchelf $out/out/$outName/$tool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
       ''}
     done
 
-    ninja -C $out/out/host_$runtimeMode${lib.optionalString (!isOptimized) "_unopt"} -j$NIX_BUILD_CORES
+    ninja -C $out/out/$outName -j$NIX_BUILD_CORES
 
     ${lib.optionalString (stdenv.isLinux) ''
-      patchelf $out/out/host_$runtimeMode${
-        lib.optionalString (!isOptimized) "_unopt"
-      }/dart-sdk/bin/dartaotruntime \
+      patchelf $out/out/$outName/dart-sdk/bin/dartaotruntime \
         --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
+
+      find $out/out/$outName/exe.unstripped -executable -type f -exec patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) {} \;
     ''}
 
     runHook postBuild
   '';
 
-  # Link sources so we can set $FLUTTER_ENGINE to this derivation
+  # Tests are broken
+  doCheck = false;
+  checkPhase = ''
+    ln -s $out/out src/out
+    touch src/out/run_tests.log
+    sh src/flutter/testing/run_tests.sh $outName
+    rm src/out/run_tests.log
+  '';
+
   installPhase = ''
     runHook preInstall
 
-    for dir in $(find $src/src -mindepth 1 -maxdepth 1); do
-      ln -sf $dir $out/$(basename $dir)
-    done
+    rm -rf $out/out/$outName/{obj,gen,exe.unstripped,lib.unstripped,zip_archives}
+    rm $out/out/$outName/{args.gn,build.ninja,build.ninja.d,compile_commands.json,display_list_rendertests,flutter_tester,toolchain.ninja}
+    find $out/out/$outName -name '*_unittests' -delete
+    find $out/out/$outName -name '*_benchmarks' -delete
 
     runHook postInstall
   '';
 
+  passthru = {
+    dart = callPackage ./dart.nix { engine = finalAttrs.finalPackage; };
+  };
+
   meta = {
     # Very broken on Darwin
     broken = stdenv.isDarwin;
@@ -308,4 +312,4 @@ stdenv.mkDerivation {
       "aarch64-darwin"
     ];
   };
-}
+})
diff --git a/pkgs/development/compilers/flutter/engine/source.nix b/pkgs/development/compilers/flutter/engine/source.nix
index 4b9b5aaa5adb2..413b1874a9812 100644
--- a/pkgs/development/compilers/flutter/engine/source.nix
+++ b/pkgs/development/compilers/flutter/engine/source.nix
@@ -2,6 +2,7 @@
   callPackage,
   hostPlatform,
   targetPlatform,
+  fetchgit,
   tools ? callPackage ./tools.nix { inherit hostPlatform; },
   curl,
   pkg-config,
@@ -16,6 +17,7 @@
 }:
 let
   constants = callPackage ./constants.nix { inherit targetPlatform; };
+  boolOption = value: if value then "True" else "False";
 in
 runCommand "flutter-engine-source-${version}-${targetPlatform.system}"
   {
@@ -42,6 +44,14 @@ runCommand "flutter-engine-source-${version}-${targetPlatform.system}"
         "managed": False,
         "name": "src/flutter",
         "url": "${url}",
+        "custom_vars": {
+          "download_fuchsia_deps": False,
+          "download_android_deps": False,
+          "download_linux_deps": ${boolOption targetPlatform.isLinux},
+          "setup_githooks": False,
+          "download_esbuild": False,
+          "download_dart_sdk": False,
+        },
       }]
     '';
 
@@ -66,13 +76,13 @@ runCommand "flutter-engine-source-${version}-${targetPlatform.system}"
     cd $out
 
     export PATH=$PATH:$depot_tools
-    python3 $depot_tools/gclient.py sync --no-history --shallow --nohooks >/dev/null
+    python3 $depot_tools/gclient.py sync --no-history --shallow --nohooks 2>&1 >/dev/null
     find $out -name '.git' -exec dirname {} \; | xargs bash -c 'make_deterministic_repo $@' _
     find $out -path '*/.git/*' ! -name 'HEAD' -prune -exec rm -rf {} \;
     find $out -name '.git' -exec mkdir {}/logs \;
     find $out -name '.git' -exec cp {}/HEAD {}/logs/HEAD \;
 
-    python3 src/build/linux/sysroot_scripts/install-sysroot.py --arch=${constants.arch} >/dev/null
+    rm -rf $out/src/flutter/{buildtools,prebuilts,third_party/swiftshader}
 
     rm -rf $out/.cipd $out/.gclient $out/.gclient_entries $out/.gclient_previous_custom_vars $out/.gclient_previous_sync_commits
   ''
diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix
index 757766d031524..870c63afa8069 100644
--- a/pkgs/development/compilers/flutter/flutter.nix
+++ b/pkgs/development/compilers/flutter/flutter.nix
@@ -5,6 +5,8 @@
 , engineUrl ? "https://github.com/flutter/engine.git@${engineVersion}"
 , enginePatches ? []
 , engineRuntimeModes ? [ "release" "debug" ]
+, engineSwiftShaderHash
+, engineSwiftShaderRev
 , patches
 , channel
 , dart
@@ -19,20 +21,17 @@
 , git
 , which
 , jq
-, flutterTools ? callPackage ./flutter-tools.nix {
-    inherit dart version;
-    flutterSrc = src;
-    inherit patches;
-    inherit pubspecLock;
-    systemPlatform = stdenv.hostPlatform.system;
-  }
+, flutterTools ? null
 }@args:
 
 let
   engine = if args.useNixpkgsEngine or false then
     callPackage ./engine/default.nix {
-      dartSdkVersion = dart.version;
+      inherit (args) dart;
+      dartSdkVersion = args.dart.version;
       flutterVersion = version;
+      swiftshaderRev = engineSwiftShaderRev;
+      swiftshaderHash = engineSwiftShaderHash;
       version = engineVersion;
       hashes = engineHashes;
       url = engineUrl;
@@ -40,6 +39,17 @@ let
       runtimeModes = engineRuntimeModes;
     } else null;
 
+  dart = if args.useNixpkgsEngine or false then
+    engine.dart else args.dart;
+
+  flutterTools = args.flutterTools or (callPackage ./flutter-tools.nix {
+    inherit dart version;
+    flutterSrc = src;
+    inherit patches;
+    inherit pubspecLock;
+    systemPlatform = stdenv.hostPlatform.system;
+  });
+
   unwrapped =
     stdenv.mkDerivation {
       name = "flutter-${version}-unwrapped";
diff --git a/pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in b/pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in
new file mode 100644
index 0000000000000..2dffbe950b86f
--- /dev/null
+++ b/pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in
@@ -0,0 +1,5 @@
+{ fetchgit }:
+fetchgit {
+  url = "https://swiftshader.googlesource.com/SwiftShader.git";
+  rev = "@engine_swiftshader_rev@";
+}
diff --git a/pkgs/development/compilers/flutter/update/update.py b/pkgs/development/compilers/flutter/update/update.py
index a782b46514a92..cc6d114e694a7 100755
--- a/pkgs/development/compilers/flutter/update/update.py
+++ b/pkgs/development/compilers/flutter/update/update.py
@@ -14,6 +14,7 @@ import argparse
 import yaml
 import json
 
+FAKE_HASH = 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='
 
 NIXPKGS_ROOT = subprocess.Popen(['git',
                                  'rev-parse',
@@ -200,6 +201,22 @@ def get_pubspec_lock(flutter_compact_version, flutter_src):
 
     return yaml.safe_load(pubspec_lock_yaml)
 
+def get_engine_swiftshader_rev(engine_version):
+    with urllib.request.urlopen(f"https://github.com/flutter/engine/raw/{engine_version}/DEPS") as f:
+        deps = f.read().decode('utf-8')
+        pattern = re.compile(r"Var\('swiftshader_git'\) \+ '\/SwiftShader\.git' \+ '@' \+ \'([0-9a-fA-F]{40})\'\,")
+        rev = pattern.findall(deps)[0]
+        return rev
+
+def get_engine_swiftshader_hash(engine_swiftshader_rev):
+    code = load_code(
+        "get-engine-swiftshader.nix",
+        engine_swiftshader_rev=engine_swiftshader_rev,
+        hash="")
+
+    stderr = nix_build_to_fail(code)
+    pattern = re.compile(r"got:\s+(.+?)\n")
+    return pattern.findall(stderr)[0]
 
 def write_data(
         nixpkgs_flutter_version_directory,
@@ -207,6 +224,8 @@ def write_data(
         channel,
         engine_hash,
         engine_hashes,
+        engine_swiftshader_hash,
+        engine_swiftshader_rev,
         dart_version,
         dart_hash,
         flutter_hash,
@@ -216,6 +235,8 @@ def write_data(
         f.write(json.dumps({
             "version": flutter_version,
             "engineVersion": engine_hash,
+            "engineSwiftShaderHash": engine_swiftshader_hash,
+            "engineSwiftShaderRev": engine_swiftshader_rev,
             "channel": channel,
             "engineHashes": engine_hashes,
             "dartVersion": dart_version,
@@ -360,6 +381,8 @@ def main():
         pubspec_lock={},
         artifact_hashes={},
         engine_hashes={},
+        engine_swiftshader_hash=FAKE_HASH,
+        engine_swiftshader_rev='0',
         **common_data_args)
 
     pubspec_lock = get_pubspec_lock(flutter_compact_version, flutter_src)
@@ -368,6 +391,8 @@ def main():
         pubspec_lock=pubspec_lock,
         artifact_hashes={},
         engine_hashes={},
+        engine_swiftshader_hash=FAKE_HASH,
+        engine_swiftshader_rev='0',
         **common_data_args)
 
     artifact_hashes = get_artifact_hashes(flutter_compact_version)
@@ -376,6 +401,8 @@ def main():
         pubspec_lock=pubspec_lock,
         artifact_hashes=artifact_hashes,
         engine_hashes={},
+        engine_swiftshader_hash=FAKE_HASH,
+        engine_swiftshader_rev='0',
         **common_data_args)
 
     engine_hashes = get_engine_hashes(engine_hash)
@@ -384,6 +411,19 @@ def main():
         pubspec_lock=pubspec_lock,
         artifact_hashes=artifact_hashes,
         engine_hashes=engine_hashes,
+        engine_swiftshader_hash=FAKE_HASH,
+        engine_swiftshader_rev='0',
+        **common_data_args)
+
+    engine_swiftshader_rev = get_engine_swiftshader_rev(engine_hash)
+    engine_swiftshader_hash = get_engine_swiftshader_hash(engine_swiftshader_rev)
+
+    write_data(
+        pubspec_lock=pubspec_lock,
+        artifact_hashes=artifact_hashes,
+        engine_hashes=engine_hashes,
+        engine_swiftshader_hash=engine_swiftshader_hash,
+        engine_swiftshader_rev=engine_swiftshader_rev,
         **common_data_args)
 
 
diff --git a/pkgs/development/compilers/flutter/versions/3_13/data.json b/pkgs/development/compilers/flutter/versions/3_13/data.json
index eb707f74f7c26..9bd8b818bf469 100644
--- a/pkgs/development/compilers/flutter/versions/3_13/data.json
+++ b/pkgs/development/compilers/flutter/versions/3_13/data.json
@@ -1,9 +1,12 @@
 {
   "version": "3.13.8",
   "engineVersion": "767d8c75e898091b925519803830fc2721658d07",
+  "engineSwiftShaderHash": "sha256-N6f5aeDroqEwZlUBZi7nhDW8leE/7DqmOtRYOY4wzf4=",
+  "engineSwiftShaderRev": "5f9ed9b16931c7155171d31f75004f73f0a3abc8",
   "channel": "stable",
   "engineHashes": {
-    "aarch64-linux": "sha256-1s7I+AWb2kNDzJ5k2XYm7rSK8yj1wqTjPUuS0f85Jig="
+    "aarch64-linux": "sha256-+MIGPmKHkcn3TlFYu6jXv8KBRqdECgtGSqAKQE33iAM=",
+    "x86_64-linux": "sha256-+MIGPmKHkcn3TlFYu6jXv8KBRqdECgtGSqAKQE33iAM="
   },
   "dartVersion": "3.1.4",
   "dartHash": {
@@ -15,52 +18,52 @@
   "flutterHash": "sha256-00G030FvZZTsdf9ruFs9jdIHcC5h+xpp4NlmL64qVZA=",
   "artifactHashes": {
     "android": {
-      "x86_64-linux": "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=",
+      "aarch64-darwin": "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ=",
       "aarch64-linux": "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=",
       "x86_64-darwin": "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ=",
-      "aarch64-darwin": "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ="
+      "x86_64-linux": "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y="
     },
     "fuchsia": {
-      "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
+      "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
       "aarch64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
       "x86_64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
-      "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk="
+      "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk="
     },
     "ios": {
-      "x86_64-linux": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=",
+      "aarch64-darwin": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=",
       "aarch64-linux": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=",
       "x86_64-darwin": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=",
-      "aarch64-darwin": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao="
+      "x86_64-linux": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao="
     },
     "linux": {
-      "x86_64-linux": "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=",
+      "aarch64-darwin": "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M=",
       "aarch64-linux": "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M=",
       "x86_64-darwin": "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=",
-      "aarch64-darwin": "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M="
+      "x86_64-linux": "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs="
     },
     "macos": {
-      "x86_64-linux": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=",
+      "aarch64-darwin": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=",
       "aarch64-linux": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=",
       "x86_64-darwin": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=",
-      "aarch64-darwin": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc="
+      "x86_64-linux": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc="
     },
     "universal": {
-      "x86_64-linux": "sha256-wATt1UPjo/fh7RFO1vvcUAdo0dMAaaOUIuzYodsM0v0=",
+      "aarch64-darwin": "sha256-mSpAPKyP9v0dbkXqYkzGOnD5OEjRZigiRElXXcHZ5TE=",
       "aarch64-linux": "sha256-Z9bszNaIpCccG7OfvE5WFsw36dITiyCQAZ6p29+Yq68=",
       "x86_64-darwin": "sha256-qN5bAXRfQ78TWF3FLBIxWzUB5y5OrZVQTEilY5J/+2k=",
-      "aarch64-darwin": "sha256-mSpAPKyP9v0dbkXqYkzGOnD5OEjRZigiRElXXcHZ5TE="
+      "x86_64-linux": "sha256-wATt1UPjo/fh7RFO1vvcUAdo0dMAaaOUIuzYodsM0v0="
     },
     "web": {
-      "x86_64-linux": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=",
+      "aarch64-darwin": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=",
       "aarch64-linux": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=",
       "x86_64-darwin": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=",
-      "aarch64-darwin": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0="
+      "x86_64-linux": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0="
     },
     "windows": {
-      "x86_64-linux": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=",
+      "aarch64-darwin": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=",
       "aarch64-linux": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=",
       "x86_64-darwin": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=",
-      "aarch64-darwin": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI="
+      "x86_64-linux": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI="
     }
   },
   "pubspecLock": {
diff --git a/pkgs/development/compilers/flutter/versions/3_16/data.json b/pkgs/development/compilers/flutter/versions/3_16/data.json
index 477328b4aa6b2..08cbdff5bc77d 100644
--- a/pkgs/development/compilers/flutter/versions/3_16/data.json
+++ b/pkgs/development/compilers/flutter/versions/3_16/data.json
@@ -1,9 +1,12 @@
 {
   "version": "3.16.7",
   "engineVersion": "4a585b79294e830fa89c24924d58a27cc8fbf406",
+  "engineSwiftShaderHash": "sha256-N6f5aeDroqEwZlUBZi7nhDW8leE/7DqmOtRYOY4wzf4=",
+  "engineSwiftShaderRev": "5f9ed9b16931c7155171d31f75004f73f0a3abc8",
   "channel": "stable",
   "engineHashes": {
-    "aarch64-linux": "sha256-xqniT1rYrzCuq6542KfqWRigYtLnmaT0z5Es/59iFMw="
+    "aarch64-linux": "sha256-irrfyKvTHqaBgcKg3jJzEDs1B4Q91u/e6Ui01MDI+oU=",
+    "x86_64-linux": "sha256-irrfyKvTHqaBgcKg3jJzEDs1B4Q91u/e6Ui01MDI+oU="
   },
   "dartVersion": "3.2.4",
   "dartHash": {
@@ -15,51 +18,51 @@
   "flutterHash": "sha256-j+tc8hMgZMBhju89n4e9tKRrq+CFBGOyeE0y+Z4FtHE=",
   "artifactHashes": {
     "android": {
+      "aarch64-darwin": "sha256-0FBI0CGMcxyttkzrdyjJlkGAjFd/yMuAQS3pDrNXZZw=",
       "aarch64-linux": "sha256-j8jstEE1RsTVHJbq6f6We0An+CyJz9JH/YClyNA4mwg=",
       "x86_64-darwin": "sha256-0FBI0CGMcxyttkzrdyjJlkGAjFd/yMuAQS3pDrNXZZw=",
-      "aarch64-darwin": "sha256-0FBI0CGMcxyttkzrdyjJlkGAjFd/yMuAQS3pDrNXZZw=",
       "x86_64-linux": "sha256-j8jstEE1RsTVHJbq6f6We0An+CyJz9JH/YClyNA4mwg="
     },
     "fuchsia": {
+      "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
       "aarch64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
       "x86_64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
-      "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=",
       "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk="
     },
     "ios": {
+      "aarch64-darwin": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=",
       "aarch64-linux": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=",
       "x86_64-darwin": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=",
-      "aarch64-darwin": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=",
       "x86_64-linux": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw="
     },
     "linux": {
+      "aarch64-darwin": "sha256-LWpou3L7bAWGn8i4nDT/BZez2Uhf/LbqC2C4Z98hCHQ=",
       "aarch64-linux": "sha256-LWpou3L7bAWGn8i4nDT/BZez2Uhf/LbqC2C4Z98hCHQ=",
       "x86_64-darwin": "sha256-BzjmO4F8B9GagYPbdvoT55r+YgZcP4BUaKgJPGZDXOU=",
-      "aarch64-darwin": "sha256-LWpou3L7bAWGn8i4nDT/BZez2Uhf/LbqC2C4Z98hCHQ=",
       "x86_64-linux": "sha256-BzjmO4F8B9GagYPbdvoT55r+YgZcP4BUaKgJPGZDXOU="
     },
     "macos": {
+      "aarch64-darwin": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=",
       "aarch64-linux": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=",
       "x86_64-darwin": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=",
-      "aarch64-darwin": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=",
       "x86_64-linux": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk="
     },
     "universal": {
+      "aarch64-darwin": "sha256-Emus5J3mqPv47PD6xqNUD1KpXhVkX4JpURWuYG6KC14=",
       "aarch64-linux": "sha256-uB2YZRjioP/koMbPvaBHsezjPO0w5a+BpxZaDuiINIY=",
       "x86_64-darwin": "sha256-Qwf12gMqrW5nDC9Is08oxWTbKMptRQRAIb58JETq3xA=",
-      "aarch64-darwin": "sha256-Emus5J3mqPv47PD6xqNUD1KpXhVkX4JpURWuYG6KC14=",
       "x86_64-linux": "sha256-quSFKx7TZRJpK+4YDt5f9jwr7rZsSsaXMxhJ8vIcczQ="
     },
     "web": {
+      "aarch64-darwin": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=",
       "aarch64-linux": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=",
       "x86_64-darwin": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=",
-      "aarch64-darwin": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=",
       "x86_64-linux": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw="
     },
     "windows": {
+      "aarch64-darwin": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=",
       "aarch64-linux": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=",
       "x86_64-darwin": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=",
-      "aarch64-darwin": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=",
       "x86_64-linux": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU="
     }
   },
diff --git a/pkgs/development/compilers/flutter/versions/3_19/data.json b/pkgs/development/compilers/flutter/versions/3_19/data.json
index c09d3e99a3cac..491447493db98 100644
--- a/pkgs/development/compilers/flutter/versions/3_19/data.json
+++ b/pkgs/development/compilers/flutter/versions/3_19/data.json
@@ -1,11 +1,12 @@
 {
   "version": "3.19.4",
   "engineVersion": "a5c24f538d05aaf66f7972fb23959d8cafb9f95a",
+  "engineSwiftShaderHash": "sha256-J8TKwbIQ7hdWCGIu1T//MJlRzT7OTVL0MG/dmMyutPQ=",
+  "engineSwiftShaderRev": "2fa7e9b99ae4e70ea5ae2cc9c8d3afb43391384f",
   "channel": "stable",
   "engineHashes": {
-    "x86_64-linux": "sha256-xhihh4v9bh2ZxAewKEdhpXerLDoXFm8YO72+tGRnkCw=",
-    "aarch64-linux": "sha256-mUimQRg0UqvTueuDWO8Isy0FKOxJLvVZrehv4SMj0XY=",
-    "aarch64-darwin": "sha256-5DcD7ebrANznB++QOQOoynr1aOgJqTF8QfSihQnghoY="
+    "aarch64-linux": "sha256-YTG46ZYCOu0OJGIILV6NGvIEhQU0yHNFSMR38Xvqa9E=",
+    "x86_64-linux": "sha256-YTG46ZYCOu0OJGIILV6NGvIEhQU0yHNFSMR38Xvqa9E="
   },
   "dartVersion": "3.3.2",
   "dartHash": {
diff --git a/pkgs/development/compilers/flutter/versions/3_22/data.json b/pkgs/development/compilers/flutter/versions/3_22/data.json
index 968fde9d7b27c..140b22bbcb1c6 100644
--- a/pkgs/development/compilers/flutter/versions/3_22/data.json
+++ b/pkgs/development/compilers/flutter/versions/3_22/data.json
@@ -1,10 +1,12 @@
 {
   "version": "3.22.2",
   "engineVersion": "edd8546116457bdf1c5bdfb13ecb9463d2bb5ed4",
+  "engineSwiftShaderHash": "sha256-J8TKwbIQ7hdWCGIu1T//MJlRzT7OTVL0MG/dmMyutPQ=",
+  "engineSwiftShaderRev": "2fa7e9b99ae4e70ea5ae2cc9c8d3afb43391384f",
   "channel": "stable",
   "engineHashes": {
-    "aarch64-linux": "sha256-xPVhLxO9AgXC2+Hwm1lWRfNZhLwZHdKW92WXgv3ImZk=",
-    "x86_64-linux": "sha256-klODJpmlWynYx+MqqGGeTzzPtmQTEUV47hnzjIVDCK8="
+    "aarch64-linux": "sha256-OPgevqdMwKhXml+PS5Z1DW0wg843NVN57CiLbXve8kE=",
+    "x86_64-linux": "sha256-OPgevqdMwKhXml+PS5Z1DW0wg843NVN57CiLbXve8kE="
   },
   "dartVersion": "3.4.3",
   "dartHash": {
diff --git a/pkgs/development/compilers/flutter/versions/3_23/data.json b/pkgs/development/compilers/flutter/versions/3_23/data.json
index 3c3fedbdecaeb..a4087fea903ec 100644
--- a/pkgs/development/compilers/flutter/versions/3_23/data.json
+++ b/pkgs/development/compilers/flutter/versions/3_23/data.json
@@ -1,9 +1,12 @@
 {
   "version": "3.23.0-0.1.pre",
   "engineVersion": "bb10c5466638e963479ba5e64e601e42d1a43447",
+  "engineSwiftShaderHash": "sha256-J8TKwbIQ7hdWCGIu1T//MJlRzT7OTVL0MG/dmMyutPQ=",
+  "engineSwiftShaderRev": "2fa7e9b99ae4e70ea5ae2cc9c8d3afb43391384f",
   "channel": "beta",
   "engineHashes": {
-    "aarch64-linux": "sha256-WHWxYOHd3jxE5CQNt0+9qxlsCLK5y9iJsVERtJ4Ylbk="
+    "aarch64-linux": "sha256-g169BDV6NtiyriMSgK3GOwhkVi9X23SqB9HOxxtGPK4=",
+    "x86_64-linux": "sha256-g169BDV6NtiyriMSgK3GOwhkVi9X23SqB9HOxxtGPK4="
   },
   "dartVersion": "3.5.0-180.3.beta",
   "dartHash": {
diff --git a/pkgs/development/compilers/flutter/wrapper.nix b/pkgs/development/compilers/flutter/wrapper.nix
index 4b20cf7f43f06..c988eba2e5aeb 100644
--- a/pkgs/development/compilers/flutter/wrapper.nix
+++ b/pkgs/development/compilers/flutter/wrapper.nix
@@ -7,7 +7,7 @@
     "universal"
     "web"
   ]
-  ++ lib.optional stdenv.hostPlatform.isLinux "linux"
+  ++ lib.optional (stdenv.hostPlatform.isLinux && !(flutter ? engine)) "linux"
   ++ lib.optional (stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin) "android"
   ++ lib.optionals stdenv.hostPlatform.isDarwin [ "macos" "ios" ]
 , artifactHashes ? flutter.artifactHashes
@@ -147,7 +147,7 @@ in
       --set-default ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \
       '' + lib.optionalString (flutter ? engine && flutter.engine.meta.available) ''
         --set-default FLUTTER_ENGINE "${flutter.engine}" \
-        --add-flags "--local-engine-host host_${flutter.engine.runtimeMode}${lib.optionalString (!flutter.engine.isOptimized) "_unopt"}" \
+        --add-flags "--local-engine-host ${flutter.engine.outName}" \
       '' + '' --suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \
       --suffix PKG_CONFIG_PATH : "$FLUTTER_PKG_CONFIG_PATH" \
       --suffix LIBRARY_PATH : '${lib.makeLibraryPath appStaticBuildDeps}' \
diff --git a/pkgs/development/libraries/gtest/default.nix b/pkgs/development/libraries/gtest/default.nix
index 51e0c685a43d2..7e44794620c03 100644
--- a/pkgs/development/libraries/gtest/default.nix
+++ b/pkgs/development/libraries/gtest/default.nix
@@ -3,6 +3,21 @@
 , fetchFromGitHub
 , cmake
 , ninja
+# Enable C++17 support
+#     https://github.com/google/googletest/issues/3081
+# Projects that require a higher standard can override this package.
+# For an example why that may be necessary, see:
+#     https://github.com/mhx/dwarfs/issues/188#issuecomment-1907574427
+# Setting this to `null` does not pass any flags to set this.
+, cxx_standard ? (
+    if (
+      (stdenv.cc.isGNU && (lib.versionOlder stdenv.cc.version "11.0"))
+      ||
+      (stdenv.cc.isClang && (lib.versionOlder stdenv.cc.version "16.0"))
+    )
+      then "17"
+      else null
+  )
 , static ? stdenv.hostPlatform.isStatic,
 }:
 
@@ -27,13 +42,8 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [
     "-DBUILD_SHARED_LIBS=${if static then "OFF" else "ON"}"
-  ] ++ lib.optionals (
-    (stdenv.cc.isGNU && (lib.versionOlder stdenv.cc.version "11.0"))
-    || (stdenv.cc.isClang && (lib.versionOlder stdenv.cc.version "16.0"))
-  ) [
-    # Enable C++17 support
-    # https://github.com/google/googletest/issues/3081
-    "-DCMAKE_CXX_STANDARD=17"
+  ] ++ lib.optionals (cxx_standard != null) [
+    "-DCMAKE_CXX_STANDARD=${cxx_standard}"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/slackclient/default.nix b/pkgs/development/python-modules/slackclient/default.nix
index a53a43ce80c57..9f1d3e92c08d6 100644
--- a/pkgs/development/python-modules/slackclient/default.nix
+++ b/pkgs/development/python-modules/slackclient/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "slackclient";
-  version = "3.28.0";
+  version = "3.29.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rsJLjqP1XT1JkFz3iQovF58XdkmVcL+jfjiiI9SqonE=";
+    hash = "sha256-49dSRg0nrTXuXfnrC2/3p/zYMxouXO9FLqSBSxg4TcU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/rocm-modules/5/clr/default.nix b/pkgs/development/rocm-modules/5/clr/default.nix
index 0c702dace2b81..49857e9d26f5a 100644
--- a/pkgs/development/rocm-modules/5/clr/default.nix
+++ b/pkgs/development/rocm-modules/5/clr/default.nix
@@ -114,6 +114,10 @@ in stdenv.mkDerivation (finalAttrs: {
 
     substituteInPlace hipamd/src/hip_embed_pch.sh \
       --replace "\''$LLVM_DIR/bin/clang" "${clang}/bin/clang"
+
+    substituteInPlace opencl/khronos/icd/loader/icd_platform.h \
+      --replace-fail '#define ICD_VENDOR_PATH "/etc/OpenCL/vendors/";' \
+                     '#define ICD_VENDOR_PATH "/run/opengl-driver/etc/OpenCL/vendors/";'
   '';
 
   postInstall = ''
diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix
index dedda194c8280..7d80242ccbda0 100644
--- a/pkgs/development/rocm-modules/6/clr/default.nix
+++ b/pkgs/development/rocm-modules/6/clr/default.nix
@@ -138,6 +138,10 @@ in stdenv.mkDerivation (finalAttrs: {
     # https://lists.debian.org/debian-ai/2024/02/msg00178.html
     substituteInPlace rocclr/utils/flags.hpp \
       --replace-fail "HIP_USE_RUNTIME_UNBUNDLER, false" "HIP_USE_RUNTIME_UNBUNDLER, true"
+
+    substituteInPlace opencl/khronos/icd/loader/icd_platform.h \
+      --replace-fail '#define ICD_VENDOR_PATH "/etc/OpenCL/vendors/";' \
+                     '#define ICD_VENDOR_PATH "/run/opengl-driver/etc/OpenCL/vendors/";'
   '';
 
   postInstall = ''
diff --git a/pkgs/development/tools/analysis/lcov/default.nix b/pkgs/development/tools/analysis/lcov/default.nix
index 349b44730b8a2..c5e3b43eea061 100644
--- a/pkgs/development/tools/analysis/lcov/default.nix
+++ b/pkgs/development/tools/analysis/lcov/default.nix
@@ -1,18 +1,42 @@
- {lib, stdenv, fetchFromGitHub, perl, perlPackages, makeWrapper }:
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  perl,
+  python3,
+  perlPackages,
+  makeWrapper,
+}:
 
+let
+  perlDeps = [
+    perlPackages.CaptureTiny
+    perlPackages.DateTime
+    perlPackages.DateTimeFormatW3CDTF
+    perlPackages.DevelCover
+    perlPackages.GD
+    perlPackages.JSONXS
+    perlPackages.MemoryProcess
+    perlPackages.PathTools
+  ];
+in
 stdenv.mkDerivation rec {
   pname = "lcov";
-  version = "1.16";
+  version = "2.1";
 
   src = fetchFromGitHub {
     owner = "linux-test-project";
     repo = "lcov";
     rev = "v${version}";
-    sha256 = "sha256-X1T5OqR6NgTNGedH1on3+XZ7369007By6tRJK8xtmbk=";
+    hash = "sha256-QfA+mzLfpi2fuhcPvCKO7YnPef1GMhCbgBWdXFTXPzE=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ perl ];
+
+  buildInputs = [
+    perl
+    python3
+  ];
 
   preBuild = ''
     patchShebangs bin/
@@ -20,26 +44,27 @@ stdenv.mkDerivation rec {
   '';
 
   postInstall = ''
-    wrapProgram $out/bin/lcov --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.PerlIOgzip perlPackages.JSON ]}
-    wrapProgram $out/bin/genpng --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.GD ]}
+    for f in "$out"/bin/{gen*,lcov,perl2lcov}; do
+      wrapProgram "$f" --set PERL5LIB ${perlPackages.makeFullPerlPath perlDeps}
+    done
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Code coverage tool that enhances GNU gcov";
 
-    longDescription =
-      '' LCOV is an extension of GCOV, a GNU tool which provides information
-         about what parts of a program are actually executed (i.e.,
-         "covered") while running a particular test case.  The extension
-         consists of a set of PERL scripts which build on the textual GCOV
-         output to implement the following enhanced functionality such as
-         HTML output.
-      '';
+    longDescription = ''
+      LCOV is an extension of GCOV, a GNU tool which provides information
+      about what parts of a program are actually executed (i.e.,
+      "covered") while running a particular test case.  The extension
+      consists of a set of PERL scripts which build on the textual GCOV
+      output to implement the following enhanced functionality such as
+      HTML output.
+    '';
 
-    homepage = "https://ltp.sourceforge.net/coverage/lcov.php";
+    homepage = "https://github.com/linux-test-project/lcov";
     license = lib.licenses.gpl2Plus;
 
-    maintainers = with maintainers; [ dezgeg ];
-    platforms = platforms.all;
+    maintainers = with lib.maintainers; [ dezgeg ];
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/development/tools/reindeer/default.nix b/pkgs/development/tools/reindeer/default.nix
index d868c5b16b874..a11f60bf99c4a 100644
--- a/pkgs/development/tools/reindeer/default.nix
+++ b/pkgs/development/tools/reindeer/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "reindeer";
-  version = "2024.06.10.00";
+  version = "2024.06.17.00";
 
   src = fetchFromGitHub {
     owner = "facebookincubator";
     repo = "reindeer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YAWGNF4WN8/RV3GYmxjyARNk4VzTXJEa42/gaK5B4CE=";
+    hash = "sha256-J3ZrlX83TE63Go4qp+lMhexkuaV0ZgHNYga8qxZF0wI=";
   };
 
-  cargoHash = "sha256-uNTDLQH6m4Dbk8tGyGnm0W5OK9OGaABZOq7weqtvaeU=";
+  cargoHash = "sha256-xqDMfGNvlyFo3v9GmESfRG+WyQKbzTojOqtYK/tMPxo=";
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs =
diff --git a/pkgs/development/tools/rye/Cargo.lock b/pkgs/development/tools/rye/Cargo.lock
index 3a7d4b0e21122..e2d27c9eade64 100644
--- a/pkgs/development/tools/rye/Cargo.lock
+++ b/pkgs/development/tools/rye/Cargo.lock
@@ -1799,7 +1799,7 @@ dependencies = [
 
 [[package]]
 name = "rye"
-version = "0.34.0"
+version = "0.35.0"
 dependencies = [
  "age",
  "anyhow",
diff --git a/pkgs/development/tools/rye/default.nix b/pkgs/development/tools/rye/default.nix
index ab191b7547be4..8414cd5f59c02 100644
--- a/pkgs/development/tools/rye/default.nix
+++ b/pkgs/development/tools/rye/default.nix
@@ -8,17 +8,20 @@
 , CoreServices
 , Libsystem
 , SystemConfiguration
+, nix-update-script
+, testers
+, rye
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "rye";
-  version = "0.34.0";
+  version = "0.35.0";
 
   src = fetchFromGitHub {
     owner = "mitsuhiko";
     repo = "rye";
     rev = "refs/tags/${version}";
-    hash = "sha256-M5TJXyh1fNigHOuBpEpnUeOWboZWxZ9bGrBuMB1oHgE=";
+    hash = "sha256-mkBp9iFoN1LanJrcm4VdZ9k8cWNaRZIYl10ukT4Rfqc=";
   };
 
   cargoLock = {
@@ -80,12 +83,17 @@ rustPlatform.buildRustPackage rec {
     "--skip=test_version"
   ];
 
-  meta = with lib; {
+  passthru = {
+    updateScript = nix-update-script { };
+    tests.version = testers.testVersion { package = rye; };
+  };
+
+  meta = {
     description = "Tool to easily manage python dependencies and environments";
     homepage = "https://github.com/mitsuhiko/rye";
     changelog = "https://github.com/mitsuhiko/rye/releases/tag/${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
     mainProgram = "rye";
   };
 }
diff --git a/pkgs/games/path-of-building/default.nix b/pkgs/games/path-of-building/default.nix
index 1e2a2811769a1..b3f5549c487c8 100644
--- a/pkgs/games/path-of-building/default.nix
+++ b/pkgs/games/path-of-building/default.nix
@@ -1,6 +1,21 @@
-{ stdenv, lib, fetchFromGitHub, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }:
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  unzip,
+  meson,
+  ninja,
+  pkg-config,
+  qtbase,
+  qttools,
+  wrapQtAppsHook,
+  icoutils,
+  copyDesktopItems,
+  makeDesktopItem,
+  luajit,
+}:
 let
-  data = stdenv.mkDerivation(finalAttrs: {
+  data = stdenv.mkDerivation (finalAttrs: {
     pname = "path-of-building-data";
     version = "2.42.0";
 
@@ -42,12 +57,35 @@ stdenv.mkDerivation {
     hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config qttools wrapQtAppsHook ];
-  buildInputs = [ qtbase luajit luajit.pkgs.lua-curl ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    qttools
+    wrapQtAppsHook
+    icoutils
+  ] ++ lib.optional stdenv.isLinux copyDesktopItems;
+
+  buildInputs = [
+    qtbase
+    luajit
+    luajit.pkgs.lua-curl
+  ];
 
   installPhase = ''
     runHook preInstall
     install -Dm555 pobfrontend $out/bin/pobfrontend
+
+    wrestool -x -t 14 ${data.src}/runtime/Path{space}of{space}Building.exe -o pathofbuilding.ico
+    icotool -x pathofbuilding.ico
+
+    for size in 16 32 48 256; do
+      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+      install -Dm 644 pathofbuilding*"$size"x"$size"*.png \
+        $out/share/icons/hicolor/"$size"x"$size"/apps/pathofbuilding.png
+    done
+    rm pathofbuilding.ico
+
     runHook postInstall
   '';
 
@@ -59,6 +97,27 @@ stdenv.mkDerivation {
     )
   '';
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = "path-of-building";
+      desktopName = "Path of Building";
+      comment = "Offline build planner for Path of Exile";
+      exec = "pobfrontend %U";
+      terminal = false;
+      type = "Application";
+      icon = "pathofbuilding";
+      categories = [ "Game" ];
+      keywords = [
+        "poe"
+        "pob"
+        "pobc"
+        "path"
+        "exile"
+      ];
+      mimeTypes = [ "x-scheme-handler/pob" ];
+    })
+  ];
+
   passthru.data = data;
 
   meta = {
@@ -67,6 +126,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.k900 ];
     mainProgram = "pobfrontend";
-    broken = stdenv.isDarwin;  # doesn't find uic6 for some reason
+    broken = stdenv.isDarwin; # doesn't find uic6 for some reason
   };
 }
diff --git a/pkgs/games/stepmania/default.nix b/pkgs/games/stepmania/default.nix
index bfd871a2a1c14..000b07c5433d9 100644
--- a/pkgs/games/stepmania/default.nix
+++ b/pkgs/games/stepmania/default.nix
@@ -11,6 +11,7 @@
 , gtk2
 , libmad
 , libogg
+, libpng
 , libpulseaudio
 , libvorbis
 , udev
@@ -51,6 +52,7 @@ stdenv.mkDerivation {
     gtk2
     libmad
     libogg
+    libpng
     libpulseaudio
     libvorbis
     udev
@@ -59,6 +61,7 @@ stdenv.mkDerivation {
 
   cmakeFlags = [
     "-DWITH_SYSTEM_FFMPEG=1"
+    "-DWITH_SYSTEM_PNG=on"
     "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
     "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
   ];
@@ -79,8 +82,6 @@ stdenv.mkDerivation {
     platforms = platforms.linux;
     license = licenses.mit; # expat version
     maintainers = with maintainers; [ h7x4 ];
-    # never built on aarch64-linux since first introduction in nixpkgs
-    broken = stdenv.isLinux && stdenv.isAarch64;
     mainProgram = "stepmania";
   };
 }
diff --git a/pkgs/tools/filesystems/dwarfs/default.nix b/pkgs/tools/filesystems/dwarfs/default.nix
index 0ee916b2d53f8..719ccd1e23d21 100644
--- a/pkgs/tools/filesystems/dwarfs/default.nix
+++ b/pkgs/tools/filesystems/dwarfs/default.nix
@@ -9,8 +9,10 @@
   double-conversion,
   fmt,
   fuse3,
+  flac,
   glog,
   gtest,
+  howard-hinnant-date,
   jemalloc,
   libarchive,
   libevent,
@@ -18,60 +20,59 @@
   lz4,
   openssl,
   pkg-config,
+  python3,
+  range-v3,
   ronn,
   xxHash,
   utf8cpp,
   zstd,
 }:
-let
+stdenv.mkDerivation (finalAttrs: {
   pname = "dwarfs";
-  version = "0.9.9";
-in
-stdenv.mkDerivation {
-  inherit pname version;
+  version = "0.9.10";
   src = fetchFromGitHub {
     owner = "mhx";
     repo = "dwarfs";
-    rev = "refs/tags/v${version}";
+    rev = "refs/tags/v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-Zzm2SaFR31TBBMDfgJulVbqsJBh1He2wBFzHRC/c5vg=";
+    hash = "sha256-uyYNs+fDV5BfQwfX9Wi3BwiKjSDQHAKRJ1+UvS/fHoE=";
   };
 
-  patches = [
-    (
-      with lib.versions;
-      substituteAll {
-        src = ./version_info.patch;
+  cmakeFlags = [
+    "-DNIXPKGS_DWARFS_VERSION_OVERRIDE=v${finalAttrs.version}" # see https://github.com/mhx/dwarfs/issues/155
 
-        versionFull = version; # displayed as version number (with v prepended)
-        versionMajor = major version;
-        versionMinor = minor version;
-        versionPatch = patch version;
-      }
-    )
-  ];
+    # Needs to be set so `dwarfs` does not try to download `gtest`; it is not
+    # a submodule, see: https://github.com/mhx/dwarfs/issues/188#issuecomment-1907657083
+    "-DPREFER_SYSTEM_GTEST=ON"
 
-  cmakeFlags = [
+    # These should no longer be necessary with a version > 0.9.10:
+    # * https://github.com/mhx/dwarfs/commit/593b22a8a90eb66c0898ae06f097f32f4bf3dfd4
+    # * https://github.com/mhx/dwarfs/commit/6e9608b2b01be13e41e6b728aae537c14c00ad82
+    # * https://github.com/mhx/dwarfs/commit/ce4bee1ad63c666da57d2cdae9fd65214d8dab7f
+    "-DPREFER_SYSTEM_LIBFMT=ON"
     "-DPREFER_SYSTEM_ZSTD=ON"
     "-DPREFER_SYSTEM_XXHASH=ON"
-    "-DPREFER_SYSTEM_GTEST=ON"
-    "-DPREFER_SYSTEM_LIBFMT=ON"
 
     # may be added under an option in the future
     # "-DWITH_LEGACY_FUSE=ON"
+
     "-DWITH_TESTS=ON"
   ];
 
   nativeBuildInputs = [
     bison
     cmake
+    howard-hinnant-date # uses only the header-only parts
     pkg-config
+    range-v3 # header-only library
     ronn
+    (python3.withPackages (ps: [ ps.mistletoe ])) # for man pages
   ];
 
   buildInputs = [
     # dwarfs
     boost
+    flac # optional; allows automatic audio compression
     fmt
     fuse3
     jemalloc
@@ -90,17 +91,32 @@ stdenv.mkDerivation {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [ gtest ];
+  nativeCheckInputs = [
+    # https://github.com/mhx/dwarfs/issues/188#issuecomment-1907574427
+    # `dwarfs` sets C++20 as the minimum, see
+    #     https://github.com/mhx/dwarfs/blob/2cb5542a5d4274225c5933370adcf00035f6c974/CMakeLists.txt#L129
+    # Thus the `gtest` headers, when included,
+    # refer to symbols that only exist in `.so` files compiled with that version.
+    (gtest.override { cxx_standard = "20"; })
+  ];
   # these fail inside of the sandbox due to missing access
   # to the FUSE device
-  GTEST_FILTER = "-dwarfs/tools_test.end_to_end/*:dwarfs/tools_test.mutating_ops/*";
+  GTEST_FILTER =
+    let
+      disabledTests = [
+        "dwarfs/tools_test.end_to_end/*"
+        "dwarfs/tools_test.mutating_and_error_ops/*"
+        "dwarfs/tools_test.categorize/*"
+      ];
+    in
+      "-${lib.concatStringsSep ":" disabledTests}";
 
   meta = {
     description = "Fast high compression read-only file system";
     homepage = "https://github.com/mhx/dwarfs";
-    changelog = "https://github.com/mhx/dwarfs/blob/v${version}/CHANGES.md";
+    changelog = "https://github.com/mhx/dwarfs/blob/v${finalAttrs.version}/CHANGES.md";
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.luftmensch-luftmensch ];
     platforms = lib.platforms.linux;
   };
-}
+})
diff --git a/pkgs/tools/filesystems/dwarfs/version_info.patch b/pkgs/tools/filesystems/dwarfs/version_info.patch
deleted file mode 100644
index 8d62bd8d22957..0000000000000
--- a/pkgs/tools/filesystems/dwarfs/version_info.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff --git a/cmake/package_version.cmake b/cmake/package_version.cmake
-new file mode 100644
-index 0000000..d4fdb9c
---- /dev/null
-+++ b/cmake/package_version.cmake
-@@ -0,0 +1,12 @@
-+# autogenerated code, do not modify
-+
-+set(PRJ_GIT_REV "v@versionFull@")
-+set(PRJ_GIT_DESC "v@versionFull@")
-+set(PRJ_GIT_BRANCH "HEAD")
-+set(PRJ_GIT_ID "v@versionFull@")
-+set(PRJ_GIT_RELEASE_TAG "v@versionFull@")
-+set(PRJ_VERSION_FULL "@versionFull@")
-+set(PRJ_VERSION_SHORT "@versionFull@")
-+set(PRJ_VERSION_MAJOR "@versionMajor@")
-+set(PRJ_VERSION_MINOR "@versionMinor@")
-+set(PRJ_VERSION_PATCH "@versionPatch@")
-diff --git a/include/dwarfs/version.h b/include/dwarfs/version.h
-new file mode 100644
-index 0000000..54cf86a
---- /dev/null
-+++ b/include/dwarfs/version.h
-@@ -0,0 +1,16 @@
-+// autogenerated code, do not modify
-+
-+#pragma once
-+
-+#define PRJ_VERSION_MAJOR @versionMajor@
-+#define PRJ_VERSION_MINOR @versionMinor@
-+#define PRJ_VERSION_PATCH @versionPatch@
-+
-+namespace dwarfs {
-+
-+extern char const* PRJ_GIT_REV;
-+extern char const* PRJ_GIT_DESC;
-+extern char const* PRJ_GIT_BRANCH;
-+extern char const* PRJ_GIT_ID;
-+
-+} // namespace dwarfs
-diff --git a/src/dwarfs/version.cpp b/src/dwarfs/version.cpp
-new file mode 100644
-index 0000000..5759120
---- /dev/null
-+++ b/src/dwarfs/version.cpp
-@@ -0,0 +1,12 @@
-+// autogenerated code, do not modify
-+
-+#include "dwarfs/version.h"
-+
-+namespace dwarfs {
-+
-+char const* PRJ_GIT_REV = "@versionFull@";
-+char const* PRJ_GIT_DESC = "v@versionFull@";
-+char const* PRJ_GIT_BRANCH = "HEAD";
-+char const* PRJ_GIT_ID = "v@versionFull@";
-+
-+} // namespace dwarfs
diff --git a/pkgs/tools/misc/wyrd/default.nix b/pkgs/tools/misc/wyrd/default.nix
index 8f5ad8268e693..18647cae1a232 100644
--- a/pkgs/tools/misc/wyrd/default.nix
+++ b/pkgs/tools/misc/wyrd/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     downloadPage = "http://pessimization.com/software/wyrd/";
     license = licenses.gpl2Only;
     maintainers = [ maintainers.prikhi ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     mainProgram = "wyrd";
   };
 }
diff --git a/pkgs/tools/package-management/nix-eval-jobs/2.19.nix b/pkgs/tools/package-management/nix-eval-jobs/2.19.nix
deleted file mode 100644
index bf2d48e4adfb1..0000000000000
--- a/pkgs/tools/package-management/nix-eval-jobs/2.19.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ lib
-, boost
-, cmake
-, fetchFromGitHub
-, meson
-, ninja
-, nix
-, nlohmann_json
-, pkg-config
-, stdenv
-}:
-stdenv.mkDerivation rec {
-  pname = "nix-eval-jobs";
-  version = "2.19.4";
-  src = fetchFromGitHub {
-    owner = "nix-community";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-97ZqhTMqnAr1rzEy96faceWzFyWexnYbH1aTfc1y0JE=";
-  };
-  buildInputs = [
-    boost
-    nix
-    nlohmann_json
-  ];
-  nativeBuildInputs = [
-    meson
-    ninja
-    pkg-config
-    # nlohmann_json can be only discovered via cmake files
-    cmake
-  ];
-
-  # Since this package is intimately tied to a specific Nix release, we
-  # propagate the Nix used for building it to make it easier for users
-  # downstream to reference it.
-  passthru = { inherit nix; };
-
-  meta = {
-    description = "Hydra's builtin hydra-eval-jobs as a standalone";
-    homepage = "https://github.com/nix-community/nix-eval-jobs";
-    license = lib.licenses.gpl3;
-    maintainers = with lib.maintainers; [ adisbladis mic92 ];
-    platforms = lib.platforms.unix;
-    mainProgram = "nix-eval-jobs";
-  };
-}
diff --git a/pkgs/tools/package-management/nix-eval-jobs/default.nix b/pkgs/tools/package-management/nix-eval-jobs/default.nix
index 15a095f6c3b13..0417b5c294dec 100644
--- a/pkgs/tools/package-management/nix-eval-jobs/default.nix
+++ b/pkgs/tools/package-management/nix-eval-jobs/default.nix
@@ -4,6 +4,7 @@
 , fetchFromGitHub
 , meson
 , ninja
+, curl
 , nix
 , nlohmann_json
 , pkg-config
@@ -11,16 +12,17 @@
 }:
 stdenv.mkDerivation rec {
   pname = "nix-eval-jobs";
-  version = "2.22.0";
+  version = "2.22.1";
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-Foi9FUuwKBUVExR3uEJEGsNRCGkkoNDj0yEhASanGCM=";
+    hash = "sha256-zvi2YfvlOLtui2JFhPs2qybpnJR3/2luMfp8t/eMh54=";
   };
   buildInputs = [
     boost
     nix
+    curl
     nlohmann_json
   ];
   nativeBuildInputs = [
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d73147b591362..d8062073bc279 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -740,14 +740,6 @@ with pkgs;
 
   protoc-gen-connect-go = callPackage ../development/tools/protoc-gen-connect-go { };
 
-  protoc-gen-prost = callPackage ../development/tools/protoc-gen-prost { };
-
-  protoc-gen-prost-crate = callPackage ../development/tools/protoc-gen-prost-crate { };
-
-  protoc-gen-prost-serde = callPackage ../development/tools/protoc-gen-prost-serde { };
-
-  protoc-gen-tonic = callPackage ../development/tools/protoc-gen-tonic { };
-
   protoc-gen-twirp = callPackage ../development/tools/protoc-gen-twirp { };
 
   protoc-gen-twirp_php = callPackage ../development/tools/protoc-gen-twirp_php { };
@@ -39471,14 +39463,9 @@ with pkgs;
 
   dnadd = callPackage ../tools/nix/dnadd { };
 
-  nix-eval-jobs = if stdenv.isDarwin then
-    callPackage ../tools/package-management/nix-eval-jobs/2.19.nix {
-      nix = nixVersions.nix_2_19;
-    }
-  else
-    callPackage ../tools/package-management/nix-eval-jobs {
-      nix = nixVersions.nix_2_22;
-    };
+  nix-eval-jobs = callPackage ../tools/package-management/nix-eval-jobs {
+    nix = nixVersions.nix_2_22;
+  };
 
   nix-doc = callPackage ../tools/package-management/nix-doc { };
 
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index b12151969676f..e77b3f90a4822 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -6966,6 +6966,22 @@ with self; {
     };
   };
 
+  DevelCover = buildPerlPackage {
+    pname = "Devel-Cover";
+    version = "1.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PJ/PJCJ/Devel-Cover-1.44.tar.gz";
+      hash = "sha256-9AwVQ5kuXWWm94AD1GLVms15rm0w04BHscadmZ0rH9g=";
+    };
+    propagatedBuildInputs = [ HTMLParser ];
+    doCheck = false;
+    meta = {
+      description = "Code coverage metrics for Perl";
+      homepage = "http://www.pjcj.net/perl.html";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   DevelDeprecationsEnvironmental = buildPerlPackage {
     pname = "Devel-Deprecations-Environmental";
     version = "1.101";
@@ -15650,6 +15666,36 @@ with self; {
     };
   };
 
+  MemoryProcess = buildPerlPackage {
+    pname = "Memory-Process";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKIM/Memory-Process-0.06.tar.gz";
+      hash = "sha256-NYFEiP/SnJdiFiXqOz1wCvv6YO0FW9dZ1OWNnI/UTk4=";
+    };
+    buildInputs = [ CaptureTiny TestNoWarnings ];
+    propagatedBuildInputs = [ MemoryUsage Readonly ];
+    meta = {
+      description = "Memory process reporting";
+      homepage = "https://github.com/michal-josef-spacek/Memory-Process";
+      license = lib.licenses.bsd3;
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  MemoryUsage = buildPerlPackage {
+    pname = "Memory-Usage";
+    version = "0.201";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DONEILL/Memory-Usage-0.201.tar.gz";
+      hash = "sha256-jyr60h5Ap0joHIwPPkDKcYwU3bn7LYgL+9KK6RPOU0k=";
+    };
+    meta = {
+      description = "Tools to determine actual memory usage";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   Menlo = buildPerlPackage {
     pname = "Menlo";
     version = "1.9019";