From 8a9aa018dcf54f00344993c8467610be3442eb8f Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Mon, 23 Jan 2023 01:44:24 +0300 Subject: feat(tvix/cli): implement builtins.derivationStrict Implements the logic for converting an evaluator value supplied as arguments to builtins.derivationStrict into an actual, fully-functional derivation struct. This skips the implementation of structuredAttrs, which are left for a subsequent commit. Note: We will need to port some eval tests over to CLI to test this correct, which will be done in a separate commit later on. Change-Id: I0db69dcf12716180de0eb0b126e3da4683712966 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7756 Reviewed-by: flokli Tested-by: BuildkiteCI --- tvix/cli/src/main.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'tvix/cli/src/main.rs') diff --git a/tvix/cli/src/main.rs b/tvix/cli/src/main.rs index 0150d83bc6..552b8e941c 100644 --- a/tvix/cli/src/main.rs +++ b/tvix/cli/src/main.rs @@ -12,7 +12,7 @@ use clap::Parser; use known_paths::KnownPaths; use rustyline::{error::ReadlineError, Editor}; use tvix_eval::observer::{DisassemblingObserver, TracingObserver}; -use tvix_eval::Value; +use tvix_eval::{Builtin, BuiltinArgument, Value, VM}; #[derive(Parser)] struct Args { @@ -55,8 +55,10 @@ fn interpret(code: &str, path: Option, args: &Args, explain: bool) -> b let mut eval = tvix_eval::Evaluation::new_impure(code, path); let known_paths: Rc> = Default::default(); - eval.io_handle = Box::new(nix_compat::NixCompatIO::new(known_paths)); + eval.io_handle = Box::new(nix_compat::NixCompatIO::new(known_paths.clone())); eval.nix_path = args.nix_search_path.clone(); + eval.builtins + .extend(derivation::derivation_builtins(known_paths)); let source_map = eval.source_map(); let result = { -- cgit 1.4.1