diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-03-11 16:41:22 +0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2020-03-11 16:57:48 +0100 |
commit | 9950cdec3514949942a79c58764b1ea9bf9d5d57 (patch) | |
tree | e514f3102570c3e10034e0c1476b863ca289504e /src/libexpr/primops.cc | |
parent | e02481ded216ffb5b06b413e3695d4e11e62e02f (diff) |
Move some corepkgs into the nix binary
Diffstat (limited to 'src/libexpr/primops.cc')
-rw-r--r-- | src/libexpr/primops.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 4cd28698c..8de234951 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -121,10 +121,17 @@ static void prim_scopedImport(EvalState & state, const Pos & pos, Value * * args mkString(*(outputsVal->listElems()[outputs_index++]), o.first); } w.attrs->sort(); - Value fun; - state.evalFile(settings.nixDataDir + "/nix/corepkgs/imported-drv-to-derivation.nix", fun); - state.forceFunction(fun, pos); - mkApp(v, fun, w); + + static Value * fun = nullptr; + if (!fun) { + fun = state.allocValue(); + state.eval(state.parseExprFromString( + #include "imported-drv-to-derivation.nix.gen.hh" + , "/"), *fun); + } + + state.forceFunction(*fun, pos); + mkApp(v, *fun, w); state.forceAttrs(v, pos); } else { state.forceAttrs(*args[0]); |