about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nix-repl.cc19
1 files changed, 13 insertions, 6 deletions
diff --git a/nix-repl.cc b/nix-repl.cc
index 98d27b435e..78be0f98c4 100644
--- a/nix-repl.cc
+++ b/nix-repl.cc
@@ -489,10 +489,18 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m
         seen.insert(&v);
 
         bool isDrv = state.isDerivation(v);
-        if (isDrv) str << "(derivation ";
-        str << "{ ";
 
-        if (maxDepth > 0) {
+        if (isDrv) {
+            str << "«derivation ";
+            Bindings::iterator i = v.attrs->find(state.sDrvPath);
+            PathSet context;
+            Path drvPath = i != v.attrs->end() ? state.coerceToPath(*i->value, context) : "???";
+            str << drvPath << "»";
+        }
+
+        else if (maxDepth > 0) {
+            str << "{ ";
+
             typedef std::map<string, Value *> Sorted;
             Sorted sorted;
             foreach (Bindings::iterator, i, *v.attrs)
@@ -528,11 +536,10 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m
                 str << "; ";
             }
 
+            str << "}";
         } else
-            str << "... ";
+            str << "{ ... }";
 
-        str << "}";
-        if (isDrv) str << ")";
         break;
     }