depot/third_party/nixpkgs/pkgs/by-name/st/streamcontroller/package.nix

188 lines
3.8 KiB
Nix

{
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";
version = "1.5.0-beta.7";
src = fetchFromGitHub {
repo = "StreamController";
owner = "StreamController";
rev = version;
hash = "sha256-UBcsA9pAo7fONhk4vYXQU4EgSVKm1D7/7nvL9BaNIgo=";
};
# 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;
};
}