From e7c071f1da22ef37eb4d7f2117ef9e3ea1dd297b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Mon, 20 Apr 2026 01:20:19 +0200 Subject: [PATCH 01/10] python314Packages.aubio-ledfx: init at 0.4.11 and replace python3Packages.aubio --- .../python-modules/aubio-ledfx/default.nix | 59 +++++++++++++++++++ .../python-modules/aubio/default.nix | 54 ----------------- pkgs/top-level/python-aliases.nix | 1 + pkgs/top-level/python-packages.nix | 2 +- 4 files changed, 61 insertions(+), 55 deletions(-) create mode 100644 pkgs/development/python-modules/aubio-ledfx/default.nix delete mode 100644 pkgs/development/python-modules/aubio/default.nix diff --git a/pkgs/development/python-modules/aubio-ledfx/default.nix b/pkgs/development/python-modules/aubio-ledfx/default.nix new file mode 100644 index 000000000000..91a0842961f1 --- /dev/null +++ b/pkgs/development/python-modules/aubio-ledfx/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/development/python-modules/aubio/default.nix b/pkgs/development/python-modules/aubio/default.nix deleted file mode 100644 index 13fac161b8bf..000000000000 --- a/pkgs/development/python-modules/aubio/default.nix +++ /dev/null @@ -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 = [ ]; - }; -} diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 6e18b1443885..0daa00db4ef9 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -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 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e8558e3a9521..2afb090434e2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1220,7 +1220,7 @@ 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 { }; From beed25aab6e0d496cf95ea8c86a5b87fa7a19074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sat, 9 May 2026 03:37:40 +0200 Subject: [PATCH 02/10] python3Packages.pyobjc-framework-CoreAudio: init at 11.1 --- .../pyobjc-framework-CoreAudio/default.nix | 58 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 62 insertions(+) create mode 100644 pkgs/development/python-modules/pyobjc-framework-CoreAudio/default.nix diff --git a/pkgs/development/python-modules/pyobjc-framework-CoreAudio/default.nix b/pkgs/development/python-modules/pyobjc-framework-CoreAudio/default.nix new file mode 100644 index 000000000000..13a914ffa56b --- /dev/null +++ b/pkgs/development/python-modules/pyobjc-framework-CoreAudio/default.nix @@ -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 = [ ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2afb090434e2..06b74847ddc9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -14522,6 +14522,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 { }; From 16dfcd3e0ffa89f8d7e41199e6bb22ab7f90a14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 23 Apr 2026 00:05:56 +0200 Subject: [PATCH 03/10] python314Packages.audio-hotplug: init at 0.1.0 --- .../python-modules/audio-hotplug/default.nix | 49 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 51 insertions(+) create mode 100644 pkgs/development/python-modules/audio-hotplug/default.nix diff --git a/pkgs/development/python-modules/audio-hotplug/default.nix b/pkgs/development/python-modules/audio-hotplug/default.nix new file mode 100644 index 000000000000..efe5a48a3659 --- /dev/null +++ b/pkgs/development/python-modules/audio-hotplug/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 06b74847ddc9..adcfa285fd91 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1224,6 +1224,8 @@ self: super: with self; { 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; From 2db9058c303e903e7f1b2a2af2903143729ae104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Wed, 22 Apr 2026 23:40:33 +0200 Subject: [PATCH 04/10] python314Packages.pyfastnoiselite: init at 0.0.7 --- .../pyfastnoiselite/default.nix | 37 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 39 insertions(+) create mode 100644 pkgs/development/python-modules/pyfastnoiselite/default.nix diff --git a/pkgs/development/python-modules/pyfastnoiselite/default.nix b/pkgs/development/python-modules/pyfastnoiselite/default.nix new file mode 100644 index 000000000000..04d49c62a0f6 --- /dev/null +++ b/pkgs/development/python-modules/pyfastnoiselite/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index adcfa285fd91..dd249d189c54 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13840,6 +13840,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 { }; From 4a792e7f4e6abbed6d70dd61b4eb52e047ab0d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 23 Apr 2026 03:44:30 +0200 Subject: [PATCH 05/10] python314Packages.pyflac: init at 3.0.0 --- .../python-modules/pyflac/default.nix | 53 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 55 insertions(+) create mode 100644 pkgs/development/python-modules/pyflac/default.nix diff --git a/pkgs/development/python-modules/pyflac/default.nix b/pkgs/development/python-modules/pyflac/default.nix new file mode 100644 index 000000000000..599fd0573f13 --- /dev/null +++ b/pkgs/development/python-modules/pyflac/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index dd249d189c54..1a12878ebcf6 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13858,6 +13858,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 { }; From 1d08d405a0a6dedce89d4e1f6732eb726bccfeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 23 Apr 2026 01:58:14 +0200 Subject: [PATCH 06/10] python314Packages.samplerate-ledfx: init at 0.2.6 --- .../samplerate-ledfx/default.nix | 63 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 67 insertions(+) create mode 100644 pkgs/development/python-modules/samplerate-ledfx/default.nix diff --git a/pkgs/development/python-modules/samplerate-ledfx/default.nix b/pkgs/development/python-modules/samplerate-ledfx/default.nix new file mode 100644 index 000000000000..cd95073ca359 --- /dev/null +++ b/pkgs/development/python-modules/samplerate-ledfx/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1a12878ebcf6..215bfb2f5329 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17316,6 +17316,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 { }; From d295473de08ee150a78ce2e21a9dbbcf52461e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 23 Apr 2026 02:25:52 +0200 Subject: [PATCH 07/10] python314Packages.lifx-emulator-core: init at 3.6.3 --- .../lifx-emulator-core/default.nix | 50 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 52 insertions(+) create mode 100644 pkgs/development/python-modules/lifx-emulator-core/default.nix diff --git a/pkgs/development/python-modules/lifx-emulator-core/default.nix b/pkgs/development/python-modules/lifx-emulator-core/default.nix new file mode 100644 index 000000000000..7079f9770ca1 --- /dev/null +++ b/pkgs/development/python-modules/lifx-emulator-core/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 215bfb2f5329..8292f6470614 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8985,6 +8985,8 @@ self: super: with self; { lifelines = callPackage ../development/python-modules/lifelines { }; + lifx-emulator-core = callPackage ../development/python-modules/lifx-emulator-core { }; + lightgbm = callPackage ../development/python-modules/lightgbm { }; lightify = callPackage ../development/python-modules/lightify { }; From c69a27c1ff566c10fec70c2bdeca37a2d7deec1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 23 Apr 2026 03:02:05 +0200 Subject: [PATCH 08/10] python314Packages.lifx-async: init at 5.4.8 --- .../python-modules/lifx-async/default.nix | 51 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 53 insertions(+) create mode 100644 pkgs/development/python-modules/lifx-async/default.nix diff --git a/pkgs/development/python-modules/lifx-async/default.nix b/pkgs/development/python-modules/lifx-async/default.nix new file mode 100644 index 000000000000..7a0d8cef2351 --- /dev/null +++ b/pkgs/development/python-modules/lifx-async/default.nix @@ -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 ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8292f6470614..1ade3f90f94e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8985,6 +8985,8 @@ 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 { }; From dd9242cbd0d24d7867c2b39df051b46b763eee5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sat, 9 May 2026 03:01:27 +0200 Subject: [PATCH 09/10] python314Packages.flux-led: enable on darwin --- pkgs/development/python-modules/flux-led/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/flux-led/default.nix b/pkgs/development/python-modules/flux-led/default.nix index 154da949a276..f759be3ac9f8 100644 --- a/pkgs/development/python-modules/flux-led/default.nix +++ b/pkgs/development/python-modules/flux-led/default.nix @@ -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"; }; } From a9f6a1fed056c278b6fbeb630526f34e70940df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sun, 19 Apr 2026 23:46:07 +0200 Subject: [PATCH 10/10] ledfx: 2.1.0 -> 2.1.8 Diff: https://github.com/LedFx/LedFx/compare/v2.1.0...v2.1.8 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.1 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.2 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.3 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.4 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.5 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.6 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.7 Changelog: https://github.com/LedFx/LedFx/releases/tag/v2.1.8 --- pkgs/by-name/le/ledfx/package.nix | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/le/ledfx/package.nix b/pkgs/by-name/le/ledfx/package.nix index 41be9fd655f8..bb65c4e9071e 100644 --- a/pkgs/by-name/le/ledfx/package.nix +++ b/pkgs/by-name/le/ledfx/package.nix @@ -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 = {