about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/nix/doctor.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/nix/doctor.cc b/src/nix/doctor.cc
index a31df595da88..6265e9cfef20 100644
--- a/src/nix/doctor.cc
+++ b/src/nix/doctor.cc
@@ -33,9 +33,26 @@ struct CmdDoctor : StoreCommand
         std::cout << "Store uri: " << store->getUri() << std::endl;
         std::cout << std::endl;
 
+        checkNixInPath();
         checkStoreProtocol(store->getProtocol());
     }
 
+    void checkNixInPath() {
+        PathSet dirs;
+
+        for (auto & dir : tokenizeString<Strings>(getEnv("PATH"), ":"))
+            if (pathExists(dir + "/nix-env"))
+                dirs.insert(dirOf(canonPath(dir + "/nix-env", true)));
+
+        if (dirs.size() != 1) {
+            std::cout << "Warning: multiple versions of nix found in PATH." << std::endl;
+            std::cout << std::endl;
+            for (auto & dir : dirs)
+                std::cout << "  " << dir << std::endl;
+            std::cout << std::endl;
+        }
+    }
+
     void checkStoreProtocol(unsigned int storeProto) {
         auto clientProto = GET_PROTOCOL_MAJOR(SERVE_PROTOCOL_VERSION) == GET_PROTOCOL_MAJOR(storeProto)
             ? SERVE_PROTOCOL_VERSION