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