From 194b6cc6116ce55cf0ca028c577afd9b6f8bce42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 29 May 2024 09:50:51 +0200 Subject: [PATCH] docs: expand importNative/exec example (#10803) Co-authored-by: Qyriad Co-authored-by: Valentin Gagarin (cherry picked from commit 5786e1ae7c300b3c7434e7df99b41f180dc42e37) Change-Id: I16b408ba7c70dca985c05c71bf6195fe9f0b5841 --- src/libexpr/eval-settings.hh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libexpr/eval-settings.hh b/src/libexpr/eval-settings.hh index 4674acda2..e4a9eb7fc 100644 --- a/src/libexpr/eval-settings.hh +++ b/src/libexpr/eval-settings.hh @@ -15,9 +15,21 @@ struct EvalSettings : Config static std::string resolvePseudoUrl(std::string_view url); Setting enableNativeCode{this, false, "allow-unsafe-native-code-during-evaluation", R"( - Whether builtin functions that allow executing native code should be enabled. + Enable built-in functions that allow executing native code. - In particular, this adds the `importNative` and `exec` builtins. + In particular, this adds: + - `builtins.importNative` *path* *symbol* + + Runs function with *symbol* from a dynamic shared object (DSO) at *path*. + This may be used to add new builtins to the Nix language. + The procedure must have the following signature: + ```cpp + extern "C" typedef void (*ValueInitialiser) (EvalState & state, Value & v); + ``` + + - `builtins.exec` *arguments* + + Execute a program, where *arguments* are specified as a list of strings, and parse its output as a Nix expression. )"}; Setting nixPath{