nixos/streamcontroller: init, streamcontroller: init at 1.5.0-beta.6-unstable-2024-08-13, pythonPackages.usb-monitor: init at 1.21 (#335545)

This commit is contained in:
Sandro 2024-08-28 11:38:05 +02:00 committed by GitHub
commit 84c8d21c64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 282 additions and 0 deletions

View File

@ -286,6 +286,7 @@
./programs/ssh.nix
./programs/starship.nix
./programs/steam.nix
./programs/streamcontroller.nix
./programs/streamdeck-ui.nix
./programs/sysdig.nix
./programs/system-config-printer.nix

View File

@ -0,0 +1,22 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.programs.streamcontroller;
in
{
options.programs.streamcontroller = {
enable = lib.mkEnableOption "StreamController";
package = lib.mkPackageOption pkgs "streamcontroller" { default = [ "streamcontroller" ]; };
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
services.udev.packages = [ cfg.package ];
};
meta.maintainers = with lib.maintainers; [ sifmelcara ];
}

View File

@ -0,0 +1,190 @@
{
stdenv,
lib,
python3Packages,
fetchFromGitHub,
copyDesktopItems,
makeDesktopItem,
wrapGAppsHook4,
gobject-introspection,
libadwaita,
libportal,
libportal-gtk4,
xdg-desktop-portal,
xdg-desktop-portal-gtk,
}:
stdenv.mkDerivation rec {
pname = "streamcontroller";
# Note that the latest tagged version (1.5.0-beta.6) includes a python dependency
# that doesn't exist anymore, so we package an unstable version instead.
version = "1.5.0-beta.6-unstable-2024-08-13";
src = fetchFromGitHub {
repo = "StreamController";
owner = "StreamController";
rev = "dbb6460a69137af192db09d504224ae9f1127cbd";
hash = "sha256-+YYzHLRU5MNjF3iaKIDj9k4PVg+vnEZhbc3ZmNI7xyw=";
};
# The installation method documented upstream
# (https://streamcontroller.github.io/docs/latest/installation/) is to clone the repo,
# run `pip install`, then run `python3 main.py` to launch the program.
# Due to how the code is structured upstream, it's infeasible to use `buildPythonApplication`.
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/usr/lib/streamcontroller
cp -r ./* $out/usr/lib/streamcontroller/
mkdir -p $out/bin/
# Note that the implementation of main.py assumes
# working directory to be at the root of the project's source code
makeWrapper \
${python3Packages.python.interpreter} \
$out/bin/streamcontroller \
--add-flags main.py \
--chdir $out/usr/lib/streamcontroller \
--prefix PYTHONPATH : "$PYTHONPATH"
mkdir -p "$out/etc/udev/rules.d"
cp ./udev.rules $out/etc/udev/rules.d/70-streamcontroller.rules
install -D ./flatpak/icon_256.png $out/share/icons/hicolor/256x256/apps/streamcontroller.png
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "StreamController";
desktopName = "StreamController";
exec = "streamcontroller";
icon = "streamcontroller";
comment = "Control your Elgato Stream Decks";
categories = [ "Utility" ];
})
];
nativeBuildInputs = [
copyDesktopItems
wrapGAppsHook4
gobject-introspection
];
buildInputs =
[
libadwaita
libportal
libportal-gtk4
xdg-desktop-portal
xdg-desktop-portal-gtk
]
++ (with python3Packages; [
annotated-types
async-lru
cairocffi
cairosvg
certifi
cffi
charset-normalizer
click
colorama
contourpy
cssselect2
cycler
dbus-python
decorator
defusedxml
distlib
dnspython
evdev
filelock
fonttools
fuzzywuzzy
gcodepy
get-video-properties
gitdb
idna
imageio
imageio-ffmpeg
indexed-bzip2
jinja2
joblib
kiwisolver
levenshtein
linkify-it-py
loguru
markdown-it-py
markupsafe
matplotlib
mdit-py-plugins
mdurl
meson
meson-python
natsort
nltk
numpy
opencv4
packaging
pillow
platformdirs
plumbum
proglog
psutil
pulsectl
pycairo
pyclip
pycparser
pydantic
pydantic-core
pyenchant
pygments
pygobject3
pymongo
pyparsing
pyperclip
pyproject-metadata
pyro5
pyspellchecker
python-dateutil
pyudev
pyusb
pyyaml
rapidfuzz
regex
requests
requirements-parser
rich
rpyc
serpent
setproctitle
six
smmap
speedtest-cli
streamcontroller-plugin-tools
streamdeck
textual
tinycss2
tqdm
types-setuptools
typing-extensions
uc-micro-py
urllib3
usb-monitor
webencodings
websocket-client
]);
meta = with lib; {
description = "Elegant Linux app for the Elgato Stream Deck with support for plugins";
homepage = "https://core447.com/";
license = licenses.gpl3;
mainProgram = "streamcontroller";
maintainers = with maintainers; [ sifmelcara ];
platforms = lib.platforms.linux;
};
}

View File

@ -0,0 +1,33 @@
{
buildPythonPackage,
fetchFromGitHub,
lib,
loguru,
rpyc,
}:
buildPythonPackage rec {
pname = "streamcontroller-plugin-tools";
version = "2.0.0";
src = fetchFromGitHub {
owner = "StreamController";
repo = "streamcontroller-plugin-tools";
rev = version;
hash = "sha256-dQZPRSzHhI3X+Pf7miwJlECGFgUfp68PtvwXAmpq5/s=";
};
dependencies = [
loguru
rpyc
];
pythonImportsCheck = [ "streamcontroller_plugin_tools" ];
meta = with lib; {
description = "StreamController plugin tools";
homepage = "https://github.com/StreamController/streamcontroller-plugin-tools";
license = licenses.gpl3;
maintainers = with maintainers; [ sifmelcara ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,32 @@
{
buildPythonPackage,
fetchPypi,
lib,
pyudev,
}:
buildPythonPackage rec {
pname = "usb-monitor";
version = "1.21";
src = fetchPypi {
inherit version;
pname = "usb_monitor";
hash = "sha256-M+BUmbNxQWcULFECexTnp55EZiJ6y3bYCEtSwqKldAk=";
};
dependencies = [ pyudev ];
# has no tests
doCheck = false;
pythonImportsCheck = [ "usbmonitor" ];
meta = {
description = "Cross-platform library for USB device monitoring";
homepage = "https://github.com/Eric-Canas/USBMonitor";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ sifmelcara ];
platforms = lib.platforms.linux;
};
}

View File

@ -15176,6 +15176,8 @@ self: super: with self; {
strct = callPackage ../development/python-modules/strct { };
streamcontroller-plugin-tools = callPackage ../development/python-modules/streamcontroller-plugin-tools { };
streamdeck = callPackage ../development/python-modules/streamdeck { };
streaming-form-data = callPackage ../development/python-modules/streaming-form-data { };
@ -17170,6 +17172,8 @@ self: super: with self; {
usb-devices = callPackage ../development/python-modules/usb-devices { };
usb-monitor = callPackage ../development/python-modules/usb-monitor { };
usbrelay-py = callPackage ../os-specific/linux/usbrelay/python.nix { };
usbtmc = callPackage ../development/python-modules/usbtmc { };