diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc
index f325e511a416a188af0328dd14642993b7df6370..870901421fb6800a5a235e6fe314177a4b661b77 100644
--- a/src/libstore/derivations.cc
+++ b/src/libstore/derivations.cc
@@ -7,14 +7,6 @@
 
 namespace nix {
 
-const StorePath & BasicDerivation::findOutput(const string & id) const
-{
-    auto i = outputs.find(id);
-    if (i == outputs.end())
-        throw Error("derivation has no output '%s'", id);
-    return i->second.path;
-}
-
 
 bool BasicDerivation::isBuiltin() const
 {
diff --git a/src/libstore/derivations.hh b/src/libstore/derivations.hh
index 68c53c1ff5a271d34ff8dc1bc2838f8992bc2634..00cf1bb08ae549ed1c96bfff17df682621bcb2a4 100644
--- a/src/libstore/derivations.hh
+++ b/src/libstore/derivations.hh
@@ -39,10 +39,6 @@ struct BasicDerivation
     BasicDerivation() { }
     virtual ~BasicDerivation() { };
 
-    /* Return the path corresponding to the output identifier `id' in
-       the given derivation. */
-    const StorePath & findOutput(const std::string & id) const;
-
     bool isBuiltin() const;
 
     /* Return true iff this is a fixed-output derivation. */
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index 5795c2c0970e1af87c3c5553b4b0f8a2210d0f60..ddd036070682e20cd51fa968dce4925cee98c35d 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -381,7 +381,8 @@ static void queryInstSources(EvalState & state,
 
                 if (path.isDerivation()) {
                     elem.setDrvPath(state.store->printStorePath(path));
-                    elem.setOutPath(state.store->printStorePath(state.store->derivationFromPath(path).findOutput("out")));
+                    auto outputs = state.store->queryDerivationOutputMap(path);
+                    elem.setOutPath(state.store->printStorePath(outputs.at("out")));
                     if (name.size() >= drvExtension.size() &&
                         string(name, name.size() - drvExtension.size()) == drvExtension)
                         name = string(name, 0, name.size() - drvExtension.size());