diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc
index eaa11fe259b15055a7063c6bc21b4d8f9ea160d3..a2e9b119aeffd149b59ce66300fbdef18aee071b 100644
--- a/src/nix-env/main.cc
+++ b/src/nix-env/main.cc
@@ -606,10 +606,12 @@ static void opQuery(Globals & globals,
                 installedPaths.insert(i->second.outPath);
             
             for (DrvInfos::iterator i = drvs.begin(); i != drvs.end(); ++i) {
-                cout << format("%1%%2% %3%\n")
+                Paths subs = querySubstitutes(i->second.drvPath);
+                cout << format("%1%%2%%3% %4%\n")
                     % (installedPaths.find(i->second.outPath)
                         != installedPaths.end() ? 'I' : '-')
                     % (isValidPath(i->second.outPath) ? 'P' : '-')
+                    % (subs.size() > 0 ? 'S' : '-')
                     % i->second.name;
             }
             break;