···11+diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
22+index 8840cdcb..c34b7ee9 100644
33+--- a/Source/cmFindBase.cxx
44++++ b/Source/cmFindBase.cxx
55+@@ -280,6 +280,11 @@ void cmFindBase::FillCMakeEnvironmentPath()
66+ // Add CMAKE_*_PATH environment variables
77+ std::string var = cmStrCat("CMAKE_", this->CMakePathName, "_PATH");
88+ paths.AddEnvPrefixPath("CMAKE_PREFIX_PATH");
99++ if (this->CMakePathName != "PROGRAM") {
1010++ // Like CMAKE_PREFIX_PATH except when searching for programs. Programs need
1111++ // to be located via PATH
1212++ paths.AddEnvPrefixPath("NIXPKGS_CMAKE_PREFIX_PATH");
1313++ }
1414+ paths.AddEnvPath(var);
1515+1616+ if (this->CMakePathName == "PROGRAM") {
1717+diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
1818+index 9b51b1ad..6acc676c 100644
1919+--- a/Source/cmFindPackageCommand.cxx
2020++++ b/Source/cmFindPackageCommand.cxx
2121+@@ -2039,6 +2039,7 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment()
2222+2323+ // And now the general CMake environment variables
2424+ paths.AddEnvPath("CMAKE_PREFIX_PATH");
2525++ paths.AddEnvPath("NIXPKGS_CMAKE_PREFIX_PATH");
2626+ if (this->DebugMode) {
2727+ debugBuffer = cmStrCat(debugBuffer,
2828+ "CMAKE_PREFIX_PATH env variable "
+3
pkgs/by-name/cm/cmake/package.nix
···5656 };
57575858 patches = [
5959+ # Add NIXPKGS_CMAKE_PREFIX_PATH to cmake which is like CMAKE_PREFIX_PATH
6060+ # except it is not searched for programs
6161+ ./000-nixpkgs-cmake-prefix-path.diff
5962 # Don't search in non-Nix locations such as /usr, but do search in our libc.
6063 ./001-search-path.diff
6164 # Don't depend on frameworks.
+8-6
pkgs/by-name/cm/cmake/setup-hook.sh
···11addCMakeParams() {
22- addToSearchPath CMAKE_PREFIX_PATH $1
22+ # NIXPKGS_CMAKE_PREFIX_PATH is like CMAKE_PREFIX_PATH except cmake
33+ # will not search it for programs
44+ addToSearchPath NIXPKGS_CMAKE_PREFIX_PATH $1
35}
4657fixCmakeFiles() {
···151153 for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; do
152154 if test -n "$isystem_seen" && test -d "$flag"; then
153155 isystem_seen=
154154- export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}"
156156+ addToSearchPath CMAKE_INCLUDE_PATH "${flag}"
155157 elif test -n "$iframework_seen" && test -d "$flag"; then
156158 iframework_seen=
157157- export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}"
159159+ addToSearchPath CMAKE_FRAMEWORK_PATH "${flag}"
158160 else
159161 isystem_seen=
160162 iframework_seen=
161163 case $flag in
162164 -I*)
163163- export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}"
165165+ addToSearchPath CMAKE_INCLUDE_PATH "${flag:2}"
164166 ;;
165167 -L*)
166166- export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}"
168168+ addToSearchPath CMAKE_LIBRARY_PATH "${flag:2}"
167169 ;;
168170 -F*)
169169- export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}"
171171+ addToSearchPath CMAKE_FRAMEWORK_PATH "${flag:2}"
170172 ;;
171173 -isystem)
172174 isystem_seen=1
···3131 };
32323333 patches = [
3434+ # Nixpkgs cmake uses NIXPKGS_CMAKE_PREFIX_PATH for the search path
3535+ ./000-nixpkgs-cmake-prefix-path.patch
3636+3437 # In typical distributions, RPATH is only needed for internal libraries so
3538 # meson removes everything else. With Nix, the locations of libraries
3639 # are not as predictable, therefore we need to keep them in the RPATH.