summary refs log tree commit diff
path: root/pkgs/development/tools/rust
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/rust')
-rw-r--r--pkgs/development/tools/rust/bindgen/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-all-features/default.nix22
-rw-r--r--pkgs/development/tools/rust/cargo-asm/default.nix2
-rw-r--r--pkgs/development/tools/rust/cargo-c/default.nix25
-rw-r--r--pkgs/development/tools/rust/cargo-crev/default.nix20
-rw-r--r--pkgs/development/tools/rust/cargo-cross/default.nix5
-rw-r--r--pkgs/development/tools/rust/cargo-deadlinks/default.nix31
-rw-r--r--pkgs/development/tools/rust/cargo-dephell/default.nix26
-rw-r--r--pkgs/development/tools/rust/cargo-diet/default.nix23
-rw-r--r--pkgs/development/tools/rust/cargo-expand/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-llvm-lines/default.nix22
-rw-r--r--pkgs/development/tools/rust/cargo-msrv/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-play/default.nix9
-rw-r--r--pkgs/development/tools/rust/cargo-sort/default.nix22
-rw-r--r--pkgs/development/tools/rust/cargo-spellcheck/default.nix32
-rw-r--r--pkgs/development/tools/rust/cargo-supply-chain/default.nix23
-rw-r--r--pkgs/development/tools/rust/cargo-tally/default.nix26
-rw-r--r--pkgs/development/tools/rust/cargo-udeps/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-watch/default.nix6
-rw-r--r--pkgs/development/tools/rust/cbindgen/default.nix6
-rw-r--r--pkgs/development/tools/rust/maturin/default.nix8
-rw-r--r--pkgs/development/tools/rust/maturin/pyo3-test/generic.nix2
-rw-r--r--pkgs/development/tools/rust/panamax/default.nix24
-rw-r--r--pkgs/development/tools/rust/rhack/default.nix22
-rw-r--r--pkgs/development/tools/rust/rust-analyzer/default.nix9
-rw-r--r--pkgs/development/tools/rust/rust-analyzer/no-1-55-control-flow.patch212
-rw-r--r--pkgs/development/tools/rust/rust-script/default.nix26
-rw-r--r--pkgs/development/tools/rust/rustup/default.nix6
-rw-r--r--pkgs/development/tools/rust/svd2rust/cargo-lock.patch359
-rw-r--r--pkgs/development/tools/rust/svd2rust/default.nix6
30 files changed, 778 insertions, 220 deletions
diff --git a/pkgs/development/tools/rust/bindgen/default.nix b/pkgs/development/tools/rust/bindgen/default.nix
index cc3907ba7f2..57d5c1e64d2 100644
--- a/pkgs/development/tools/rust/bindgen/default.nix
+++ b/pkgs/development/tools/rust/bindgen/default.nix
@@ -5,7 +5,7 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-bindgen";
-  version = "0.57.0";
+  version = "0.59.1";
 
   RUSTFLAGS = "--cap-lints warn"; # probably OK to remove after update
 
@@ -13,10 +13,10 @@ rustPlatform.buildRustPackage rec {
     owner = "rust-lang";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-0d8+Rkb4h1DoFUQ7u2/kPR/fUUz0YvI+hNT4iXL3mxY=";
+    sha256 = "sha256-nCww9sr6kF7nCQeIGtOXddxD3dR/SJ0rqAc+RlZnUkQ=";
   };
 
-  cargoSha256 = "0r60smhlx1992a1s1k5sxjpdqllb2xsqcimgx3ldp5fdkfphk3cw";
+  cargoSha256 = "sha256-3EXYC/mwzVxo/ginvF1WFtS7ABE/ybyuKb58uMqfTDs=";
 
   #for substituteAll
   libclang = llvmPackages_latest.libclang.lib;
diff --git a/pkgs/development/tools/rust/cargo-all-features/default.nix b/pkgs/development/tools/rust/cargo-all-features/default.nix
new file mode 100644
index 00000000000..3d36b42ebe7
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-all-features/default.nix
@@ -0,0 +1,22 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-all-features";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "frewsxcv";
+    repo = pname;
+    rev = version;
+    sha256 = "1pdr34ygc0qmh0dyrw1qcrh1vgg9jv9lm6ypl3fgjzz7npdj1dw4";
+  };
+
+  cargoSha256 = "sha256-BsRJo55gYT8OkDUBepWq48sW7QPt5OZkm8RR9f7HqZY=";
+
+  meta = with lib; {
+    description = "A Cargo subcommand to build and test all feature flag combinations";
+    homepage = "https://github.com/frewsxcv/cargo-all-features";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-asm/default.nix b/pkgs/development/tools/rust/cargo-asm/default.nix
index cd657967e9a..68d5a256bbf 100644
--- a/pkgs/development/tools/rust/cargo-asm/default.nix
+++ b/pkgs/development/tools/rust/cargo-asm/default.nix
@@ -23,6 +23,6 @@ rustPlatform.buildRustPackage rec {
     description = "Display the assembly or LLVM-IR generated for Rust source code";
     homepage = "https://github.com/gnzlbg/cargo-asm";
     license = licenses.mit;
-    maintainers = [ maintainers.danieldk ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/tools/rust/cargo-c/default.nix b/pkgs/development/tools/rust/cargo-c/default.nix
index 71394c09890..8b4780d7ea0 100644
--- a/pkgs/development/tools/rust/cargo-c/default.nix
+++ b/pkgs/development/tools/rust/cargo-c/default.nix
@@ -1,11 +1,11 @@
 { rustPlatform, stdenv, lib, fetchFromGitHub, fetchurl
-, pkg-config, openssl
+, pkg-config, curl, openssl
 , CoreFoundation, libiconv, Security
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-c";
-  version = "0.8.1";
+  version = "0.9.2";
 
   src = stdenv.mkDerivation rec {
     name = "${pname}-source-${version}";
@@ -14,11 +14,11 @@ rustPlatform.buildRustPackage rec {
       owner = "lu-zero";
       repo = pname;
       rev = "v${version}";
-      sha256 = "0fd0xql5cbqgmir2z3ah91iasaq9133wmi5bnhiy3dv7drcqv4rc";
+      sha256 = "0hvlrhmbplx4cj4l5fynihgr9cdh0rkpwvipizk1gpp6p1ksr5hz";
     };
     cargoLock = fetchurl {
       url = "https://github.com/lu-zero/${pname}/releases/download/v${version}/Cargo.lock";
-      sha256 = "1xlh3h77rxhqyr1nkqyanb120lwdks6fklh202camqpmznd763g5";
+      sha256 = "0ckn31asz7013206j153ig96602dxvxm6skdz1plan0h05j5mgah";
     };
 
     installPhase = ''
@@ -28,12 +28,23 @@ rustPlatform.buildRustPackage rec {
     '';
   };
 
-  cargoSha256 = "0b952xkg0l31laqlhsv3cqdag7v15k9na6xr6q9y8xwy1fjh9gzv";
+  cargoSha256 = "0c0vn2pcy5px02mc0l4a3w7z9n8hc6br5w3ww6nrav5w6911jp52";
 
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ openssl ]
+
+  nativeBuildInputs = [ pkg-config (lib.getDev curl) ];
+  buildInputs = [ openssl curl ]
   ++ lib.optionals stdenv.isDarwin [ CoreFoundation libiconv Security ];
 
+  # Ensure that we are avoiding build of the curl vendored in curl-sys
+  doInstallCheck = stdenv.hostPlatform.libc == "glibc";
+  installCheckPhase = ''
+    runHook preInstallCheck
+
+    ldd "$out/bin/cargo-cbuild" | grep libcurl.so
+
+    runHook postInstallCheck
+  '';
+
   meta = with lib; {
     description = "A cargo subcommand to build and install C-ABI compatibile dynamic and static libraries";
     longDescription = ''
diff --git a/pkgs/development/tools/rust/cargo-crev/default.nix b/pkgs/development/tools/rust/cargo-crev/default.nix
index 9e95ee4430c..9803cd531e7 100644
--- a/pkgs/development/tools/rust/cargo-crev/default.nix
+++ b/pkgs/development/tools/rust/cargo-crev/default.nix
@@ -3,28 +3,38 @@
 , rustPlatform
 , perl
 , pkg-config
+, SystemConfiguration
 , Security
 , curl
 , libiconv
 , openssl
+, git
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-crev";
-  version = "0.19.4";
+  version = "0.20.1";
 
   src = fetchFromGitHub {
     owner = "crev-dev";
     repo = "cargo-crev";
-    rev = "v${version}";
-    sha256 = "sha256-XwwzMo06TdyOtGE9Z48mkEr6DnB/89wtMrW+UWr0G/Q=";
+    rev = version;
+    sha256 = "sha256-j2dafXUI6rDEYboSAciMeNma/YaBYKuQZgMUGVU+oBQ=";
   };
 
-  cargoSha256 = "sha256-gA2Fg4CCi0W+GqJoNPZWw/OjNYh2U2UsC6eMZ9W1QN8=";
+  cargoSha256 = "sha256-khrpS6QFpweKbTbR0YhAJTTrgDoZl9fzYPDs+JE1mtA=";
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+    git config --global user.name "Nixpkgs Test"
+    git config --global user.email "nobody@example.com"
+  '';
 
   nativeBuildInputs = [ perl pkg-config ];
 
-  buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security libiconv curl ];
+  buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ SystemConfiguration Security libiconv curl ];
+
+  checkInputs = [ git ];
 
   meta = with lib; {
     description = "A cryptographically verifiable code review system for the cargo (Rust) package manager";
diff --git a/pkgs/development/tools/rust/cargo-cross/default.nix b/pkgs/development/tools/rust/cargo-cross/default.nix
index 276d6e50eee..ff76a755cdd 100644
--- a/pkgs/development/tools/rust/cargo-cross/default.nix
+++ b/pkgs/development/tools/rust/cargo-cross/default.nix
@@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec {
     owner = "rust-embedded";
     repo = "cross";
     rev = "v${version}";
-    sha256 = "sha256:1py5w4kf612x4qxi190ilsrx0zzwdzk9i47ppvqblska1s47qa2w";
+    sha256 = "1py5w4kf612x4qxi190ilsrx0zzwdzk9i47ppvqblska1s47qa2w";
   };
 
   cargoSha256 = "sha256-zk6cbN4iSHnyoeWupufVf2yQK6aq3S99uk9lqpjCw4c=";
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage rec {
   cargoPatches = [
     (fetchpatch {
       url = "https://github.com/rust-embedded/cross/commit/e86ad2e5a55218395df7eaaf91900e22b809083c.patch";
-      sha256 = "sha256:1zrcj5fm3irmlrfkgb65kp2pjkry0rg5nn9pwsk9p0i6dpapjc7k";
+      sha256 = "1zrcj5fm3irmlrfkgb65kp2pjkry0rg5nn9pwsk9p0i6dpapjc7k";
     })
   ];
 
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/rust-embedded/cross";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ otavio ];
+    mainProgram = "cross";
   };
 }
diff --git a/pkgs/development/tools/rust/cargo-deadlinks/default.nix b/pkgs/development/tools/rust/cargo-deadlinks/default.nix
new file mode 100644
index 00000000000..ebd66a9b009
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-deadlinks/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, rustPlatform, fetchFromGitHub, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-deadlinks";
+  version = "0.8.0";
+
+  src = fetchFromGitHub {
+    owner = "deadlinks";
+    repo = pname;
+    rev = "${version}";
+    sha256 = "1zd5zgq3346xijllr0qdvvmsilpawisrqgdmsqir8v3bk55ybj4g";
+  };
+
+  cargoSha256 = "1ar3iwpy9mng4j09z4g3ynxra2qwc8454dnc0wjal4h16fk8gxwv";
+
+  checkFlags = [
+    # uses internet
+    "--skip non_existent_http_link --skip working_http_check"
+    # expects top-level directory to be named "cargo-deadlinks"
+    "--skip simple_project::it_checks_okay_project_correctly"
+  ];
+
+  buildInputs = lib.optional stdenv.isDarwin Security;
+
+  meta = with lib; {
+    description = "Cargo subcommand to check rust documentation for broken links";
+    homepage = "https://github.com/deadlinks/cargo-deadlinks";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ newam ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-dephell/default.nix b/pkgs/development/tools/rust/cargo-dephell/default.nix
new file mode 100644
index 00000000000..0fe9a060540
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-dephell/default.nix
@@ -0,0 +1,26 @@
+{ lib, rustPlatform, fetchFromGitHub, pkg-config, openssl, stdenv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-dephell";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner = "mimoo";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1v3psrkjhgbkq9lm3698ac77qgk090jbly4r187nryj0vcmf9s1l";
+  };
+
+  cargoSha256 = "0fwj782dbyj3ps16hxmq61drf8714863jb0d3mhivn3zlqawyyil";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security;
+
+  meta = with lib; {
+    description = "A tool to analyze the third-party dependencies imported by a rust crate or rust workspace";
+    homepage = "https://github.com/mimoo/cargo-dephell";
+    license = with licenses; [ mit /* or */ asl20 ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-diet/default.nix b/pkgs/development/tools/rust/cargo-diet/default.nix
new file mode 100644
index 00000000000..df50ed02d11
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-diet/default.nix
@@ -0,0 +1,23 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-diet";
+  version = "1.2.2";
+
+  src = fetchFromGitHub {
+    owner = "the-lean-crate";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1wxwf3i8qhak8b61iscsbndm4z7r5sg6iiarqlpf0y3lzb0yi5ah";
+  };
+
+  cargoSha256 = "06scamzr1676q5lx75bm05hdr21mdiby84dpm1wf2va5qpq6mjyl";
+
+  meta = with lib; {
+    description = "Help computing optimal include directives for your Cargo.toml manifest";
+    homepage = "https://github.com/the-lean-crate/cargo-diet";
+    changelog = "https://github.com/the-lean-crate/cargo-diet/blob/v${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-expand/default.nix b/pkgs/development/tools/rust/cargo-expand/default.nix
index 1403f67abda..304ede5214a 100644
--- a/pkgs/development/tools/rust/cargo-expand/default.nix
+++ b/pkgs/development/tools/rust/cargo-expand/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-expand";
-  version = "1.0.8";
+  version = "1.0.9";
 
   src = fetchFromGitHub {
     owner = "dtolnay";
     repo = pname;
     rev = version;
-    sha256 = "sha256-UkNO2uNiyN6xB74dNMiWZUCH6qq6P6u95wTq8xRvxsQ=";
+    sha256 = "sha256-wDuCmiQzyY/Ydr67fYb0yZaSWvuYwW91j0CoqbUFFpg=";
   };
 
-  cargoSha256 = "sha256-JTjPdTG8KGYVkiCkTqRiJyTpm7OpZkbW10EKSp9lLJ4=";
+  cargoSha256 = "sha256-5KCGXJzk5VStby/JzjXJvDSrhFlB8YJHMcQNL8GxkLI=";
 
   buildInputs = lib.optional stdenv.isDarwin libiconv;
 
diff --git a/pkgs/development/tools/rust/cargo-llvm-lines/default.nix b/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
new file mode 100644
index 00000000000..570f92d5e85
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
@@ -0,0 +1,22 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-llvm-lines";
+  version = "0.4.11";
+
+  src = fetchFromGitHub {
+    owner = "dtolnay";
+    repo = pname;
+    rev = version;
+    sha256 = "1p1agxsarkhw1mlqxawb2pj0fvsdyvi1rpp11p2k7fm341z1j71p";
+  };
+
+  cargoSha256 = "1b5py9md3lkqjyn9jkl6bdynfri0yvqvrfj2frbps0hqbxiv30jl";
+
+  meta = with lib; {
+    description = "Count the number of lines of LLVM IR across all instantiations of a generic function";
+    homepage = "https://github.com/dtolnay/cargo-llvm-lines";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-msrv/default.nix b/pkgs/development/tools/rust/cargo-msrv/default.nix
index 6cc10418fc0..96720a549a9 100644
--- a/pkgs/development/tools/rust/cargo-msrv/default.nix
+++ b/pkgs/development/tools/rust/cargo-msrv/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-msrv";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "foresterre";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-TqrbkTij+XCousADorrzsVVNVYOUEyl5+nhMn4IgaIY=";
+    sha256 = "sha256-QN9N3o6gnr/pUTvRHxl3Wv42KxFOlRDpIr5pw2vB1x4=";
   };
 
-  cargoSha256 = "sha256-cA4a7lqzOXkNZ7ehM/gCqtTyAaY2TH+23bITHBId8wQ=";
+  cargoSha256 = "sha256-rgiOwkbQLnaREvd5yMmipnVnl5Lqb+g+SHeP0V8XVTQ=";
 
   passthru = {
     updateScript = nix-update-script {
diff --git a/pkgs/development/tools/rust/cargo-play/default.nix b/pkgs/development/tools/rust/cargo-play/default.nix
index f5faed06faf..a4937ee412b 100644
--- a/pkgs/development/tools/rust/cargo-play/default.nix
+++ b/pkgs/development/tools/rust/cargo-play/default.nix
@@ -1,4 +1,4 @@
-{ fetchFromGitHub, lib, rustPlatform }:
+{ lib, rustPlatform, fetchFromGitHub }:
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-play";
@@ -13,8 +13,11 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "1xkscd9ci9vlkmbsaxvavrna1xpi16xcf9ri879lw8bdh7sa3nx8";
 
-  # some tests require internet access
-  doCheck = false;
+  # these tests require internet access
+  checkFlags = [
+    "--skip=dtoa_test"
+    "--skip=infer_override"
+  ];
 
   meta = with lib; {
     description = "Run your rust code without setting up cargo";
diff --git a/pkgs/development/tools/rust/cargo-sort/default.nix b/pkgs/development/tools/rust/cargo-sort/default.nix
new file mode 100644
index 00000000000..9ab6d7e2b03
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-sort/default.nix
@@ -0,0 +1,22 @@
+{ fetchFromGitHub, lib, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-sort";
+  version = "1.0.5";
+
+  src = fetchFromGitHub {
+    owner = "devinr528";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "146aawikyjcxbj0dpnqia31xmplpwkl9w1gv7d9a5jvz8whvxrff";
+  };
+
+  cargoSha256 = "0xm37f285vmd674k5j72pcjg6zpmxlf46d9vppi9s3qaw0hsslpf";
+
+  meta = with lib; {
+    description = "A tool to check that your Cargo.toml dependencies are sorted alphabetically";
+    homepage = "https://github.com/devinr528/cargo-sort";
+    license = with licenses; [ mit /* or */ asl20 ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-spellcheck/default.nix b/pkgs/development/tools/rust/cargo-spellcheck/default.nix
new file mode 100644
index 00000000000..836b959f102
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-spellcheck/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, libclang
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-spellcheck";
+  version = "0.8.13";
+
+  src = fetchFromGitHub {
+    owner = "drahnr";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0k88ma00gj8wjdvd7ysbbvqnf5sk1w8d3wqbi6qfxnqrc1k3hlv2";
+  };
+
+  cargoSha256 = "0mmk0igm2s8sxi65zvikxhz52xhkyd3ljqy61mij7zlx95rf639x";
+
+  LIBCLANG_PATH = "${libclang.lib}/lib";
+
+  checkFlags = [
+    "--skip checker::hunspell::tests::hunspell_binding_is_sane"
+  ];
+
+  meta = with lib; {
+    description = "Checks rust documentation for spelling and grammar mistakes";
+    homepage = "https://github.com/drahnr/cargo-spellcheck";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ newam ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-supply-chain/default.nix b/pkgs/development/tools/rust/cargo-supply-chain/default.nix
new file mode 100644
index 00000000000..d5876f240a9
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-supply-chain/default.nix
@@ -0,0 +1,23 @@
+{ lib, rustPlatform, fetchCrate, stdenv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-supply-chain";
+  version = "0.2.0";
+
+  src = fetchCrate {
+    inherit pname version;
+    sha256 = "sha256-zjDZJOUjnEQ03rmo5CdSY1emE6YohOPlf7SKuvNLuV0=";
+  };
+
+  cargoSha256 = "sha256-xSJ5rx8k+my0NeGYHZyvDzbM7uMdbViT7Ou9a9JACfs=";
+
+  buildInputs = lib.optional stdenv.isDarwin Security;
+
+  meta = with lib; {
+    description = "Gather author, contributor and publisher data on crates in your dependency graph";
+    homepage = "https://github.com/rust-secure-code/cargo-supply-chain";
+    changelog = "https://github.com/rust-secure-code/cargo-supply-chain/blob/master/CHANGELOG.md";
+    license = with licenses; [ asl20 mit zlib ]; # any of three
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-tally/default.nix b/pkgs/development/tools/rust/cargo-tally/default.nix
new file mode 100644
index 00000000000..21a5b470a2e
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-tally/default.nix
@@ -0,0 +1,26 @@
+{ lib, rustPlatform, fetchCrate, stdenv, DiskArbitration, Foundation, IOKit }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-tally";
+  version = "1.0.0";
+
+  src = fetchCrate {
+    inherit pname version;
+    sha256 = "16r60ddrqsss5nagfb5g49md8wwm4zbp9sffbm23bhlqhxh35y0i";
+  };
+
+  cargoSha256 = "0ffq67vy0pa7va8j93g03bralz7lck6ds1hidbpzzkp13pdcgf97";
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    DiskArbitration
+    Foundation
+    IOKit
+  ];
+
+  meta = with lib; {
+    description = "Graph the number of crates that depend on your crate over time";
+    homepage = "https://github.com/dtolnay/cargo-tally";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-udeps/default.nix b/pkgs/development/tools/rust/cargo-udeps/default.nix
index 0a76ae0202c..c08a714ce35 100644
--- a/pkgs/development/tools/rust/cargo-udeps/default.nix
+++ b/pkgs/development/tools/rust/cargo-udeps/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-udeps";
-  version = "0.1.22";
+  version = "0.1.23";
 
   src = fetchFromGitHub {
     owner = "est31";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-z92q0uwL832Ph7sTpWpaa8e9Xrik9wnjQ7LBy/hY8KE=";
+    sha256 = "sha256-SDB2Xk2bEheXT0Lc1lrTkOyJAcAEsmUPU5R8Hy1SAUE=";
   };
 
-  cargoSha256 = "sha256-4HguNyPIjpFqa80dDVFgXDK7pHOuFJdpFNxLARXxT2g=";
+  cargoSha256 = "sha256-gCGOXEjhT9bx3FYvtu3AoIOmgsU2WO1rmi/cKvD9WMY=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/development/tools/rust/cargo-watch/default.nix b/pkgs/development/tools/rust/cargo-watch/default.nix
index 46bd0a591a0..d349db0084c 100644
--- a/pkgs/development/tools/rust/cargo-watch/default.nix
+++ b/pkgs/development/tools/rust/cargo-watch/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-watch";
-  version = "8.0.0";
+  version = "8.1.1";
 
   src = fetchFromGitHub {
     owner = "passcod";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-3IgzMUCkcKUkhTb/ZNRONdvB6Ci0OBB1dcjtc65U8xE=";
+    sha256 = "sha256-wv1aD20VHar0V7oKOEKIX3klGVXauMXU4vL+NgNeZPk=";
   };
 
-  cargoSha256 = "sha256-Xp/pxPKs41TXO/EUY5x8Bha7NUioMabbb73///fFr6U=";
+  cargoSha256 = "sha256-qhCDrZAG1FcPYKMj2C/m+5Dplko4Tpp1hGpRdGOK/Ds=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices Foundation libiconv ];
 
diff --git a/pkgs/development/tools/rust/cbindgen/default.nix b/pkgs/development/tools/rust/cbindgen/default.nix
index c1bc2fb4c07..69963ea7d1f 100644
--- a/pkgs/development/tools/rust/cbindgen/default.nix
+++ b/pkgs/development/tools/rust/cbindgen/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-cbindgen";
-  version = "0.19.0";
+  version = "0.20.0";
 
   src = fetchFromGitHub {
     owner = "eqrion";
     repo = "cbindgen";
     rev = "v${version}";
-    sha256 = "0753dklr5lm1dmk6hy5khh8k3xyr5srfsq11l07685h71j7z0r00";
+    sha256 = "sha256-BLiAFYkqVJSpeNPW7UF2PpAttd6ADGeQ9yneiVfNi4g=";
   };
 
-  cargoSha256 = "0qyw0iqin7i31kk23ddsmywk7z0xxpd5n4q6dr6mf44y35a8krm8";
+  cargoSha256 = "sha256-P58qANcl0mYqJDP1QnSx560y8BLH+ePTZ+uHuix89R4=";
 
   buildInputs = lib.optional stdenv.isDarwin Security;
 
diff --git a/pkgs/development/tools/rust/maturin/default.nix b/pkgs/development/tools/rust/maturin/default.nix
index 5ab47c8aa8d..3cbf9c404c6 100644
--- a/pkgs/development/tools/rust/maturin/default.nix
+++ b/pkgs/development/tools/rust/maturin/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "maturin";
-  version = "0.10.6";
+  version = "0.11.3";
 
   src = fetchFromGitHub {
     owner = "PyO3";
     repo = "maturin";
     rev = "v${version}";
-    hash = "sha256-qWDrdS1zxe5woQSKLHhDSGJ1KF4SHk1mhaQApJXCCO4=";
+    hash = "sha256-jWkrjFQg0EqM+e/IT2n2E4lGL2kT/Wz7r5BLlzvWSO0=";
   };
 
-  cargoHash = "sha256-NEXgb7yWQkqbbofd3oYQ5n+CmfaM2cWj8HwufrcRKkc=";
+  cargoHash = "sha256-+kXwMGeE2HD59EU0Dzvg8I6LcHiPV7SKSFqnCTfkKwY=";
 
   nativeBuildInputs = [ pkg-config ];
 
@@ -44,6 +44,6 @@ rustPlatform.buildRustPackage rec {
     '';
     homepage = "https://github.com/PyO3/maturin";
     license = licenses.asl20;
-    maintainers = [ maintainers.danieldk ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/tools/rust/maturin/pyo3-test/generic.nix b/pkgs/development/tools/rust/maturin/pyo3-test/generic.nix
index a5713d944a8..547f11125b7 100644
--- a/pkgs/development/tools/rust/maturin/pyo3-test/generic.nix
+++ b/pkgs/development/tools/rust/maturin/pyo3-test/generic.nix
@@ -40,6 +40,6 @@ python.pkgs.buildPythonPackage rec {
     description = "PyO3 word count example";
     homepage = "https://github.com/PyO3/pyo3";
     license = licenses.asl20;
-    maintainers = [ maintainers.danieldk ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/tools/rust/panamax/default.nix b/pkgs/development/tools/rust/panamax/default.nix
new file mode 100644
index 00000000000..0d040afd421
--- /dev/null
+++ b/pkgs/development/tools/rust/panamax/default.nix
@@ -0,0 +1,24 @@
+{ lib, rustPlatform, fetchCrate, pkg-config, openssl, stdenv, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "panamax";
+  version = "1.0.3";
+
+  src = fetchCrate {
+    inherit pname version;
+    sha256 = "sha256-w4waFdzd/Ps0whOp39QLBE/YF2eyc4t2Ili7FskUt1M=";
+  };
+
+  cargoSha256 = "sha256-52snmkTFHI26xJo9qJkmqh1M5lLzhDxw8WT6uFd57aw=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security;
+
+  meta = with lib; {
+    description = "Mirror rustup and crates.io repositories for offline Rust and cargo usage";
+    homepage = "https://github.com/panamax-rs/panamax";
+    license = with licenses; [ mit /* or */ asl20 ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/rhack/default.nix b/pkgs/development/tools/rust/rhack/default.nix
new file mode 100644
index 00000000000..d141c43dd91
--- /dev/null
+++ b/pkgs/development/tools/rust/rhack/default.nix
@@ -0,0 +1,22 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rhack";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "nakabonne";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "088ynf65szaa86pxwwasn3wwi00z5pn7i8w9gh5dyn983z4d8237";
+  };
+
+  cargoSha256 = "sha256-HmBh2qbO/HuNPfHKifq41IB5ResnGka2iaAsnwppm9s=";
+
+  meta = with lib; {
+    description = "Temporary edit external crates that your project depends on";
+    homepage = "https://github.com/nakabonne/rhack";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/rust-analyzer/default.nix b/pkgs/development/tools/rust/rust-analyzer/default.nix
index 394b743ec80..81bb8405d1b 100644
--- a/pkgs/development/tools/rust/rust-analyzer/default.nix
+++ b/pkgs/development/tools/rust/rust-analyzer/default.nix
@@ -6,20 +6,23 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-analyzer-unwrapped";
-  version = "2021-08-23";
-  cargoSha256 = "sha256-FMOLYR8cyimAA71SlxcT370wpeNH4f8vwv+oAhUd8zc=";
+  version = "2021-09-20";
+  cargoSha256 = "sha256-OPolZ0oXGRcKvWxXkRMjyEXzvf1p41hGfHBpbDbLJck=";
 
   src = fetchFromGitHub {
     owner = "rust-analyzer";
     repo = "rust-analyzer";
     rev = version;
-    sha256 = "sha256-6Tbgy77Essi3Hyd5kdJ7JJbx7RuFZQWURfRrpScvPPQ=";
+    sha256 = "sha256-k2UGz+h9++8wtV+XdGZbWysjkIDe+UNudKL46eisZzw=";
   };
 
   patches = [
     # Code format and git history check require more dependencies but don't really matter for packaging.
     # So just ignore them.
     ./ignore-git-and-rustfmt-tests.patch
+
+    # Patch for our rust 1.54.0 in nixpkgs. Remove it when we have rust >= 1.55.0
+    ./no-1-55-control-flow.patch
   ];
 
   buildAndTestSubdir = "crates/rust-analyzer";
diff --git a/pkgs/development/tools/rust/rust-analyzer/no-1-55-control-flow.patch b/pkgs/development/tools/rust/rust-analyzer/no-1-55-control-flow.patch
new file mode 100644
index 00000000000..67f7686ffb4
--- /dev/null
+++ b/pkgs/development/tools/rust/rust-analyzer/no-1-55-control-flow.patch
@@ -0,0 +1,212 @@
+diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
+index 3b0c29e87..2841a39e2 100644
+--- a/crates/hir/src/lib.rs
++++ b/crates/hir/src/lib.rs
+@@ -31,7 +31,7 @@ pub mod db;
+ 
+ mod display;
+ 
+-use std::{iter, ops::ControlFlow, sync::Arc};
++use std::{iter, sync::Arc};
+ 
+ use arrayvec::ArrayVec;
+ use base_db::{CrateDisplayName, CrateId, Edition, FileId};
+@@ -70,7 +70,7 @@ use itertools::Itertools;
+ use nameres::diagnostics::DefDiagnosticKind;
+ use once_cell::unsync::Lazy;
+ use rustc_hash::FxHashSet;
+-use stdx::{format_to, impl_from};
++use stdx::{format_to, impl_from, ControlFlow};
+ use syntax::{
+     ast::{self, AttrsOwner, NameOwner},
+     AstNode, AstPtr, SmolStr, SyntaxKind, SyntaxNodePtr,
+diff --git a/crates/hir_ty/src/method_resolution.rs b/crates/hir_ty/src/method_resolution.rs
+index c88a8b653..039b5589e 100644
+--- a/crates/hir_ty/src/method_resolution.rs
++++ b/crates/hir_ty/src/method_resolution.rs
+@@ -2,7 +2,7 @@
+ //! For details about how this works in rustc, see the method lookup page in the
+ //! [rustc guide](https://rust-lang.github.io/rustc-guide/method-lookup.html)
+ //! and the corresponding code mostly in librustc_typeck/check/method/probe.rs.
+-use std::{iter, ops::ControlFlow, sync::Arc};
++use std::{iter, sync::Arc};
+ 
+ use arrayvec::ArrayVec;
+ use base_db::{CrateId, Edition};
+@@ -13,6 +13,7 @@ use hir_def::{
+ };
+ use hir_expand::name::Name;
+ use rustc_hash::{FxHashMap, FxHashSet};
++use stdx::{try_control_flow, ControlFlow};
+ 
+ use crate::{
+     autoderef,
+@@ -483,7 +484,7 @@ pub fn iterate_method_candidates_dyn(
+ 
+             let deref_chain = autoderef_method_receiver(db, krate, ty);
+             for i in 0..deref_chain.len() {
+-                iterate_method_candidates_with_autoref(
++                try_control_flow!(iterate_method_candidates_with_autoref(
+                     &deref_chain[i..],
+                     db,
+                     env.clone(),
+@@ -492,7 +493,7 @@ pub fn iterate_method_candidates_dyn(
+                     visible_from_module,
+                     name,
+                     callback,
+-                )?;
++                ));
+             }
+             ControlFlow::Continue(())
+         }
+@@ -522,7 +523,7 @@ fn iterate_method_candidates_with_autoref(
+     name: Option<&Name>,
+     mut callback: &mut dyn FnMut(&Canonical<Ty>, AssocItemId) -> ControlFlow<()>,
+ ) -> ControlFlow<()> {
+-    iterate_method_candidates_by_receiver(
++    try_control_flow!(iterate_method_candidates_by_receiver(
+         &deref_chain[0],
+         &deref_chain[1..],
+         db,
+@@ -532,7 +533,7 @@ fn iterate_method_candidates_with_autoref(
+         visible_from_module,
+         name,
+         &mut callback,
+-    )?;
++    ));
+ 
+     let refed = Canonical {
+         binders: deref_chain[0].binders.clone(),
+@@ -540,7 +541,7 @@ fn iterate_method_candidates_with_autoref(
+             .intern(&Interner),
+     };
+ 
+-    iterate_method_candidates_by_receiver(
++    try_control_flow!(iterate_method_candidates_by_receiver(
+         &refed,
+         deref_chain,
+         db,
+@@ -550,7 +551,7 @@ fn iterate_method_candidates_with_autoref(
+         visible_from_module,
+         name,
+         &mut callback,
+-    )?;
++    ));
+ 
+     let ref_muted = Canonical {
+         binders: deref_chain[0].binders.clone(),
+@@ -586,7 +587,7 @@ fn iterate_method_candidates_by_receiver(
+     // be found in any of the derefs of receiver_ty, so we have to go through
+     // that.
+     for self_ty in std::iter::once(receiver_ty).chain(rest_of_deref_chain) {
+-        iterate_inherent_methods(
++        try_control_flow!(iterate_inherent_methods(
+             self_ty,
+             db,
+             env.clone(),
+@@ -595,11 +596,11 @@ fn iterate_method_candidates_by_receiver(
+             krate,
+             visible_from_module,
+             &mut callback,
+-        )?
++        ))
+     }
+ 
+     for self_ty in std::iter::once(receiver_ty).chain(rest_of_deref_chain) {
+-        iterate_trait_method_candidates(
++        try_control_flow!(iterate_trait_method_candidates(
+             self_ty,
+             db,
+             env.clone(),
+@@ -608,7 +609,7 @@ fn iterate_method_candidates_by_receiver(
+             name,
+             Some(receiver_ty),
+             &mut callback,
+-        )?
++        ))
+     }
+ 
+     ControlFlow::Continue(())
+@@ -624,7 +625,7 @@ fn iterate_method_candidates_for_self_ty(
+     name: Option<&Name>,
+     mut callback: &mut dyn FnMut(&Canonical<Ty>, AssocItemId) -> ControlFlow<()>,
+ ) -> ControlFlow<()> {
+-    iterate_inherent_methods(
++    try_control_flow!(iterate_inherent_methods(
+         self_ty,
+         db,
+         env.clone(),
+@@ -633,7 +634,7 @@ fn iterate_method_candidates_for_self_ty(
+         krate,
+         visible_from_module,
+         &mut callback,
+-    )?;
++    ));
+     iterate_trait_method_candidates(self_ty, db, env, krate, traits_in_scope, name, None, callback)
+ }
+ 
+@@ -697,7 +698,7 @@ fn iterate_trait_method_candidates(
+             }
+             known_implemented = true;
+             // FIXME: we shouldn't be ignoring the binders here
+-            callback(self_ty, *item)?
++            try_control_flow!(callback(self_ty, *item))
+         }
+     }
+     ControlFlow::Continue(())
+@@ -774,7 +775,7 @@ fn iterate_inherent_methods(
+                     continue;
+                 }
+                 let receiver_ty = receiver_ty.unwrap_or(self_ty);
+-                callback(receiver_ty, item)?;
++                try_control_flow!(callback(receiver_ty, item));
+             }
+         }
+     }
+diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs
+index 506d3ba3c..590963c17 100644
+--- a/crates/ide/src/hover.rs
++++ b/crates/ide/src/hover.rs
+@@ -1,4 +1,4 @@
+-use std::{collections::HashSet, ops::ControlFlow};
++use std::collections::HashSet;
+ 
+ use either::Either;
+ use hir::{AsAssocItem, HasAttrs, HasSource, HirDisplay, Semantics, TypeInfo};
+@@ -12,7 +12,7 @@ use ide_db::{
+     RootDatabase,
+ };
+ use itertools::Itertools;
+-use stdx::format_to;
++use stdx::{format_to, ControlFlow};
+ use syntax::{
+     algo, ast, display::fn_as_proc_macro_label, match_ast, AstNode, Direction, SyntaxKind::*,
+     SyntaxNode, SyntaxToken, TextRange, TextSize, T,
+diff --git a/crates/stdx/src/lib.rs b/crates/stdx/src/lib.rs
+index e7d4753de..fddf95147 100644
+--- a/crates/stdx/src/lib.rs
++++ b/crates/stdx/src/lib.rs
+@@ -7,6 +7,22 @@ pub mod panic_context;
+ 
+ pub use always_assert::{always, never};
+ 
++/// std::ops::ControlFlow from rust std 1.55.0
++pub enum ControlFlow<B, C = ()> {
++    Continue(C),
++    Break(B),
++}
++
++#[macro_export]
++macro_rules! try_control_flow {
++    ($e:expr) => {
++        match $e {
++            $crate::ControlFlow::Continue(c) => c,
++            $crate::ControlFlow::Break(b) => return $crate::ControlFlow::Break(b),
++        }
++    };
++}
++
+ #[inline(always)]
+ pub fn is_ci() -> bool {
+     option_env!("CI").is_some()
+
diff --git a/pkgs/development/tools/rust/rust-script/default.nix b/pkgs/development/tools/rust/rust-script/default.nix
new file mode 100644
index 00000000000..b13a1f66db2
--- /dev/null
+++ b/pkgs/development/tools/rust/rust-script/default.nix
@@ -0,0 +1,26 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rust-script";
+  version = "0.17.0";
+
+  src = fetchFromGitHub {
+    owner = "fornwall";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0jz8hlvl31c5h8whd6pnpmslw6w6alkxijd9lhgric1yypiym9x3";
+  };
+
+  cargoSha256 = "sha256-hg0QtxR1qm/x8G6HoN7xAyOwh9jiQvX2wWYjUR8YvMs=";
+
+  # TODO: switch to `cargoCheckType = "false"` after #138822 is merged
+  # tests only work in debug mode
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Run Rust files and expressions as scripts without any setup or compilation step";
+    homepage = "https://rust-script.org";
+    license = with licenses; [ mit /* or */ asl20 ];
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/development/tools/rust/rustup/default.nix b/pkgs/development/tools/rust/rustup/default.nix
index d18d1a0ec37..f5e3b9ac4c2 100644
--- a/pkgs/development/tools/rust/rustup/default.nix
+++ b/pkgs/development/tools/rust/rustup/default.nix
@@ -22,16 +22,16 @@ in
 
 rustPlatform.buildRustPackage rec {
   pname = "rustup";
-  version = "1.24.2";
+  version = "1.24.3";
 
   src = fetchFromGitHub {
     owner = "rust-lang";
     repo = "rustup";
     rev = version;
-    sha256 = "sha256-uRCzVeTr5rr0CvE/1Uz7RHcw4Kt/sOItwcbZJBjjNjg=";
+    sha256 = "sha256-JpOOFwlTgwwBCrXOGYskFTgS6RZ7mHQJGT0jnHavxvI=";
   };
 
-  cargoSha256 = "sha256-+E6Wa4QrMG/Ow3KehsxIzLzubXJQxCWo/rowC4MPdgk=";
+  cargoSha256 = "sha256-hAfGpKaWD94IxFFpnW9XwQp4P9clUX6mmekwodCK0Ag=";
 
   nativeBuildInputs = [ makeWrapper pkg-config ];
 
diff --git a/pkgs/development/tools/rust/svd2rust/cargo-lock.patch b/pkgs/development/tools/rust/svd2rust/cargo-lock.patch
index acc9b053593..62dd8427c35 100644
--- a/pkgs/development/tools/rust/svd2rust/cargo-lock.patch
+++ b/pkgs/development/tools/rust/svd2rust/cargo-lock.patch
@@ -2,473 +2,492 @@ diff --git a/Cargo.lock b/Cargo.lock
 new file mode 100644
 --- /dev/null
 +++ b/Cargo.lock
-@@ -0,0 +1,469 @@
+@@ -0,0 +1,488 @@
 +# This file is automatically @generated by Cargo.
 +# It is not intended for manual editing.
++version = 3
++
 +[[package]]
 +name = "aho-corasick"
-+version = "0.7.15"
++version = "0.7.18"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
 +dependencies = [
-+ "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr",
 +]
 +
 +[[package]]
 +name = "ansi_term"
 +version = "0.11.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
 +dependencies = [
-+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi",
 +]
 +
 +[[package]]
 +name = "anyhow"
-+version = "1.0.40"
++version = "1.0.44"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1"
 +
 +[[package]]
 +name = "atty"
 +version = "0.2.14"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
 +dependencies = [
-+ "hermit-abi 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "libc 0.2.94 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hermit-abi",
++ "libc",
++ "winapi",
 +]
 +
 +[[package]]
 +name = "autocfg"
 +version = "1.0.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
 +
 +[[package]]
 +name = "bitflags"
-+version = "1.2.1"
++version = "1.3.2"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 +
 +[[package]]
 +name = "cast"
-+version = "0.2.5"
++version = "0.2.7"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a"
 +dependencies = [
-+ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version",
 +]
 +
 +[[package]]
 +name = "cfg-if"
 +version = "1.0.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 +
 +[[package]]
 +name = "clap"
 +version = "2.33.3"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
 +dependencies = [
-+ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ansi_term",
++ "atty",
++ "bitflags",
++ "strsim",
++ "textwrap",
++ "unicode-width",
++ "vec_map",
++]
++
++[[package]]
++name = "clap_conf"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "56039deda04adbf9af4e5595c199572dc276f4fe60b03a4c84c0186d4de649d8"
++dependencies = [
++ "anyhow",
++ "clap",
++ "serde",
++ "thiserror",
++ "toml",
 +]
 +
 +[[package]]
 +name = "crossbeam-channel"
 +version = "0.5.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
 +dependencies = [
-+ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-utils 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "crossbeam-utils",
 +]
 +
 +[[package]]
 +name = "crossbeam-deque"
-+version = "0.8.0"
++version = "0.8.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
 +dependencies = [
-+ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-epoch 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-utils 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "crossbeam-epoch",
++ "crossbeam-utils",
 +]
 +
 +[[package]]
 +name = "crossbeam-epoch"
-+version = "0.9.3"
++version = "0.9.5"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
 +dependencies = [
-+ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-utils 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "memoffset 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "crossbeam-utils",
++ "lazy_static",
++ "memoffset",
++ "scopeguard",
 +]
 +
 +[[package]]
 +name = "crossbeam-utils"
-+version = "0.8.3"
++version = "0.8.5"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
 +dependencies = [
-+ "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "lazy_static",
 +]
 +
 +[[package]]
 +name = "either"
 +version = "1.6.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 +
 +[[package]]
 +name = "env_logger"
 +version = "0.7.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
 +dependencies = [
-+ "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "log 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "regex 1.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "termcolor 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty",
++ "humantime",
++ "log",
++ "regex",
++ "termcolor",
 +]
 +
 +[[package]]
 +name = "hermit-abi"
-+version = "0.1.18"
++version = "0.1.19"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
 +dependencies = [
-+ "libc 0.2.94 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
 +]
 +
 +[[package]]
 +name = "humantime"
 +version = "1.3.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
 +dependencies = [
-+ "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quick-error",
 +]
 +
 +[[package]]
 +name = "inflections"
 +version = "1.1.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a"
 +
 +[[package]]
 +name = "lazy_static"
 +version = "1.4.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 +
 +[[package]]
 +name = "libc"
-+version = "0.2.94"
++version = "0.2.102"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103"
 +
 +[[package]]
 +name = "log"
 +version = "0.4.14"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
 +dependencies = [
-+ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
 +]
 +
 +[[package]]
 +name = "memchr"
-+version = "2.3.4"
++version = "2.4.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
 +
 +[[package]]
 +name = "memoffset"
-+version = "0.6.3"
++version = "0.6.4"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
 +dependencies = [
-+ "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg",
 +]
 +
 +[[package]]
 +name = "num_cpus"
 +version = "1.13.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
 +dependencies = [
-+ "hermit-abi 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "libc 0.2.94 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hermit-abi",
++ "libc",
 +]
 +
 +[[package]]
 +name = "once_cell"
-+version = "1.7.2"
++version = "1.8.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
 +
 +[[package]]
 +name = "proc-macro2"
-+version = "1.0.26"
++version = "1.0.29"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d"
 +dependencies = [
-+ "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid",
 +]
 +
 +[[package]]
 +name = "quick-error"
 +version = "1.2.3"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
 +
 +[[package]]
 +name = "quote"
 +version = "1.0.9"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
 +dependencies = [
-+ "proc-macro2 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2",
 +]
 +
 +[[package]]
 +name = "rayon"
-+version = "1.5.0"
++version = "1.5.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
 +dependencies = [
-+ "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg",
++ "crossbeam-deque",
++ "either",
++ "rayon-core",
 +]
 +
 +[[package]]
 +name = "rayon-core"
-+version = "1.9.0"
++version = "1.9.1"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
 +dependencies = [
-+ "crossbeam-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "crossbeam-utils 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-channel",
++ "crossbeam-deque",
++ "crossbeam-utils",
++ "lazy_static",
++ "num_cpus",
 +]
 +
 +[[package]]
 +name = "regex"
-+version = "1.4.6"
++version = "1.5.4"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
 +dependencies = [
-+ "aho-corasick 0.7.15 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "regex-syntax 0.6.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aho-corasick",
++ "memchr",
++ "regex-syntax",
 +]
 +
 +[[package]]
 +name = "regex-syntax"
-+version = "0.6.23"
++version = "0.6.25"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
 +
 +[[package]]
 +name = "rustc_version"
-+version = "0.2.3"
++version = "0.4.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
 +dependencies = [
-+ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver",
 +]
 +
 +[[package]]
 +name = "scopeguard"
 +version = "1.1.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 +
 +[[package]]
 +name = "semver"
-+version = "0.9.0"
++version = "1.0.4"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
-+dependencies = [
-+ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+]
++checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012"
 +
 +[[package]]
-+name = "semver-parser"
-+version = "0.7.0"
++name = "serde"
++version = "1.0.130"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
 +
 +[[package]]
 +name = "strsim"
 +version = "0.8.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
 +
 +[[package]]
 +name = "svd-parser"
-+version = "0.10.1"
++version = "0.10.2"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "697e7645ad9f5311fe3d872d094b135627b1616aea9e1573dddd28ca522579b9"
 +dependencies = [
-+ "anyhow 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "once_cell 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "regex 1.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "thiserror 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "xmltree 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "anyhow",
++ "once_cell",
++ "rayon",
++ "regex",
++ "thiserror",
++ "xmltree",
 +]
 +
 +[[package]]
 +name = "svd2rust"
-+version = "0.18.0"
++version = "0.19.0"
 +dependencies = [
-+ "anyhow 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "cast 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "inflections 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "log 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "proc-macro2 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "quote 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "svd-parser 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "syn 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "thiserror 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "anyhow",
++ "cast",
++ "clap",
++ "clap_conf",
++ "env_logger",
++ "inflections",
++ "log",
++ "proc-macro2",
++ "quote",
++ "svd-parser",
++ "syn",
++ "thiserror",
 +]
 +
 +[[package]]
 +name = "syn"
-+version = "1.0.70"
++version = "1.0.76"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84"
 +dependencies = [
-+ "proc-macro2 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "quote 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2",
++ "quote",
++ "unicode-xid",
 +]
 +
 +[[package]]
 +name = "termcolor"
 +version = "1.1.2"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
 +dependencies = [
-+ "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-util",
 +]
 +
 +[[package]]
 +name = "textwrap"
 +version = "0.11.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
 +dependencies = [
-+ "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width",
 +]
 +
 +[[package]]
 +name = "thiserror"
-+version = "1.0.24"
++version = "1.0.29"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88"
 +dependencies = [
-+ "thiserror-impl 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "thiserror-impl",
 +]
 +
 +[[package]]
 +name = "thiserror-impl"
-+version = "1.0.24"
++version = "1.0.29"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c"
 +dependencies = [
-+ "proc-macro2 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "quote 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "syn 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "toml"
++version = "0.5.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
++dependencies = [
++ "serde",
 +]
 +
 +[[package]]
 +name = "unicode-width"
-+version = "0.1.8"
++version = "0.1.9"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
 +
 +[[package]]
 +name = "unicode-xid"
-+version = "0.2.1"
++version = "0.2.2"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
 +
 +[[package]]
 +name = "vec_map"
 +version = "0.8.2"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
 +
 +[[package]]
 +name = "winapi"
 +version = "0.3.9"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
 +dependencies = [
-+ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
 +]
 +
 +[[package]]
 +name = "winapi-i686-pc-windows-gnu"
 +version = "0.4.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 +
 +[[package]]
 +name = "winapi-util"
 +version = "0.1.5"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
 +dependencies = [
-+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi",
 +]
 +
 +[[package]]
 +name = "winapi-x86_64-pc-windows-gnu"
 +version = "0.4.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 +
 +[[package]]
 +name = "xml-rs"
 +version = "0.7.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2"
 +dependencies = [
-+ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags",
 +]
 +
 +[[package]]
 +name = "xmltree"
 +version = "0.8.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ff8eaee9d17062850f1e6163b509947969242990ee59a35801af437abe041e70"
 +dependencies = [
-+ "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-+]
-+
-+[metadata]
-+"checksum aho-corasick 0.7.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
-+"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
-+"checksum anyhow 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b"
-+"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-+"checksum autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
-+"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
-+"checksum cast 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cc38c385bfd7e444464011bb24820f40dd1c76bcdfa1b78611cb7c2e5cafab75"
-+"checksum cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-+"checksum clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)" = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
-+"checksum crossbeam-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
-+"checksum crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
-+"checksum crossbeam-epoch 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2584f639eb95fea8c798496315b297cf81b9b58b6d30ab066a75455333cf4b12"
-+"checksum crossbeam-utils 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49"
-+"checksum either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
-+"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
-+"checksum hermit-abi 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
-+"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
-+"checksum inflections 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a"
-+"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-+"checksum libc 0.2.94 (registry+https://github.com/rust-lang/crates.io-index)" = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e"
-+"checksum log 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
-+"checksum memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
-+"checksum memoffset 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d"
-+"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
-+"checksum once_cell 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3"
-+"checksum proc-macro2 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec"
-+"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-+"checksum quote 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
-+"checksum rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
-+"checksum rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
-+"checksum regex 1.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759"
-+"checksum regex-syntax 0.6.23 (registry+https://github.com/rust-lang/crates.io-index)" = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548"
-+"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
-+"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-+"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
-+"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
-+"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
-+"checksum svd-parser 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6b787831d8f6a1549ccd1b0d62772d0526425a7da687f0f98591ab18e53bfe98"
-+"checksum syn 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)" = "b9505f307c872bab8eb46f77ae357c8eba1fdacead58ee5a850116b1d7f82883"
-+"checksum termcolor 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
-+"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-+"checksum thiserror 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e"
-+"checksum thiserror-impl 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0"
-+"checksum unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
-+"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
-+"checksum vec_map 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
-+"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-+"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-+"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-+"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-+"checksum xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2"
-+"checksum xmltree 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8eaee9d17062850f1e6163b509947969242990ee59a35801af437abe041e70"
++ "xml-rs",
++]
diff --git a/pkgs/development/tools/rust/svd2rust/default.nix b/pkgs/development/tools/rust/svd2rust/default.nix
index c66cbe3c2c8..5f67b335bc3 100644
--- a/pkgs/development/tools/rust/svd2rust/default.nix
+++ b/pkgs/development/tools/rust/svd2rust/default.nix
@@ -4,17 +4,17 @@ with rustPlatform;
 
 buildRustPackage rec {
   pname = "svd2rust";
-  version = "0.18.0";
+  version = "0.19.0";
 
   src = fetchFromGitHub {
     owner = "rust-embedded";
     repo = "svd2rust";
     rev = "v${version}";
-    sha256 = "1p0zq3q4g9lr0ghavp7v1dwsqq19lkljkm1i2hsb1sk3pxa1f69n";
+    sha256 = "04mm0l7cv2q5yjxrkpr7p0kxd4nmi0d7m4l436q8p492nvgb75zx";
   };
   cargoPatches = [ ./cargo-lock.patch ];
 
-  cargoSha256 = "0c0f86x17fzav5q76z3ha3g00rbgyz2lm5a5v28ggy0jmg9xgsv6";
+  cargoSha256 = "1v1qx0r3k86jipyaaggm25pinsqicmzvnzrxd0lr5xk77s1kvgid";
 
   buildInputs = lib.optional stdenv.isDarwin libiconv;