aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/primops.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-03-11 16:41:22 +0100
committerEelco Dolstra <edolstra@gmail.com>2020-03-11 16:57:48 +0100
commit9950cdec3514949942a79c58764b1ea9bf9d5d57 (patch)
treee514f3102570c3e10034e0c1476b863ca289504e /src/libexpr/primops.cc
parente02481ded216ffb5b06b413e3695d4e11e62e02f (diff)
Move some corepkgs into the nix binary
Diffstat (limited to 'src/libexpr/primops.cc')
-rw-r--r--src/libexpr/primops.cc15
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]);