diff --git a/pkgs/kde/gear/falkon/default.nix b/pkgs/kde/gear/falkon/default.nix
index daa26d9ce5e7..e06fc7f6d6f7 100644
--- a/pkgs/kde/gear/falkon/default.nix
+++ b/pkgs/kde/gear/falkon/default.nix
@@ -9,6 +9,11 @@
mkKdeDerivation {
pname = "falkon";
+ # Fix build with PySide 6.9
+ # Submitted upstream: https://invent.kde.org/network/falkon/-/merge_requests/128
+ # FIXME: remove when merged
+ patches = [ ./qt-6.9.patch ];
+
extraNativeBuildInputs = [
qttools
qtwebchannel
diff --git a/pkgs/kde/gear/falkon/qt-6.9.patch b/pkgs/kde/gear/falkon/qt-6.9.patch
new file mode 100644
index 000000000000..daa2138b0126
--- /dev/null
+++ b/pkgs/kde/gear/falkon/qt-6.9.patch
@@ -0,0 +1,25 @@
+diff --git a/src/plugins/PyFalkon/typesystem_pyfalkon.xml b/src/plugins/PyFalkon/typesystem_pyfalkon.xml
+index 45f23c49e..31eff876b 100644
+--- a/src/plugins/PyFalkon/typesystem_pyfalkon.xml
++++ b/src/plugins/PyFalkon/typesystem_pyfalkon.xml
+@@ -265,7 +265,7 @@
+ QList<QByteArray> version = QByteArray(Qz::VERSION).split('.');
+ PyObject *pyFalkonVersion = PyTuple_New(3);
+ for (int i = 0; i < 3; ++i)
+- PyTuple_SET_ITEM(pyFalkonVersion, i, PyLong_FromLong(version[i].toInt()));
++ PyTuple_SetItem(pyFalkonVersion, i, PyLong_FromLong(version[i].toInt()));
+ PyModule_AddObject(module, "__version_info__", pyFalkonVersion);
+ PyModule_AddStringConstant(module, "__version__", Qz::VERSION);
+
+@@ -273,9 +273,9 @@
+
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &%6, %7);
+ %PYARG_0 = PyTuple_New(2);
+- PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
++ PyTuple_SetItem(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+ auto ARG6_PTR = &%6;
+- PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG6_TYPE](ARG6_PTR));
++ PyTuple_SetItem(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG6_TYPE](ARG6_PTR));
+
+
+