diff --git a/flake.lock b/flake.lock index fc8e402..a8c1976 100644 --- a/flake.lock +++ b/flake.lock @@ -185,9 +185,30 @@ "microvm": "microvm", "nixpkgs": "nixpkgs", "nt": "nt", + "sops-nix": "sops-nix", "systems": "systems_3" } }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1773096132, + "narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, "spectrum": { "flake": false, "locked": { diff --git a/snow/src/nix/mod.rs b/snow/src/nix/mod.rs index 5f24261..35ddad3 100644 --- a/snow/src/nix/mod.rs +++ b/snow/src/nix/mod.rs @@ -1,7 +1,9 @@ mod flake; mod flakeref; mod nix; +mod primop; pub use flake::{Flake, FlakeBuilder, FlakeLockMode}; pub use flakeref::FlakeRef; pub use nix::Nix; +pub use primop::PrimOp; diff --git a/snow/src/nix/primop.rs b/snow/src/nix/primop.rs new file mode 100644 index 0000000..dab96b5 --- /dev/null +++ b/snow/src/nix/primop.rs @@ -0,0 +1,40 @@ +use std::ffi::{CStr, CString, NulError}; + +use anyhow::Result; +use nix_bindings_expr::{eval_state::EvalState, primop::PrimOpMeta, value::Value}; + +pub struct PrimOp<'a, const N: usize> { + // pub name: &'a CStr, + // pub doc: &'a CStr, + // pub args: [&'a CStr; N], + meta: PrimOpMeta<'a, N>, + // f: Box Result>, +} + +impl<'a, const N: usize> PrimOp<'a, N> { + pub fn new(name: S, doc: S, args: [&'a CStr; N]) -> Result + where + S: AsRef, + { + let name = CString::new(name.as_ref())?.as_ref(); + let doc = CString::new(doc.as_ref())?.as_ref(); + // let args = args + // .iter() + // .map(|x| CString::new(x.as_ref()).as_ref()) + // .collect::, &NulError>>()? + // .iter() + // .map(|x| x.as_ref()) + // .collect::>() + // .as_slice(); + + Ok(PrimOp { + // name, + // doc, + // args, + meta: PrimOpMeta { name, doc, args }, + }) + // Ok(PrimOp { + // meta: PrimOpMeta { name, doc, args }, + // }) + } +}