From 04c2037a77995f36293257da7cd4e968f9315360 Mon Sep 17 00:00:00 2001 From: Ming-Chuan Date: Fri, 2 Jan 2026 19:42:26 +0800 Subject: [PATCH 1/3] python3Packages.python-wayland-extra: init at 0.7.0 Co-authored-by: Sandro --- .../python-wayland-extra/default.nix | 48 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 50 insertions(+) create mode 100644 pkgs/development/python-modules/python-wayland-extra/default.nix diff --git a/pkgs/development/python-modules/python-wayland-extra/default.nix b/pkgs/development/python-modules/python-wayland-extra/default.nix new file mode 100644 index 000000000000..2a91e2729ab6 --- /dev/null +++ b/pkgs/development/python-modules/python-wayland-extra/default.nix @@ -0,0 +1,48 @@ +{ + buildPythonPackage, + fetchPypi, + lib, + hatchling, + black, + lxml, + pytest, + requests, + ruff, +}: + +buildPythonPackage rec { + pname = "python-wayland-extra"; + version = "0.7.0"; + pyproject = true; + + src = fetchPypi { + inherit version; + pname = "python_wayland_extra"; + hash = "sha256-HSBOCWP3o/BHmg3LO+LU+GpYkEYSqdljjYcEPdOnxZk="; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail ', "black", "lxml", "requests", "pytest", "ruff"' "" + ''; + + build-system = [ hatchling ]; + + dependencies = [ + lxml + requests + ]; + + # requires working wayland display + doCheck = false; + + pythonImportsCheck = [ "wayland" ]; + + meta = { + description = "Implementation of the Wayland protocol with no external dependencies"; + homepage = "https://github.com/dennisrijsdijk/python-wayland-extra"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ sifmelcara ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3d37154edde5..aacdad283737 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15593,6 +15593,8 @@ self: super: with self; { python-watcherclient = callPackage ../development/python-modules/python-watcherclient { }; + python-wayland-extra = callPackage ../development/python-modules/python-wayland-extra { }; + python-whois = callPackage ../development/python-modules/python-whois { }; python-wink = callPackage ../development/python-modules/python-wink { }; From 6e6773c862873cc2b8238f72e7b282ca45790bda Mon Sep 17 00:00:00 2001 From: Ming-Chuan Date: Fri, 2 Jan 2026 19:42:22 +0800 Subject: [PATCH 2/3] python3Packages.streamcontroller-streamdeck: init at 0.1.5 It's a fork of streamdeck package made by streamcontroller author, required by streamcontroller. pkgs/development/python-modules/streamcontroller-streamdeck/default.nix is copied from pkgs/development/python-modules/streamdeck/default.nix with minor modification. Co-authored-by: Sandro --- .../streamcontroller-streamdeck/default.nix | 44 +++++++++++++++++++ .../hardcode-libusb.patch | 13 ++++++ pkgs/top-level/python-packages.nix | 4 ++ 3 files changed, 61 insertions(+) create mode 100644 pkgs/development/python-modules/streamcontroller-streamdeck/default.nix create mode 100644 pkgs/development/python-modules/streamcontroller-streamdeck/hardcode-libusb.patch diff --git a/pkgs/development/python-modules/streamcontroller-streamdeck/default.nix b/pkgs/development/python-modules/streamcontroller-streamdeck/default.nix new file mode 100644 index 000000000000..413ec089a865 --- /dev/null +++ b/pkgs/development/python-modules/streamcontroller-streamdeck/default.nix @@ -0,0 +1,44 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchPypi, + replaceVars, + pkgs, + setuptools, +}: + +buildPythonPackage rec { + pname = "streamcontroller-streamdeck"; + version = "0.1.5"; + pyproject = true; + + src = fetchPypi { + inherit version; + pname = "streamcontroller_streamdeck"; + hash = "sha256-JSDCg9PLDqxM1KdoCEnYzJip71re6rdS/mLn6fsGn9E="; + }; + + patches = [ + # substitute libusb path + (replaceVars ./hardcode-libusb.patch { + libusb = "${pkgs.hidapi}/lib/libhidapi-libusb${stdenv.hostPlatform.extensions.sharedLibrary}"; + }) + ]; + + build-system = [ setuptools ]; + + pythonImportsCheck = [ "StreamDeck" ]; + doCheck = false; + + meta = with lib; { + # This is a fork of abcminiuser/python-elgato-streamdeck targeted at StreamController. + description = "Python library to control the Elgato Stream Deck"; + homepage = "https://github.com/StreamController/streamcontroller-python-elgato-streamdeck"; + license = licenses.mit; + maintainers = with maintainers; [ + majiir + sifmelcara + ]; + }; +} diff --git a/pkgs/development/python-modules/streamcontroller-streamdeck/hardcode-libusb.patch b/pkgs/development/python-modules/streamcontroller-streamdeck/hardcode-libusb.patch new file mode 100644 index 000000000000..6ef87025655f --- /dev/null +++ b/pkgs/development/python-modules/streamcontroller-streamdeck/hardcode-libusb.patch @@ -0,0 +1,13 @@ +diff --git a/src/StreamDeck/Transport/LibUSBHIDAPI.py b/src/StreamDeck/Transport/LibUSBHIDAPI.py +index edf53a1..2d38af3 100644 +--- a/src/StreamDeck/Transport/LibUSBHIDAPI.py ++++ b/src/StreamDeck/Transport/LibUSBHIDAPI.py +@@ -155,7 +155,7 @@ class LibUSBHIDAPI(Transport): + + search_library_names = { + "Windows": ["hidapi.dll", "libhidapi-0.dll", "./hidapi.dll"], +- "Linux": ["libhidapi-libusb.so", "libhidapi-libusb.so.0"], ++ "Linux": ["@libusb@"], + "Darwin": ["libhidapi.dylib"], + "FreeBSD": ["libhidapi.so"], + } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index aacdad283737..93c5393ff1e4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18212,6 +18212,10 @@ self: super: with self; { callPackage ../development/python-modules/streamcontroller-plugin-tools { }; + streamcontroller-streamdeck = + callPackage ../development/python-modules/streamcontroller-streamdeck + { }; + streamdeck = callPackage ../development/python-modules/streamdeck { }; streaming-form-data = callPackage ../development/python-modules/streaming-form-data { }; From 1986d1b137744a959d77be729f23f273fba2f61e Mon Sep 17 00:00:00 2001 From: Ming-Chuan Date: Fri, 2 Jan 2026 19:42:18 +0800 Subject: [PATCH 3/3] streamcontroller: 1.5.0-beta.8 -> 1.5.0-beta.12 --- pkgs/by-name/st/streamcontroller/package.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/st/streamcontroller/package.nix b/pkgs/by-name/st/streamcontroller/package.nix index b8137979170c..fba6d917c05d 100644 --- a/pkgs/by-name/st/streamcontroller/package.nix +++ b/pkgs/by-name/st/streamcontroller/package.nix @@ -18,19 +18,19 @@ }: let # We have to hardcode revision because upstream often create multiple releases for the same version number. - # This is the commit hash that maps to 1.5.0-beta.8 released on 2025-03-12 - rev = "de11d84afac7873044568606a8468c78d57aceda"; + # This is the commit hash that maps to 1.5.0-beta.12 released on 2025-10-11 + rev = "73b7632ff2977d05763acd56e53bdc7a37d30c0c"; in stdenv.mkDerivation { pname = "streamcontroller"; - version = "1.5.0-beta.8"; + version = "1.5.0-beta.12"; src = fetchFromGitHub { repo = "StreamController"; owner = "StreamController"; inherit rev; - hash = "sha256-pE92/oX9iZYCIhwDkPkjPq/cDUQLUGs+Ou5rjFEIBpo="; + hash = "sha256-6H0FPkvjKSfso1+E0JwseOnubDXwYys0RVBbyaGCXw0="; }; # The installation method documented upstream @@ -167,6 +167,7 @@ stdenv.mkDerivation { pyro5 pyspellchecker python-dateutil + python-wayland-extra pyudev pyusb pyyaml @@ -182,7 +183,7 @@ stdenv.mkDerivation { smmap speedtest-cli streamcontroller-plugin-tools - streamdeck + streamcontroller-streamdeck textual tinycss2 tqdm