diff --git a/third_party/rules_rust/BUILD.bazel b/third_party/rules_rust/BUILD.bazel
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/third_party/rules_rust/BUILD.bazel
diff --git a/third_party/rules_rust/rust-prost-nostd.patch b/third_party/rules_rust/rust-prost-nostd.patch
new file mode 100644
index 0000000..557a7c2
--- /dev/null
+++ b/third_party/rules_rust/rust-prost-nostd.patch
@@ -0,0 +1,119 @@
+From a3a14a5fe78a5f3d366fe2d0f3fcfb9ededc587b Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 25 Sep 2024 02:37:42 +0200
+Subject: [PATCH 2/4] Support no_std in Prost toolchain
+
+---
+ proto/prost/private/prost.bzl         |  8 ++++++++
+ proto/prost/private/protoc_wrapper.rs | 19 +++++++++++++++++--
+ 2 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/proto/prost/private/prost.bzl b/proto/prost/private/prost.bzl
+index cf5e11c9..61d0bc63 100644
+--- a/proto/prost/private/prost.bzl
++++ b/proto/prost/private/prost.bzl
+@@ -67,6 +67,9 @@ def _compile_proto(ctx, crate_name, proto_info, deps, prost_toolchain, rustfmt_t
+     additional_args.add("--descriptor_set={}".format(proto_info.direct_descriptor_set.path))
+     additional_args.add_all(prost_toolchain.prost_opts, format_each = "--prost_opt=%s")
+
++    if prost_toolchain.is_nostd:
++        additional_args.add("--is_nostd")
++
+     if prost_toolchain.tonic_plugin:
+         tonic_plugin = prost_toolchain.tonic_plugin[DefaultInfo].files_to_run
+         additional_args.add(prost_toolchain.tonic_plugin_flag % tonic_plugin.executable.path)
+@@ -387,6 +390,7 @@ def _rust_prost_toolchain_impl(ctx):
+         tonic_plugin_flag = ctx.attr.tonic_plugin_flag,
+         tonic_runtime = ctx.attr.tonic_runtime,
+         include_transitive_deps = ctx.attr.include_transitive_deps,
++        is_nostd = ctx.attr.is_nostd,
+     )]
+
+ rust_prost_toolchain = rule(
+@@ -442,6 +446,10 @@ rust_prost_toolchain = rule(
+             doc = "The Tonic runtime crates to use.",
+             providers = [[rust_common.crate_info], [rust_common.crate_group_info]],
+         ),
++        "is_nostd": attr.bool(
++            doc = "If a no_std tag should be put into the generated code.",
++            default = False,
++        ),
+     }, **proto_toolchains.if_legacy_toolchain({
+         "_legacy_proto_toolchain": attr.label(
+             default = "//proto/protobuf:legacy_proto_toolchain",
+diff --git a/proto/prost/private/protoc_wrapper.rs b/proto/prost/private/protoc_wrapper.rs
+index ff4decd4..2c32ea35 100644
+--- a/proto/prost/private/protoc_wrapper.rs
++++ b/proto/prost/private/protoc_wrapper.rs
+@@ -152,8 +152,13 @@ fn generate_lib_rs(
+     prost_outputs: &BTreeSet<PathBuf>,
+     is_tonic: bool,
+     direct_dep_crate_names: Vec<String>,
++    is_nostd: bool,
+ ) -> String {
+-    let mut contents = vec!["// @generated".to_string(), "".to_string()];
++    let mut contents = vec![
++        if is_nostd { "#![no_std]".to_string() } else { "".to_string() },
++        "// @generated".to_string(),
++        "".to_string(),
++    ];
+     for crate_name in direct_dep_crate_names {
+         contents.push(format!("pub use {crate_name};"));
+     }
+@@ -442,6 +447,9 @@ struct Args {
+     /// Whether to generate tonic code.
+     is_tonic: bool,
+
++    // Whether to put a no_std tag into the generated code.
++    is_nostd: bool,
++
+     /// Extra arguments to pass to protoc.
+     extra_args: Vec<String>,
+ }
+@@ -463,6 +471,7 @@ impl Args {
+         let mut tonic_or_prost_opts = Vec::new();
+         let mut direct_dep_crate_names = Vec::new();
+         let mut is_tonic = false;
++        let mut is_nostd = false;
+
+         let mut extra_args = Vec::new();
+
+@@ -485,6 +494,10 @@ impl Args {
+                 is_tonic = true;
+                 return;
+             }
++            if arg == "--is_nostd" {
++                is_nostd = true;
++                return;
++            }
+
+             if !arg.contains('=') {
+                 extra_args.push(arg);
+@@ -621,6 +634,7 @@ impl Args {
+             proto_paths,
+             direct_dep_crate_names,
+             is_tonic,
++            is_nostd,
+             label: label.unwrap(),
+             extra_args,
+         })
+@@ -727,6 +741,7 @@ fn main() {
+         proto_paths,
+         direct_dep_crate_names,
+         is_tonic,
++        is_nostd,
+         extra_args,
+     } = Args::parse().expect("Failed to parse args");
+
+@@ -841,7 +856,7 @@ fn main() {
+     // Write outputs
+     fs::write(
+         &out_librs,
+-        generate_lib_rs(&rust_files, is_tonic, direct_dep_crate_names),
++        generate_lib_rs(&rust_files, is_tonic, direct_dep_crate_names, is_nostd),
+     )
+     .expect("Failed to write file.");
+     fs::write(
+--
+2.44.1
+
diff --git a/third_party/rust-reproducibility.patch b/third_party/rules_rust/rust-reproducibility.patch
similarity index 100%
rename from third_party/rust-reproducibility.patch
rename to third_party/rules_rust/rust-reproducibility.patch
diff --git a/third_party/rules_rust/rust-uefi-platform.patch b/third_party/rules_rust/rust-uefi-platform.patch
new file mode 100644
index 0000000..e01cf29
--- /dev/null
+++ b/third_party/rules_rust/rust-uefi-platform.patch
@@ -0,0 +1,72 @@
+From b2d165d9b2c811293f92bf083289c97c9d87d13c Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Wed, 25 Sep 2024 02:37:09 +0200
+Subject: [PATCH 1/4] Add support for UEFI targets and OS
+
+---
+ rust/platform/triple_mappings.bzl | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/rust/platform/triple_mappings.bzl b/rust/platform/triple_mappings.bzl
+index 139015da..efa9f167 100644
+--- a/rust/platform/triple_mappings.bzl
++++ b/rust/platform/triple_mappings.bzl
+@@ -47,6 +47,7 @@ SUPPORTED_T2_PLATFORM_TRIPLES = {
+     "aarch64-fuchsia": _support(std = True, host_tools = False),
+     "aarch64-linux-android": _support(std = True, host_tools = False),
+     "aarch64-pc-windows-msvc": _support(std = True, host_tools = True),
++    "aarch64-unknown-uefi": _support(std = True, host_tools = False),
+     "arm-unknown-linux-gnueabi": _support(std = True, host_tools = True),
+     "armv7-linux-androideabi": _support(std = True, host_tools = False),
+     "armv7-unknown-linux-gnueabi": _support(std = True, host_tools = True),
+@@ -65,6 +66,7 @@ SUPPORTED_T2_PLATFORM_TRIPLES = {
+     "x86_64-linux-android": _support(std = True, host_tools = False),
+     "x86_64-unknown-freebsd": _support(std = True, host_tools = True),
+     "x86_64-unknown-none": _support(std = True, host_tools = False),
++    "x86_64-unknown-uefi": _support(std = True, host_tools = False),
+ }
+
+ _T3_PLATFORM_TRIPLES = {
+@@ -142,6 +144,7 @@ _SYSTEM_TO_BUILTIN_SYS_SUFFIX = {
+     "nto": "qnx",
+     "openbsd": "openbsd",
+     "solaris": None,
++    "uefi": "uefi",
+     "unknown": None,
+     "wasi": None,
+     "windows": "windows",
+@@ -160,6 +163,7 @@ _SYSTEM_TO_BINARY_EXT = {
+     "nixos": "",
+     "none": "",
+     "nto": "",
++    "uefi": ".efi",
+     # This is currently a hack allowing us to have the proper
+     # generated extension for the wasm target, similarly to the
+     # windows target
+@@ -181,6 +185,7 @@ _SYSTEM_TO_STATICLIB_EXT = {
+     "nixos": ".a",
+     "none": ".a",
+     "nto": ".a",
++    "uefi": ".lib",
+     "unknown": "",
+     "wasi": "",
+     "windows": ".lib",
+@@ -199,6 +204,7 @@ _SYSTEM_TO_DYLIB_EXT = {
+     "nixos": ".so",
+     "none": ".so",
+     "nto": ".a",
++    "uefi": "", # UEFI doesn't have dynamic linking
+     "unknown": ".wasm",
+     "wasi": ".wasm",
+     "windows": ".dll",
+@@ -244,6 +250,7 @@ _SYSTEM_TO_STDLIB_LINKFLAGS = {
+     "nto": [],
+     "openbsd": ["-lpthread"],
+     "solaris": ["-lsocket", "-lposix4", "-lpthread", "-lresolv"],
++    "uefi": [],
+     "unknown": [],
+     "uwp": ["ws2_32.lib"],
+     "wasi": [],
+--
+2.44.1
+
diff --git a/third_party/rust-prost-nostd.patch b/third_party/rust-prost-nostd.patch
deleted file mode 100644
index dc30a23..0000000
--- a/third_party/rust-prost-nostd.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 8b464f085c9b255d81ee0e8501914ff7cb3cadd8 Mon Sep 17 00:00:00 2001
-From: Tim Windelschmidt <tim@monogon.tech>
-Date: Fri, 12 Jan 2024 15:41:50 +0100
-Subject: [PATCH 1/2] Support no_std in Prost toolchain
-
----
- proto/prost/private/prost.bzl         |  8 ++++++++
- proto/prost/private/protoc_wrapper.rs | 17 ++++++++++++++---
- 2 files changed, 22 insertions(+), 3 deletions(-)
-
-diff --git a/proto/prost/private/prost.bzl b/proto/prost/private/prost.bzl
-index c3a7d4e0..6f7449d0 100644
---- a/proto/prost/private/prost.bzl
-+++ b/proto/prost/private/prost.bzl
-@@ -65,6 +65,9 @@ def _compile_proto(ctx, crate_name, proto_info, deps, prost_toolchain, rustfmt_t
-     additional_args.add("--descriptor_set={}".format(proto_info.direct_descriptor_set.path))
-     additional_args.add_all(prost_toolchain.prost_opts, format_each = "--prost_opt=%s")
-
-+    if prost_toolchain.is_nostd:
-+        additional_args.add("--is_nostd")
-+
-     if prost_toolchain.tonic_plugin:
-         tonic_plugin = prost_toolchain.tonic_plugin[DefaultInfo].files_to_run
-         additional_args.add(prost_toolchain.tonic_plugin_flag % tonic_plugin.executable.path)
-@@ -372,6 +375,7 @@ def _rust_prost_toolchain_impl(ctx):
-         tonic_plugin = ctx.attr.tonic_plugin,
-         tonic_plugin_flag = ctx.attr.tonic_plugin_flag,
-         tonic_runtime = ctx.attr.tonic_runtime,
-+        is_nostd = ctx.attr.is_nostd,
-     )]
-
- rust_prost_toolchain = rule(
-@@ -423,6 +427,10 @@ rust_prost_toolchain = rule(
-             doc = "The Tonic runtime crates to use.",
-             providers = [[rust_common.crate_info], [rust_common.crate_group_info]],
-         ),
-+        "is_nostd": attr.bool(
-+            doc = "If a no_std tag should be put into the generated code.",
-+            default = False,
-+        ),
-     }, **proto_toolchains.if_legacy_toolchain({
-         "_legacy_proto_toolchain": attr.label(
-             default = "//proto/protobuf:legacy_proto_toolchain",
-diff --git a/proto/prost/private/protoc_wrapper.rs b/proto/prost/private/protoc_wrapper.rs
-index 9c41892c..5d67640d 100644
---- a/proto/prost/private/protoc_wrapper.rs
-+++ b/proto/prost/private/protoc_wrapper.rs
-@@ -117,7 +117,7 @@ struct Module {
- ///     }
- /// }
- /// ```
--fn generate_lib_rs(prost_outputs: &BTreeSet<PathBuf>, is_tonic: bool) -> String {
-+fn generate_lib_rs(prost_outputs: &BTreeSet<PathBuf>, is_tonic: bool, is_nostd: bool) -> String {
-     let mut module_info = BTreeMap::new();
-
-     for path in prost_outputs.iter() {
-@@ -189,7 +189,8 @@ fn generate_lib_rs(prost_outputs: &BTreeSet<PathBuf>, is_tonic: bool) -> String
-         }
-     }
-
--    let mut content = "// @generated\n\n".to_string();
-+    let mut content = if is_nostd { "#![no_std]\n".to_string() } else { "".to_string() };
-+    content.push_str(&"// @generated\n\n");
-     write_module(&mut content, &module_info, "", 0);
-     content
- }
-@@ -443,6 +444,9 @@ struct Args {
-     /// Whether to generate tonic code.
-     is_tonic: bool,
-
-+    // Whether to put a no_std tag into the generated code.
-+    is_nostd: bool,
-+
-     /// Extra arguments to pass to protoc.
-     extra_args: Vec<String>,
- }
-@@ -463,6 +467,7 @@ impl Args {
-         let mut label: Option<String> = None;
-         let mut tonic_or_prost_opts = Vec::new();
-         let mut is_tonic = false;
-+        let mut is_nostd = false;
-
-         let mut extra_args = Vec::new();
-
-@@ -485,6 +490,10 @@ impl Args {
-                 is_tonic = true;
-                 return;
-             }
-+            if arg == "--is_nostd" {
-+                is_nostd = true;
-+                return;
-+            }
-
-             if !arg.contains('=') {
-                 extra_args.push(arg);
-@@ -613,6 +622,7 @@ impl Args {
-             rustfmt,
-             proto_paths,
-             is_tonic,
-+            is_nostd,
-             label: label.unwrap(),
-             extra_args,
-         })
-@@ -718,6 +728,7 @@ fn main() {
-         rustfmt,
-         proto_paths,
-         is_tonic,
-+        is_nostd,
-         extra_args,
-     } = Args::parse().expect("Failed to parse args");
-
-@@ -830,7 +841,7 @@ fn main() {
-         .expect("Failed to compute proto package info");
-
-     // Write outputs
--    fs::write(&out_librs, generate_lib_rs(&rust_files, is_tonic)).expect("Failed to write file.");
-+    fs::write(&out_librs, generate_lib_rs(&rust_files, is_tonic, is_nostd)).expect("Failed to write file.");
-     fs::write(
-         package_info_file,
-         extern_paths
---
-2.44.1
-
diff --git a/third_party/rust-uefi-platform.patch b/third_party/rust-uefi-platform.patch
deleted file mode 100644
index 6ca627e..0000000
--- a/third_party/rust-uefi-platform.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 28b8651b0ccba1f41802a2aff12643b51436b32b Mon Sep 17 00:00:00 2001
-From: Lorenz Brun <lorenz@monogon.tech>
-Date: Tue, 29 Aug 2023 19:02:45 +0200
-Subject: [PATCH] Add support for UEFI targets and OS
-
----
- rust/platform/triple_mappings.bzl | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/rust/platform/triple_mappings.bzl b/rust/platform/triple_mappings.bzl
-index 61a71c73..ce594522 100644
---- a/rust/platform/triple_mappings.bzl
-+++ b/rust/platform/triple_mappings.bzl
-@@ -27,6 +27,7 @@ SUPPORTED_T2_PLATFORM_TRIPLES = [
-     "aarch64-fuchsia",
-     "aarch64-linux-android",
-     "aarch64-pc-windows-msvc",
-+    "aarch64-unknown-uefi",
-     "arm-unknown-linux-gnueabi",
-     "armv7-linux-androideabi",
-     "armv7-unknown-linux-gnueabi",
-@@ -45,6 +46,7 @@ SUPPORTED_T2_PLATFORM_TRIPLES = [
-     "x86_64-linux-android",
-     "x86_64-unknown-freebsd",
-     "x86_64-unknown-none",
-+    "x86_64-unknown-uefi",
- ]
-
-@@ -97,6 +99,7 @@ _SYSTEM_TO_BUILTIN_SYS_SUFFIX = {
-     "nto": "qnx",
-     "openbsd": "openbsd",
-     "solaris": None,
-+    "uefi": "uefi",
-     "unknown": None,
-     "wasi": None,
-     "windows": "windows",
-@@ -113,6 +116,7 @@ _SYSTEM_TO_BINARY_EXT = {
-     "nixos": "",
-     "none": "",
-     "nto": "",
-+    "uefi": ".efi",
-     # This is currently a hack allowing us to have the proper
-     # generated extension for the wasm target, similarly to the
-     # windows target
-@@ -132,6 +136,7 @@ _SYSTEM_TO_STATICLIB_EXT = {
-     "nixos": ".a",
-     "none": ".a",
-     "nto": ".a",
-+    "uefi": ".lib",
-     "unknown": "",
-     "wasi": "",
-     "windows": ".lib",
-@@ -148,6 +153,7 @@ _SYSTEM_TO_DYLIB_EXT = {
-     "nixos": ".so",
-     "none": ".so",
-     "nto": ".a",
-+    "uefi": "", # UEFI doesn't have dynamic linking
-     "unknown": ".wasm",
-     "wasi": ".wasm",
-     "windows": ".dll",
-@@ -191,6 +197,7 @@ _SYSTEM_TO_STDLIB_LINKFLAGS = {
-     "nto": [],
-     "openbsd": ["-lpthread"],
-     "solaris": ["-lsocket", "-lposix4", "-lpthread", "-lresolv"],
-+    "uefi": [],
-     "unknown": [],
-     "uwp": ["ws2_32.lib"],
-     "wasi": [],
--- 
-2.41.0
-
