diff --git a/pkgs/applications/audio/cantata/default.nix b/pkgs/applications/audio/cantata/default.nix index fa0fe73ebae3..2d399ba44da3 100644 --- a/pkgs/applications/audio/cantata/default.nix +++ b/pkgs/applications/audio/cantata/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, cmake , withQt4 ? false, qt4 -, withQt5 ? true, qtbase, qtsvg, qttools +, withQt5 ? true, qtbase, qtsvg, qttools, makeQtWrapper # I'm unable to make KDE work here, crashes at runtime so I simply # make Qt4 the default until someone who wants KDE can figure it out. @@ -68,6 +68,8 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional withMusicbrainz libmusicbrainz5 ++ stdenv.lib.optional (withTaglib && !withKDE4 && withDevices) udisks2; + nativeBuildInputs = stdenv.lib.optional withQt5 makeQtWrapper; + unpackPhase = "tar -xvf $src"; sourceRoot = "${name}"; @@ -91,7 +93,7 @@ stdenv.mkDerivation rec { "-DENABLE_UDISKS2=ON" ]; - postInstall = '' + postInstall = stdenv.lib.optionalString withQt5 '' wrapQtProgram "$out/bin/cantata" ''; diff --git a/pkgs/applications/audio/dfasma/default.nix b/pkgs/applications/audio/dfasma/default.nix index d439f344f5ba..9be3fff6ecbd 100644 --- a/pkgs/applications/audio/dfasma/default.nix +++ b/pkgs/applications/audio/dfasma/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, fftw, libsndfile, qtbase, qtmultimedia }: +{ stdenv, fetchFromGitHub, fftw, libsndfile, qtbase, qtmultimedia, makeQtWrapper }: let @@ -41,6 +41,8 @@ in stdenv.mkDerivation { buildInputs = [ fftw libsndfile qtbase qtmultimedia ]; + nativeBuildInputs = [ makeQtWrapper ]; + postPatch = '' substituteInPlace dfasma.pro --replace '$$DFASMAVERSIONGITPRO' '${version}' cp -Rv "${reaperFork.src}"/* external/REAPER diff --git a/pkgs/applications/audio/sonic-visualiser/default.nix b/pkgs/applications/audio/sonic-visualiser/default.nix index bef2006d60b2..ae7a39240a54 100644 --- a/pkgs/applications/audio/sonic-visualiser/default.nix +++ b/pkgs/applications/audio/sonic-visualiser/default.nix @@ -2,7 +2,7 @@ { stdenv, fetchurl, alsaLib, bzip2, fftw, libjack2, libX11, liblo , libmad, libogg, librdf, librdf_raptor, librdf_rasqal, libsamplerate -, libsndfile, pkgconfig, libpulseaudio, qtbase, redland +, libsndfile, pkgconfig, libpulseaudio, makeQtWrapper, qtbase, redland , rubberband, serd, sord, vampSDK, fftwFloat }: @@ -32,6 +32,8 @@ stdenv.mkDerivation rec { libX11 ]; + nativeBuildInputs = [ makeQtWrapper ]; + buildPhase = '' for i in sonic-visualiser svapp svcore svgui; do cd $i && qmake -makefile PREFIX=$out && cd ..; diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix index aad4bccb4181..97bda43166aa 100644 --- a/pkgs/applications/display-managers/sddm/default.nix +++ b/pkgs/applications/display-managers/sddm/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchpatch, makeWrapper, fetchFromGitHub, cmake, pkgconfig, libxcb, libpthreadstubs +{ stdenv, fetchpatch, makeQtWrapper, fetchFromGitHub, cmake, pkgconfig, libxcb, libpthreadstubs , libXdmcp, libXau, qtbase, qtdeclarative, qttools, pam, systemd }: let @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { patches = [ ./sddm-ignore-config-mtime.patch ]; - nativeBuildInputs = [ cmake pkgconfig qttools ]; + nativeBuildInputs = [ cmake makeQtWrapper pkgconfig qttools ]; buildInputs = [ libxcb libpthreadstubs libXdmcp libXau qtbase qtdeclarative pam systemd ]; diff --git a/pkgs/applications/misc/cool-retro-term/default.nix b/pkgs/applications/misc/cool-retro-term/default.nix index 9f97e1eccee6..890bc2c016b0 100644 --- a/pkgs/applications/misc/cool-retro-term/default.nix +++ b/pkgs/applications/misc/cool-retro-term/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit, makeWrapper, qtbase, qtquick1, qmltermwidget }: +{ stdenv, fetchgit, makeQtWrapper, qtbase, qtquick1, qmltermwidget }: stdenv.mkDerivation rec { version = "1.0.0"; @@ -15,7 +15,8 @@ stdenv.mkDerivation rec { sed -i -e '/qmltermwidget/d' cool-retro-term.pro ''; - buildInputs = [ makeWrapper qtbase qtquick1 qmltermwidget ]; + buildInputs = [ qtbase qtquick1 qmltermwidget ]; + nativeBuildInputs = [ makeQtWrapper ]; configurePhase = "qmake PREFIX=$out"; diff --git a/pkgs/development/libraries/qt-5/5.5/default.nix b/pkgs/development/libraries/qt-5/5.5/default.nix index 87895eaa0aa2..d5f542a06fa3 100644 --- a/pkgs/development/libraries/qt-5/5.5/default.nix +++ b/pkgs/development/libraries/qt-5/5.5/default.nix @@ -18,7 +18,7 @@ , decryptSslTraffic ? false }: -let inherit (pkgs) stdenv; in +let inherit (pkgs) makeSetupHook makeWrapper stdenv; in with stdenv.lib; @@ -101,6 +101,8 @@ let qtx11extras = callPackage ./qtx11extras.nix {}; qtxmlpatterns = callPackage ./qtxmlpatterns.nix {}; + makeQtWrapper = makeSetupHook { deps = [ makeWrapper ]; } ./make-qt-wrapper.sh; + }; in makeScope pkgs.newScope addPackages diff --git a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh new file mode 100644 index 000000000000..f4f13833b8d0 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh @@ -0,0 +1,52 @@ +addQtDependency() { + addToSearchPath QT_PLUGIN_PATH "$1/lib/qt5/plugins" + addToSearchPath QML_IMPORT_PATH "$1/lib/qt5/imports" + addToSearchPath QML2_IMPORT_PATH "$1/lib/qt5/qml" + addToSearchPath XDG_DATA_DIRS "$1/share" +} + +wrapQtProgram() { + local prog="$1" + shift + if [[ -n "$QT_WRAPPER_IMPURE" ]]; then + wrapProgram "$prog" \ + --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ + --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ + --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ + "$@" + else + wrapProgram "$prog" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + "$@" + fi +} + +makeQtWrapper() { + local old="$1" + local new="$2" + shift + shift + if [[ -n "$QT_WRAPPER_IMPURE" ]]; then + makeWrapper "$old" "$new" \ + --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ + --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ + --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ + "$@" + else + makeWrapper "$old" "$new" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + "$@" + fi +} + +# cannot use addToSearchPath because these directories may not exist yet +export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}$out/lib/qt5/plugins" +export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}$out/lib/qt5/imports" +export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}$out/lib/qt5/qml" +export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}$out/share" + +envHooks+=(addQtDependency) diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh index cae1aeaac2cc..ab34cbd36751 100644 --- a/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh +++ b/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh @@ -18,11 +18,6 @@ addQtModule() { fi done fi - - addToSearchPath QT_PLUGIN_PATH "$1/lib/qt5/plugins" - addToSearchPath QML_IMPORT_PATH "$1/lib/qt5/imports" - addToSearchPath QML2_IMPORT_PATH "$1/lib/qt5/qml" - addToSearchPath XDG_DATA_DIRS "$1/share" } rmQtModules() { @@ -49,28 +44,6 @@ setQMakePath() { export PATH="$qtOut/bin${PATH:+:}$PATH" } -wrapQtProgram() { - local prog="$1" - shift - wrapProgram "$prog" \ - --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ - --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ - --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ - "$@" -} - -makeQtWrapper() { - local old="$1" - local new="$2" - shift - shift - makeWrapper "$old" "$new" \ - --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ - --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ - --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ - "$@" -} - qtOut="" if [[ -z "$NIX_QT_SUBMODULE" ]]; then qtOut="$PWD/qmake-$name" @@ -91,11 +64,6 @@ Documentation = share/doc/qt5 EOF export QMAKE="$qtOut/bin/qmake" -# cannot use addToSearchPath because these directories may not exist yet -export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}$out/lib/qt5/plugins" -export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}$out/lib/qt5/imports" -export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}$out/lib/qt5/qml" -export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}$out/share" envHooks+=(addQtModule) preConfigurePhases+=(setQMakePath)