diff --git a/lix/libcmd/installables.cc b/lix/libcmd/installables.cc index f8b78d58c..fddc7f834 100644 --- a/lix/libcmd/installables.cc +++ b/lix/libcmd/installables.cc @@ -409,8 +409,7 @@ ref openEvalCache( if (getEnv("NIX_ALLOW_EVAL").value_or("1") == "0") throw Error("not everything is cached, but evaluation is not allowed"); - Value vFlake; - flake::callFlake(state, *lockedFlake, vFlake); + Value vFlake = flake::callFlake(state, *lockedFlake); state.forceAttrs(vFlake, noPos, "while parsing cached flake data"); diff --git a/lix/libcmd/repl.cc b/lix/libcmd/repl.cc index efc09ec48..28baaabec 100644 --- a/lix/libcmd/repl.cc +++ b/lix/libcmd/repl.cc @@ -1318,7 +1318,7 @@ void NixRepl::loadFlake(const std::string & flakeRefS) try { loaded.remove(loadable); loaded.push_back(loadable); - flake::callFlake( + v = flake::callFlake( state, flake::lockFlake( state, @@ -1328,8 +1328,7 @@ void NixRepl::loadFlake(const std::string & flakeRefS) .useRegistries = !evalSettings.pureEval, .allowUnlocked = !evalSettings.pureEval, } - ), - v + ) ); addAttrsToScope(v); } catch (...) { diff --git a/lix/libexpr/flake/flake.cc b/lix/libexpr/flake/flake.cc index 2580aea6e..3317026eb 100644 --- a/lix/libexpr/flake/flake.cc +++ b/lix/libexpr/flake/flake.cc @@ -940,9 +940,7 @@ LockedFlake lockFlake( } } -void callFlake(EvalState & state, - const LockedFlake & lockedFlake, - Value & vRes) +Value callFlake(EvalState & state, const LockedFlake & lockedFlake) { Value vLocks; Value vRootSrc; @@ -971,7 +969,7 @@ void callFlake(EvalState & state, Value vTmp1 = state.callFunction(*state.ctx.caches.vCallFlake, vLocks, noPos); Value vTmp2 = state.callFunction(vTmp1, vRootSrc, noPos); - vRes = state.callFunction(vTmp2, vRootSubdir, noPos); + return state.callFunction(vTmp2, vRootSubdir, noPos); } void prim_getFlake(EvalState & state, Value * * args, Value & v) @@ -981,15 +979,19 @@ void prim_getFlake(EvalState & state, Value * * args, Value & v) if (evalSettings.pureEval && !flakeRef.input.isLocked()) throw Error("cannot call 'getFlake' on unlocked flake reference '%s' (use --impure to override)", flakeRefS); - callFlake(state, - lockFlake(state, flakeRef, - LockFlags { + v = callFlake( + state, + lockFlake( + state, + flakeRef, + LockFlags{ .updateLockFile = false, .writeLockFile = false, .useRegistries = !evalSettings.pureEval && fetchSettings.useRegistries, .allowUnlocked = !evalSettings.pureEval, - }), - v); + } + ) + ); } void prim_parseFlakeRef( diff --git a/lix/libexpr/flake/flake.hh b/lix/libexpr/flake/flake.hh index 007b5e037..bdd848133 100644 --- a/lix/libexpr/flake/flake.hh +++ b/lix/libexpr/flake/flake.hh @@ -199,11 +199,7 @@ LockedFlake lockFlake( const FlakeRef & flakeRef, const LockFlags & lockFlags); -void callFlake( - EvalState & state, - const LockedFlake & lockedFlake, - Value & v); - +Value callFlake(EvalState & state, const LockedFlake & lockedFlake); } void emitTreeAttrs( diff --git a/lix/nix/flake.cc b/lix/nix/flake.cc index 9a441a40c..8121676c8 100644 --- a/lix/nix/flake.cc +++ b/lix/nix/flake.cc @@ -596,8 +596,7 @@ struct CmdFlakeCheck : FlakeCommand { auto act = logger->startActivity(lvlInfo, actUnknown, "evaluating flake"); - Value vFlake; - flake::callFlake(*state, flake, vFlake); + Value vFlake = flake::callFlake(*state, flake); enumerateOutputs( *state,