nixpkgs/pkgs/applications/misc/streamdeck-ui/default.nix
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

105 lines
2.6 KiB
Nix

{ lib
, python3Packages
, fetchFromGitHub
, fetchpatch
, copyDesktopItems
, wrapQtAppsHook
, writeText
, makeDesktopItem
, xvfb-run
}:
python3Packages.buildPythonApplication rec {
pname = "streamdeck-ui";
version = "2.0.6";
src = fetchFromGitHub {
repo = pname;
owner = "timothycrosley";
rev = "v${version}";
sha256 = "sha256-5dk+5oefg5R68kv038gsZ2p5ixmpj/vBLBp/V7Sdos8=";
};
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=";
})
];
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;
}) ];
postInstall =
let
udevRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", TAG+="uaccess"
'';
in
''
mkdir -p "$out/etc/udev/rules.d"
cp ${writeText "70-streamdeck.rules" udevRules} $out/etc/udev/rules.d/70-streamdeck.rules
mkdir -p "$out/share/pixmaps"
cp streamdeck_ui/logo.png $out/share/pixmaps/streamdeck-ui.png
'';
dontWrapQtApps = true;
makeWrapperArgs = [ "\${qtWrapperArgs[@]}" ];
format = "pyproject";
nativeBuildInputs = [
python3Packages.poetry-core
copyDesktopItems
wrapQtAppsHook
];
propagatedBuildInputs = with python3Packages; [
setuptools
filetype
cairosvg
pillow
pynput
pyside2
streamdeck
xlib
];
nativeCheckInputs = [
xvfb-run
python3Packages.pytest
python3Packages.hypothesis-auto
];
# 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
'';
meta = with lib; {
description = "Linux compatible UI for the Elgato Stream Deck";
homepage = "https://timothycrosley.github.io/streamdeck-ui/";
license = licenses.mit;
maintainers = with maintainers; [ majiir ];
};
}