nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ lib
2, buildPythonPackage
3, isPy27
4, fetchPypi
5, pkg-config
6, dbus
7, lndir
8, dbus-python
9, sip
10, pyqt5_sip
11, pyqt-builder
12, libsForQt5
13, withConnectivity ? false
14, withMultimedia ? false
15, withWebKit ? false
16, withWebSockets ? false
17, withLocation ? false
18}:
19
20buildPythonPackage rec {
21 pname = "PyQt5";
22 version = "5.15.4";
23 format = "pyproject";
24
25 disabled = isPy27;
26
27 src = fetchPypi {
28 inherit pname version;
29 sha256 = "1gp5jz71nmg58zsm1h4vzhcphf36rbz37qgsfnzal76i1mz5js9a";
30 };
31
32 outputs = [ "out" "dev" ];
33
34 dontWrapQtApps = true;
35
36 nativeBuildInputs = with libsForQt5; [
37 pkg-config
38 qmake
39 lndir
40 sip
41 qtbase
42 qtsvg
43 qtdeclarative
44 qtwebchannel
45 ]
46 ++ lib.optional withConnectivity qtconnectivity
47 ++ lib.optional withMultimedia qtmultimedia
48 ++ lib.optional withWebKit qtwebkit
49 ++ lib.optional withWebSockets qtwebsockets
50 ++ lib.optional withLocation qtlocation
51 ;
52
53 buildInputs = with libsForQt5; [
54 dbus
55 qtbase
56 qtsvg
57 qtdeclarative
58 pyqt-builder
59 ]
60 ++ lib.optional withConnectivity qtconnectivity
61 ++ lib.optional withWebKit qtwebkit
62 ++ lib.optional withWebSockets qtwebsockets
63 ++ lib.optional withLocation qtlocation
64 ;
65
66 propagatedBuildInputs = [
67 dbus-python
68 pyqt5_sip
69 ];
70
71 patches = [
72 # Fix some wrong assumptions by ./project.py
73 # TODO: figure out how to send this upstream
74 ./pyqt5-fix-dbus-mainloop-support.patch
75 ];
76
77 passthru = {
78 inherit sip pyqt5_sip;
79 multimediaEnabled = withMultimedia;
80 webKitEnabled = withWebKit;
81 WebSocketsEnabled = withWebSockets;
82 };
83
84 dontConfigure = true;
85
86 # Checked using pythonImportsCheck
87 doCheck = false;
88
89 pythonImportsCheck = [
90 "PyQt5"
91 "PyQt5.QtCore"
92 "PyQt5.QtQml"
93 "PyQt5.QtWidgets"
94 "PyQt5.QtGui"
95 ]
96 ++ lib.optional withWebSockets "PyQt5.QtWebSockets"
97 ++ lib.optional withWebKit "PyQt5.QtWebKit"
98 ++ lib.optional withMultimedia "PyQt5.QtMultimedia"
99 ++ lib.optional withConnectivity "PyQt5.QtConnectivity"
100 ++ lib.optional withLocation "PyQt5.QtPositioning"
101 ;
102
103 meta = with lib; {
104 description = "Python bindings for Qt5";
105 homepage = "https://riverbankcomputing.com/";
106 license = licenses.gpl3Only;
107 platforms = platforms.mesaPlatforms;
108 maintainers = with maintainers; [ sander ];
109 };
110}