summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--maintainers/maintainer-list.nix16
-rw-r--r--pkgs/applications/editors/vscode/vscode.nix1
-rw-r--r--pkgs/applications/misc/josm/default.nix17
-rw-r--r--pkgs/applications/networking/cluster/helm/default.nix6
-rw-r--r--pkgs/applications/version-management/yadm/default.nix23
-rw-r--r--pkgs/development/libraries/amdvlk/default.nix12
-rw-r--r--pkgs/development/libraries/libgpiod/default.nix4
-rw-r--r--pkgs/development/libraries/libosmium/default.nix4
-rw-r--r--pkgs/development/python-modules/graphql-core/default.nix24
-rw-r--r--pkgs/development/python-modules/pyface/default.nix6
-rw-r--r--pkgs/development/python-modules/pytest-sanic/default.nix4
-rw-r--r--pkgs/development/python-modules/sanic-routing/default.nix28
-rw-r--r--pkgs/development/python-modules/sanic-testing/default.nix40
-rw-r--r--pkgs/development/python-modules/sanic/default.nix34
-rw-r--r--pkgs/development/tools/analysis/rizin/cutter.nix4
-rw-r--r--pkgs/development/tools/analysis/rizin/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/apache-maven/default.nix5
-rw-r--r--pkgs/development/tools/database/movine/default.nix54
-rw-r--r--pkgs/development/tools/roswell/default.nix38
-rw-r--r--pkgs/games/soldat-unstable/default.nix17
-rw-r--r--pkgs/misc/frescobaldi/default.nix10
-rw-r--r--pkgs/os-specific/linux/firmware/sof-firmware/default.nix17
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix8
-rw-r--r--pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix5
-rw-r--r--pkgs/servers/http/gitlab-pages/default.nix10
-rw-r--r--pkgs/tools/admin/pulumi/data.nix170
-rwxr-xr-xpkgs/tools/admin/pulumi/update.sh41
-rw-r--r--pkgs/tools/misc/ffsend/default.nix5
-rw-r--r--pkgs/tools/networking/fastd/default.nix38
-rw-r--r--pkgs/tools/package-management/protontricks/default.nix16
-rw-r--r--pkgs/tools/package-management/protontricks/steam-run.patch376
-rw-r--r--pkgs/tools/text/chroma/default.nix7
-rw-r--r--pkgs/top-level/all-packages.nix10
-rw-r--r--pkgs/top-level/python-packages.nix15
34 files changed, 674 insertions, 395 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 91e8c9591fb..1cdce85531c 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -3991,6 +3991,16 @@
     githubId = 19825977;
     name = "Hiren Shah";
   };
+  hiro98 = {
+    email = "hiro@protagon.space";
+    github = "vale981";
+    githubId = 4025991;
+    name = "Valentin Boettcher";
+    keys = [{
+      longkeyid = "rsa2048/0xC22D4DE4D7B32D19";
+      fingerprint = "45A9 9917 578C D629 9F5F  B5B4 C22D 4DE4 D7B3 2D19";
+    }];
+  };
   hjones2199 = {
     email = "hjones2199@gmail.com";
     github = "hjones2199";
@@ -7031,6 +7041,12 @@
     githubId = 628342;
     name = "Tim Steinbach";
   };
+  netcrns = {
+    email = "jason.wing@gmx.de";
+    github = "netcrns";
+    githubId = 34162313;
+    name = "Jason Wing";
+  };
   netixx = {
     email = "dev.espinetfrancois@gmail.com";
     github = "netixx";
diff --git a/pkgs/applications/editors/vscode/vscode.nix b/pkgs/applications/editors/vscode/vscode.nix
index 35637c8fc86..f517f95a812 100644
--- a/pkgs/applications/editors/vscode/vscode.nix
+++ b/pkgs/applications/editors/vscode/vscode.nix
@@ -45,6 +45,7 @@ in
         Open source source code editor developed by Microsoft for Windows,
         Linux and macOS
       '';
+      mainProgram = "code";
       longDescription = ''
         Open source source code editor developed by Microsoft for Windows,
         Linux and macOS. It includes support for debugging, embedded Git
diff --git a/pkgs/applications/misc/josm/default.nix b/pkgs/applications/misc/josm/default.nix
index badda6b17ee..aa1ef4f8eff 100644
--- a/pkgs/applications/misc/josm/default.nix
+++ b/pkgs/applications/misc/josm/default.nix
@@ -1,24 +1,26 @@
-{ lib, stdenv, fetchurl, fetchsvn, makeWrapper, unzip, jre, libXxf86vm }:
+{ lib, stdenv, fetchurl, fetchsvn, makeWrapper, unzip, jre, libXxf86vm
+, extraJavaOpts ? "-Djosm.restart=true -Djava.net.useSystemProxies=true"
+}:
 let
   pname = "josm";
-  version = "17702";
+  version = "17833";
   srcs = {
     jar = fetchurl {
       url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
-      sha256 = "1p7p0jd87sxrs5n0r82apkilx0phgmjw7vpdg8qrr5msda4rsmpk";
+      sha256 = "sha256-i3seRVfCLXNvUkWAAPZK0XloRHuXWCNp1tqnVr7CQ7Y=";
     };
     macosx = fetchurl {
       url = "https://josm.openstreetmap.de/download/macosx/josm-macos-${version}-java16.zip";
-      sha256 = "0r17cphxm852ykb8mkil29rr7sb0bj5w69qd5wz8zf2f9djk9npk";
+      sha256 = "sha256-PM/wNXqtEwalhorWHqVHWsaiGv60SFrHXZrb1Mw/QqQ=";
     };
     pkg = fetchsvn {
       url = "https://josm.openstreetmap.de/svn/trunk/native/linux/tested";
       rev = version;
-      sha256 = "1b7dryvakph8znh2ahgywch66l4bl5rmgsr79axnz1xi12g8ac12";
+      sha256 = "sha256-IjCFngixh2+7SifrV3Ohi1BjIOP+QSWg/QjeqbbP7aw=";
     };
   };
 in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   inherit pname version;
 
   dontUnpack = true;
@@ -36,8 +38,7 @@ stdenv.mkDerivation {
 
       # Add libXxf86vm to path because it is needed by at least Kendzi3D plugin
       makeWrapper ${jre}/bin/java $out/bin/josm \
-        --add-flags "-Djosm.restart=true -Djava.net.useSystemProxies=true" \
-        --add-flags "-jar $out/share/josm/josm.jar" \
+        --add-flags "${extraJavaOpts} -jar $out/share/josm/josm.jar" \
         --prefix LD_LIBRARY_PATH ":" '${libXxf86vm}/lib'
     '';
 
diff --git a/pkgs/applications/networking/cluster/helm/default.nix b/pkgs/applications/networking/cluster/helm/default.nix
index 501956ec938..0508830918f 100644
--- a/pkgs/applications/networking/cluster/helm/default.nix
+++ b/pkgs/applications/networking/cluster/helm/default.nix
@@ -2,15 +2,15 @@
 
 buildGoModule rec {
   pname = "helm";
-  version = "3.5.3";
+  version = "3.5.4";
 
   src = fetchFromGitHub {
     owner = "helm";
     repo = "helm";
     rev = "v${version}";
-    sha256 = "sha256-7xO07JDy6ujWlDF+5Xd3myRQ8ajTppCXz9fNe4yizVw=";
+    sha256 = "sha256-u8GJVOubPlIG88TFG5+OvbovMz4Q595wWo2YCwuTgG8=";
   };
-  vendorSha256 = "sha256-lpEoUgABtJczwShNdvD+zYAPDFTJqILSei2YY6mQ2mw=";
+  vendorSha256 = "sha256-zdZxGiwgx8c0zt9tQebJi7k/LNNYjhNInsVeBbxPsgE=";
 
   doCheck = false;
 
diff --git a/pkgs/applications/version-management/yadm/default.nix b/pkgs/applications/version-management/yadm/default.nix
index b75af94af56..fc8bee5fcb7 100644
--- a/pkgs/applications/version-management/yadm/default.nix
+++ b/pkgs/applications/version-management/yadm/default.nix
@@ -1,17 +1,18 @@
-{ lib, stdenv, fetchFromGitHub, git, gnupg }:
+{ lib, stdenv, fetchFromGitHub, git, gnupg, installShellFiles }:
 
-let version = "2.5.0"; in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "yadm";
-  inherit version;
+  version = "3.1.0";
 
   buildInputs = [ git gnupg ];
 
+  nativeBuildInputs = [ installShellFiles ];
+
   src = fetchFromGitHub {
     owner  = "TheLocehiliosan";
     repo   = "yadm";
     rev    = version;
-    sha256 = "128qlx8mp7h5ifapqqgsj3fwghn3q6x6ya0y33h5r7gnassd3njr";
+    sha256 = "0ga0p28nvqilswa07bzi93adk7wx6d5pgxlacr9wl9v1h6cds92s";
   };
 
   dontConfigure = true;
@@ -20,12 +21,16 @@ stdenv.mkDerivation {
   installPhase = ''
     runHook preInstall
     install -Dt $out/bin yadm
-    install -Dt $out/share/man/man1 yadm.1
-    install -D completion/yadm.zsh_completion $out/share/zsh/site-functions/_yadm
-    install -D completion/yadm.bash_completion $out/share/bash-completion/completions/yadm.bash
     runHook postInstall
   '';
 
+  postInstall = ''
+    installManPage yadm.1
+    installShellCompletion --cmd yadm \
+      --zsh completion/zsh/_yadm \
+      --bash completion/bash/yadm
+  '';
+
   meta = {
     homepage = "https://github.com/TheLocehiliosan/yadm";
     description = "Yet Another Dotfiles Manager";
@@ -35,7 +40,7 @@ stdenv.mkDerivation {
       * Provides a way to use alternate files on a specific OS or host.
       * Supplies a method of encrypting confidential data so it can safely be stored in your repository.
     '';
-    license = lib.licenses.gpl3;
+    license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ abathur ];
     platforms = lib.platforms.unix;
   };
diff --git a/pkgs/development/libraries/amdvlk/default.nix b/pkgs/development/libraries/amdvlk/default.nix
index 1d0256f3b27..5693a5968b6 100644
--- a/pkgs/development/libraries/amdvlk/default.nix
+++ b/pkgs/development/libraries/amdvlk/default.nix
@@ -21,13 +21,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "amdvlk";
-  version = "2021.Q1.6";
+  version = "2021.Q2.2";
 
   src = fetchRepoProject {
     name = "${pname}-src";
     manifest = "https://github.com/GPUOpen-Drivers/AMDVLK.git";
     rev = "refs/tags/v-${version}";
-    sha256 = "FSQ/bYlvdw0Ih3Yl329o8Gizw0YcZTLtiI222Ju4M8w=";
+    sha256 = "4k9ZkBxJGuNUO44F9D+u54eUREl5/8zxjxhaShhzGv0=";
   };
 
   buildInputs = [
@@ -70,12 +70,8 @@ in stdenv.mkDerivation rec {
 
   installPhase = ''
     install -Dm755 -t $out/lib icd/amdvlk${suffix}.so
-    install -Dm644 -t $out/share/vulkan/icd.d ../drivers/AMDVLK/json/Redhat/amd_icd${suffix}.json
-
-    substituteInPlace $out/share/vulkan/icd.d/amd_icd${suffix}.json --replace \
-      "/usr/lib64" "$out/lib"
-    substituteInPlace $out/share/vulkan/icd.d/amd_icd${suffix}.json --replace \
-      "/usr/lib" "$out/lib"
+    install -Dm644 -t $out/share/vulkan/icd.d icd/amd_icd${suffix}.json
+    install -Dm644 -t $out/share/vulkan/implicit_layer.d icd/amd_icd${suffix}.json
 
     patchelf --set-rpath "$rpath" $out/lib/amdvlk${suffix}.so
   '';
diff --git a/pkgs/development/libraries/libgpiod/default.nix b/pkgs/development/libraries/libgpiod/default.nix
index 8f6d9fcab5e..ccf1c470364 100644
--- a/pkgs/development/libraries/libgpiod/default.nix
+++ b/pkgs/development/libraries/libgpiod/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "libgpiod";
-  version = "1.6.2";
+  version = "1.6.3";
 
   src = fetchurl {
     url = "https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/snapshot/libgpiod-${version}.tar.gz";
-    sha256 = "1k8mxkzvd6y9aawxghddrjkldzskhb6607qhbwjfl9f945ns87qa";
+    sha256 = "sha256-60RgcL4URP19MtMrvKU8Lzu7CiEZPbhhmM9gULeihEE=";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/libosmium/default.nix b/pkgs/development/libraries/libosmium/default.nix
index c5b801f5d47..976c39a9ef1 100644
--- a/pkgs/development/libraries/libosmium/default.nix
+++ b/pkgs/development/libraries/libosmium/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libosmium";
-  version = "2.16.0";
+  version = "2.17.0";
 
   src = fetchFromGitHub {
     owner = "osmcode";
     repo = "libosmium";
     rev = "v${version}";
-    sha256 = "1na51g6xfm1bx0d0izbg99cwmqn0grp0g41znn93xnhs202qnb2h";
+    sha256 = "sha256-q938WA+vJDqGVutVzWdEP7ujDAmfj3vluliomVd0om0=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/python-modules/graphql-core/default.nix b/pkgs/development/python-modules/graphql-core/default.nix
index 5c29a1135a9..85021d126a1 100644
--- a/pkgs/development/python-modules/graphql-core/default.nix
+++ b/pkgs/development/python-modules/graphql-core/default.nix
@@ -1,27 +1,21 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
 , fetchFromGitHub
-, lib
-, pythonOlder
-
-, coveralls
-, promise
-, pytestCheckHook
 , pytest-benchmark
-, pytest-mock
-, rx
-, six
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "graphql-core";
-  version = "3.1.3";
+  version = "3.1.4";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "graphql-python";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0qy1i6vffwad74ymdsh1qjf5b6ph4z0vyxzkkc6yppwczhzmi1ps";
+    sha256 = "sha256-lamV5Rd37WvFBJ+zJUb+UhqxoNUrRhoMJx1NodbQUjs=";
   };
 
   checkInputs = [
@@ -29,12 +23,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "graphql" ];
+
   meta = with lib; {
     description = "Port of graphql-js to Python";
     homepage = "https://github.com/graphql-python/graphql-core";
     license = licenses.mit;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/pyface/default.nix b/pkgs/development/python-modules/pyface/default.nix
index 7ad1fb41526..3a29fd79f77 100644
--- a/pkgs/development/python-modules/pyface/default.nix
+++ b/pkgs/development/python-modules/pyface/default.nix
@@ -1,5 +1,5 @@
 { lib, fetchPypi, buildPythonPackage
-, setuptools, six, traits
+, importlib-metadata, importlib-resources, six, traits
 }:
 
 buildPythonPackage rec {
@@ -11,10 +11,12 @@ buildPythonPackage rec {
     sha256 = "a7031ec4cfff034affc822e47ff5e6c1a0272e576d79465cdbbe25f721740322";
   };
 
-  propagatedBuildInputs = [ setuptools six traits ];
+  propagatedBuildInputs = [ importlib-metadata importlib-resources six traits ];
 
   doCheck = false; # Needs X server
 
+  pythonImportsCheck = [ "pyface" ];
+
   meta = with lib; {
     description = "Traits-capable windowing framework";
     homepage = "https://github.com/enthought/pyface";
diff --git a/pkgs/development/python-modules/pytest-sanic/default.nix b/pkgs/development/python-modules/pytest-sanic/default.nix
index 84330cfd62e..ae1c56f95b7 100644
--- a/pkgs/development/python-modules/pytest-sanic/default.nix
+++ b/pkgs/development/python-modules/pytest-sanic/default.nix
@@ -46,5 +46,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/yunstanford/pytest-sanic/";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
+    # pytest-sanic is incompatible with Sanic 21.3, see
+    # https://github.com/sanic-org/sanic/issues/2095 and
+    # https://github.com/yunstanford/pytest-sanic/issues/50.
+    broken = lib.versionAtLeast sanic.version "21.3.0";
   };
 }
diff --git a/pkgs/development/python-modules/sanic-routing/default.nix b/pkgs/development/python-modules/sanic-routing/default.nix
new file mode 100644
index 00000000000..76eb72dc708
--- /dev/null
+++ b/pkgs/development/python-modules/sanic-routing/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "sanic-routing";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "sanic-org";
+    repo = "sanic-routing";
+    rev = "v${version}";
+    hash = "sha256-ZMl8PB9E401pUfUJ4tW7nBx1TgPQQtx9erVni3zP+lo=";
+  };
+
+  checkInputs = [ pytestCheckHook pytest-asyncio ];
+  pythonImportsCheck = [ "sanic_routing" ];
+
+  meta = with lib; {
+    description = "Core routing component for the Sanic web framework";
+    homepage = "https://github.com/sanic-org/sanic-routing";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AluisioASG ];
+  };
+}
diff --git a/pkgs/development/python-modules/sanic-testing/default.nix b/pkgs/development/python-modules/sanic-testing/default.nix
new file mode 100644
index 00000000000..fa1dfc6870b
--- /dev/null
+++ b/pkgs/development/python-modules/sanic-testing/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, httpcore
+, httpx
+, pytest-asyncio
+, sanic
+, websockets
+}:
+
+buildPythonPackage rec {
+  pname = "sanic-testing";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "sanic-org";
+    repo = "sanic-testing";
+    rev = "v${version}";
+    hash = "sha256-hBAq+/BKs0a01M89Nb8HaClqxB+W5PTfjVzef/m9SWs=";
+  };
+
+  propagatedBuildInputs = [ httpx sanic websockets httpcore ];
+
+  # `sanic` is explicitly set to null when building `sanic` itself
+  # to prevent infinite recursion.  In that case we skip running
+  # the package at all.
+  doCheck = sanic != null;
+  dontUsePythonImportsCheck = sanic == null;
+
+  checkInputs = [ pytestCheckHook pytest-asyncio ];
+  pythonImportsCheck = [ "sanic_testing" ];
+
+  meta = with lib; {
+    description = "Core testing clients for the Sanic web framework";
+    homepage = "https://github.com/sanic-org/sanic-testing";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AluisioASG ];
+  };
+}
diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix
index e5995ed0b1e..31dcc86e0bc 100644
--- a/pkgs/development/python-modules/sanic/default.nix
+++ b/pkgs/development/python-modules/sanic/default.nix
@@ -1,42 +1,44 @@
 { lib, buildPythonPackage, fetchPypi, doCheck ? true
-, aiofiles, httptools, httpx, multidict, ujson, uvloop, websockets
-, pytestCheckHook, beautifulsoup4, gunicorn, httpcore, uvicorn
-, pytest-asyncio, pytest-benchmark, pytest-dependency, pytest-sanic, pytest-sugar, pytestcov
+, aiofiles, httptools, multidict, sanic-routing, ujson, uvloop, websockets
+, pytestCheckHook, beautifulsoup4, gunicorn, uvicorn, sanic-testing
+, pytest-benchmark, pytest-sanic, pytest-sugar, pytestcov
 }:
 
 buildPythonPackage rec {
   pname = "sanic";
-  version = "21.3.2";
+  version = "21.3.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "84a04c5f12bf321bed3942597787f1854d15c18f157aebd7ced8c851ccc49e08";
+    sha256 = "1cbd12b9138b3ca69656286b0be91fff02b826e8cb72dd76a2ca8c5eb1288d8e";
   };
 
   postPatch = ''
+    # Loosen dependency requirements.
     substituteInPlace setup.py \
-      --replace '"multidict==5.0.0"' '"multidict"' \
-      --replace '"httpx==0.15.4"' '"httpx"' \
-      --replace '"httpcore==0.3.0"' '"httpcore"' \
-      --replace '"pytest==5.2.1"' '"pytest"'
+      --replace '"pytest==5.2.1"' '"pytest"' \
+      --replace '"gunicorn==20.0.4"' '"gunicorn"' \
+      --replace '"pytest-sanic",' ""
+    # Patch a request headers test to allow brotli encoding
+    # (we build httpx with brotli support, upstream doesn't).
+    substituteInPlace tests/test_headers.py \
+      --replace "deflate\r\n" "deflate, br\r\n"
   '';
 
   propagatedBuildInputs = [
-    aiofiles httptools httpx multidict ujson uvloop websockets
+    sanic-routing httptools uvloop ujson aiofiles websockets multidict
   ];
 
   checkInputs = [
-    pytestCheckHook beautifulsoup4 gunicorn httpcore uvicorn
-    pytest-asyncio pytest-benchmark pytest-dependency pytest-sanic pytest-sugar pytestcov
+    sanic-testing gunicorn pytestcov beautifulsoup4 pytest-sanic pytest-sugar
+    pytest-benchmark pytestCheckHook uvicorn
   ];
 
   inherit doCheck;
 
   disabledTests = [
     "test_gunicorn" # No "examples" directory in pypi distribution.
-    "test_logo" # Fails to filter out "DEBUG asyncio:selector_events.py:59 Using selector: EpollSelector"
     "test_zero_downtime" # No "examples.delayed_response.app" module in pypi distribution.
-    "test_reloader_live" # OSError: [Errno 98] error while attempting to bind on address ('127.0.0.1', 42104)
   ];
 
   __darwinAllowLocalNetworking = true;
@@ -45,8 +47,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A microframework based on uvloop, httptools, and learnings of flask";
-    homepage = "https://github.com/channelcat/sanic/";
+    homepage = "https://github.com/sanic-org/sanic/";
     license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc AluisioASG ];
   };
 }
diff --git a/pkgs/development/tools/analysis/rizin/cutter.nix b/pkgs/development/tools/analysis/rizin/cutter.nix
index a4c2d0d45c1..c1d8ab99063 100644
--- a/pkgs/development/tools/analysis/rizin/cutter.nix
+++ b/pkgs/development/tools/analysis/rizin/cutter.nix
@@ -11,13 +11,13 @@
 
 mkDerivation rec {
   pname = "cutter";
-  version = "2.0.1";
+  version = "2.0.2";
 
   src = fetchFromGitHub {
     owner = "rizinorg";
     repo = "cutter";
     rev = "v${version}";
-    sha256 = "sha256-IQCJOUgefSdMSa27E6I/CL35Kx5pHq/u+5Q0FHUAR1E=";
+    sha256 = "sha256-CVVUXx6wt9vH3B7NrrlRGnOIrhXQPjV7GmX3O+KtMSM=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/tools/analysis/rizin/default.nix b/pkgs/development/tools/analysis/rizin/default.nix
index 20184ac53a1..4e9543ef371 100644
--- a/pkgs/development/tools/analysis/rizin/default.nix
+++ b/pkgs/development/tools/analysis/rizin/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "rizin";
-  version = "0.2.0";
+  version = "0.2.1";
 
   src = fetchurl {
     url = "https://github.com/rizinorg/rizin/releases/download/v${version}/rizin-src-v${version}.tar.xz";
-    sha256 = "sha256-CGHeo247syha+rVtiAQz0XkEYK9p4DHTnLK2FhBOvE8=";
+    sha256 = "sha256-lxVsPI+qLenZ0pelvxtHlQ6fhWdQeqoEEHrUGZ5Rdmg=";
   };
 
   mesonFlags = [
diff --git a/pkgs/development/tools/build-managers/apache-maven/default.nix b/pkgs/development/tools/build-managers/apache-maven/default.nix
index 3a1866e0b39..9e0103170e9 100644
--- a/pkgs/development/tools/build-managers/apache-maven/default.nix
+++ b/pkgs/development/tools/build-managers/apache-maven/default.nix
@@ -2,16 +2,15 @@
 
 assert jdk != null;
 
-let version = "3.6.3"; in
 stdenv.mkDerivation rec {
   pname = "apache-maven";
-  inherit version;
+  version = "3.8.1";
 
   builder = ./builder.sh;
 
   src = fetchurl {
     url = "mirror://apache/maven/maven-3/${version}/binaries/${pname}-${version}-bin.tar.gz";
-    sha256 = "1i9qlj3vy4j1yyf22nwisd0pg88n9qzp9ymfhwqabadka7br3b96";
+    sha256 = "00pgmc9v2s2970wgl2ksvpqy4lxx17zhjm9fgd10fkamxc2ik2mr";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/tools/database/movine/default.nix b/pkgs/development/tools/database/movine/default.nix
new file mode 100644
index 00000000000..fd5debcb9a2
--- /dev/null
+++ b/pkgs/development/tools/database/movine/default.nix
@@ -0,0 +1,54 @@
+{ rustPlatform
+, fetchFromGitHub
+, lib
+, stdenv
+, pkg-config
+, postgresql
+, sqlite
+, openssl
+, Security
+, libiconv
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "movine";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "byronwasti";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0rms8np8zd23xzrd5avhp2q1ndhdc8f49lfwpff9h0slw4rnzfnj";
+  };
+
+  cargoSha256 = "sha256-4ghfenwmauR4Ft9n7dvBflwIMXPdFq1vh6FpIegHnZk=";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ postgresql sqlite ] ++ (
+    if !stdenv.isDarwin then [ openssl ] else [ Security libiconv ]
+  );
+
+  meta = with lib; {
+    description = "A migration manager written in Rust, that attempts to be smart yet minimal";
+    homepage = "https://github.com/byronwasti/movine";
+    license = licenses.mit;
+    longDescription = ''
+      Movine is a simple database migration manager that aims to be compatible
+      with real-world migration work. Many migration managers get confused
+      with complicated development strategies for migrations. Oftentimes
+      migration managers do not warn you if the SQL saved in git differs from
+      what was actually run on the database. Movine solves this issue by
+      keeping track of the unique hashes for the <literal>up.sql</literal> and
+      <literal>down.sql</literal> for each migration, and provides tools for
+      fixing issues. This allows users to easily keep track of whether their
+      local migration history matches the one on the database.
+
+      This project is currently in early stages.
+
+      Movine does not aim to be an ORM.
+      Consider <link xling:href="https://diesel.rs/">diesel</link> instead if
+      you want an ORM.
+    '';
+    maintainers = with maintainers; [ netcrns ];
+  };
+}
diff --git a/pkgs/development/tools/roswell/default.nix b/pkgs/development/tools/roswell/default.nix
new file mode 100644
index 00000000000..98445ea875a
--- /dev/null
+++ b/pkgs/development/tools/roswell/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchFromGitHub, curl, autoconf, automake, makeWrapper, sbcl }:
+
+stdenv.mkDerivation rec {
+  pname = "roswell";
+  version = "21.01.14.108";
+
+  src = fetchFromGitHub {
+    owner = "roswell";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1hj9q3ig7naky3pb3jkl9yjc9xkg0k7js3glxicv0aqffx9hkp3p";
+  };
+
+  preConfigure = ''
+    sh bootstrap
+  '';
+
+  configureFlags = [ "--prefix=${placeholder "out"}" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/ros \
+      --add-flags 'lisp=sbcl-bin/system sbcl-bin.version=system' \
+      --prefix PATH : ${lib.makeBinPath [ sbcl ]} --argv0 ros
+  '';
+
+  nativeBuildInputs = [ autoconf automake makeWrapper ];
+
+  buildInputs = [ sbcl curl ];
+
+  meta = with lib; {
+    description = "Roswell is a Lisp implementation installer/manager, launcher, and much more";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hiro98 ];
+    platforms = platforms.linux;
+    homepage = "https://github.com/roswell/roswell";
+    mainProgram = "ros";
+  };
+}
diff --git a/pkgs/games/soldat-unstable/default.nix b/pkgs/games/soldat-unstable/default.nix
index 19ff4b5c6c0..496d51e31c4 100644
--- a/pkgs/games/soldat-unstable/default.nix
+++ b/pkgs/games/soldat-unstable/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, fpc, zip, makeWrapper
+{ lib, stdenv, fetchFromGitHub, fpc, zip, makeWrapper
 , SDL2, freetype, physfs, openal, gamenetworkingsockets
 , xorg, autoPatchelfHook
 }:
@@ -39,14 +39,14 @@ in
 
 stdenv.mkDerivation rec {
   pname = "soldat";
-  version = "unstable-2021-02-09";
+  version = "unstable-2021-04-27";
 
   src = fetchFromGitHub {
     name = "soldat";
     owner = "Soldat";
     repo = "soldat";
-    rev = "c304c3912ca7a88461970a859049d217a44c6375";
-    sha256 = "09sl2zybfcmnl2n3qghp0gylmr71y01534l6nq0y9llbdy0bf306";
+    rev = "4d17667c316ff08934e97448b7f290a8dc434e81";
+    sha256 = "1pf557psmhfaagblfwdn36cw80j7bgs0lgjq8hmjbv58dysw3jdb";
   };
 
   nativeBuildInputs = [ fpc makeWrapper autoPatchelfHook ];
@@ -54,15 +54,6 @@ stdenv.mkDerivation rec {
   buildInputs = [ SDL2 freetype physfs openal gamenetworkingsockets ];
   runtimeDependencies = [ xorg.libX11 ];
 
-  patches = [
-    # fix an argument parsing issue which prevents
-    # us from passing nix store paths to soldat
-    (fetchpatch {
-      url = "https://github.com/sternenseemann/soldat/commit/9f7687430f5fe142c563b877d2206f5c9bbd5ca0.patch";
-      sha256 = "0wsrazb36i7v4idg06jlzfhqwf56q9szzz7jp5cg4wsvcky3wajf";
-    })
-  ];
-
   buildPhase = ''
     runHook preBuild
 
diff --git a/pkgs/misc/frescobaldi/default.nix b/pkgs/misc/frescobaldi/default.nix
index 82a3aa8c7be..070babc0cbc 100644
--- a/pkgs/misc/frescobaldi/default.nix
+++ b/pkgs/misc/frescobaldi/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonApplication rec {
   pname = "frescobaldi";
-  version = "3.1.1";
+  version = "3.1.3";
 
   src = fetchFromGitHub {
     owner = "wbsoft";
     repo = "frescobaldi";
     rev = "v${version}";
-    sha256 = "07hjlq29npasn2bsb3qrzr1gikyvcc85avx0sxybfih329bvjk03";
+    sha256 = "1p8f4vn2dpqndw1dylmg7wms6vi69zcfj544c908s4r8rrmbycyf";
   };
 
   propagatedBuildInputs = with python3Packages; [
@@ -19,6 +19,12 @@ buildPythonApplication rec {
 
   nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ];
 
+  # Needed because source is fetched from git
+  preBuild = ''
+    make -C i18n
+    make -C linux
+  '';
+
   # no tests in shipped with upstream
   doCheck = false;
 
diff --git a/pkgs/os-specific/linux/firmware/sof-firmware/default.nix b/pkgs/os-specific/linux/firmware/sof-firmware/default.nix
index b474c48e341..5ee39c5bf33 100644
--- a/pkgs/os-specific/linux/firmware/sof-firmware/default.nix
+++ b/pkgs/os-specific/linux/firmware/sof-firmware/default.nix
@@ -3,29 +3,28 @@
 with lib;
 stdenv.mkDerivation rec {
   pname = "sof-firmware";
-  version = "1.6";
+  version = "1.7";
 
   src = fetchFromGitHub {
     owner = "thesofproject";
     repo = "sof-bin";
-    rev = "cbdec6963b2c2d58b0080955d3c11b96ff4c92f0";
-    sha256 = "0la2pw1zpv50cywiqcfb00cxqvjc73drxwjchyzi54l508817nxh";
+    rev = "v${version}";
+    sha256 = "sha256-Z0Z4HLsIIuW8E1kFNhAECmzj1HkJVfbEw13B8V7PZLk=";
   };
 
-  phases = [ "unpackPhase" "installPhase" ];
+  dontFixup = true; # binaries must not be stripped or patchelfed
 
   installPhase = ''
-    mkdir -p $out/lib/firmware
-
-    patchShebangs go.sh
-    ROOT=$out SOF_VERSION=v${version} ./go.sh
+    mkdir -p $out/lib/firmware/intel/
+    cp -a sof-v${version} $out/lib/firmware/intel/sof
+    cp -a sof-tplg-v${version} $out/lib/firmware/intel/sof-tplg
   '';
 
   meta = with lib; {
     description = "Sound Open Firmware";
     homepage = "https://www.sofproject.org/";
     license = with licenses; [ bsd3 isc ];
-    maintainers = with maintainers; [ lblasc evenbrenden ];
+    maintainers = with maintainers; [ lblasc evenbrenden hmenke ];
     platforms = with platforms; linux;
   };
 }
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index 7d83d68e73c..765118be119 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -36,10 +36,10 @@ rec {
     else legacy_390;
 
   beta = generic {
-    version = "460.27.04";
-    sha256_64bit = "plTqtc5QZQwM0f3MeMZV0N5XOiuSXCCDklL/qyy8HM8=";
-    settingsSha256 = "hU9J0VSrLXs7N14zq6U5LbBLZXEIyTfih/Bj6eFcMf0=";
-    persistencedSha256 = "PmqhoPskqhJe2FxMrQh9zX1BWQCR2kkfDwvA89+XALA=";
+    version = "465.27";
+    sha256_64bit = "fmn/qFve5qqqa26n4dsoOwGZ+ash5Bon3JBI8kncMXE=";
+    settingsSha256 = "3BFLCx0dcrQY4Mv1joMsiVPwTPyufgsNT5pFgp1Mk/A=";
+    persistencedSha256 = "HtoFGTiBnAeQyRTOMlve5poaQh63LHRD+DHJxZO+c90=";
   };
 
   # Vulkan developer beta driver
diff --git a/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix b/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix
index 16dcfe9ba06..511dd162785 100644
--- a/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix
+++ b/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix
@@ -10,12 +10,12 @@
 
 buildGoModule rec {
   pname = "oci-seccomp-bpf-hook";
-  version = "1.2.2";
+  version = "1.2.3";
   src = fetchFromGitHub {
     owner = "containers";
     repo = "oci-seccomp-bpf-hook";
     rev = "v${version}";
-    sha256 = "sha256-SRphs8zwKz6jlAixVZkHdww0jroaBNK82kSLj1gs6Wg=";
+    sha256 = "sha256-EKD6tkdQCPlVlb9ScvRwDxYAtbbv9PIqBHH6SvtPDsE=";
   };
   vendorSha256 = null;
 
@@ -56,6 +56,5 @@ buildGoModule rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ saschagrunert ];
     platforms = platforms.linux;
-    badPlatforms = [ "aarch64-linux" ];
   };
 }
diff --git a/pkgs/servers/http/gitlab-pages/default.nix b/pkgs/servers/http/gitlab-pages/default.nix
index 920a3299929..33c556fb54a 100644
--- a/pkgs/servers/http/gitlab-pages/default.nix
+++ b/pkgs/servers/http/gitlab-pages/default.nix
@@ -2,23 +2,23 @@
 
 buildGoModule rec {
   pname = "gitlab-pages";
-  version = "1.35.0";
+  version = "1.38.0";
 
   src = fetchFromGitLab {
     owner = "gitlab-org";
     repo = "gitlab-pages";
     rev = "v${version}";
-    sha256 = "sha256-5AkzbOutBXy59XvMwfyH6A8ETwjP2QokG/Rz31/nCpk=";
+    sha256 = "sha256-QaqZGTkNAzQEqlwccAWPDP91BSc9vRDEsCBca/lEXW4=";
   };
 
-  vendorSha256 = "sha256-g8FDWpZmbZSkJAzoEiI8/JZLTTgG7uJ4sS35axaEXLY=";
+  vendorSha256 = "sha256-uuwuiGQWLIQ5UJuCKDBEvCPo2+AXtJ54ARK431qiakc=";
   subPackages = [ "." ];
-  doCheck = false; # Broken
 
   meta = with lib; {
     description = "Daemon used to serve static websites for GitLab users";
     homepage = "https://gitlab.com/gitlab-org/gitlab-pages";
+    changelog = "https://gitlab.com/gitlab-org/gitlab-pages/-/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ das_j ];
+    maintainers = with maintainers; [ ajs124 das_j ];
   };
 }
diff --git a/pkgs/tools/admin/pulumi/data.nix b/pkgs/tools/admin/pulumi/data.nix
index 5a1dcfe16ec..3e7d11f4827 100644
--- a/pkgs/tools/admin/pulumi/data.nix
+++ b/pkgs/tools/admin/pulumi/data.nix
@@ -1,178 +1,186 @@
 # DO NOT EDIT! This file is generated automatically by update.sh
 { }:
 {
-  version = "2.24.1";
+  version = "3.1.0";
   pulumiPkgs = {
     x86_64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v2.24.1-linux-x64.tar.gz";
-        sha256 = "1c3a0ibwchl0lmcb8hr4j0x9b7hfsd0pfg6ay808zg1v8ddrj3xm";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.1.0-linux-x64.tar.gz";
+        sha256 = "103r0rih8qzpswij3bxls9gsb832n4ykwrzbki9b21w2ymj7k3x1";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.10.0-linux-amd64.tar.gz";
-        sha256 = "1gqbs33mqqssymn48glm9h5qfkc1097ygk0mdanfigyhwv6rdmnc";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.0.0-linux-amd64.tar.gz";
+        sha256 = "1f6r59qk48x73nm17swcs3cp3qw616m7p36bvgsc1s96h23k805w";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.36.0-linux-amd64.tar.gz";
-        sha256 = "0dg5szlslp863slv6lfd8g98946ljvxhvq64b3j4zk6rsn0badvh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "12rnb18p7z709gvw50hvmx9v7f2wd3pwcncwz4g3ragd7f6a4kja";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.14.2-linux-amd64.tar.gz";
-        sha256 = "00ibqxb1qzwi93dsq56av0vxq80lx2rr8wll4q6d8wlph215hlqs";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "0xs7i9l871x5kr22jg7jjw0rgyvs4j4hazr4n9375xgzc8ysrk09";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v2.9.1-linux-amd64.tar.gz";
-        sha256 = "04sk6km29ssqkv0xw26vq3iik2kfzc3dnzacn324m7fddv3p9wx9";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "08588m5s6j1xhig4jprlkjgxk1sif4h3f6as7ixnvssin2vhhhl9";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.17.1-linux-amd64.tar.gz";
-        sha256 = "0b3bz952wz7fsbk51j0mlfsyyg9ymc9wnq8kgm7dvs1p5zgzv4ni";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "01dqah12p23658awcp0sx5h696rdyjl79vd9dm5075jdaix1f648";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v3.7.0-linux-amd64.tar.gz";
-        sha256 = "0l1y8fckx7k3lasb6rzy3v58cl1x3qzbb999wi14z16z2a63zwsw";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "0m8q1cswdml0hsc4vkq38pm2izs3lig57fg4a8ghqqi3ykni344d";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.9.1-linux-amd64.tar.gz";
-        sha256 = "178l4h7wj9pn1283zajaqm7fwcfwzpzq7swrgr8q880qsa611gjs";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "06j5k599i8giy5v6scggw8zx1pyfm6w20biwcizv81zk0zkg3fzp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v4.19.0-linux-amd64.tar.gz";
-        sha256 = "0iliagpyvzn63pwcdq74w8ag9vc7asqpq658b19zly4jd6z3cwkd";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.0.0-linux-amd64.tar.gz";
+        sha256 = "1bzy4zf473w49fz2n9lg5ncgblq2a5jh70nf6cfwc7kcla407in0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v3.4.0-linux-amd64.tar.gz";
-        sha256 = "0zp3rwhngj009a9s6w2vyvgyhj7nd03mwm44x62ikhnz6f414kr9";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "0d17ccf84jj6a9hpdrnsziyw790i0y5zk18qgqh4qq79irwz6df2";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v3.8.1-linux-amd64.tar.gz";
-        sha256 = "1xhrj950lk6qdazg4flymn3dmkbivc2rd71k8sdy9zfanyxnq8vv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "1j8232vw457fl0jhy08abs5hcx8nd2lll3zg9bp3s352wz2r5xl4";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.7.1-linux-amd64.tar.gz";
-        sha256 = "0n2p14iam44icms4c8qrjfy1z7p4m6igxckvqxr0gphi8ngk4ggh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.0.0-linux-amd64.tar.gz";
+        sha256 = "0lqnb1xrb5ma8ssvn63lh92ihja6zx4nrx40pici1ggaln4sphn0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.8.3-linux-amd64.tar.gz";
-        sha256 = "0l9r0gqhhjbkv4vn4cxm2s9zf93005w8vrb103w101h1gc5gh93l";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "0s7an3qvczhajs54i0ir3jjmwxpv9w94viqrik506k198j0qnl3b";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v2.5.1-linux-amd64.tar.gz";
-        sha256 = "0clck5cra6bplfxd0nb6vkji50gg4ah4yfvc7202hi3w2b9hfjjg";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "0ljxjv8rm4li61vgjbpmxw8w6d2pym5li3w61dqi3kka4ix25aww";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v2.5.1-linux-amd64.tar.gz";
-        sha256 = "1cd2bm030fa9spv7bx817id419lz1c54i8h84ifinkx88ig7ngyx";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "1mxkwcricqnnbj0dp3wqidci6rgfn7daxkjprcnrndhgcdghq7sv";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.17.1-linux-amd64.tar.gz";
-        sha256 = "1q9sx2lszmkcgphp3vwx0lvs5vc67sk98rn8s6ywhz0p426wakmr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "04gaimdzh04v7f11xw1b7p95rbb142kbnix1zqas68wd6vpw9kyp";
+      }
+      {
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "1535c95ncgdifyz5m29gagpcr7lhhddlffmj9lmwch55w2xlk86k";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-linux-amd64.tar.gz";
         sha256 = "0glbjhgrb2hiyhd6kwmy7v384j8zw641pw9737g1fczv3x16a3s3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v2.9.0-linux-amd64.tar.gz";
-        sha256 = "0n486h5f683yq6z53s9l9x5air1vk4nz1skiirsprz7a12cy2xkn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "13j13kp0sbwp65l73mdcqiv4cszslxin567ccdkk2rw8vs1ni7x0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v3.1.1-linux-amd64.tar.gz";
-        sha256 = "1zpwlvdgjvhnhlzyppqg76csma8kan33amxa1svlhcai8b168878";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "0pah7s9wwaj8zp371blmj4c1bgyhh0dgsfr9axj0k4lhpqlyikmj";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v3.5.1-linux-amd64.tar.gz";
-        sha256 = "16b1449vb6inlyjpb1iyr5j5mwg1g2d6bcd5g2kmxcsw4yhc7ai7";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.0.0-linux-amd64.tar.gz";
+        sha256 = "0bk26k1igqljjpwkkvri6dp14cfw9l9a2dvg2as3v5930w4jxql8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.13.1-linux-amd64.tar.gz";
-        sha256 = "1z6v5vz0p9g3hrrgrchx2wnbparkbf5b8vn9pwnw69nkplr1qzff";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v3.0.0-linux-amd64.tar.gz";
+        sha256 = "1lxb03z80r8a2vfckyw5yf036ii30gdi3rch4sriksfv30il9kbc";
       }
     ];
     x86_64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v2.24.1-darwin-x64.tar.gz";
-        sha256 = "1x6z0drvaxrps47nisvw513vgskaf86mz8fzlhqfkddp2k5la5j1";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.1.0-darwin-x64.tar.gz";
+        sha256 = "1lfqm4s72bwrycspr9nbgfvf5i6p50x8lk81pcs6zbzz6iff4x7z";
+      }
+      {
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v2.0.0-darwin-amd64.tar.gz";
+        sha256 = "0nycqlz3lkwirr8rs4sqdqbzn2igv51hjyfjjsgnhx85kjzlkas6";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.10.0-darwin-amd64.tar.gz";
-        sha256 = "05cz7b738bcai4aiya4rkjhmkh9pg6za4xp2snb9nx0jkw2vw2ms";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "1kim1lk9dycsanc2vcsr4fgfhk90zyjf24vvwmmkk70nq1lnwqp3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.36.0-darwin-amd64.tar.gz";
-        sha256 = "0k74x9a6b9xngrp1cgdal86h23m95r5sa3q036ms4py0phq47r2w";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "0kvr057hdwcxf7gj788sv6ysz25ap3z0akqhhb20mlzv3shwiiji";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.14.2-darwin-amd64.tar.gz";
-        sha256 = "05ggw10z0pp45yqq8bl32l3xjxvgwbs58czpw74whydqbd3qy8av";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "14d530fbzmq5m3njl31qkgwwfyipad9iqjhv3cd8pcl87blaxxki";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v2.9.1-darwin-amd64.tar.gz";
-        sha256 = "022458yxscfg56s2nqdr95wp2ffm7sni4kaksj87i6c5ddc9f1gx";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "0q29dyrnramr2bl89503gnbm4zq2x3bn7kaiwbhg6r17xa6rkji4";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.17.1-darwin-amd64.tar.gz";
-        sha256 = "09nd5nfvjqgpbjs82bm5ym5wdg37mg863wvdp8s3fd8id4gdqb24";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "0v8iha0n1kqvaxrjll2mv9znc9lzqj7mqxgxig2g89qqjs6p69ql";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v3.7.0-darwin-amd64.tar.gz";
-        sha256 = "0iflll8lkk3s3dx3xl0iqmxac9nlspjnv8gmjfqwpryzk8h1fmzy";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "0ffic6mqr1zyskrv60q9wg7jc0hq23l5g0pdh3clpnn2m1xnxnxm";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.9.1-darwin-amd64.tar.gz";
-        sha256 = "10vp75fc41yk9lg5x7wyhs4mn2f4krfnw4jn5xys7dd475blm6rh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.0.0-darwin-amd64.tar.gz";
+        sha256 = "1793qry84bch32zbc70c777y04qgys6n0vxsxzxqgz2j4r9vmi6a";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v4.19.0-darwin-amd64.tar.gz";
-        sha256 = "061s8snsgz044ilh2s48810bmayypdyq9aqkhgal6v3l86jl8m95";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "1lzjjk2da1xla012xrs9jfcdsbpmkh48n6lypmbr2ixh13pdwk1b";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v3.4.0-darwin-amd64.tar.gz";
-        sha256 = "1p6xxhy30qzprxk3kwiwimw5m0c73fk7c9j4vrzj2z4kpgj8qx7w";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "1i3zmflwjjfc13j7w9acavgrbblm9fri041z6qpb3ikcq5s9lqcm";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v3.8.1-darwin-amd64.tar.gz";
-        sha256 = "14gqwz5nalbv97vl9apwda0xxl7cgkp5mixrc10xvx6a94w5758p";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v1.0.0-darwin-amd64.tar.gz";
+        sha256 = "1lkrx2cayhhv432dvzvz8q4i1gfi659rkl59c0y0dkwbs8x425zb";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.7.1-darwin-amd64.tar.gz";
-        sha256 = "0i0h1iz999pbz23gbs75bj3lxfg9a6044g4bwdwf3agxf3k9pji3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "10439p96wpxr13pxhii7li2cjq53pgr8c48ir63d2n4b8fn8iklr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.8.3-darwin-amd64.tar.gz";
-        sha256 = "1nwwqq1nn1zr6mia2wd82lzqsa8l3rr50hl1mf6l6ffyxz1q1lzj";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "1n35b1cqglpwvcxdcgxwmv5j1qp8gwrjzh25884l0b72krna9alr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v2.5.1-darwin-amd64.tar.gz";
-        sha256 = "0zkd3rm6z8bc7pcbwl0bbbn0zb3jrl69b84g62ma9vzskccrxxpr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "0qx4p0jz3n66r3kgpgs25qbzlmwdqf80353nywyijv3ham6hpicf";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v2.5.1-darwin-amd64.tar.gz";
-        sha256 = "0v4qqp1x8xi0fqiczmmh2qbf3azbgf09cphia5w8r2kkrn4i0jxn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "18vrp0zzi92x4l5nkjszvd0zr7pk6nl6s3h5a3hvsz5qrj2830q3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.17.1-darwin-amd64.tar.gz";
-        sha256 = "1788ayj5zwlmvhd1qp6rzrcbman5i0hy1hw2fmgcrf66v5qc1f18";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "0159ng9c9hshmng8ipss7hncqs5qp8plmr1qjadka6vyp1mxn2c3";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.2.2-darwin-amd64.tar.gz";
         sha256 = "0621njipng32x43lw8n49mapq10lnvibg8vlvgciqsfvrbpz1yp5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v2.9.0-darwin-amd64.tar.gz";
-        sha256 = "08af55rrzpm42vx7w1i1cmfk48czjfwln737prp5mwcvddmg5s1g";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "0h9zdiaanvm2yds9z0c5fmz0f05apdhm4w28d2i929djxh57jqrr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v3.1.1-darwin-amd64.tar.gz";
-        sha256 = "1j30gkz1m9ap8pd2r3lb3nl82bq5bq3h7y6jq2c0dmv3ksnp197f";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "15pzcymjr9bzx47sq86llzfg0hydyf4cn0bb95zxjqrx8y37rql8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v3.5.1-darwin-amd64.tar.gz";
-        sha256 = "1s5kbqri9k7cpajkgnl2s5l0nznzridj5iscwd9n1nj4bsr44lap";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v4.0.0-darwin-amd64.tar.gz";
+        sha256 = "1wkak84yg5a4b5791pdwcl0fr089yjk853hwp44x3rhdh8xrdq1p";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.13.1-darwin-amd64.tar.gz";
-        sha256 = "133xspppmydjri5ba2yxc331ljzd8wj88q3hzmgvp0m50il1ks71";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v3.0.0-darwin-amd64.tar.gz";
+        sha256 = "1g2q3zbhxmpk2qp3c9hz0vn0xh95pnl7pd5b5kcizbrdfgjlaabq";
       }
     ];
   };
diff --git a/pkgs/tools/admin/pulumi/update.sh b/pkgs/tools/admin/pulumi/update.sh
index 31ac38ab275..d8c5a698300 100755
--- a/pkgs/tools/admin/pulumi/update.sh
+++ b/pkgs/tools/admin/pulumi/update.sh
@@ -3,31 +3,32 @@
 
 # Version of Pulumi from
 # https://www.pulumi.com/docs/get-started/install/versions/
-VERSION="2.24.1"
+VERSION="3.1.0"
 
 # Grab latest release ${VERSION} from
 # https://github.com/pulumi/pulumi-${NAME}/releases
 plugins=(
-    "auth0=1.10.0"
-    "aws=3.36.0"
-    "cloudflare=2.14.2"
-    "consul=2.9.1"
-    "datadog=2.17.1"
-    "digitalocean=3.7.0"
-    "docker=2.9.1"
-    "gcp=4.19.0"
-    "github=3.4.0"
-    "gitlab=3.8.1"
-    "hcloud=0.7.1"
-    "kubernetes=2.8.3"
-    "mailgun=2.5.1"
-    "mysql=2.5.1"
-    "openstack=2.17.1"
+    "auth0=2.0.0"
+    "aws=4.0.0"
+    "cloudflare=3.0.0"
+    "consul=3.0.0"
+    "datadog=3.0.0"
+    "digitalocean=4.0.0"
+    "docker=3.0.0"
+    "gcp=5.0.0"
+    "github=4.0.0"
+    "gitlab=4.0.0"
+    "hcloud=1.0.0"
+    "kubernetes=3.0.0"
+    "linode=3.0.0"
+    "mailgun=3.0.0"
+    "mysql=3.0.0"
+    "openstack=3.0.0"
     "packet=3.2.2"
-    "postgresql=2.9.0"
-    "random=3.1.1"
-    "vault=3.5.1"
-    "vsphere=2.13.1"
+    "postgresql=3.0.0"
+    "random=4.0.0"
+    "vault=4.0.0"
+    "vsphere=3.0.0"
 )
 
 function genMainSrc() {
diff --git a/pkgs/tools/misc/ffsend/default.nix b/pkgs/tools/misc/ffsend/default.nix
index ff1c4c7b892..75e1084e0bd 100644
--- a/pkgs/tools/misc/ffsend/default.nix
+++ b/pkgs/tools/misc/ffsend/default.nix
@@ -1,5 +1,6 @@
 { lib, stdenv, fetchFromGitLab, rustPlatform, cmake, pkg-config, openssl
-, darwin, installShellFiles
+, installShellFiles
+, CoreFoundation, CoreServices, Security, AppKit, libiconv
 
 , x11Support ? stdenv.isLinux || stdenv.hostPlatform.isBSD
 , xclip ? null, xsel ? null
@@ -29,7 +30,7 @@ buildRustPackage rec {
 
   nativeBuildInputs = [ cmake pkg-config installShellFiles ];
   buildInputs =
-    if stdenv.isDarwin then (with darwin.apple_sdk.frameworks; [ CoreFoundation CoreServices Security AppKit ])
+    if stdenv.isDarwin then [ libiconv CoreFoundation CoreServices Security AppKit ]
     else [ openssl ];
 
   preBuild = lib.optionalString (x11Support && usesX11) (
diff --git a/pkgs/tools/networking/fastd/default.nix b/pkgs/tools/networking/fastd/default.nix
index ed7bb0b01d3..af75641a5b9 100644
--- a/pkgs/tools/networking/fastd/default.nix
+++ b/pkgs/tools/networking/fastd/default.nix
@@ -1,5 +1,16 @@
-{ lib, stdenv, fetchFromGitHub, bison, meson, ninja, pkg-config
-, libuecc, libsodium, libcap, json_c, openssl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, bison
+, meson
+, ninja
+, pkg-config
+, libuecc
+, libsodium
+, libcap
+, json_c
+, openssl
+}:
 
 stdenv.mkDerivation rec {
   pname = "fastd";
@@ -12,8 +23,27 @@ stdenv.mkDerivation rec {
     sha256 = "1p4k50dk8byrghbr0fwmgwps8df6rlkgcd603r14i71m5g27z5gw";
   };
 
-  nativeBuildInputs = [ pkg-config bison meson ninja ];
-  buildInputs = [ libuecc libsodium libcap json_c openssl ];
+  nativeBuildInputs = [
+    bison
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    json_c
+    libcap
+    libsodium
+    libuecc
+    openssl
+  ];
+
+  # some options are only available on x86
+  mesonFlags = lib.optionals (!stdenv.isx86_64 && !stdenv.isi686) [
+    "-Dcipher_salsa20_xmm=disabled"
+    "-Dcipher_salsa2012_xmm=disabled"
+    "-Dmac_ghash_pclmulqdq=disabled"
+  ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/tools/package-management/protontricks/default.nix b/pkgs/tools/package-management/protontricks/default.nix
index ec5017c54c7..bc161f38f28 100644
--- a/pkgs/tools/package-management/protontricks/default.nix
+++ b/pkgs/tools/package-management/protontricks/default.nix
@@ -3,6 +3,7 @@
 , fetchFromGitHub
 , setuptools_scm
 , vdf
+, bash
 , steam-run
 , winetricks
 , zenity
@@ -11,13 +12,13 @@
 
 buildPythonApplication rec {
   pname = "protontricks";
-  version = "1.4.4";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     owner = "Matoking";
     repo = pname;
     rev = version;
-    sha256 = "0i7p0jj7avmq3b2qlcpwcflipndrnwsvwvhc5aal7rm95aa7xhja";
+    hash = "sha256-IHgoi5VUN3ORbufkruPb6wR7pTekJFQHhhDrnjOWzWM=";
   };
 
   patches = [
@@ -34,6 +35,7 @@ buildPythonApplication rec {
 
   makeWrapperArgs = [
     "--prefix PATH : ${lib.makeBinPath [
+      bash
       steam-run
       (winetricks.override {
         # Remove default build of wine to reduce closure size.
@@ -45,15 +47,7 @@ buildPythonApplication rec {
   ];
 
   checkInputs = [ pytestCheckHook ];
-  disabledTests = [
-    # Steam runtime is hard-coded with steam-run.patch and can't be configured
-    "test_run_steam_runtime_not_found"
-    "test_unknown_steam_runtime_detected"
-
-    # Steam runtime 2 currently isn't supported
-    # See https://github.com/NixOS/nixpkgs/issues/100655
-    "test_run_winetricks_steam_runtime_v2"
-  ];
+  pythonImportsCheck = [ "protontricks" ];
 
   meta = with lib; {
     description = "A simple wrapper for running Winetricks commands for Proton-enabled games";
diff --git a/pkgs/tools/package-management/protontricks/steam-run.patch b/pkgs/tools/package-management/protontricks/steam-run.patch
index 619d80bd8a7..5e91de58dbe 100644
--- a/pkgs/tools/package-management/protontricks/steam-run.patch
+++ b/pkgs/tools/package-management/protontricks/steam-run.patch
@@ -1,16 +1,18 @@
 diff --git a/src/protontricks/cli.py b/src/protontricks/cli.py
-index fec0563..d158b96 100755
+index 9641970..6a2b268 100755
 --- a/src/protontricks/cli.py
 +++ b/src/protontricks/cli.py
-@@ -14,7 +14,7 @@ import os
- import logging
+@@ -15,8 +15,8 @@ import sys
  
  from . import __version__
--from .steam import (find_proton_app, find_steam_path, find_steam_runtime_path,
-+from .steam import (find_proton_app, find_steam_path,
-                     get_steam_apps, get_steam_lib_paths)
- from .winetricks import get_winetricks_path
  from .gui import select_steam_app_with_gui
+-from .steam import (find_legacy_steam_runtime_path, find_proton_app,
+-                    find_steam_path, get_steam_apps, get_steam_lib_paths)
++from .steam import (find_proton_app, find_steam_path, get_steam_apps,
++                    get_steam_lib_paths)
+ from .util import run_command
+ from .winetricks import get_winetricks_path
+ 
 @@ -75,8 +75,7 @@ def main(args=None):
              "WINE: path to a custom 'wine' executable\n"
              "WINESERVER: path to a custom 'wineserver' executable\n"
@@ -21,70 +23,73 @@ index fec0563..d158b96 100755
          ),
          formatter_class=argparse.RawTextHelpFormatter
      )
-@@ -133,14 +132,10 @@ def main(args=None):
+@@ -138,18 +137,9 @@ def main(args=None):
+         )
          sys.exit(-1)
  
-     # 2. Find Steam Runtime if enabled
--    steam_runtime_path = None
-+    steam_runtime = False
- 
+-    # 2. Find the pre-installed legacy Steam Runtime if enabled
+-    legacy_steam_runtime_path = None
+-    use_steam_runtime = True
+-
++    # 2. Use Steam Runtime if enabled
      if os.environ.get("STEAM_RUNTIME", "") != "0" and not args.no_runtime:
--        steam_runtime_path = find_steam_runtime_path(steam_root=steam_root)
+-        legacy_steam_runtime_path = find_legacy_steam_runtime_path(
+-            steam_root=steam_root
+-        )
 -
--        if not steam_runtime_path:
+-        if not legacy_steam_runtime_path:
 -            print("Steam Runtime was enabled but couldn't be found!")
 -            sys.exit(-1)
-+        steam_runtime = True
++        use_steam_runtime = True
      else:
+         use_steam_runtime = False
          logger.info("Steam Runtime disabled.")
- 
-@@ -201,7 +196,7 @@ def main(args=None):
-             winetricks_path=winetricks_path,
+@@ -212,7 +202,6 @@ def main(args=None):
              proton_app=proton_app,
              steam_app=steam_app,
--            steam_runtime_path=steam_runtime_path,
-+            steam_runtime=steam_runtime,
-             command=[winetricks_path, "--gui"]
+             use_steam_runtime=use_steam_runtime,
+-            legacy_steam_runtime_path=legacy_steam_runtime_path,
+             command=[winetricks_path, "--gui"],
+             use_bwrap=use_bwrap
          )
- 
-@@ -269,7 +264,7 @@ def main(args=None):
-             winetricks_path=winetricks_path,
+@@ -282,7 +271,6 @@ def main(args=None):
              proton_app=proton_app,
              steam_app=steam_app,
--            steam_runtime_path=steam_runtime_path,
-+            steam_runtime=steam_runtime,
+             use_steam_runtime=use_steam_runtime,
+-            legacy_steam_runtime_path=legacy_steam_runtime_path,
+             use_bwrap=use_bwrap,
              command=[winetricks_path] + args.winetricks_command)
      elif args.command:
-         run_command(
-@@ -277,7 +272,7 @@ def main(args=None):
-             proton_app=proton_app,
+@@ -292,7 +280,6 @@ def main(args=None):
              steam_app=steam_app,
              command=args.command,
--            steam_runtime_path=steam_runtime_path,
-+            steam_runtime=steam_runtime,
+             use_steam_runtime=use_steam_runtime,
+-            legacy_steam_runtime_path=legacy_steam_runtime_path,
+             use_bwrap=use_bwrap,
              # Pass the command directly into the shell *without*
              # escaping it
-             cwd=steam_app.install_path,
 diff --git a/src/protontricks/steam.py b/src/protontricks/steam.py
-index fa5772d..4f30cd3 100644
+index 8554e24..509afb6 100644
 --- a/src/protontricks/steam.py
 +++ b/src/protontricks/steam.py
-@@ -11,7 +11,7 @@ from .util import lower_dict
- 
+@@ -13,8 +13,8 @@ from .util import lower_dict
  __all__ = (
      "COMMON_STEAM_DIRS", "SteamApp", "find_steam_path",
--    "find_steam_proton_app", "find_proton_app", "find_steam_runtime_path",
-+    "find_steam_proton_app", "find_proton_app",
-     "find_appid_proton_prefix", "get_steam_lib_paths", "get_steam_apps",
-     "get_custom_proton_installations"
+     "find_steam_proton_app", "find_proton_app",
+-    "find_legacy_steam_runtime_path", "find_appid_proton_prefix",
+-    "get_steam_lib_paths", "get_steam_apps", "get_custom_proton_installations"
++    "find_appid_proton_prefix", "get_steam_lib_paths",
++    "get_steam_apps", "get_custom_proton_installations"
  )
-@@ -254,37 +254,6 @@ def find_steam_path():
+ 
+ COMMON_STEAM_DIRS = [
+@@ -283,37 +283,6 @@ def find_steam_path():
      return None, None
  
  
--def find_steam_runtime_path(steam_root):
+-def find_legacy_steam_runtime_path(steam_root):
 -    """
--    Find the Steam Runtime either using the STEAM_RUNTIME env or
+-    Find the legacy Steam Runtime either using the STEAM_RUNTIME env or
 -    steam_root
 -    """
 -    env_steam_runtime = os.environ.get("STEAM_RUNTIME", "")
@@ -117,162 +122,149 @@ index fa5772d..4f30cd3 100644
  APPINFO_STRUCT_SECTION = "<LLLLQ20sL"
  
 diff --git a/src/protontricks/util.py b/src/protontricks/util.py
-index d513b46..c48e41f 100644
+index 40fa752..9da5509 100644
 --- a/src/protontricks/util.py
 +++ b/src/protontricks/util.py
-@@ -6,7 +6,7 @@ import stat
- from pathlib import Path
- from subprocess import check_output, run, PIPE
- 
--__all__ = ("get_runtime_library_paths", "create_wine_bin_dir", "run_command")
-+__all__ = ("create_wine_bin_dir", "run_command")
- 
- logger = logging.getLogger("protontricks")
- 
-@@ -25,93 +25,10 @@ def lower_dict(d):
+@@ -25,24 +25,6 @@ def lower_dict(d):
      return {k.lower(): v for k, v in d.items()}
  
  
--def get_host_library_paths():
+-def get_legacy_runtime_library_paths(legacy_steam_runtime_path, proton_app):
 -    """
--    Get host library paths to use when creating the LD_LIBRARY_PATH environment
--    variable for use with newer Steam Runtime installations
+-    Get LD_LIBRARY_PATH value to use when running a command using Steam Runtime
 -    """
--    # The traditional Steam Runtime does the following when running the
--    # `run.sh --print-steam-runtime-library-paths` command.
--    # Since that command is unavailable with newer Steam Runtime releases,
--    # do it ourselves here.
--    result = run(
--        ["/sbin/ldconfig", "-XNv"],
--        check=True, stdout=PIPE, stderr=PIPE
--    )
--    lines = result.stdout.decode("utf-8").split("\n")
--    paths = [
--        line.split(":")[0] for line in lines
--        if line.startswith("/") and ":" in line
--    ]
--
--    return ":".join(paths)
--
--
--RUNTIME_ROOT_GLOB_PATTERNS = (
--    "var/*/files/",
--    "*/files/"
--)
--
--
--def get_runtime_library_paths(steam_runtime_path, proton_app):
--    """
--    Get LD_LIBRARY_PATH value to run a command using Steam Runtime
--    """
--    def find_runtime_app_root(runtime_app):
--        """
--        Find the runtime root (the directory containing the root fileystem
--        used for the container) for separately installed Steam Runtime app
--        """
--        for pattern in RUNTIME_ROOT_GLOB_PATTERNS:
--            try:
--                return next(
--                    runtime_app.install_path.glob(pattern)
--                )
--            except StopIteration:
--                pass
--
--        raise RuntimeError(
--            "Could not find Steam Runtime runtime root for {}".format(
--                runtime_app.name
--            )
--        )
--
--    if proton_app.required_tool_appid:
--        # bwrap based Steam Runtime is used for Proton installations that
--        # use separate Steam runtimes
--        # TODO: Try to run the Wine binaries inside an user namespace somehow.
--        # Newer Steam Runtime environments may rely on a newer glibc than what
--        # is available on the host system, which may cause potential problems
--        # otherwise.
--        runtime_root = find_runtime_app_root(proton_app.required_tool_app)
--        return "".join([
--            str(proton_app.install_path / "dist" / "lib"), os.pathsep,
--            str(proton_app.install_path / "dist" / "lib64"), os.pathsep,
--            get_host_library_paths(), os.pathsep,
--            str(runtime_root / "lib" / "i386-linux-gnu"), os.pathsep,
--            str(runtime_root / "lib" / "x86_64-linux-gnu")
--        ])
--
--    # Traditional LD_LIBRARY_PATH based Steam Runtime is used otherwise
 -    steam_runtime_paths = check_output([
--        str(steam_runtime_path / "run.sh"),
+-        str(legacy_steam_runtime_path / "run.sh"),
 -        "--print-steam-runtime-library-paths"
 -    ])
 -    steam_runtime_paths = str(steam_runtime_paths, "utf-8")
 -    # Add Proton installation directory first into LD_LIBRARY_PATH
 -    # so that libwine.so.1 is picked up correctly (see issue #3)
 -    return "".join([
--        str(proton_app.install_path / "dist" / "lib"), os.pathsep,
--        str(proton_app.install_path / "dist" / "lib64"), os.pathsep,
+-        str(proton_app.proton_dist_path / "lib"), os.pathsep,
+-        str(proton_app.proton_dist_path / "lib64"), os.pathsep,
 -        steam_runtime_paths
 -    ])
 -
 -
- WINE_SCRIPT_TEMPLATE = (
--    "#!/bin/bash\n"
-+    "#!/bin/sh\n"
-     "# Helper script created by Protontricks to run Wine binaries using Steam Runtime\n"
--    "export LD_LIBRARY_PATH=\"$PROTON_LD_LIBRARY_PATH\"\n"
--    "exec \"$PROTON_PATH\"/dist/bin/{name} \"$@\""
-+    "exec steam-run \"$PROTON_PATH\"/dist/bin/{name} \"$@\""
+ def get_host_library_paths():
+     """
+     Get host library paths to use when creating the LD_LIBRARY_PATH environment
+@@ -54,7 +36,7 @@ def get_host_library_paths():
+     # Since that command is unavailable with newer Steam Runtime releases,
+     # do it ourselves here.
+     result = run(
+-        ["/sbin/ldconfig", "-XNv"],
++        ["steam-run", "ldconfig", "-XNv"],
+         check=True, stdout=PIPE, stderr=PIPE
+     )
+     lines = result.stdout.decode("utf-8").split("\n")
+@@ -72,7 +54,7 @@ RUNTIME_ROOT_GLOB_PATTERNS = (
  )
  
  
-@@ -172,7 +89,7 @@ def create_wine_bin_dir(proton_app):
+-def get_runtime_library_paths(proton_app, use_bwrap=True):
++def get_runtime_library_paths(proton_app, proton_app_only=True):
+     """
+     Get LD_LIBRARY_PATH value to use when running a command using Steam Runtime
+     """
+@@ -95,7 +77,7 @@ def get_runtime_library_paths(proton_app, use_bwrap=True):
+             )
+         )
+ 
+-    if use_bwrap:
++    if proton_app_only:
+         return "".join([
+             str(proton_app.proton_dist_path / "lib"), os.pathsep,
+             str(proton_app.proton_dist_path / "lib64"), os.pathsep
+@@ -111,14 +93,19 @@ def get_runtime_library_paths(proton_app, use_bwrap=True):
+     ])
  
+ 
+-WINE_SCRIPT_RUNTIME_V1_TEMPLATE = (
+-    "#!/bin/bash\n"
+-    "# Helper script created by Protontricks to run Wine binaries using Steam Runtime\n"
+-    "export LD_LIBRARY_PATH=\"$PROTON_LD_LIBRARY_PATH\"\n"
+-    "exec \"$PROTON_DIST_PATH\"/bin/{name} \"$@\""
+-)
++# Add Proton installation directory first into LD_LIBRARY_PATH
++# so that libwine.so.1 is picked up correctly (see issue #3)
++WINE_SCRIPT_RUNTIME_V1_TEMPLATE = """#!/usr/bin/env -S steam-run bash
++# Helper script created by Protontricks to run Wine binaries using Steam Runtime
++export LD_LIBRARY_PATH="$PROTON_LD_LIBRARY_PATH":"$LD_LIBRARY_PATH"
++exec "$PROTON_DIST_PATH"/bin/{name} "$@"
++"""
+ 
+-WINE_SCRIPT_RUNTIME_V2_TEMPLATE = """#!/bin/bash
++# The run script calls pressure-vessel-unruntime which will unset
++# LD_LIBRARY_PATH defined by steam-run. This will cause Pressure
++# Vessel to segfault, so just call pressure-vessel-wrap directly
++# instead.
++WINE_SCRIPT_RUNTIME_V2_TEMPLATE = """#!/usr/bin/env bash
+ # Helper script created by Protontricks to run Wine binaries using Steam Runtime
+ PROTONTRICKS_PROXY_SCRIPT_PATH="{script_path}"
+ if [[ -n "$PROTONTRICKS_INSIDE_STEAM_RUNTIME" ]]; then
+@@ -127,9 +114,13 @@ if [[ -n "$PROTONTRICKS_INSIDE_STEAM_RUNTIME" ]]; then
+   export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PROTON_LD_LIBRARY_PATH"
+   "$PROTON_DIST_PATH"/bin/{name} "$@"
+ else
+-  exec "$STEAM_RUNTIME_PATH"/run --share-pid --batch --filesystem=/mnt \
+-  --filesystem=/tmp --filesystem=/run/media --filesystem=/etc \
+-  --filesystem=/opt --filesystem=/home --filesystem=/usr -- \
++  exec steam-run "$STEAM_RUNTIME_PATH"/pressure-vessel/bin/pressure-vessel-wrap \
++  --runtime-archive=$(echo "$STEAM_RUNTIME_PATH"/*runtime.tar.gz) \
++  --variable-dir="${{PRESSURE_VESSEL_VARIABLE_DIR:-$STEAM_RUNTIME_PATH/var}}" \
++  --share-pid --batch \
++  --filesystem=/mnt --filesystem=/tmp --filesystem=/run/media \
++  --filesystem=/etc --filesystem=/opt --filesystem=/home \
++  --filesystem=/usr -- \
+   env PROTONTRICKS_INSIDE_STEAM_RUNTIME=1 \
+   "$PROTONTRICKS_PROXY_SCRIPT_PATH" "$@"
+ fi
+@@ -194,7 +185,6 @@ def create_wine_bin_dir(proton_app, use_bwrap=True):
  def run_command(
          winetricks_path, proton_app, steam_app, command,
--        steam_runtime_path=None,
-+        steam_runtime=False,
+         use_steam_runtime=False,
+-        legacy_steam_runtime_path=None,
+         use_bwrap=True,
          **kwargs):
      """Run an arbitrary command with the correct environment variables
-     for the given Proton app
-@@ -180,13 +97,13 @@ def run_command(
-     The environment variables are set for the duration of the call
-     and restored afterwards
- 
--    If 'steam_runtime_path' is provided, run the command using Steam Runtime
-+    If 'steam_runtime' is provided, run the command using Steam Runtime
-     """
-     # Check for incomplete Steam Runtime installation
-     runtime_install_incomplete = \
-         proton_app.required_tool_appid and not proton_app.required_tool_app
- 
--    if steam_runtime_path and runtime_install_incomplete:
-+    if steam_runtime and runtime_install_incomplete:
-         raise RuntimeError(
-             "{} is missing the required Steam Runtime. You may need to launch "
-             "a Steam app using this Proton version to finish the "
-@@ -234,7 +151,7 @@ def run_command(
-     os.environ.pop("WINEARCH", "")
+@@ -271,7 +261,7 @@ def run_command(
+             os.environ["STEAM_RUNTIME_PATH"] = \
+                 str(proton_app.required_tool_app.install_path)
+             os.environ["PROTON_LD_LIBRARY_PATH"] = \
+-                get_runtime_library_paths(proton_app, use_bwrap=use_bwrap)
++                get_runtime_library_paths(proton_app, proton_app_only=use_bwrap)
  
-     wine_bin_dir = None
--    if steam_runtime_path:
-+    if steam_runtime:
-         if proton_app.required_tool_app:
              runtime_name = proton_app.required_tool_app.name
              logger.info(
-@@ -251,8 +168,6 @@ def run_command(
+@@ -294,11 +284,8 @@ def run_command(
+                     "Current Steam Runtime not recognized by Protontricks."
+                 )
+         else:
+-            # Legacy Steam Runtime requires a different LD_LIBRARY_PATH
+             os.environ["PROTON_LD_LIBRARY_PATH"] = \
+-                get_legacy_runtime_library_paths(
+-                    legacy_steam_runtime_path, proton_app
+-                )
++                get_runtime_library_paths(proton_app, proton_app_only=True)
+ 
+         # When Steam Runtime is enabled, create a set of helper scripts
          # that load the underlying Proton Wine executables with Steam Runtime
-         # and Proton libraries instead of system libraries
-         wine_bin_dir = create_wine_bin_dir(proton_app=proton_app)
--        os.environ["PROTON_LD_LIBRARY_PATH"] = \
--            get_runtime_library_paths(steam_runtime_path, proton_app)
+@@ -306,8 +293,6 @@ def run_command(
+         wine_bin_dir = create_wine_bin_dir(
+             proton_app=proton_app, use_bwrap=use_bwrap
+         )
+-        os.environ["LEGACY_STEAM_RUNTIME_PATH"] = \
+-            str(legacy_steam_runtime_path)
+ 
          os.environ["PATH"] = "".join([
              str(wine_bin_dir), os.pathsep, os.environ["PATH"]
-         ])
 diff --git a/tests/test_cli.py b/tests/test_cli.py
-index b612dfa..c4d1de0 100644
+index 1955d81..1de44b3 100644
 --- a/tests/test_cli.py
 +++ b/tests/test_cli.py
-@@ -115,9 +115,6 @@ class TestCLIRun:
+@@ -117,15 +117,10 @@ class TestCLIRun:
          assert str(command.args[0]).endswith(".local/bin/winetricks")
          assert command.args[1] == "winecfg"
          assert command.env["PATH"].startswith(str(wine_bin_dir))
@@ -282,3 +274,61 @@ index b612dfa..c4d1de0 100644
          assert command.env["WINE"] == str(wine_bin_dir / "wine")
          assert command.env["WINELOADER"] == str(wine_bin_dir / "wine")
          assert command.env["WINESERVER"] == str(wine_bin_dir / "wineserver")
+ 
+-        assert command.env["LEGACY_STEAM_RUNTIME_PATH"] == \
+-            str(steam_runtime_dir / "steam-runtime")
+         assert "STEAM_RUNTIME_PATH" not in command.env
+ 
+         for name in ("wine", "wineserver"):
+@@ -166,16 +161,14 @@ class TestCLIRun:
+         assert command.env["PATH"].startswith(str(wine_bin_dir))
+ 
+         # Compared to the traditional Steam Runtime, PROTON_LD_LIBRARY_PATH
+-        # will be different
++        # will be the same (it would be different without steam-run.patch)
+         proton_install_path = Path(proton_app.install_path)
+         assert command.env["PROTON_LD_LIBRARY_PATH"] == "".join([
+             str(proton_install_path / "dist" / "lib"), os.pathsep,
+             str(proton_install_path / "dist" / "lib64"), os.pathsep
+         ])
+ 
+-        # Environment variables for both legacy and new Steam Runtime exist
+-        assert command.env["LEGACY_STEAM_RUNTIME_PATH"] == \
+-            str(steam_runtime_dir / "steam-runtime")
++        # Environment variable for new Steam Runtime exists
+         assert command.env["STEAM_RUNTIME_PATH"] == \
+             str(steam_runtime_soldier.install_path)
+ 
+@@ -238,10 +231,7 @@ class TestCLIRun:
+             str(runtime_root / "lib" / "i386-linux-gnu"), os.pathsep,
+             str(runtime_root / "lib" / "x86_64-linux-gnu")
+         ]))
+-
+-        # Environment variables for both legacy and new Steam Runtime exist
+-        assert command.env["LEGACY_STEAM_RUNTIME_PATH"] == \
+-            str(steam_runtime_dir / "steam-runtime")
++        # Environment variable for new Steam Runtime exists
+         assert command.env["STEAM_RUNTIME_PATH"] == \
+             str(steam_runtime_soldier.install_path)
+ 
+@@ -324,20 +314,6 @@ class TestCLIRun:
+ 
+         assert "Zenity is not installed" in result
+ 
+-    def test_run_steam_runtime_not_found(
+-            self, cli, steam_dir, steam_app_factory):
+-        """
+-        Try performing a command with Steam Runtime enabled but no
+-        available Steam Runtime installation
+-        """
+-        steam_app_factory(name="Fake game 1", appid=10)
+-        result = cli(
+-            ["10", "winecfg"], env={"STEAM_RUNTIME": "invalid/path"},
+-            expect_exit=True
+-        )
+-
+-        assert "Steam Runtime was enabled but couldn't be found" in result
+-
+     def test_run_proton_not_found(self, cli, steam_dir, steam_app_factory):
+         steam_app_factory(name="Fake game 1", appid=10)
+         result = cli(["10", "winecfg"], expect_exit=True)
diff --git a/pkgs/tools/text/chroma/default.nix b/pkgs/tools/text/chroma/default.nix
index 390793ffaf1..388d9b92273 100644
--- a/pkgs/tools/text/chroma/default.nix
+++ b/pkgs/tools/text/chroma/default.nix
@@ -2,15 +2,14 @@
 
 buildGoModule rec {
   pname = "chroma";
-  version = "0.8.2";
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner  = "alecthomas";
     repo   = pname;
     rev    = "v${version}";
-    sha256 = "0vzxd0jvjaakwjvkkkjppakjb00z44k7gb5ng1i4924agh24n5ka";
+    sha256 = "0zzk4wcjgxa9lsx8kwpmxvcw67f2fr7ai37jxmdahnws0ai2c2f7";
     leaveDotGit = true;
-    fetchSubmodules = true;
   };
 
   nativeBuildInputs = [ git ];
@@ -27,7 +26,7 @@ buildGoModule rec {
       --replace 'date    = "?"' "date = \"$date\""
   '';
 
-  vendorSha256 = "16cnc4scgkx8jan81ymha2q1kidm6hzsnip5mmgbxpqcc2h7hv9m";
+  vendorSha256 = "0y8mp08zccn9qxrsj9j7vambz8dwzsxbbgrlppzam53rg8rpxhrg";
 
   subPackages = [ "cmd/chroma" ];
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 51658440cad..ecf7c8177ab 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4459,7 +4459,9 @@ in
 
   ferm = callPackage ../tools/networking/ferm { };
 
-  ffsend = callPackage ../tools/misc/ffsend { };
+  ffsend = callPackage ../tools/misc/ffsend {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Security AppKit;
+  };
 
   fgallery = callPackage ../tools/graphics/fgallery { };
 
@@ -11523,6 +11525,8 @@ in
   sbcl_2_1_2 = callPackage ../development/compilers/sbcl/2.1.2.nix {};
   sbcl = sbcl_2_1_2;
 
+  roswell = callPackage ../development/tools/roswell/default.nix { };
+
   scala_2_10 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.10"; jre = jdk8; };
   scala_2_11 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.11"; jre = jdk8; };
   scala_2_12 = callPackage ../development/compilers/scala/2.x.nix { majorVersion = "2.12"; jre = jdk8; };
@@ -16637,6 +16641,10 @@ in
 
   mono-addins = callPackage ../development/libraries/mono-addins { };
 
+  movine = callPackage ../development/tools/database/movine {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
   movit = callPackage ../development/libraries/movit { };
 
   mosquitto = callPackage ../servers/mqtt/mosquitto { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 10c07d8d4b4..90f766ed459 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -7195,9 +7195,22 @@ in {
 
   samsungtvws = callPackage ../development/python-modules/samsungtvws { };
 
+  sanic = callPackage ../development/python-modules/sanic {
+    # pytest-sanic is doing ok for the sole purpose of testing Sanic.
+    pytest-sanic = self.pytest-sanic.overridePythonAttrs (oldAttrs: {
+      doCheck = false;
+      meta.broken = false;
+    });
+    # Don't pass any `sanic` to avoid dependency loops.  `sanic-testing`
+    # has special logic to disable tests when this is the case.
+    sanic-testing = self.sanic-testing.override { sanic = null; };
+  };
+
   sanic-auth = callPackage ../development/python-modules/sanic-auth { };
 
-  sanic = callPackage ../development/python-modules/sanic { };
+  sanic-routing = callPackage ../development/python-modules/sanic-routing { };
+
+  sanic-testing = callPackage ../development/python-modules/sanic-testing { };
 
   sapi-python-client = callPackage ../development/python-modules/sapi-python-client { };