lol
1diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf
2index 11fb52a0b1..614fdbb046 100644
3--- a/mkspecs/features/create_cmake.prf
4+++ b/mkspecs/features/create_cmake.prf
5@@ -21,7 +21,7 @@ load(cmake_functions)
6 # at cmake time whether package has been found via a symlink, and correct
7 # that to an absolute path. This is only done for installations to
8 # the /usr or / prefix.
9-CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$[QT_INSTALL_LIBS])
10+CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$NIX_OUTPUT_OUT/lib/)
11 contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND = $$CMAKE_INSTALL_LIBS_DIR
12
13 CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake
14@@ -47,47 +47,22 @@ split_incpath {
15 $$cmake_extra_source_includes.output
16 }
17
18-CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX])
19-contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") {
20- CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/
21- CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True
22-}
23+CMAKE_INCLUDE_DIR = $$NIX_OUTPUT_DEV/include/
24+CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True
25
26 !exists($$first(QT.$${MODULE}_private.includes)): CMAKE_NO_PRIVATE_INCLUDES = true
27
28-CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX])
29-contains(CMAKE_LIB_DIR,"^\\.\\./.*") {
30- CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/
31- CMAKE_LIB_DIR_IS_ABSOLUTE = True
32-} else {
33- CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS])
34- # We need to go up another two levels because the CMake files are
35- # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME}
36- CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../"
37-}
38+CMAKE_LIB_DIR = $$NIX_OUTPUT_OUT/lib/
39+CMAKE_LIB_DIR_IS_ABSOLUTE = True
40
41-CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX])
42-contains(CMAKE_BIN_DIR, "^\\.\\./.*") {
43- CMAKE_BIN_DIR = $$[QT_HOST_BINS]/
44- CMAKE_BIN_DIR_IS_ABSOLUTE = True
45-}
46+CMAKE_BIN_DIR = $$NIX_OUTPUT_BIN/bin/
47+CMAKE_BIN_DIR_IS_ABSOLUTE = True
48
49-CMAKE_PLUGIN_DIR = $$cmakeRelativePath($$[QT_INSTALL_PLUGINS], $$[QT_INSTALL_PREFIX])
50-contains(CMAKE_PLUGIN_DIR, "^\\.\\./.*") {
51- CMAKE_PLUGIN_DIR = $$[QT_INSTALL_PLUGINS]/
52- CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True
53-}
54+CMAKE_PLUGIN_DIR = $$NIX_OUTPUT_PLUGIN/
55+CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True
56
57-win32:!wince:!static:!staticlib {
58- CMAKE_DLL_DIR = $$cmakeRelativePath($$[QT_INSTALL_BINS], $$[QT_INSTALL_PREFIX])
59- contains(CMAKE_DLL_DIR, "^\\.\\./.*") {
60- CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/
61- CMAKE_DLL_DIR_IS_ABSOLUTE = True
62- }
63-} else {
64- CMAKE_DLL_DIR = $$CMAKE_LIB_DIR
65- CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE
66-}
67+CMAKE_DLL_DIR = $$NIX_OUTPUT_OUT/lib/
68+CMAKE_DLL_DIR_IS_ABSOLUTE = True
69
70 static|staticlib:CMAKE_STATIC_TYPE = true
71
72@@ -167,7 +142,7 @@ contains(CONFIG, plugin) {
73 cmake_target_file
74
75 cmake_qt5_plugin_file.files = $$cmake_target_file.output
76- cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME}
77+ cmake_qt5_plugin_file.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME}
78 INSTALLS += cmake_qt5_plugin_file
79
80 return()
81@@ -314,7 +289,7 @@ exists($$cmake_macros_file.input) {
82 cmake_qt5_module_files.files += $$cmake_macros_file.output
83 }
84
85-cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME}
86+cmake_qt5_module_files.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME}
87
88 # We are generating cmake files. Most developers of Qt are not aware of cmake,
89 # so we require automatic tests to be available. The only module which should
90diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
91index d2358cae4b..61d8cc0471 100644
92--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
93+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
94@@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0)
95 endif()
96 !!ENDIF
97
98-!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND)
99-!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
100-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
101-!!ELSE
102-get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH)
103-# Use original install prefix when loaded through a
104-# cross-prefix symbolic link such as /lib -> /usr/lib.
105-get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH)
106-get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH)
107-if(_realCurr STREQUAL _realOrig)
108- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE)
109-else()
110- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
111-endif()
112-unset(_realOrig)
113-unset(_realCurr)
114-unset(_IMPORT_PREFIX)
115-!!ENDIF
116-!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
117-get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
118-!!ELSE
119-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
120-!!ENDIF
121-
122 !!IF !equals(TEMPLATE, aux)
123 # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead.
124 set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION).$$eval(QT.$${MODULE}.MINOR_VERSION).$$eval(QT.$${MODULE}.PATCH_VERSION)")
125@@ -58,11 +34,7 @@ endmacro()
126 macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION)
127 set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
128
129-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
130- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
131-!!ELSE
132 set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
133-!!ENDIF
134 _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location})
135 set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES
136 \"INTERFACE_LINK_LIBRARIES\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\"
137@@ -75,11 +47,7 @@ macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATI
138 )
139
140 !!IF !isEmpty(CMAKE_WINDOWS_BUILD)
141-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
142- set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
143-!!ELSE
144 set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
145-!!ENDIF
146 _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib})
147 if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\")
148 set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES
149@@ -95,24 +63,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
150 !!IF !no_module_headers
151 !!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK)
152 set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS
153- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\"
154- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\"
155+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\"
156+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\"
157 )
158 !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES)
159 set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
160- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\"
161- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\"
162- )
163-!!ELSE
164- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
165-!!ENDIF
166-!!ELSE
167-!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
168- set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\")
169-!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES)
170- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
171- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\"
172- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\"
173+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\"
174+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\"
175 )
176 !!ELSE
177 set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
178@@ -128,7 +85,6 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
179 set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\")
180 !!ENDIF
181 !!ENDIF
182-!!ENDIF
183 !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS)
184 include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL)
185 !!ENDIF
186@@ -254,25 +210,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
187 !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
188 !!IF isEmpty(CMAKE_DEBUG_TYPE)
189 !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
190-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
191- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
192-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
193 if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
194-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE
195 _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" )
196 !!ELSE // CMAKE_STATIC_WINDOWS_BUILD
197 if (EXISTS
198-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
199- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
200-!!ELSE
201 \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
202-!!ENDIF
203 AND EXISTS
204-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
205- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
206-!!ELSE
207 \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
208-!!ENDIF
209 _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
210 !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
211 endif()
212@@ -291,25 +235,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
213 !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
214 !!IF isEmpty(CMAKE_RELEASE_TYPE)
215 !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
216-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
217- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
218-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
219 if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
220-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE
221 _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" )
222 !!ELSE // CMAKE_STATIC_WINDOWS_BUILD
223 if (EXISTS
224-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
225- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
226-!!ELSE
227 \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\"
228-!!ENDIF
229 AND EXISTS
230-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
231- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
232-!!ELSE
233 \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
234-!!ENDIF
235 _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" )
236 !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
237 endif()
238@@ -328,11 +260,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
239 macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION)
240 set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
241
242-!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE)
243- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
244-!!ELSE
245 set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
246-!!ENDIF
247 _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location})
248 set_target_properties(Qt5::${Plugin} PROPERTIES
249 \"IMPORTED_LOCATION_${Configuration}\" ${imported_location}
250diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf
251index 47ebe78400..25aa2b93e7 100644
252--- a/mkspecs/features/qml_module.prf
253+++ b/mkspecs/features/qml_module.prf
254@@ -17,10 +17,7 @@ fq_qml_files = $$_PRO_FILE_PWD_/qmldir
255
256 for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_)
257
258-qml1_target: \
259- instbase = $$[QT_INSTALL_IMPORTS]
260-else: \
261- instbase = $$[QT_INSTALL_QML]
262+instbase = $$NIX_OUTPUT_QML
263
264 # Install rules
265 qmldir.base = $$_PRO_FILE_PWD_
266diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf
267index ebec1db8da..62ace84a6c 100644
268--- a/mkspecs/features/qml_plugin.prf
269+++ b/mkspecs/features/qml_plugin.prf
270@@ -46,13 +46,8 @@ exists($$QMLTYPEFILE): QML_FILES += $$QMLTYPEFILE
271
272 load(qt_build_paths)
273
274-qml1_target {
275- DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH
276- instbase = $$[QT_INSTALL_IMPORTS]
277-} else {
278- DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH
279- instbase = $$[QT_INSTALL_QML]
280-}
281+DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH
282+instbase = $$NIX_OUTPUT_QML
283
284 target.path = $$instbase/$$TARGETPATH
285 INSTALLS += target
286diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf
287index 46aca50cc2..4f4e634724 100644
288--- a/mkspecs/features/qt_app.prf
289+++ b/mkspecs/features/qt_app.prf
290@@ -29,7 +29,7 @@ host_build:force_bootstrap {
291 target.path = $$[QT_HOST_BINS]
292 } else {
293 !build_pass:contains(QT_CONFIG, debug_and_release): CONFIG += release
294- target.path = $$[QT_INSTALL_BINS]
295+ target.path = $$NIX_OUTPUT_BIN/bin
296 CONFIG += relative_qt_rpath # Qt's tools and apps should be relocatable
297 }
298 INSTALLS += target
299diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf
300index 1848f00e90..2af93675c5 100644
301--- a/mkspecs/features/qt_build_paths.prf
302+++ b/mkspecs/features/qt_build_paths.prf
303@@ -23,6 +23,6 @@ exists($$MODULE_BASE_INDIR/.git): \
304 !force_independent {
305 # If the module is not built independently, everything ends up in qtbase.
306 # This is the case in non-prefix builds, except for selected modules.
307- MODULE_BASE_OUTDIR = $$[QT_HOST_PREFIX]
308- MODULE_QMAKE_OUTDIR = $$[QT_HOST_PREFIX]
309+ MODULE_BASE_OUTDIR = $$NIX_OUTPUT_OUT
310+ MODULE_QMAKE_OUTDIR = $$NIX_OUTPUT_OUT
311 }
312diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
313index 08b3f3e5af..5ffeafd9d8 100644
314--- a/mkspecs/features/qt_common.prf
315+++ b/mkspecs/features/qt_common.prf
316@@ -30,8 +30,8 @@ contains(TEMPLATE, .*lib) {
317 qqt_libdir = \$\$\$\$[QT_HOST_LIBS]
318 qt_libdir = $$[QT_HOST_LIBS]
319 } else {
320- qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS]
321- qt_libdir = $$[QT_INSTALL_LIBS]
322+ qqt_libdir = \$\$\$\$NIX_OUTPUT_OUT/lib
323+ qt_libdir = $$NIX_OUTPUT_OUT/lib
324 }
325 contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) {
326 lib_replace.match = "[^ ']*$$rplbase/lib"
327diff --git a/mkspecs/features/qt_docs.prf b/mkspecs/features/qt_docs.prf
328index 183d0c9502..17982b04ec 100644
329--- a/mkspecs/features/qt_docs.prf
330+++ b/mkspecs/features/qt_docs.prf
331@@ -41,7 +41,7 @@ QMAKE_DOCS_OUTPUTDIR = $$QMAKE_DOCS_BASE_OUTDIR/$$QMAKE_DOCS_TARGETDIR
332
333 QDOC += -outputdir $$shell_quote($$QMAKE_DOCS_OUTPUTDIR)
334 !build_online_docs: \
335- QDOC += -installdir $$shell_quote($$[QT_INSTALL_DOCS])
336+ QDOC += -installdir $$shell_quote($$NIX_OUTPUT_DOC)
337 PREP_DOC_INDEXES =
338 DOC_INDEXES =
339 !isEmpty(QTREPOS) {
340@@ -60,8 +60,8 @@ DOC_INDEXES =
341 DOC_INDEXES += -indexdir $$shell_quote($$qrep/doc)
342 } else {
343 prepare_docs: \
344- PREP_DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get])
345- DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get])
346+ PREP_DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC)
347+ DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC)
348 }
349 doc_command = $$QDOC $$QMAKE_DOCS
350 prepare_docs {
351@@ -75,12 +75,12 @@ prepare_docs {
352 qch_docs.commands = $$QHELPGENERATOR $$shell_quote($$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp) -o $$shell_quote($$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch)
353
354 inst_html_docs.files = $$QMAKE_DOCS_OUTPUTDIR
355- inst_html_docs.path = $$[QT_INSTALL_DOCS]
356+ inst_html_docs.path = $$NIX_OUTPUT_DOC
357 inst_html_docs.CONFIG += no_check_exist directory no_default_install no_build
358 INSTALLS += inst_html_docs
359
360 inst_qch_docs.files = $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch
361- inst_qch_docs.path = $$[QT_INSTALL_DOCS]
362+ inst_qch_docs.path = $$NIX_OUTPUT_DOC
363 inst_qch_docs.CONFIG += no_check_exist no_default_install no_build
364 INSTALLS += inst_qch_docs
365
366diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf
367index 4c68cfd72f..f422f18266 100644
368--- a/mkspecs/features/qt_example_installs.prf
369+++ b/mkspecs/features/qt_example_installs.prf
370@@ -70,7 +70,7 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
371 $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \
372 $$DBUS_ADAPTORS $$DBUS_INTERFACES
373 addInstallFiles(sources.files, $$sourcefiles)
374- sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase
375+ sources.path = $$NIX_OUTPUT_DEV/share/examples/$$probase
376 INSTALLS += sources
377
378 check_examples {
379diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
380index 4a1d265a8b..d346424b5b 100644
381--- a/mkspecs/features/qt_functions.prf
382+++ b/mkspecs/features/qt_functions.prf
383@@ -70,7 +70,7 @@ defineTest(qtHaveModule) {
384 defineTest(qtPrepareTool) {
385 cmd = $$eval(QT_TOOL.$${2}.binary)
386 isEmpty(cmd) {
387- cmd = $$[QT_HOST_BINS]/$$2
388+ cmd = $$system("command -v $$2")
389 exists($${cmd}.pl) {
390 cmd = perl -w $$system_path($${cmd}.pl)
391 } else: contains(QMAKE_HOST.os, Windows) {
392diff --git a/mkspecs/features/qt_installs.prf b/mkspecs/features/qt_installs.prf
393index 3a5dbb6274..24f321bd82 100644
394--- a/mkspecs/features/qt_installs.prf
395+++ b/mkspecs/features/qt_installs.prf
396@@ -12,16 +12,10 @@
397 #library
398 !qt_no_install_library {
399 win32 {
400- host_build: \
401- dlltarget.path = $$[QT_HOST_BINS]
402- else: \
403- dlltarget.path = $$[QT_INSTALL_BINS]
404+ dlltarget.path = $$NIX_OUTPUT_BIN/bin
405 INSTALLS += dlltarget
406 }
407- host_build: \
408- target.path = $$[QT_HOST_LIBS]
409- else: \
410- target.path = $$[QT_INSTALL_LIBS]
411+ target.path = $$NIX_OUTPUT_OUT/lib
412 !static: target.CONFIG = no_dll
413 INSTALLS += target
414 }
415@@ -29,33 +23,33 @@
416 #headers
417 qt_install_headers {
418 class_headers.files = $$SYNCQT.HEADER_CLASSES
419- class_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
420+ class_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME
421 INSTALLS += class_headers
422
423 targ_headers.files = $$SYNCQT.HEADER_FILES
424- targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
425+ targ_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME
426 INSTALLS += targ_headers
427
428 private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES
429- private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private
430+ private_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private
431 INSTALLS += private_headers
432
433 qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES
434- qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa
435+ qpa_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa
436 INSTALLS += qpa_headers
437 }
438
439 #module
440 qt_install_module {
441 !isEmpty(MODULE_PRI) {
442- pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
443+ pritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules
444 pritarget.files = $$MODULE_PRI
445 INSTALLS += pritarget
446 } else: isEmpty(MODULE_PRIVATE_PRI) {
447 warning("Project $$basename(_PRO_FILE_) is a module, but has not defined MODULE_PRI, which is required for Qt to expose the module to other projects.")
448 }
449 !isEmpty(MODULE_PRIVATE_PRI) {
450- privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
451+ privpritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules
452 privpritarget.files = $$MODULE_PRIVATE_PRI
453 INSTALLS += privpritarget
454 }
455diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf
456index 3cf6c7349c..83e68025a5 100644
457--- a/mkspecs/features/qt_plugin.prf
458+++ b/mkspecs/features/qt_plugin.prf
459@@ -82,7 +82,7 @@ CONFIG(static, static|shared)|prefix_build {
460 }
461 }
462
463-target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE
464+target.path = $$NIX_OUTPUT_PLUGIN/$$PLUGIN_TYPE
465 INSTALLS += target
466
467 TARGET = $$qt5LibraryTarget($$TARGET)
468diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in
469index 91a4eb619a..08b533e69c 100644
470--- a/src/corelib/Qt5CoreConfigExtras.cmake.in
471+++ b/src/corelib/Qt5CoreConfigExtras.cmake.in
472@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake)
473 add_executable(Qt5::qmake IMPORTED)
474
475 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
476- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
477+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
478 !!ELSE
479 set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
480 !!ENDIF
481@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc)
482 add_executable(Qt5::moc IMPORTED)
483
484 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
485- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
486+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
487 !!ELSE
488 set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
489 !!ENDIF
490@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc)
491 add_executable(Qt5::rcc IMPORTED)
492
493 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
494- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
495+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
496 !!ELSE
497 set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
498 !!ENDIF
499@@ -131,7 +131,7 @@ if (NOT TARGET Qt5::WinMain)
500 !!IF !isEmpty(CMAKE_RELEASE_TYPE)
501 set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
502 !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
503- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
504+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
505 !!ELSE
506 set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
507 !!ENDIF
508@@ -145,7 +145,7 @@ if (NOT TARGET Qt5::WinMain)
509 set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
510
511 !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
512- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
513+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
514 !!ELSE
515 set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
516 !!ENDIF
517diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
518index c357237d0e..6f0c75de3c 100644
519--- a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
520+++ b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in
521@@ -1,6 +1,6 @@
522
523 !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE)
524-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
525+set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
526 !!ELSE
527 set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
528 !!ENDIF
529diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
530index 706304cf34..546420f6ad 100644
531--- a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
532+++ b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in
533@@ -1,6 +1,6 @@
534
535 !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE)
536-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
537+set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
538 !!ELSE
539 set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
540 !!ENDIF
541diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
542index bd3c12ce97..a796775970 100644
543--- a/src/corelib/kernel/qcoreapplication.cpp
544+++ b/src/corelib/kernel/qcoreapplication.cpp
545@@ -2533,6 +2533,15 @@ QStringList QCoreApplication::libraryPaths()
546 QStringList *app_libpaths = new QStringList;
547 coreappdata()->app_libpaths.reset(app_libpaths);
548
549+ // Add library paths derived from PATH
550+ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':');
551+ const QString plugindir = QStringLiteral("../" NIXPKGS_QT_PLUGIN_PREFIX);
552+ for (const QString &path: paths) {
553+ if (!path.isEmpty()) {
554+ app_libpaths->append(QDir::cleanPath(path + QDir::separator() + plugindir));
555+ }
556+ }
557+
558 const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
559 if (!libPathEnv.isEmpty()) {
560 QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts);
561diff --git a/src/corelib/tools/qtimezoneprivate_tz.cpp b/src/corelib/tools/qtimezoneprivate_tz.cpp
562index c13c9a5223..6936851511 100644
563--- a/src/corelib/tools/qtimezoneprivate_tz.cpp
564+++ b/src/corelib/tools/qtimezoneprivate_tz.cpp
565@@ -64,7 +64,11 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
566 // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
567 static QTzTimeZoneHash loadTzTimeZones()
568 {
569- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
570+ // Try TZDIR first, in case we're running on NixOS.
571+ QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
572+ // Fallback to traditional paths in case we are not on NixOS.
573+ if (!QFile::exists(path))
574+ path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
575 if (!QFile::exists(path))
576 path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
577
578@@ -636,12 +640,16 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId)
579 if (!tzif.open(QIODevice::ReadOnly))
580 return;
581 } else {
582- // Open named tz, try modern path first, if fails try legacy path
583- tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
584+ // Try TZDIR first, in case we're running on NixOS
585+ tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
586 if (!tzif.open(QIODevice::ReadOnly)) {
587- tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId));
588- if (!tzif.open(QIODevice::ReadOnly))
589- return;
590+ // Open named tz, try modern path first, if fails try legacy path
591+ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
592+ if (!tzif.open(QIODevice::ReadOnly)) {
593+ tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId));
594+ if (!tzif.open(QIODevice::ReadOnly))
595+ return;
596+ }
597 }
598 }
599
600diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in
601index 1d947159e2..b36865fc48 100644
602--- a/src/dbus/Qt5DBusConfigExtras.cmake.in
603+++ b/src/dbus/Qt5DBusConfigExtras.cmake.in
604@@ -2,11 +2,7 @@
605 if (NOT TARGET Qt5::qdbuscpp2xml)
606 add_executable(Qt5::qdbuscpp2xml IMPORTED)
607
608-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
609- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
610-!!ELSE
611- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
612-!!ENDIF
613+ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
614 _qt5_DBus_check_file_exists(${imported_location})
615
616 set_target_properties(Qt5::qdbuscpp2xml PROPERTIES
617@@ -17,11 +13,7 @@ endif()
618 if (NOT TARGET Qt5::qdbusxml2cpp)
619 add_executable(Qt5::qdbusxml2cpp IMPORTED)
620
621-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
622- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
623-!!ELSE
624- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
625-!!ENDIF
626+ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
627 _qt5_DBus_check_file_exists(${imported_location})
628
629 set_target_properties(Qt5::qdbusxml2cpp PROPERTIES
630diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in
631index 07869efd7d..fb4183bada 100644
632--- a/src/gui/Qt5GuiConfigExtras.cmake.in
633+++ b/src/gui/Qt5GuiConfigExtras.cmake.in
634@@ -2,7 +2,7 @@
635 !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE)
636
637 !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
638-set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\")
639+set(Qt5Gui_EGL_INCLUDE_DIRS \"$$NIX_OUTPUT_DEV/$$CMAKE_INCLUDE_DIR/QtANGLE\")
640 !!ELSE
641 set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\")
642 !!ENDIF
643@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_properties TargetName Configuration LIB_LOCATIO
644 set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
645
646 !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
647- set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
648+ set(imported_location \"$$NIX_OUTPUT_OUT/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
649 !!ELSE
650 set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
651 !!ENDIF
652
653 !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
654- set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
655+ set(imported_implib \"$$NIX_OUTPUT_OUT/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
656 !!ELSE
657 set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
658 !!ENDIF
659diff --git a/src/network/kernel/qdnslookup_unix.cpp b/src/network/kernel/qdnslookup_unix.cpp
660index 584f0b0f0e..24d80063f2 100644
661--- a/src/network/kernel/qdnslookup_unix.cpp
662+++ b/src/network/kernel/qdnslookup_unix.cpp
663@@ -83,7 +83,7 @@ static bool resolveLibraryInternal()
664 if (!lib.load())
665 #endif
666 {
667- lib.setFileName(QLatin1String("resolv"));
668+ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV));
669 if (!lib.load())
670 return false;
671 }
672diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
673index dabf1913cc..53bb867e07 100644
674--- a/src/network/kernel/qhostinfo_unix.cpp
675+++ b/src/network/kernel/qhostinfo_unix.cpp
676@@ -94,7 +94,7 @@ static bool resolveLibraryInternal()
677 if (!lib.load())
678 #endif
679 {
680- lib.setFileName(QLatin1String("resolv"));
681+ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV));
682 if (!lib.load())
683 return false;
684 }
685diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp
686index 68caaeb6dc..fef4a81474 100644
687--- a/src/network/ssl/qsslcontext_openssl.cpp
688+++ b/src/network/ssl/qsslcontext_openssl.cpp
689@@ -340,7 +340,7 @@ init_context:
690
691 const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
692 if (!qcurves.isEmpty()) {
693-#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
694+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC)
695 // Set the curves to be used
696 if (q_SSLeay() >= 0x10002000L) {
697 // SSL_CTX_ctrl wants a non-const pointer as last argument,
698@@ -354,7 +354,7 @@ init_context:
699 return sslContext;
700 }
701 } else
702-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
703+#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC)
704 {
705 // specific curves requested, but not possible to set -> error
706 sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2"));
707diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
708index 338c7ca3be..dd52114bac 100644
709--- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
710+++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
711@@ -251,12 +251,9 @@ void TableGenerator::initPossibleLocations()
712 // the QTCOMPOSE environment variable
713 if (qEnvironmentVariableIsSet("QTCOMPOSE"))
714 m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE")));
715- m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale"));
716- m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale"));
717- m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale"));
718- m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale"));
719 m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale"));
720 m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale"));
721+ m_possibleLocations.append(QLatin1String(NIXPKGS_QTCOMPOSE));
722 }
723
724 QString TableGenerator::findComposeFile()
725diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
726index c2b7a562a9..4fa5f6d6a5 100644
727--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
728+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
729@@ -570,7 +570,14 @@ void (*QGLXContext::getProcAddress(const QByteArray &procName)) ()
730 #ifndef QT_NO_LIBRARY
731 extern const QString qt_gl_library_name();
732 // QLibrary lib(qt_gl_library_name());
733+ // Check system library paths first
734 QLibrary lib(QLatin1String("GL"));
735+#ifdef NIXPKGS_MESA_GL
736+ if (!lib.load()) {
737+ // Fallback to Mesa driver
738+ lib.setFileName(QLatin1String(NIXPKGS_MESA_GL));
739+ }
740+#endif // NIXPKGS_MESA_GL
741 glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB");
742 #endif
743 }
744diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
745index 4646ced954..ff3111f393 100644
746--- a/src/plugins/platforms/xcb/qxcbcursor.cpp
747+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp
748@@ -303,10 +303,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen)
749 #if defined(XCB_USE_XLIB) && !defined(QT_NO_LIBRARY)
750 static bool function_ptrs_not_initialized = true;
751 if (function_ptrs_not_initialized) {
752- QLibrary xcursorLib(QLatin1String("Xcursor"), 1);
753+ QLibrary xcursorLib(QLatin1String(NIXPKGS_LIBXCURSOR), 1);
754 bool xcursorFound = xcursorLib.load();
755 if (!xcursorFound) { // try without the version number
756- xcursorLib.setFileName(QLatin1String("Xcursor"));
757+ xcursorLib.setFileName(QLatin1String(NIXPKGS_LIBXCURSOR));
758 xcursorFound = xcursorLib.load();
759 }
760 if (xcursorFound) {
761diff --git a/src/testlib/qtestassert.h b/src/testlib/qtestassert.h
762index ca3e02ca06..28dd73d772 100644
763--- a/src/testlib/qtestassert.h
764+++ b/src/testlib/qtestassert.h
765@@ -38,10 +38,13 @@
766
767 QT_BEGIN_NAMESPACE
768
769-
770-#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (0)
771-
772-#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (0)
773+#if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS)
774+#define QTEST_ASSERT(cond) do { } while ((false) && (cond))
775+#define QTEST_ASSERT_X(cond, where, what) do { } while ((false) && (cond))
776+#else
777+#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (false)
778+#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (false)
779+#endif
780
781 QT_END_NAMESPACE
782
783diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in
784index 99d87e2e46..a4eab2aa72 100644
785--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in
786+++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in
787@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic)
788 add_executable(Qt5::uic IMPORTED)
789
790 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
791- set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
792+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
793 !!ELSE
794 set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
795 !!ENDIF