treewide: migrate external rules to bzlmod

This is a huge one as it was very annoying to migrate them separately. This migrates rules_go, gazelle, rust_rust, protobuf to bzlmod

Change-Id: If39591d43ed4c2afa2979ee5915e9d1cfa1574a9
Reviewed-on: https://review.monogon.dev/c/monogon/+/3234
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/rust.MODULE.bazel b/rust.MODULE.bazel
new file mode 100644
index 0000000..3d33e88
--- /dev/null
+++ b/rust.MODULE.bazel
@@ -0,0 +1,29 @@
+rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
+rust.toolchain(
+    edition = "2021",
+    extra_target_triples = [
+        "x86_64-unknown-uefi",
+    ],
+    versions = ["1.71.0"],
+)
+use_repo(rust, "rust_toolchains")
+
+crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate")
+crate.from_cargo(
+    name = "crate_index",
+    cargo_lockfile = "//third_party/rust:Cargo.lock",
+    generate_binaries = True,
+    manifests = ["//third_party/rust:Cargo.toml"],
+)
+crate.from_cargo(
+    name = "crate_index_efi",
+    cargo_lockfile = "//third_party/rust_efi:Cargo.lock",
+    generate_binaries = True,
+    manifests = ["//third_party/rust_efi:Cargo.toml"],
+    supported_platform_triples = [
+        "x86_64-unknown-linux-gnu",
+        "x86_64-unknown-uefi",
+    ],
+)
+use_repo(crate, "crate_index")
+use_repo(crate, "crate_index_efi")