diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index b8d4765692..902c1e5290 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -312,6 +312,11 @@ void cmFindBase::FillCMakeEnvironmentPath() // Add CMAKE_*_PATH environment variables std::string var = cmStrCat("CMAKE_", this->CMakePathName, "_PATH"); paths.AddEnvPrefixPath("CMAKE_PREFIX_PATH"); + if (this->CMakePathName != "PROGRAM") { + // Like CMAKE_PREFIX_PATH except when searching for programs. Programs need + // to be located via PATH + paths.AddEnvPrefixPath("NIXPKGS_CMAKE_PREFIX_PATH"); + } paths.AddEnvPath(var); if (this->CMakePathName == "PROGRAM") { diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 6201894fd1..9533862a2b 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -2467,6 +2467,7 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment() // And now the general CMake environment variables paths.AddEnvPath("CMAKE_PREFIX_PATH"); + paths.AddEnvPath("NIXPKGS_CMAKE_PREFIX_PATH"); if (this->DebugModeEnabled()) { debugBuffer = cmStrCat(debugBuffer, "CMAKE_PREFIX_PATH env variable "