From b6529db3f2d9c2b4c415baed15711c6967cd052f Mon Sep 17 00:00:00 2001 From: Brian McGillion Date: Sun, 25 May 2025 20:34:43 +0400 Subject: [PATCH] cfclient: init at 2025.2 The Crazyflie PC client enables flashing and controlling the Crazyflie. It implements the user interface and high-level control (for example gamepad handling). The communication with Crazyflie and the implementation of the CRTP protocol to control the Crazyflie is handled by the cflib project. Signed-off-by: Brian McGillion --- pkgs/by-name/cf/cfclient/package.nix | 79 ++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 pkgs/by-name/cf/cfclient/package.nix diff --git a/pkgs/by-name/cf/cfclient/package.nix b/pkgs/by-name/cf/cfclient/package.nix new file mode 100644 index 000000000000..d744757fe5d5 --- /dev/null +++ b/pkgs/by-name/cf/cfclient/package.nix @@ -0,0 +1,79 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + qt6, +}: + +python3Packages.buildPythonApplication rec { + pname = "cfclient"; + version = "2025.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "bitcraze"; + repo = "crazyflie-clients-python"; + tag = version; + hash = "sha256-LCGTMLIfGH59KFwQACyuEQTh/zkGgzXd3e6MkFTgKhA="; + }; + + strictDeps = true; + + buildInputs = [ + qt6.qtbase + ]; + + nativeBuildInputs = [ + qt6.wrapQtAppsHook + ]; + + dontWrapQtApps = true; + + build-system = with python3Packages; [ + setuptools + setuptools-scm + ]; + + pythonRelaxDeps = [ + "numpy" + "pyqt6" + "vispy" + ]; + + dependencies = with python3Packages; [ + appdirs + cflib + numpy + pyopengl + pyserial + pysdl2 + pyqtgraph + pyqt6 + pyqt6-sip + pyyaml + pyzmq + scipy + setuptools + vispy + ]; + + # No tests + doCheck = false; + + # Use wrapQtApp for Python scripts as the manual mentions that wrapQtAppsHook only applies to binaries + postFixup = '' + wrapQtApp "$out/bin/cfclient" \ + --set QT_QPA_PLATFORM "wayland" \ + --set XDG_CURRENT_DESKTOP "Wayland" \ + ''${qtWrapperArgs[@]} + ''; + + meta = { + description = "Host applications and library for Crazyflie drones written in Python"; + homepage = "https://github.com/bitcraze/crazyflie-clients-python"; + changelog = "https://github.com/bitcraze/crazyflie-clients-python/releases/tag/${version}"; + license = lib.licenses.gpl2Only; + maintainers = [ lib.maintainers.brianmcgillion ]; + platforms = lib.platforms.linux; + }; +}