diff --git a/pkgs/by-name/bl/ble-serial/package.nix b/pkgs/by-name/bl/ble-serial/package.nix new file mode 100644 index 000000000000..0cfcce951911 --- /dev/null +++ b/pkgs/by-name/bl/ble-serial/package.nix @@ -0,0 +1 @@ +{ python3Packages }: with python3Packages; toPythonApplication ble-serial diff --git a/pkgs/development/python-modules/ble-serial/default.nix b/pkgs/development/python-modules/ble-serial/default.nix new file mode 100644 index 000000000000..1e3c7315304d --- /dev/null +++ b/pkgs/development/python-modules/ble-serial/default.nix @@ -0,0 +1,57 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hatchling, + bleak, + coloredlogs, + pyserial, + bless, +}: + +buildPythonPackage rec { + pname = "ble-serial"; + version = "3.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "Jakeler"; + repo = "ble-serial"; + tag = "v${version}"; + hash = "sha256-lbqu6VeE8XEIUvUILqKsTA+0/lxTr8GTbUBkSae/ruE="; + fetchSubmodules = true; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + bleak + coloredlogs + pyserial + ]; + + optional-dependencies = { + server = [ + bless + ]; + }; + + # Requires real hardware to test + # https://github.com/Jakeler/ble-serial/blob/3f1a619208a0eb372a0993aadc086c4842946f21/tests/test.py + doCheck = false; + + pythonImportsCheck = [ + "ble_serial.bluetooth.ble_client" + "ble_serial.scan" + ]; + + meta = { + description = "\"RFCOMM for BLE\" a Serial UART over Bluetooth low energy (4+) bridge"; + homepage = "https://github.com/Jakeler/ble-serial"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ eljamm ]; + platforms = lib.platforms.unix; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9f6c63cfba6f..a39fe2a999e3 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1949,6 +1949,8 @@ self: super: with self; { blake3 = callPackage ../development/python-modules/blake3 { }; + ble-serial = callPackage ../development/python-modules/ble-serial { }; + bleach = callPackage ../development/python-modules/bleach { }; bleach-allowlist = callPackage ../development/python-modules/bleach-allowlist { };