maint: Add EvalStateBuilder.flakes(settings)

(cherry picked from commit ee55ef51a60abc692fdef69614c9a8ccfa9358e0)
This commit is contained in:
Robert Hensing 2025-04-02 12:43:28 +02:00
parent 2cab738e58
commit 8f7d3d5385
2 changed files with 27 additions and 2 deletions

View file

@ -147,6 +147,9 @@ impl EvalStateBuilder {
context,
})
}
pub fn raw_ptr(&self) -> *mut raw::eval_state_builder {
self.eval_state_builder
}
}
pub struct EvalState {

View file

@ -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<nix_expr::eval_state::EvalStateBuilder>;
}
impl EvalStateBuilderExt for nix_expr::eval_state::EvalStateBuilder {
fn flakes(
mut self,
settings: &FlakeSettings,
) -> Result<nix_expr::eval_state::EvalStateBuilder> {
settings.add_to_eval_state_builder(&mut self)?;
Ok(self)
}
}