about summary refs log tree commit diff
path: root/tvix/glue
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-11-03T12·03+0200
committerclbot <clbot@tvl.fyi>2023-11-04T15·18+0000
commita72a1044c29ce41973e0cf81bcee04923f21995f (patch)
treefd4025cafbbc0e55d8c3256eff599f98ff543dbb /tvix/glue
parent619f1fe88d009e228cfd348da12b98f6a4533052 (diff)
refactor(tvix/glue): move nix_path handling to helper in tvix-glue r/6938
Change-Id: I2327560c4cf0d3f90e253e3c2f47cb29c762461e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9910
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/glue')
-rw-r--r--tvix/glue/src/lib.rs10
-rw-r--r--tvix/glue/src/tvix_io.rs4
2 files changed, 12 insertions, 2 deletions
diff --git a/tvix/glue/src/lib.rs b/tvix/glue/src/lib.rs
index acb81d3144..760e730217 100644
--- a/tvix/glue/src/lib.rs
+++ b/tvix/glue/src/lib.rs
@@ -26,3 +26,13 @@ pub fn add_derivation_builtins(
     eval.src_builtins
         .push(("derivation", include_str!("derivation.nix")));
 }
+
+/// 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(eval: &mut tvix_eval::Evaluation, 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()));
+}
diff --git a/tvix/glue/src/tvix_io.rs b/tvix/glue/src/tvix_io.rs
index caadbeb5e6..09e1417a21 100644
--- a/tvix/glue/src/tvix_io.rs
+++ b/tvix/glue/src/tvix_io.rs
@@ -59,8 +59,8 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
 
     fn read_to_string(&self, path: &Path) -> Result<String, io::Error> {
         // Bundled version of corepkgs/fetchurl.nix. The counterpart
-        // of this happens in `main`, where the `nix_path` of the
-        // evaluation has `nix=/__corepkgs__` added to it.
+        // of this happens in [crate::configure_nix_path], where the `nix_path`
+        // of the evaluation has `nix=/__corepkgs__` added to it.
         //
         // This workaround is similar to what cppnix does for passing
         // the path through.