Unverified Commit b6529db3 authored by Brian McGillion's avatar Brian McGillion
Browse files

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: default avatarBrian McGillion <bmg.avoin@gmail.com>
parent 0b95d24d
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
{
  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;
  };
}