From d90582be33601d9f25b9398e6938e84b5861d6cf Mon Sep 17 00:00:00 2001
From: Tom Bereknyei <tomberek@gmail.com>
Date: Sun, 22 Aug 2021 18:45:42 -0400
Subject: [PATCH] Allow use of path and filterSource in flakes

As filterSource and path perform work, add paths to allowedPaths.
---
 src/libexpr/primops.cc | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index bfe41c9fa..6c86aa4e1 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -1886,6 +1886,20 @@ static void addPath(EvalState & state, const Pos & pos, const string & name, con
         dstPath = state.store->printStorePath(*expectedStorePath);
 
     mkString(v, dstPath, {dstPath});
+    if (state.allowedPaths)
+        state.allowedPaths->insert(v.string.s);
+
+    try {
+        state.realiseContext({});
+    } catch (InvalidPathError & e) {
+        throw EvalError({
+            .msg = hintfmt("cannot import '%1%', since path '%2%' is not valid", path, e.path),
+            .errPos = pos
+        });
+    } catch (Error & e) {
+        e.addTrace(pos, "while importing '%s'", path);
+        throw e;
+    }
 }