about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/nix-env/nix-env.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index ad5a1b095875..77f8a2a6154a 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -116,9 +116,14 @@ static void getAllExprs(EvalState & state,
 
     for (Strings::iterator i = names.begin(); i != names.end(); ++i) {
         Path path2 = path + "/" + *i;
+        
+        struct stat st;
+        if (stat(path2.c_str(), &st) == -1)
+            continue; // ignore dangling symlinks in ~/.nix-defexpr
+        
         if (isNixExpr(path2))
             attrs.set(toATerm(*i), makeAttrRHS(
-                parseExprFromFile(state, absPath(path2)), makeNoPos()));
+                    parseExprFromFile(state, absPath(path2)), makeNoPos()));
         else
             getAllExprs(state, path2, attrs);
     }