diff options
Diffstat (limited to 'tvix/eval/src/builtins')
-rw-r--r-- | tvix/eval/src/builtins/impure.rs | 25 | ||||
-rw-r--r-- | tvix/eval/src/builtins/mod.rs | 12 |
2 files changed, 27 insertions, 10 deletions
diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs index 3438aa06f424..41e3805b2d0e 100644 --- a/tvix/eval/src/builtins/impure.rs +++ b/tvix/eval/src/builtins/impure.rs @@ -1,7 +1,26 @@ -use crate::value::Builtin; +use std::{ + collections::BTreeMap, + time::{SystemTime, UNIX_EPOCH}, +}; + +use smol_str::SmolStr; + +use crate::{ + value::{Builtin, NixString}, + Value, +}; + +fn impure_builtins() -> Vec<Builtin> { + vec![] +} /// Return all impure builtins, that is all builtins which may perform I/O outside of the VM and so /// cannot be used in all contexts (e.g. WASM). -pub(super) fn builtins() -> Vec<Builtin> { - vec![] +pub(super) fn builtins() -> BTreeMap<NixString, Value> { + let mut map: BTreeMap<NixString, Value> = impure_builtins() + .into_iter() + .map(|b| (b.name().into(), Value::Builtin(b))) + .collect(); + + map } diff --git a/tvix/eval/src/builtins/mod.rs b/tvix/eval/src/builtins/mod.rs index cd4200a13d3b..848ac9e25dca 100644 --- a/tvix/eval/src/builtins/mod.rs +++ b/tvix/eval/src/builtins/mod.rs @@ -3,12 +3,10 @@ //! See //tvix/eval/docs/builtins.md for a some context on the //! available builtins in Nix. -use std::{ - cmp, - collections::{BTreeMap, HashMap}, - path::PathBuf, - rc::Rc, -}; +use std::cmp; +use std::collections::{BTreeMap, HashMap}; +use std::path::PathBuf; +use std::rc::Rc; use crate::{ errors::ErrorKind, @@ -385,7 +383,7 @@ fn builtins_set() -> NixAttrs { add_builtins(pure_builtins()); #[cfg(feature = "impure")] { - add_builtins(impure::builtins()); + map.extend(impure::builtins()); } NixAttrs::from_map(map) |