diff --git a/recipes/cargo/recipe.toml b/recipes/cargo/recipe.toml
index db42439644f16b4249ba8140ac8c7dac089fbfe6..dc922a7f61ec82285c751ed5b675f6a97f6784ee 100644
--- a/recipes/cargo/recipe.toml
+++ b/recipes/cargo/recipe.toml
@@ -6,12 +6,26 @@ branch = "redox-2022-03-18"
 [build]
 template = "custom"
 dependencies = [
+    "curl",
     "libssh2",
+    "nghttp2",
     "openssl",
     "zlib",
 ]
 script = """
 export LIBSSH2_SYS_USE_PKG_CONFIG=1
 export LIBZ_SYS_STATIC=1
-cookbook_cargo
+export DEP_NGHTTP2_ROOT="${COOKBOOK_SYSROOT}"
+export DEP_OPENSSL_ROOT="${COOKBOOK_SYSROOT}"
+export DEP_Z_ROOT="${COOKBOOK_SYSROOT}"
+# Force linking system nghttp2
+"${COOKBOOK_CARGO}" rustc \
+    --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \
+    --release \
+    --bin cargo \
+    -- \
+    -L "${COOKBOOK_SYSROOT}/lib" \
+    -C link-arg="-lnghttp2"
+mkdir -pv "${COOKBOOK_STAGE}/bin"
+cp -v "target/${TARGET}/release/cargo" "${COOKBOOK_STAGE}/bin/cargo"
 """