diff --git a/pkgs/by-name/si/sideband/package.nix b/pkgs/by-name/si/sideband/package.nix new file mode 100644 index 0000000000000..2cd3b08e54385 --- /dev/null +++ b/pkgs/by-name/si/sideband/package.nix @@ -0,0 +1,66 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + versionCheckHook, +}: + +python3Packages.buildPythonApplication rec { + pname = "sideband"; + version = "1.3.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "markqvist"; + repo = "Sideband"; + tag = version; + hash = "sha256-tTduoP6Gh/8uy1a/qp8ohGpdDmsS61sNyaAQjdvvvb8="; + }; + + build-system = with python3Packages; [ + setuptools + ]; + + pythonRelaxDeps = [ + "numpy" + ]; + + dependencies = + with python3Packages; + [ + rns + lxmf + kivy + pillow + qrcode + materialyoucolor + ffpyplayer + sh + numpy + mistune + beautifulsoup4 + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + pycodec2 + pyaudio + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + pyobjus + ]; + + pythonImportsCheck = [ "sbapp" ]; + + nativeCheckInputs = [ + versionCheckHook + ]; + versionCheckProgramArg = [ "--version" ]; + + meta = { + description = "LXMF client allowing you to communicate with people or LXMF-compatible systems over Reticulum networks"; + homepage = "https://github.com/markqvist/Sideband"; + changelog = "https://github.com/markqvist/Sideband/releases/tag/${version}"; + license = lib.licenses.cc-by-nc-sa-40; + maintainers = with lib.maintainers; [ GaetanLepage ]; + mainProgram = "sideband"; + }; +} diff --git a/pkgs/development/python-modules/ffpyplayer/default.nix b/pkgs/development/python-modules/ffpyplayer/default.nix new file mode 100644 index 0000000000000..0eefb05fbd701 --- /dev/null +++ b/pkgs/development/python-modules/ffpyplayer/default.nix @@ -0,0 +1,63 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pkg-config, + + # build-system + cython, + setuptools, + + # buildInputs + SDL2, + # ffpyplayer is not compatible with ffmpeg 7 + # https://github.com/matham/ffpyplayer/issues/166 + ffmpeg_6, +}: + +buildPythonPackage rec { + pname = "ffpyplayer"; + version = "4.5.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "matham"; + repo = "ffpyplayer"; + tag = "v${version}"; + hash = "sha256-8NBTVN+MPeJfDHuzF45qIK46q5VbiwxipAvjgqdiWrw="; + }; + + build-system = [ + cython + setuptools + ]; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + (lib.getDev SDL2) + (lib.getDev ffmpeg_6) + ]; + + env = { + NIX_CFLAGS_COMPILE = toString ([ + "-Wno-error=implicit-function-declaration" + "-Wno-error=incompatible-pointer-types" + ]); + }; + + pythonImportsCheck = [ "ffpyplayer" ]; + + # No proper test suite + doCheck = false; + + meta = { + description = "A cython implementation of an ffmpeg based player"; + homepage = "https://github.com/matham/ffpyplayer"; + changelog = "https://github.com/matham/ffpyplayer/releases/tag/v${version}"; + license = lib.licenses.lgpl3Only; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +} diff --git a/pkgs/development/python-modules/pycodec2/default.nix b/pkgs/development/python-modules/pycodec2/default.nix new file mode 100644 index 0000000000000..440aa6a117d82 --- /dev/null +++ b/pkgs/development/python-modules/pycodec2/default.nix @@ -0,0 +1,67 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + cython, + numpy, + setuptools, + + # buildInputs + codec2, + + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "pycodec2"; + version = "4.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "gregorias"; + repo = "pycodec2"; + tag = "v${version}"; + hash = "sha256-5BEJ8q+Onh3eITSmEk2PoNrVViVISULZsiI2cCl24b0="; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail "numpy==2.1.*" "numpy" + ''; + + build-system = [ + cython + numpy + setuptools + ]; + + buildInputs = [ + codec2 + ]; + + dependencies = [ + numpy + ]; + + pythonImportsCheck = [ "pycodec2" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + preCheck = '' + rm -rf pycodec2 + ''; + + # The only test fails with a cryptic AssertionError + doCheck = false; + + meta = { + description = "Python's interface to codec 2"; + homepage = "https://github.com/gregorias/pycodec2"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +} diff --git a/pkgs/development/python-modules/pyobjus/default.nix b/pkgs/development/python-modules/pyobjus/default.nix new file mode 100644 index 0000000000000..c411554bd30a7 --- /dev/null +++ b/pkgs/development/python-modules/pyobjus/default.nix @@ -0,0 +1,53 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + cython, + setuptools, + + # buildInputs + libffi, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "pyobjus"; + version = "1.2.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "kivy"; + repo = "pyobjus"; + tag = "v${version}"; + hash = "sha256-8abbxskM3uNNLVKP4Hp6xA9Z45pNNJQKShu+4lj1+4A="; + }; + + build-system = [ + cython + setuptools + ]; + + buildInputs = [ + libffi + ]; + + pythonImportsCheck = [ "pyobjus" ]; + + preCheck = '' + rm -rf pyobjus + ''; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Access Objective-C classes from Python"; + homepage = "https://github.com/kivy/pyobjus"; + changelog = "https://github.com/kivy/pyobjus/releases/tag/v${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2dcf414795ba5..f519a5eaeda1d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4575,6 +4575,8 @@ self: super: with self; { ffmpy = callPackage ../development/python-modules/ffmpy { }; + ffpyplayer = callPackage ../development/python-modules/ffpyplayer { }; + fhir-py = callPackage ../development/python-modules/fhir-py { }; fiblary3-fork = callPackage ../development/python-modules/fiblary3-fork { }; @@ -10589,6 +10591,8 @@ self: super: with self; { pycketcasts = callPackage ../development/python-modules/pycketcasts { }; + pycodec2 = callPackage ../development/python-modules/pycodec2 { }; + pycolorecho = callPackage ../development/python-modules/pycolorecho { }; pycomm3 = callPackage ../development/python-modules/pycomm3 { }; @@ -10702,6 +10706,8 @@ self: super: with self; { pynx584 = callPackage ../development/python-modules/pynx584 { }; + pyobjus = callPackage ../development/python-modules/pyobjus { }; + pyogrio = callPackage ../development/python-modules/pyogrio { }; pyorthanc = callPackage ../development/python-modules/pyorthanc { };