diff --git a/pkgs/development/python-modules/guidata/default.nix b/pkgs/development/python-modules/guidata/default.nix
new file mode 100644
index 000000000000..5ff6a5f37243
--- /dev/null
+++ b/pkgs/development/python-modules/guidata/default.nix
@@ -0,0 +1,96 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  qtpy,
+  h5py,
+  requests,
+  tomli,
+
+  # tests
+  pytestCheckHook,
+  qt6,
+  pyqt6,
+
+  # passthru.tests
+  guidata,
+  pyside6,
+  qt5,
+  pyqt5,
+  pyside2,
+}:
+
+buildPythonPackage rec {
+  pname = "guidata";
+  version = "3.6.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "PlotPyStack";
+    repo = "guidata";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-KfeA6XNbzHZM4dyvAYlPOQIwWHwFT3Akj34zmgf8tb8=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    numpy
+    qtpy
+    h5py
+    requests
+    tomli
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    # Not propagating this, to allow one to choose to choose a pyqt / pyside
+    # implementation.
+    pyqt6
+  ];
+
+  preCheck = ''
+    export QT_PLUGIN_PATH="${lib.getBin qt6.qtbase}/${qt6.qtbase.qtPluginPrefix}"
+    export QT_QPA_PLATFORM=offscreen
+  '';
+
+  pythonImportsCheck = [ "guidata" ];
+
+  passthru = {
+    tests = {
+      # Should be compatible with all of these Qt implementations
+      withPyQt6 = guidata.override {
+        pyqt6 = pyqt6;
+        qt6 = qt6;
+      };
+      withPySide6 = guidata.override {
+        pyqt6 = pyside6;
+        qt6 = qt6;
+      };
+      withPyQt5 = guidata.override {
+        pyqt6 = pyqt5;
+        qt6 = qt5;
+      };
+      withPySide2 = guidata.override {
+        pyqt6 = pyside2;
+        qt6 = qt5;
+      };
+    };
+  };
+
+  meta = {
+    description = "Python library generating graphical user interfaces for easy dataset editing and display";
+    homepage = "https://github.com/PlotPyStack/guidata";
+    changelog = "https://github.com/PlotPyStack/guidata/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 2e8daa5361b8..edd0f1ca7aab 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -5486,6 +5486,8 @@ self: super: with self; {
 
   guidance = callPackage ../development/python-modules/guidance { };
 
+  guidata = callPackage ../development/python-modules/guidata { };
+
   gumath = callPackage ../development/python-modules/gumath { };
 
   gunicorn = callPackage ../development/python-modules/gunicorn { };