nixpkgs/pkgs/development/libraries/qt-6/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

225 lines
8.6 KiB
Nix
Raw Normal View History

2021-10-16 12:22:24 +00:00
{ newScope
, lib
, stdenv
2023-11-04 21:11:00 +00:00
, generateSplicesForMkScope
, makeScopeWithSplicing'
2021-10-16 12:22:24 +00:00
, fetchurl
, fetchpatch
, fetchpatch2
2021-10-16 12:22:24 +00:00
, makeSetupHook
, makeWrapper
, gst_all_1
2022-07-16 13:30:49 +00:00
, libglvnd
2022-11-28 23:33:35 +00:00
, darwin
, overrideSDK
2022-06-13 16:40:20 +00:00
, buildPackages
, python3
2023-11-04 21:11:00 +00:00
, config
2021-10-16 12:22:24 +00:00
# options
, developerBuild ? false
, debug ? false
}:
let
srcs = import ./srcs.nix {
inherit fetchurl;
mirror = "mirror://qt";
};
addPackages = self:
2021-10-16 12:22:24 +00:00
let
callPackage = self.newScope ({
inherit (self) qtModule;
inherit srcs python3;
stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv;
});
2021-10-16 12:22:24 +00:00
in
{
2023-04-10 09:50:44 +00:00
inherit callPackage srcs;
qtModule = callPackage ./qtModule.nix { };
2021-10-16 12:22:24 +00:00
qtbase = callPackage ./modules/qtbase.nix {
withGtk3 = true;
inherit (srcs.qtbase) src version;
inherit developerBuild;
inherit (darwin.apple_sdk_11_0.frameworks)
AGL AVFoundation AppKit Contacts CoreBluetooth EventKit GSS MetalKit;
2022-08-14 17:18:40 +00:00
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
2023-11-27 15:37:13 +00:00
./patches/0004-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch
./patches/0005-qtbase-qt-cmake-always-use-cmake-from-path.patch
./patches/0006-qtbase-find-tools-in-PATH.patch
./patches/0007-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
./patches/0008-qtbase-allow-translations-outside-prefix.patch
./patches/0009-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch
./patches/0010-qtbase-check-in-the-QML-folder-of-this-library-does-.patch
./patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch
2023-11-27 21:22:18 +00:00
# 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=";
})
# CVE-2023-51714: Potential Integer Overflow in Qt's HTTP2 implementation
# https://www.qt.io/blog/security-advisory-potential-integer-overflow-in-qts-http2-implementation
(fetchpatch2 {
url = "https://download.qt.io/official_releases/qt/6.5/0001-CVE-2023-51714-qtbase-6.5.diff";
hash = "sha256-0Xnolq9dWkKUrmLUlv15uQ9nkZXrY3AsmvChaLX8P2I=";
})
(fetchpatch2 {
url = "https://download.qt.io/official_releases/qt/6.6/0002-CVE-2023-51714-qtbase-6.6.diff";
hash = "sha256-+/u3vy5Ci6Z4jy00L07iYAnqHvVdqUzqVnT9uVIqs60=";
})
2022-08-14 17:18:40 +00:00
];
2021-10-16 12:22:24 +00:00
};
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;[
2022-07-16 13:30:49 +00:00
qt3d
qt5compat
qtcharts
qtconnectivity
2023-04-04 01:24:40 +00:00
qtdatavis3d
2022-07-16 13:30:49 +00:00
qtdeclarative
qtdoc
2023-10-10 15:39:32 +00:00
qtgraphs
2023-04-04 01:19:51 +00:00
qtgrpc
2023-04-04 01:24:40 +00:00
qthttpserver
2022-07-16 13:30:49 +00:00
qtimageformats
2023-04-04 01:24:40 +00:00
qtlanguageserver
2023-04-04 01:09:54 +00:00
qtlocation
2022-07-16 13:30:49 +00:00
qtlottie
qtmultimedia
qtmqtt
2022-07-16 13:30:49 +00:00
qtnetworkauth
qtpositioning
qtsensors
qtserialbus
qtserialport
qtshadertools
2023-04-04 01:24:40 +00:00
qtspeech
2022-07-16 13:30:49 +00:00
qtquick3d
2023-04-04 01:24:40 +00:00
qtquick3dphysics
2023-04-04 01:14:25 +00:00
qtquickeffectmaker
2023-04-04 01:24:40 +00:00
qtquicktimeline
qtremoteobjects
2022-07-16 13:30:49 +00:00
qtsvg
qtscxml
qttools
qttranslations
qtvirtualkeyboard
qtwebchannel
qtwebengine
qtwebsockets
qtwebview
] ++ lib.optionals (!stdenv.isDarwin) [ qtwayland libglvnd ])) { };
2021-10-16 12:22:24 +00:00
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;
};
2021-10-16 12:22:24 +00:00
qtdatavis3d = callPackage ./modules/qtdatavis3d.nix { };
qtdeclarative = callPackage ./modules/qtdeclarative.nix { };
qtdoc = callPackage ./modules/qtdoc.nix { };
2023-10-10 15:39:32 +00:00
qtgraphs = callPackage ./modules/qtgraphs.nix { };
2023-10-10 15:25:59 +00:00
qtgrpc = callPackage ./modules/qtgrpc.nix { };
2022-09-29 13:19:28 +00:00
qthttpserver = callPackage ./modules/qthttpserver.nix { };
2021-10-16 12:22:24 +00:00
qtimageformats = callPackage ./modules/qtimageformats.nix { };
qtlanguageserver = callPackage ./modules/qtlanguageserver.nix { };
2023-04-04 01:09:54 +00:00
qtlocation = callPackage ./modules/qtlocation.nix { };
2021-10-16 12:22:24 +00:00
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;
2021-10-16 12:22:24 +00:00
};
qtmqtt = callPackage ./modules/qtmqtt.nix { };
2021-10-16 12:22:24 +00:00
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;
};
2021-10-16 12:22:24 +00:00
qtquick3d = callPackage ./modules/qtquick3d.nix { };
2022-09-29 13:31:45 +00:00
qtquick3dphysics = callPackage ./modules/qtquick3dphysics.nix { };
2023-04-04 01:14:25 +00:00
qtquickeffectmaker = callPackage ./modules/qtquickeffectmaker.nix { };
2021-10-16 12:22:24 +00:00
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 cctools 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 = "10.13"; darwinSdkVersion = "11.0"; }
else stdenv;
}) { };
xcbuild = buildPackages.xcbuild.override {
productBuildVer = "20A2408";
};
};
2021-10-16 12:22:24 +00:00
qtwebsockets = callPackage ./modules/qtwebsockets.nix { };
qtwebview = callPackage ./modules/qtwebview.nix {
inherit (darwin.apple_sdk_11_0.frameworks) WebKit;
};
2021-10-16 12:22:24 +00:00
wrapQtAppsHook = callPackage ({ makeBinaryWrapper }: makeSetupHook
{
name = "wrap-qt6-apps-hook";
propagatedBuildInputs = [ makeBinaryWrapper ];
} ./hooks/wrap-qt-apps-hook.sh) { };
2022-08-14 17:18:40 +00:00
qmake = callPackage ({ qtbase }: makeSetupHook
{
name = "qmake6-hook";
propagatedBuildInputs = [ qtbase.dev ];
substitutions = {
inherit debug;
fix_qmake_libtool = ./hooks/fix-qmake-libtool.sh;
};
} ./hooks/qmake-hook.sh) { };
2023-11-04 21:11:00 +00:00
} // lib.optionalAttrs config.allowAliases {
# Convert to a throw on 03-01-2023 and backport the change.
# Warnings show up in various cli tool outputs, throws do not.
# Remove completely before 24.05
overrideScope' = lib.warnIf (lib.isInOldestRelease 2311) "qt6 now uses makeScopeWithSplicing which does not have \"overrideScope'\", use \"overrideScope\"." self.overrideScope;
2021-10-16 12:22:24 +00:00
};
2023-11-04 21:11:00 +00:00
baseScope = makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "qt6";
f = addPackages;
};
2023-07-29 10:52:02 +00:00
bootstrapScope = baseScope.overrideScope(final: prev: {
2023-07-29 10:52:02 +00:00
qtbase = prev.qtbase.override { qttranslations = null; };
qtdeclarative = null;
});
finalScope = baseScope.overrideScope(final: prev: {
2023-07-29 10:52:02 +00:00
qttranslations = bootstrapScope.qttranslations;
});
in finalScope