feat: don't download and unpack kernel sources
diff --git a/Cargo.lock b/Cargo.lock
index b126642..6f287cb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -269,12 +269,6 @@
 checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
 
 [[package]]
-name = "base64"
-version = "0.22.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-
-[[package]]
 name = "base64ct"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -917,34 +911,12 @@
 checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
 
 [[package]]
-name = "filetime"
-version = "0.2.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
-dependencies = [
- "cfg-if",
- "libc",
- "libredox",
- "windows-sys 0.60.2",
-]
-
-[[package]]
 name = "find-msvc-tools"
 version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
 
 [[package]]
-name = "flate2"
-version = "1.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
-dependencies = [
- "crc32fast",
- "miniz_oxide",
-]
-
-[[package]]
 name = "fnv"
 version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1133,7 +1105,6 @@
 version = "0.12.0"
 dependencies = [
  "cc",
- "flate2",
  "generic_once_cell",
  "hermit-abi 0.4.0",
  "home",
@@ -1141,8 +1112,6 @@
  "spinning_top",
  "take-static",
  "talc",
- "tar",
- "ureq",
 ]
 
 [[package]]
@@ -1436,17 +1405,6 @@
 checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
 
 [[package]]
-name = "libredox"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
-dependencies = [
- "bitflags",
- "libc",
- "redox_syscall",
-]
-
-[[package]]
 name = "linux-raw-sys"
 version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1535,7 +1493,6 @@
 checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
 dependencies = [
  "adler2",
- "simd-adler32",
 ]
 
 [[package]]
@@ -2201,7 +2158,6 @@
 dependencies = [
  "log",
  "once_cell",
- "ring",
  "rustls-pki-types",
  "rustls-webpki 0.103.8",
  "subtle",
@@ -2418,12 +2374,6 @@
 ]
 
 [[package]]
-name = "simd-adler32"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
-
-[[package]]
 name = "slab"
 version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2547,17 +2497,6 @@
 ]
 
 [[package]]
-name = "tar"
-version = "0.4.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a"
-dependencies = [
- "filetime",
- "libc",
- "xattr",
-]
-
-[[package]]
 name = "target-lexicon"
 version = "0.13.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2803,41 +2742,6 @@
 checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
-name = "ureq"
-version = "3.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc"
-dependencies = [
- "base64",
- "flate2",
- "log",
- "percent-encoding",
- "rustls",
- "rustls-pki-types",
- "ureq-proto",
- "utf-8",
- "webpki-roots",
-]
-
-[[package]]
-name = "ureq-proto"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f"
-dependencies = [
- "base64",
- "http",
- "httparse",
- "log",
-]
-
-[[package]]
-name = "utf-8"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
-
-[[package]]
 name = "utf8parse"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3137,15 +3041,6 @@
 ]
 
 [[package]]
-name = "webpki-roots"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
-dependencies = [
- "rustls-pki-types",
-]
-
-[[package]]
 name = "webserver"
 version = "0.0.0"
 dependencies = [
@@ -3436,16 +3331,6 @@
 ]
 
 [[package]]
-name = "xattr"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
-dependencies = [
- "libc",
- "rustix",
-]
-
-[[package]]
 name = "zerocopy"
 version = "0.8.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/hermit/Cargo.toml b/hermit/Cargo.toml
index a5649d8..9c7e195 100644
--- a/hermit/Cargo.toml
+++ b/hermit/Cargo.toml
@@ -80,7 +80,4 @@
 
 [build-dependencies]
 cc = "1"
-flate2 = "1"
 home = "0.5"
-ureq = "3"
-tar = "0.4"
diff --git a/hermit/build.rs b/hermit/build.rs
index 98def99..18924cb 100644
--- a/hermit/build.rs
+++ b/hermit/build.rs
@@ -2,9 +2,6 @@
 use std::process::Command;
 use std::{env, str};
 
-use flate2::read::GzDecoder;
-use tar::Archive;
-
 fn main() {
 	let targets_hermit =
 		env::var_os("CARGO_CFG_TARGET_OS").is_some_and(|target_os| target_os == "hermit");
@@ -16,7 +13,7 @@
 		return;
 	}
 
-	let kernel_src = KernelSrc::local().unwrap_or_else(KernelSrc::download);
+	let kernel_src = KernelSrc::get();
 
 	kernel_src.build();
 
@@ -43,39 +40,19 @@
 }
 
 impl KernelSrc {
-	fn local() -> Option<Self> {
+	fn get() -> Self {
 		if let Some(src_dir) = env::var_os("HERMIT_MANIFEST_DIR") {
 			assert!(
 				!src_dir.is_empty(),
 				"HERMIT_MANIFEST_DIR is set to the empty string"
 			);
 			let src_dir = PathBuf::from(src_dir);
-			return Some(Self { src_dir });
+			return Self { src_dir };
 		}
 
 		let mut src_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
 		src_dir.set_file_name("kernel");
-		src_dir.exists().then_some(Self { src_dir })
-	}
-
-	fn download() -> Self {
-		let version = "0.12.0";
-		let out_dir = out_dir();
-		let src_dir = out_dir.join(format!("kernel-{version}"));
-
-		if !src_dir.exists() {
-			let url =
-				format!("https://github.com/hermit-os/kernel/archive/refs/tags/v{version}.tar.gz");
-			let response = ureq::get(url.as_str())
-				.call()
-				.unwrap()
-				.into_body()
-				.into_reader();
-			let tar = GzDecoder::new(response);
-			let mut archive = Archive::new(tar);
-			archive.unpack(src_dir.parent().unwrap()).unwrap();
-		}
-
+		assert!(src_dir.exists(), "could not find kernel source");
 		Self { src_dir }
 	}