ledfx: 2.1.0 -> 2.1.8 (#512613)

This commit is contained in:
Sandro
2026-05-12 00:32:17 +00:00
committed by GitHub
13 changed files with 462 additions and 62 deletions
+20 -6
View File
@@ -6,14 +6,14 @@
python3.pkgs.buildPythonApplication (finalAttrs: {
pname = "ledfx";
version = "2.1.0";
version = "2.1.8";
pyproject = true;
src = fetchFromGitHub {
owner = "LedFx";
repo = "LedFx";
tag = "v${finalAttrs.version}";
hash = "sha256-N9EHK0GVohFCjEKsm3g4h+4XWfzZO1tzdd2z5IN1YjI=";
hash = "sha256-le3SEGI9uis7wx9+SFpn0BJbpCybSecXEcxxAkC910U=";
};
postPatch = ''
@@ -28,6 +28,7 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
pythonRemoveDeps = [
# not packaged
"rpi-ws281x"
"xled"
];
build-system = with python3.pkgs; [
@@ -41,7 +42,8 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
cffi
aiohttp
aiohttp-cors
aubio
aubio-ledfx
cython
certifi
multidict
openrgb-python
@@ -54,21 +56,25 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
sacn
sentry-sdk
sounddevice
samplerate
icmplib
voluptuous
zeroconf
pillow
flux-led
lifx-async
python-osc
pybase64
mss
uvloop
stupidartnet
python-dotenv
vnoise
pyfastnoiselite
netifaces2
packaging
samplerate-ledfx
audio-hotplug
aiosendspin
pyflac
];
optional-dependencies = {
@@ -76,8 +82,16 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
};
nativeCheckInputs = with python3.pkgs; [
pytestCheckHook
lifx-emulator-core
pytest-asyncio
pytest-order
pytest-timeout
pytestCheckHook
];
disabledTests = [
# requires internet
"TestURLDownloadWithExternalURL"
];
meta = {
@@ -0,0 +1,59 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
ffmpeg-headless,
libsamplerate,
libsndfile,
meson-python,
numpy,
pkg-config,
pytestCheckHook,
rubberband,
setuptools,
stdenv,
}:
buildPythonPackage (finalAttrs: {
pname = "aubio-ledfx";
version = "0.4.11";
pyproject = true;
src = fetchFromGitHub {
owner = "LedFx";
repo = "aubio-ledfx";
tag = "v${finalAttrs.version}";
hash = "sha256-ec6QiTj1AOza+ggJPl3EULNDB/rrpCDZW0HaSywy/4E=";
};
build-system = [
meson-python
setuptools
];
dependencies = [ numpy ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [
libsamplerate
libsndfile
]
++ lib.optionals stdenv.targetPlatform.isLinux [
ffmpeg-headless
]
++ lib.optionals (!stdenv.targetPlatform.isLinux) [
rubberband
];
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "aubio" ];
meta = {
description = "Collection of tools for music analysis";
homepage = "https://github.com/LedFx/aubio-ledfx";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
@@ -1,54 +0,0 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
fetchpatch,
setuptools,
numpy,
pytestCheckHook,
stdenv,
darwin,
}:
buildPythonPackage rec {
pname = "aubio";
version = "0.4.9";
pyproject = true;
src = fetchFromGitHub {
owner = "aubio";
repo = "aubio";
rev = version;
hash = "sha256-RvzhB1kQNP0IbAygwH2RBi/kSyuFPAHgsiCATPeMHTo=";
};
patches = [
(fetchpatch {
# fix "incompatible function pointer types initializing 'PyUFuncGenericFunction'"
name = "const-function-signature.patch";
url = "https://github.com/aubio/aubio/commit/95ff046c698156f21e2ca0d1d8a02c23ab76969f.patch";
hash = "sha256-qKcIPjpcZUizSN/t96WOiOn+IlsrlC0+g7gW77KejH0=";
})
];
build-system = [ setuptools ];
dependencies = [ numpy ];
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "aubio" ];
disabledTests = [
# https://github.com/aubio/aubio/issues/413
"test_assign_cvec_phas_slice"
];
meta = {
description = "Library for audio and music analysis";
homepage = "https://aubio.org";
changelog = "https://github.com/aubio/aubio/blob/${version}/ChangeLog";
license = lib.licenses.gpl3Plus;
maintainers = [ ];
};
}
@@ -0,0 +1,49 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
pyobjc-framework-CoreAudio,
pytest-asyncio,
pytestCheckHook,
pyudev,
stdenv,
uv-build,
}:
buildPythonPackage (finalAttrs: {
pname = "audio-hotplug";
version = "0.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "LedFx";
repo = "audio-hotplug";
tag = "v${finalAttrs.version}";
hash = "sha256-Xq81AfJ5E8lAk1JohD7/RlEDVRrbi/ScX80nMiRd+dY=";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail "uv_build>=0.9.13,<0.10.0" "uv_build"
'';
build-system = [ uv-build ];
dependencies =
lib.optionals stdenv.hostPlatform.isLinux [ pyudev ]
++ lib.optional stdenv.hostPlatform.isDarwin pyobjc-framework-CoreAudio;
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "audio_hotplug" ];
meta = {
description = "Wrapper for Auburns' FastNoise Lite noise generation library";
homepage = "https://github.com/tizilogic/PyFastNoiseLite";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
@@ -33,6 +33,8 @@ buildPythonPackage rec {
webcolors
];
__darwinAllowLocalNetworking = true;
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
@@ -46,7 +48,6 @@ buildPythonPackage rec {
changelog = "https://github.com/Danielhiversen/flux_led/releases/tag/${version}";
license = lib.licenses.lgpl3Plus;
maintainers = [ ];
platforms = lib.platforms.linux;
mainProgram = "flux_led";
};
}
@@ -0,0 +1,51 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
hatchling,
lifx-emulator-core,
pytest-asyncio,
pytest-benchmark,
pytest-cov-stub,
pytest-retry,
pytest-timeout,
pytest-xdist,
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "lifx-async";
version = "5.4.8";
pyproject = true;
src = fetchFromGitHub {
owner = "Djelibeybi";
repo = "lifx-async";
tag = "v${finalAttrs.version}";
hash = "sha256-392gHHekZ+rfZzR21ISUqdFiLGFoQSkJeyn3oRSs3+g=";
};
build-system = [ hatchling ];
__darwinAllowLocalNetworking = true;
nativeCheckInputs = [
lifx-emulator-core
pytest-asyncio
pytest-benchmark
pytest-cov-stub
pytest-retry
pytest-timeout
pytest-xdist
pytestCheckHook
];
pythonImportsCheck = [ "lifx" ];
meta = {
description = "Modern, type-safe, async Python library for controlling LIFX lights";
homepage = "https://github.com/Djelibeybi/lifx-async/";
license = lib.licenses.upl;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
@@ -0,0 +1,50 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
hatchling,
pydantic,
pytest-asyncio,
pytestCheckHook,
pyyaml,
writableTmpDirAsHomeHook,
}:
buildPythonPackage (finalAttrs: {
pname = "lifx-emulator-core";
version = "3.6.3";
pyproject = true;
src = fetchFromGitHub {
owner = "Djelibeybi";
repo = "lifx-emulator";
tag = "core-v${finalAttrs.version}";
hash = "sha256-bZ+u/OKFDYV0kQLeVQPDyLKC9KCTJydbl0xnuOsrh+0=";
};
sourceRoot = "${finalAttrs.src.name}/packages/lifx-emulator-core";
build-system = [ hatchling ];
dependencies = [
pydantic
pyyaml
];
__darwinAllowLocalNetworking = true;
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
writableTmpDirAsHomeHook
];
pythonImportsCheck = [ "lifx_emulator" ];
meta = {
description = "Core Python library for emulating LIFX devices using the LAN protocol";
homepage = "https://github.com/Djelibeybi/lifx-emulator/tree/main/packages/lifx-emulator-core";
license = lib.licenses.upl;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
@@ -0,0 +1,37 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
numpy,
setuptools,
}:
buildPythonPackage (finalAttrs: {
pname = "pyfastnoiselite";
version = "0.0.7";
pyproject = true;
src = fetchFromGitHub {
owner = "tizilogic";
repo = "PyFastNoiseLite";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-Dyi7FeNnlX3EA8qSylapvZJ4/02ayQC5EBtRY6KBJRA=";
};
build-system = [ setuptools ];
dependencies = [ numpy ];
# has no tests
doCheck = false;
pythonImportsCheck = [ "pyfastnoiselite" ];
meta = {
description = "Wrapper for Auburns' FastNoise Lite noise generation library";
homepage = "https://github.com/tizilogic/PyFastNoiseLite";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
@@ -0,0 +1,53 @@
{
lib,
buildPythonPackage,
cffi,
fetchFromGitHub,
numpy,
pytestCheckHook,
setuptools,
soundfile,
stdenv,
unixtools,
}:
buildPythonPackage (finalAttrs: {
pname = "pyflac";
version = "3.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "sonos";
repo = "pyFLAC";
tag = "v${finalAttrs.version}";
hash = "sha256-PA9ARch1MwBhLlTIIM+pXHc10pg0PM/uEHfwQ5e5MNI=";
};
build-system = [ setuptools ];
dependencies = [
cffi
numpy
soundfile
];
nativeCheckInputs = [
pytestCheckHook
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
unixtools.procps # for sysctl
];
preCheck = ''
rm -r pyflac
'';
pythonImportsCheck = [ "pyflac" ];
meta = {
description = "Wrapper for libFLAC";
homepage = "https://github.com/sonos/pyFLAC/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
@@ -0,0 +1,58 @@
{
buildPythonPackage,
setuptools,
darwin,
pyobjc-core,
pyobjc-framework-Cocoa,
lib,
}:
buildPythonPackage rec {
pname = "pyobjc-framework-CoreAudio";
pyproject = true;
inherit (pyobjc-core) version src;
sourceRoot = "${src.name}/pyobjc-framework-CoreAudio";
build-system = [ setuptools ];
buildInputs = [ darwin.libffi ];
nativeBuildInputs = [
darwin.DarwinTools # sw_vers
];
# See https://github.com/ronaldoussoren/pyobjc/pull/641. Unfortunately, we
# cannot just pull that diff with fetchpatch due to https://discourse.nixos.org/t/how-to-apply-patches-with-sourceroot/59727.
postPatch = ''
substituteInPlace pyobjc_setup.py \
--replace-fail "-buildversion" "-buildVersion" \
--replace-fail "-productversion" "-productVersion" \
--replace-fail "/usr/bin/sw_vers" "sw_vers" \
--replace-fail "/usr/bin/xcrun" "xcrun"
'';
dependencies = [
pyobjc-core
pyobjc-framework-Cocoa
];
env.NIX_CFLAGS_COMPILE = toString [
"-I${darwin.libffi.dev}/include"
"-Wno-error=unused-command-line-argument"
];
pythonImportsCheck = [
"CoreAudio"
"PyObjCTools"
];
meta = {
description = "Wrappers for the framework CoreAudio on macOS";
homepage = "https://github.com/ronaldoussoren/pyobjc";
license = lib.licenses.mit;
platforms = lib.platforms.darwin;
maintainers = [ ];
};
}
@@ -0,0 +1,63 @@
{
lib,
buildPythonPackage,
cmake,
fetchFromGitHub,
libsamplerate,
numpy,
pybind11,
pytest-asyncio,
pytestCheckHook,
pythonAtLeast,
setuptools,
setuptools-scm,
}:
buildPythonPackage (finalAttrs: {
pname = "samplerate-ledfx";
version = "0.2.6";
pyproject = true;
disabled = pythonAtLeast "3.14";
src = fetchFromGitHub {
owner = "LedFx";
repo = "python-samplerate-ledfx";
tag = "v${finalAttrs.version}";
hash = "sha256-SLmaWSq/Ou23BfdWKlzE9gIfORgF9skUVEw1Tzpd5b4=";
};
# unvendor pybind11, libsamplerate
postPatch = ''
rm -r external
substituteInPlace CMakeLists.txt \
--replace-fail "add_subdirectory(external)" "find_package(pybind11 REQUIRED)"
'';
build-system = [
cmake
pybind11
setuptools
setuptools-scm
];
dontUseCmakeConfigure = true;
buildInputs = [ libsamplerate ];
dependencies = [ numpy ];
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "samplerate" ];
meta = {
description = "Bindings for libsamplerate based on CFFI and NumPy";
homepage = "https://github.com/LedFx/python-samplerate-ledfx";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ SuperSandro2000 ];
};
})
+1
View File
@@ -94,6 +94,7 @@ mapAliases {
async_stagger = throw "'async_stagger' has been renamed to/replaced by 'async-stagger'"; # Converted to throw 2025-10-29
asyncio-nats-client = throw "'asyncio-nats-client' has been renamed to/replaced by 'nats-py'"; # Converted to throw 2025-10-29
atsim_potentials = throw "'atsim_potentials' has been renamed to/replaced by 'atsim-potentials'"; # Converted to throw 2025-10-29
aubio = throw "'aubio' only direct user LedFX switched to a fork named 'aubio-ledfx', hence the aubio package has been replaced."; # Added 2026-04-20
audio-metadata = throw "'audio-metadata' has been removed as it's unmaintained since 2020"; # Added 2026-03-12
autotrash = throw "'autotrash' has been renamed to/replaced by 'super.pkgs.autotrash'"; # Converted to throw 2025-10-29
av_13 = throw "'av_13' has been renamed to/replaced by 'av'"; # Added 2026-02-01
+19 -1
View File
@@ -1226,10 +1226,12 @@ self: super: with self; {
attrs-strict = callPackage ../development/python-modules/attrs-strict { };
aubio = callPackage ../development/python-modules/aubio { };
aubio-ledfx = callPackage ../development/python-modules/aubio-ledfx { };
audible = callPackage ../development/python-modules/audible { };
audio-hotplug = callPackage ../development/python-modules/audio-hotplug { };
audioop-lts =
if pythonAtLeast "3.13" then callPackage ../development/python-modules/audioop-lts { } else null;
@@ -9029,6 +9031,10 @@ self: super: with self; {
lifelines = callPackage ../development/python-modules/lifelines { };
lifx-async = callPackage ../development/python-modules/lifx-async { };
lifx-emulator-core = callPackage ../development/python-modules/lifx-emulator-core { };
lightgbm = callPackage ../development/python-modules/lightgbm { };
lightify = callPackage ../development/python-modules/lightify { };
@@ -13902,6 +13908,8 @@ self: super: with self; {
pyfakewebcam = callPackage ../development/python-modules/pyfakewebcam { };
pyfastnoiselite = callPackage ../development/python-modules/pyfastnoiselite { };
pyfatfs = callPackage ../development/python-modules/pyfatfs { };
pyfcm = callPackage ../development/python-modules/pyfcm { };
@@ -13918,6 +13926,8 @@ self: super: with self; {
pyfireservicerota = callPackage ../development/python-modules/pyfireservicerota { };
pyflac = callPackage ../development/python-modules/pyflac { };
pyflakes = callPackage ../development/python-modules/pyflakes { };
pyflexit = callPackage ../development/python-modules/pyflexit { };
@@ -14586,6 +14596,10 @@ self: super: with self; {
pyobjc-framework-Cocoa = callPackage ../development/python-modules/pyobjc-framework-Cocoa { };
pyobjc-framework-CoreAudio =
callPackage ../development/python-modules/pyobjc-framework-CoreAudio
{ };
pyobjc-framework-CoreBluetooth =
callPackage ../development/python-modules/pyobjc-framework-CoreBluetooth
{ };
@@ -17376,6 +17390,10 @@ self: super: with self; {
samplerate = callPackage ../development/python-modules/samplerate { inherit (pkgs) libsamplerate; };
samplerate-ledfx = callPackage ../development/python-modules/samplerate-ledfx {
inherit (pkgs) libsamplerate;
};
samsungctl = callPackage ../development/python-modules/samsungctl { };
samsungtvws = callPackage ../development/python-modules/samsungtvws { };