From be48ba75abf50e62fee8bd0540008a7de14597d7 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sat, 18 Nov 2023 12:44:38 +0200 Subject: feat(tvix/store/pathinfoservice): implement NixHTTPPathInfoService NixHTTPPathInfoService acts as a bridge in between the Nix HTTP Binary cache protocol provided by Nix binary caches such as cache.nixos.org, and the Tvix Store Model. It implements the [PathInfoService] trait in an interesting way: Every [PathInfoService::get] fetches the .narinfo and referred NAR file, inserting components into a [BlobService] and [DirectoryService], then returning a [PathInfo] struct with the root. Due to this being quite a costly operation, clients are expected to layer this service with store composition, so they're only ingested once. The client is expected to be (indirectly) using the same [BlobService] and [DirectoryService], so able to fetch referred Directories and Blobs. [PathInfoService::put] and [PathInfoService::nar] are not implemented and return an error if called. This behaves very similar to the nar-bridge-pathinfo code in nar-bridge, except it's now in Rust. Change-Id: Ia03d4fed9d0657965d100299af97cd917a03f2f0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10069 Tested-by: BuildkiteCI Autosubmit: flokli Reviewed-by: raitobezarius --- tvix/store/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tvix/store/Cargo.toml') diff --git a/tvix/store/Cargo.toml b/tvix/store/Cargo.toml index c55eb80f4dc3..d5ea10a5b70b 100644 --- a/tvix/store/Cargo.toml +++ b/tvix/store/Cargo.toml @@ -32,6 +32,8 @@ tvix-castore = { path = "../castore" } url = "2.4.0" walkdir = "2.4.0" async-recursion = "1.0.5" +reqwest = { version = "0.11.22", features = ["rustls-tls", "stream"], default-features = false } +xz2 = "0.1.7" [dependencies.fuse-backend-rs] optional = true -- cgit 1.4.1