From 8f7d3d538562c79711c1f36d5b244fec193cab65 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 2 Apr 2025 12:43:28 +0200 Subject: [PATCH] maint: Add EvalStateBuilder.flakes(settings) (cherry picked from commit ee55ef51a60abc692fdef69614c9a8ccfa9358e0) --- rust/nix-expr/src/eval_state.rs | 3 +++ rust/nix-flake/src/lib.rs | 26 ++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/rust/nix-expr/src/eval_state.rs b/rust/nix-expr/src/eval_state.rs index e383fd4..af1718c 100644 --- a/rust/nix-expr/src/eval_state.rs +++ b/rust/nix-expr/src/eval_state.rs @@ -147,6 +147,9 @@ impl EvalStateBuilder { context, }) } + pub fn raw_ptr(&self) -> *mut raw::eval_state_builder { + self.eval_state_builder + } } pub struct EvalState { diff --git a/rust/nix-flake/src/lib.rs b/rust/nix-flake/src/lib.rs index 359b2c7..a93fb80 100644 --- a/rust/nix-flake/src/lib.rs +++ b/rust/nix-flake/src/lib.rs @@ -18,9 +18,31 @@ impl FlakeSettings { let s = unsafe { context::check_call!(raw::flake_settings_new(&mut ctx)) }?; Ok(FlakeSettings { ptr: s }) } - pub fn init_globally(&mut self) -> Result<()> { + fn add_to_eval_state_builder( + &self, + builder: &mut nix_expr::eval_state::EvalStateBuilder, + ) -> Result<()> { let mut ctx = Context::new(); - unsafe { context::check_call!(raw::flake_init_global(&mut ctx, self.ptr)) }?; + unsafe { + context::check_call!(raw::flake_settings_add_to_eval_state_builder( + &mut ctx, + self.ptr, + builder.raw_ptr() + )) + }?; Ok(()) } } + +pub trait EvalStateBuilderExt { + fn flakes(self, settings: &FlakeSettings) -> Result; +} +impl EvalStateBuilderExt for nix_expr::eval_state::EvalStateBuilder { + fn flakes( + mut self, + settings: &FlakeSettings, + ) -> Result { + settings.add_to_eval_state_builder(&mut self)?; + Ok(self) + } +}