{ newScope , lib , stdenv , generateSplicesForMkScope , makeScopeWithSplicing' , fetchurl , fetchpatch2 , makeSetupHook , makeWrapper , gst_all_1 , libglvnd , darwin , overrideSDK , buildPackages , python3 , config }: let srcs = import ./srcs.nix { inherit fetchurl; mirror = "mirror://qt"; }; addPackages = self: let callPackage = self.newScope ({ inherit (self) qtModule; inherit srcs python3; stdenv = if stdenv.isDarwin then overrideSDK stdenv { darwinMinVersion = "11.0"; darwinSdkVersion = "11.0"; } else stdenv; }); in { inherit callPackage srcs; qtModule = callPackage ./qtModule.nix { }; qtbase = callPackage ./modules/qtbase.nix { withGtk3 = !stdenv.hostPlatform.isMinGW; inherit (srcs.qtbase) src version; inherit (darwin.apple_sdk_11_0.frameworks) AGL AVFoundation AppKit Contacts CoreBluetooth EventKit GSS MetalKit; patches = [ ./patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch ./patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch ./patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch ./patches/0004-qtbase-qt-cmake-always-use-cmake-from-path.patch ./patches/0005-qtbase-find-tools-in-PATH.patch ./patches/0006-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch ./patches/0007-qtbase-allow-translations-outside-prefix.patch ./patches/0008-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch ./patches/0009-qtbase-check-in-the-QML-folder-of-this-library-does-.patch ./patches/0010-qtbase-derive-plugin-load-path-from-PATH.patch # Revert "macOS: Silence warning about supporting secure state restoration" # fix build with macOS sdk < 12.0 (fetchpatch2 { url = "https://github.com/qt/qtbase/commit/fc1549c01445bb9c99d3ba6de8fa9da230614e72.patch"; revert = true; hash = "sha256-cjB2sC4cvZn0UEc+sm6ZpjyC78ssqB1Kb5nlZQ15M4A="; }) ]; }; env = callPackage ./qt-env.nix { }; full = callPackage ({ env, qtbase }: env "qt-full-${qtbase.version}" # `with self` is ok to use here because having these spliced is unnecessary (with self;[ qt3d qt5compat qtcharts qtconnectivity qtdatavis3d qtdeclarative qtdoc qtgraphs qtgrpc qthttpserver qtimageformats qtlanguageserver qtlocation qtlottie qtmultimedia qtmqtt qtnetworkauth qtpositioning qtsensors qtserialbus qtserialport qtshadertools qtspeech qtquick3d qtquick3dphysics qtquickeffectmaker qtquicktimeline qtremoteobjects qtsvg qtscxml qttools qttranslations qtvirtualkeyboard qtwebchannel qtwebengine qtwebsockets qtwebview ] ++ lib.optionals (!stdenv.isDarwin) [ qtwayland libglvnd ])) { }; qt3d = callPackage ./modules/qt3d.nix { }; qt5compat = callPackage ./modules/qt5compat.nix { }; qtcharts = callPackage ./modules/qtcharts.nix { }; qtconnectivity = callPackage ./modules/qtconnectivity.nix { inherit (darwin.apple_sdk_11_0.frameworks) IOBluetooth PCSC; }; qtdatavis3d = callPackage ./modules/qtdatavis3d.nix { }; qtdeclarative = callPackage ./modules/qtdeclarative.nix { }; qtdoc = callPackage ./modules/qtdoc.nix { }; qtgraphs = callPackage ./modules/qtgraphs.nix { }; qtgrpc = callPackage ./modules/qtgrpc.nix { }; qthttpserver = callPackage ./modules/qthttpserver.nix { }; qtimageformats = callPackage ./modules/qtimageformats.nix { }; qtlanguageserver = callPackage ./modules/qtlanguageserver.nix { }; qtlocation = callPackage ./modules/qtlocation.nix { }; qtlottie = callPackage ./modules/qtlottie.nix { }; qtmultimedia = callPackage ./modules/qtmultimedia.nix { inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-libav gst-vaapi; inherit (darwin.apple_sdk_11_0.frameworks) VideoToolbox; }; qtmqtt = callPackage ./modules/qtmqtt.nix { }; qtnetworkauth = callPackage ./modules/qtnetworkauth.nix { }; qtpositioning = callPackage ./modules/qtpositioning.nix { }; qtsensors = callPackage ./modules/qtsensors.nix { }; qtserialbus = callPackage ./modules/qtserialbus.nix { }; qtserialport = callPackage ./modules/qtserialport.nix { }; qtshadertools = callPackage ./modules/qtshadertools.nix { }; qtspeech = callPackage ./modules/qtspeech.nix { inherit (darwin.apple_sdk_11_0.frameworks) Cocoa; }; qtquick3d = callPackage ./modules/qtquick3d.nix { }; qtquick3dphysics = callPackage ./modules/qtquick3dphysics.nix { }; qtquickeffectmaker = callPackage ./modules/qtquickeffectmaker.nix { }; qtquicktimeline = callPackage ./modules/qtquicktimeline.nix { }; qtremoteobjects = callPackage ./modules/qtremoteobjects.nix { }; qtsvg = callPackage ./modules/qtsvg.nix { }; qtscxml = callPackage ./modules/qtscxml.nix { }; qttools = callPackage ./modules/qttools.nix { }; qttranslations = callPackage ./modules/qttranslations.nix { }; qtvirtualkeyboard = callPackage ./modules/qtvirtualkeyboard.nix { }; qtwayland = callPackage ./modules/qtwayland.nix { }; qtwebchannel = callPackage ./modules/qtwebchannel.nix { }; qtwebengine = callPackage ./modules/qtwebengine.nix { inherit (darwin) autoSignDarwinBinariesHook bootstrap_cmds xnu; inherit (darwin.apple_sdk_11_0) libpm libunwind; inherit (darwin.apple_sdk_11_0.libs) sandbox; inherit (darwin.apple_sdk_11_0.frameworks) AGL AVFoundation Accelerate Cocoa CoreLocation CoreML ForceFeedback GameController ImageCaptureCore LocalAuthentication MediaAccessibility MediaPlayer MetalKit Network OpenDirectory Quartz ReplayKit SecurityInterface Vision; qtModule = callPackage ({ qtModule }: qtModule.override { stdenv = if stdenv.isDarwin then overrideSDK stdenv { darwinMinVersion = "11.0"; darwinSdkVersion = "11.0"; } else stdenv; }) { }; xcbuild = buildPackages.xcbuild.override { productBuildVer = "20A2408"; }; }; qtwebsockets = callPackage ./modules/qtwebsockets.nix { }; qtwebview = callPackage ./modules/qtwebview.nix { inherit (darwin.apple_sdk_11_0.frameworks) WebKit; }; wrapQtAppsHook = callPackage ({ makeBinaryWrapper }: makeSetupHook { name = "wrap-qt6-apps-hook"; propagatedBuildInputs = [ makeBinaryWrapper ]; } ./hooks/wrap-qt-apps-hook.sh) { }; qmake = callPackage ({ qtbase }: makeSetupHook { name = "qmake6-hook"; propagatedBuildInputs = [ qtbase.dev ]; substitutions = { fix_qmake_libtool = ./hooks/fix-qmake-libtool.sh; }; } ./hooks/qmake-hook.sh) { }; } // lib.optionalAttrs config.allowAliases { # Remove completely before 24.11 overrideScope' = builtins.throw "qt6 now uses makeScopeWithSplicing which does not have \"overrideScope'\", use \"overrideScope\"."; }; baseScope = makeScopeWithSplicing' { otherSplices = generateSplicesForMkScope "qt6"; f = addPackages; }; bootstrapScope = baseScope.overrideScope (final: prev: { qtbase = prev.qtbase.override { qttranslations = null; }; qtdeclarative = null; }); finalScope = baseScope.overrideScope (final: prev: { qttranslations = bootstrapScope.qttranslations; }); in finalScope