nixpkgs calls <nix/fetchurl.nix> during nixpkgs bootstrap. This produces a fake derivation with system = builtin and builder = builtin:fetchurl, and needs to download files from the internet. At the end of the Derivation construction, if we have such a derivation, also synthesize a `Fetch` struct, which we add to the known fetch paths. This will then cause these fetches to be picked up like all other fetches in TvixStoreIO. Change-Id: I72cbca4f85da106b25eda97693a6a6e59911cd57 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10975 Reviewed-by: Connor Brewster <cbrewster@hey.com> Tested-by: BuildkiteCI
25 lines
650 B
Rust
25 lines
650 B
Rust
pub mod builtins;
|
|
pub mod fetchers;
|
|
pub mod known_paths;
|
|
pub mod refscan;
|
|
pub mod tvix_build;
|
|
pub mod tvix_io;
|
|
pub mod tvix_store_io;
|
|
|
|
mod fetchurl;
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|
|
|
|
/// Tell the Evaluator to resolve `<nix>` to the path `/__corepkgs__`,
|
|
/// which has special handling in [tvix_io::TvixIO].
|
|
/// This is used in nixpkgs to import `fetchurl.nix` from `<nix>`.
|
|
pub fn configure_nix_path<IO>(
|
|
eval: &mut tvix_eval::Evaluation<IO>,
|
|
nix_search_path: &Option<String>,
|
|
) {
|
|
eval.nix_path = nix_search_path
|
|
.as_ref()
|
|
.map(|p| format!("nix=/__corepkgs__:{}", p))
|
|
.or_else(|| Some("nix=/__corepkgs__".to_string()));
|
|
}
|