{ pkgs , lib , fetchFromGitHub , uv2nix ? null , pyproject-nix ? null , pyproject-build-systems ? null }: # Simple package build # Note: uv2nix would be ideal but requires uv.lock which sendspin-cli doesn't have yet let # Package aiosendspin from GitHub since it's only in nixpkgs-unstable aiosendspin = pkgs.python312Packages.buildPythonPackage rec { pname = "aiosendspin"; version = "1.2.0"; pyproject = true; src = fetchFromGitHub { owner = "Sendspin"; repo = "aiosendspin"; rev = version; sha256 = "sha256-3vTEfXeFqouPswRKST/9U7yg9ah7J9m2KAMoxaBZNR0="; }; build-system = with pkgs.python312Packages; [ hatchling setuptools ]; dependencies = with pkgs.python312Packages; [ aiohttp av mashumaro orjson pillow zeroconf ]; pythonImportsCheck = [ "aiosendspin" ]; meta = { description = "Async Python implementation of the Sendspin Protocol"; homepage = "https://github.com/Sendspin-Protocol/aiosendspin"; license = lib.licenses.asl20; }; }; python = pkgs.python312.withPackages (ps: with ps; [ # Core dependencies from pyproject.toml aiosendspin av numpy qrcode readchar rich sounddevice setuptools ]); in pkgs.stdenv.mkDerivation rec { pname = "sendspin-cli"; version = "0.0.0"; src = fetchFromGitHub { owner = "Sendspin"; repo = "sendspin-cli"; rev = "main"; sha256 = "sha256-z8ieaDHv4C6WNLpPGybhcfB+E6Jj/rCc7zSRpL6vdk0="; }; buildInputs = [ python pkgs.portaudio pkgs.ffmpeg ]; installPhase = '' mkdir -p $out/bin $out/lib cp -r sendspin $out/lib/ cat > $out/bin/sendspin <