diff --git a/nixos/modules/programs/streamdeck-ui.nix b/nixos/modules/programs/streamdeck-ui.nix index 4c055029e39..220f0a35f16 100644 --- a/nixos/modules/programs/streamdeck-ui.nix +++ b/nixos/modules/programs/streamdeck-ui.nix @@ -24,7 +24,7 @@ in config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ cfg.package - (mkIf cfg.autoStart (makeAutostartItem { name = "streamdeck-ui"; package = cfg.package; })) + (mkIf cfg.autoStart (makeAutostartItem { name = "streamdeck-ui-noui"; package = cfg.package; })) ]; services.udev.packages = [ cfg.package ]; diff --git a/pkgs/applications/misc/streamdeck-ui/default.nix b/pkgs/applications/misc/streamdeck-ui/default.nix index 1c1aa80de79..94d2791530a 100644 --- a/pkgs/applications/misc/streamdeck-ui/default.nix +++ b/pkgs/applications/misc/streamdeck-ui/default.nix @@ -1,48 +1,46 @@ { lib , python3Packages , fetchFromGitHub -, fetchpatch , copyDesktopItems -, wrapQtAppsHook , writeText , makeDesktopItem , xvfb-run -, qt5 +, qt6 }: python3Packages.buildPythonApplication rec { pname = "streamdeck-ui"; - version = "2.0.6"; + version = "3.0.1"; src = fetchFromGitHub { - repo = pname; - owner = "timothycrosley"; + repo = "streamdeck-linux-gui"; + owner = "streamdeck-linux-gui"; rev = "v${version}"; - sha256 = "sha256-5dk+5oefg5R68kv038gsZ2p5ixmpj/vBLBp/V7Sdos8="; + sha256 = "sha256-nLtWExxufxT5nRiEYLGNeMhFhvlGzYKA+crA74Yt4ck="; }; patches = [ - (fetchpatch { - name = "use-poetry-core.patch"; - url = "https://github.com/timothycrosley/streamdeck-ui/commit/e271656c1f47b1619d1b942e2ebb01ab2d6a68a9.patch"; - hash = "sha256-wqYwX6eSqMnW6OG7wSprD62Dz818ayFduVrqW9E/ays="; - }) - (fetchpatch { - name = "update-python-xlib-0.33.patch"; - url = "https://github.com/timothycrosley/streamdeck-ui/commit/07d7fdd33085b413dd26b02d8a02820edad2d568.patch"; - hash = "sha256-PylTrbfB8RJ0+kbgJlRdcvfdahGoob8LabwhuFNsUpY="; - }) + # nixpkgs has a newer pillow version + ./update-pillow.patch ]; - desktopItems = [ (makeDesktopItem { - name = "streamdeck-ui"; - desktopName = "Stream Deck UI"; - icon = "streamdeck-ui"; - exec = "streamdeck --no-ui"; - comment = "UI for the Elgato Stream Deck"; - categories = [ "Utility" ]; - noDisplay = true; - }) ]; + desktopItems = let + common = { + name = "streamdeck-ui"; + desktopName = "Stream Deck UI"; + icon = "streamdeck-ui"; + exec = "streamdeck"; + comment = "UI for the Elgato Stream Deck"; + categories = [ "Utility" ]; + }; + in builtins.map makeDesktopItem [ + common + (common // { + name = "${common.name}-noui"; + exec = "${common.exec} --no-ui"; + noDisplay = true; + }) + ]; postInstall = let @@ -51,6 +49,10 @@ python3Packages.buildPythonApplication rec { ''; in '' + mkdir -p $out/lib/systemd/user + substitute scripts/streamdeck.service $out/lib/systemd/user/streamdeck.service \ + --replace '' $out/bin/streamdeck + mkdir -p "$out/etc/udev/rules.d" cp ${writeText "70-streamdeck.rules" udevRules} $out/etc/udev/rules.d/70-streamdeck.rules @@ -66,7 +68,7 @@ python3Packages.buildPythonApplication rec { nativeBuildInputs = [ python3Packages.poetry-core copyDesktopItems - wrapQtAppsHook + qt6.wrapQtAppsHook ]; propagatedBuildInputs = with python3Packages; [ @@ -75,11 +77,11 @@ python3Packages.buildPythonApplication rec { cairosvg pillow pynput - pyside2 + pyside6 streamdeck xlib ] ++ lib.optionals stdenv.isLinux [ - qt5.qtwayland + qt6.qtwayland ]; nativeCheckInputs = [ @@ -89,18 +91,15 @@ python3Packages.buildPythonApplication rec { ]; # Ignored tests are not in a running or passing state. - # Fixes have been merged upstream but not yet released. # Revisit these ignored tests on each update. checkPhase = '' xvfb-run pytest tests \ - --ignore=tests/test_api.py \ - --ignore=tests/test_filter.py \ - --ignore=tests/test_stream_deck_monitor.py + --ignore=tests/test_api.py ''; meta = with lib; { description = "Linux compatible UI for the Elgato Stream Deck"; - homepage = "https://timothycrosley.github.io/streamdeck-ui/"; + homepage = "https://streamdeck-linux-gui.github.io/streamdeck-linux-gui/"; license = licenses.mit; maintainers = with maintainers; [ majiir ]; }; diff --git a/pkgs/applications/misc/streamdeck-ui/update-pillow.patch b/pkgs/applications/misc/streamdeck-ui/update-pillow.patch new file mode 100644 index 00000000000..88945586628 --- /dev/null +++ b/pkgs/applications/misc/streamdeck-ui/update-pillow.patch @@ -0,0 +1,13 @@ +diff --git a/pyproject.toml b/pyproject.toml +index 0aff29e..4371616 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -14,7 +14,7 @@ packages = [ + [tool.poetry.dependencies] + python = ">=3.8,<3.12" + streamdeck = "^0.9.3" +-pillow = "^9.4.0" ++pillow = "^10.0.0" + pynput = "^1.7.6" + pyside6 = "^6.4.2" + CairoSVG = "^2.5.2" diff --git a/pkgs/development/libraries/qt-6/default.nix b/pkgs/development/libraries/qt-6/default.nix index 0a4fbe713ec..d0c298e5192 100644 --- a/pkgs/development/libraries/qt-6/default.nix +++ b/pkgs/development/libraries/qt-6/default.nix @@ -9,6 +9,7 @@ , libglvnd , darwin , buildPackages +, python3 # options , developerBuild ? false @@ -24,7 +25,7 @@ let addPackages = self: with self; let callPackage = self.newScope ({ - inherit qtModule srcs; + inherit qtModule srcs python3; stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; }); in diff --git a/pkgs/development/python-modules/pyside6/default.nix b/pkgs/development/python-modules/pyside6/default.nix index bf467bc1dd2..be99c0a086f 100644 --- a/pkgs/development/python-modules/pyside6/default.nix +++ b/pkgs/development/python-modules/pyside6/default.nix @@ -2,7 +2,6 @@ , stdenv , cmake , ninja -, qt6 , python , moveBuildTree , shiboken6 @@ -34,9 +33,12 @@ stdenv.mkDerivation rec { moveBuildTree ]; - buildInputs = with qt6; [ + buildInputs = with python.pkgs.qt6; [ # required qtbase + python.pkgs.ninja + python.pkgs.packaging + python.pkgs.setuptools ] ++ lib.optionals stdenv.isLinux [ # optional qt3d @@ -69,6 +71,12 @@ stdenv.mkDerivation rec { dontWrapQtApps = true; + postInstall = '' + cd ../../.. + ${python.pythonForBuild.interpreter} setup.py egg_info --build-type=pyside6 + cp -r PySide6.egg-info $out/${python.sitePackages}/ + ''; + meta = with lib; { description = "Python bindings for Qt"; license = with licenses; [ lgpl3Only gpl2Only gpl3Only ]; diff --git a/pkgs/development/python-modules/shiboken6/default.nix b/pkgs/development/python-modules/shiboken6/default.nix index d3412483933..ca227a625b7 100644 --- a/pkgs/development/python-modules/shiboken6/default.nix +++ b/pkgs/development/python-modules/shiboken6/default.nix @@ -2,7 +2,6 @@ , fetchurl , llvmPackages , python -, qt6 , cmake , autoPatchelfHook , stdenv @@ -38,7 +37,10 @@ stdenv'.mkDerivation rec { buildInputs = [ llvmPackages.llvm llvmPackages.libclang - qt6.qtbase + python.pkgs.qt6.qtbase + python.pkgs.ninja + python.pkgs.packaging + python.pkgs.setuptools ]; cmakeFlags = [ @@ -57,6 +59,12 @@ stdenv'.mkDerivation rec { patchelf $out/${python.sitePackages}/shiboken6/Shiboken.abi3.so --shrink-rpath --allowed-rpath-prefixes ${builtins.storeDir} ''; + postInstall = '' + cd ../../.. + ${python.pythonForBuild.interpreter} setup.py egg_info --build-type=shiboken6 + cp -r shiboken6.egg-info $out/${python.sitePackages}/ + ''; + dontWrapQtApps = true; meta = with lib; { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9984fe3c40e..e68bf37fd5b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -32782,7 +32782,7 @@ with pkgs; srain = callPackage ../applications/networking/irc/srain { }; - streamdeck-ui = libsForQt5.callPackage ../applications/misc/streamdeck-ui { }; + streamdeck-ui = callPackage ../applications/misc/streamdeck-ui { }; super-productivity = callPackage ../applications/office/super-productivity { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4c2d9d5d52e..25325652e65 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9900,7 +9900,7 @@ self: super: with self; { }); pyside6 = toPythonModule (callPackage ../development/python-modules/pyside6 { - inherit (pkgs) cmake ninja qt6; + inherit (pkgs) cmake ninja; }); pysigma = callPackage ../development/python-modules/pysigma { }; @@ -10910,6 +10910,10 @@ self: super: with self; { qt5reactor = callPackage ../development/python-modules/qt5reactor { }; + qt6 = pkgs.qt6.override { + python3 = self.python; + }; + qtawesome = callPackage ../development/python-modules/qtawesome { }; qtconsole = callPackage ../development/python-modules/qtconsole { }; @@ -11737,7 +11741,7 @@ self: super: with self; { }); shiboken6 = toPythonModule (callPackage ../development/python-modules/shiboken6 { - inherit (pkgs) cmake llvmPackages qt6; + inherit (pkgs) cmake llvmPackages; }); shippai = callPackage ../development/python-modules/shippai { };