forked from lix-project/lix
5cd022d6c0
This can be used to import a dynamic shared object and return an arbitrary value, including new primops. This can be used both to test new primops without having to recompile nix every time, and to build specialized primops that probably don't belong upstream (e.g. a function that calls out to gpg to decrypt a nixops secret as-needed). The imported function should initialize the Value & as needed. A single import can define multiple values by creating an attrset or list, of course. An example initialization function might look like: extern "C" void initialize(nix::EvalState & state, nix::Value & v) { v.type = nix::tPrimOp; v.primOp = NEW nix::PrimOp(myFun, 1, state.symbols.create("myFun")); } Then `builtins.importNative ./example.so "initialize"` will evaluate to the primop defined in the myFun function. |
||
---|---|---|
.. | ||
attr-path.cc | ||
attr-path.hh | ||
common-opts.cc | ||
common-opts.hh | ||
eval-inline.hh | ||
eval.cc | ||
eval.hh | ||
get-drvs.cc | ||
get-drvs.hh | ||
lexer.l | ||
local.mk | ||
names.cc | ||
names.hh | ||
nix.sdf | ||
nixexpr.cc | ||
nixexpr.hh | ||
parser.y | ||
primops.cc | ||
symbol-table.hh | ||
value-to-json.cc | ||
value-to-json.hh | ||
value-to-xml.cc | ||
value-to-xml.hh | ||
value.hh |