diff --git a/pkgs/development/python-modules/pycyphal/default.nix b/pkgs/development/python-modules/pycyphal/default.nix new file mode 100644 index 0000000000000..b5516bc144e09 --- /dev/null +++ b/pkgs/development/python-modules/pycyphal/default.nix @@ -0,0 +1,49 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pythonOlder +, can +, cobs +, libpcap +, nunavut +, numpy +, pyserial +}: + +buildPythonPackage rec { + pname = "pycyphal"; + version = "1.15.2"; + format = "pyproject"; + + disabled = pythonOlder "3.8"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-KVX+DwcJp1sjpcG1Utl9me1LwWDZPof+O6hoUt1xlXA="; + }; + + propagatedBuildInputs = [ + can + cobs + libpcap + numpy + nunavut + pyserial + ]; + + # Can't seem to run the tests on nix + doCheck = false; + pythonImportsCheck = [ + "pycyphal" + ]; + + meta = with lib; { + description = "A full-featured implementation of the Cyphal protocol stack in Python"; + longDescription = '' + Cyphal is an open technology for real-time intravehicular distributed computing and communication based on modern networking standards (Ethernet, CAN FD, etc.). + ''; + homepage = "https://opencyphal.org/"; + license = licenses.mit; + maintainers = [ teams.ororatech ]; + }; +} diff --git a/pkgs/development/tools/misc/yakut/default.nix b/pkgs/development/tools/misc/yakut/default.nix new file mode 100644 index 0000000000000..4c993c19cdcf5 --- /dev/null +++ b/pkgs/development/tools/misc/yakut/default.nix @@ -0,0 +1,51 @@ +{ lib +, buildPythonApplication +, fetchPypi +, stdenv +, click +, coloredlogs +, psutil +, pycyphal +, pyserial +, ruamel-yaml +, requests +, scipy +, simplejson +}: + +buildPythonApplication rec { + pname = "yakut"; + version = "0.13.0"; + format = "setuptools"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-MBVSt01D36rBPW2bopujyu8Opwwavmm7S3tdaWp5ACw="; + }; + + buildInputs = [ + stdenv.cc.cc.lib + click + coloredlogs + psutil + pycyphal + pyserial + ruamel-yaml + requests + scipy + simplejson + ]; + + # Can't seem to run the tests on nix + doCheck = false; + + meta = with lib; { + description = "Simple CLI tool for diagnostics and debugging of Cyphal networks"; + longDescription = '' + YakĂșt is a simple cross-platform command-line interface (CLI) tool for diagnostics and debugging of Cyphal networks. By virtue of being based on PyCyphal, Yakut supports all Cyphal transports (UDP, serial, CAN, ...) and is compatible with all major features of the protocol. It is designed to be usable with GNU/Linux, Windows, and macOS. + ''; + homepage = "https://github.com/OpenCyphal/yakut/"; + license = licenses.mit; + maintainers = [ teams.ororatech ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8114377a37c2f..ffd64d17835fa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18541,6 +18541,8 @@ with pkgs; teller = callPackage ../development/tools/teller { }; + yakut = python3Packages.callPackage ../development/tools/misc/yakut { }; + ### DEVELOPMENT / TOOLS / LANGUAGE-SERVERS ansible-language-server = callPackage ../development/tools/language-servers/ansible-language-server { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 52f58a04875ce..0cdfb1cd89aaa 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9027,6 +9027,18 @@ self: super: with self; { pycxx = callPackage ../development/python-modules/pycxx { }; + pycyphal = callPackage ../development/python-modules/pycyphal { + # Does not yet support nunavut 2+, use latest 1.X version instead + # https://github.com/OpenCyphal/pycyphal/issues/277 + nunavut = self.nunavut.overridePythonAttrs (prev: rec { + version = "1.9.0"; + src = prev.src.override { + inherit version; + hash = "sha256-KhgijXJ908uxM7VZdXo1WU/RGU0cfqctBCbpF2wOcy8="; + }; + }); + }; + pydaikin = callPackage ../development/python-modules/pydaikin { }; pydal = callPackage ../development/python-modules/pydal { };