diff --git a/pkgs/by-name/sm/smoked-salmon/package.nix b/pkgs/by-name/sm/smoked-salmon/package.nix new file mode 100644 index 000000000000..9c38d4fbd84c --- /dev/null +++ b/pkgs/by-name/sm/smoked-salmon/package.nix @@ -0,0 +1,94 @@ +{ + lib, + fetchFromGitHub, + ffmpeg-headless, + flac, + lame, + mp3val, + python3Packages, + sox, +}: +let + runtimeDeps = [ + ffmpeg-headless + flac + lame + mp3val + sox + ]; +in +python3Packages.buildPythonApplication rec { + pname = "smoked-salmon"; + version = "0.9.7.4"; + pyproject = true; + + src = fetchFromGitHub { + owner = "smokin-salmon"; + repo = "smoked-salmon"; + tag = version; + hash = "sha256-JOwqu/Hu7BjYLo3DdL6o+9TI/OQvlgj5Xu8WQ0cujwo="; + }; + + # Upstream tends to use very narrow version constraints + pythonRelaxDeps = true; + + build-system = with python3Packages; [ + setuptools + setuptools-scm + ]; + + dependencies = with python3Packages; [ + aiohttp + aiohttp-jinja2 + beautifulsoup4 + bitstring + click + deluge-client + ffmpeg-python + filetype + httpx + humanfriendly + jinja2 + msgspec + musicbrainzngs + mutagen + pillow + platformdirs + pycambia + pyoxipng + pyperclip + qbittorrent-api + ratelimit + requests + rich + send2trash + setuptools + torf + tqdm + transmission-rpc + unidecode + wheel + ]; + + makeWrapperArgs = [ + "--suffix" + "PATH" + ":" + (lib.makeBinPath runtimeDeps) + ]; + + passthru = { + inherit runtimeDeps; + }; + + meta = { + description = "Toolkit for checking, editing and uploading music to Gazelle-based trackers"; + homepage = "https://github.com/smokin-salmon/smoked-salmon"; + license = with lib.licenses; [ asl20 ]; + mainProgram = "salmon"; + maintainers = with lib.maintainers; [ + ambroisie + undefined-landmark + ]; + }; +} diff --git a/pkgs/development/python-modules/pycambia/default.nix b/pkgs/development/python-modules/pycambia/default.nix new file mode 100644 index 000000000000..2e23a766570a --- /dev/null +++ b/pkgs/development/python-modules/pycambia/default.nix @@ -0,0 +1,58 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + fetchpatch, + openssl, + pkg-config, + pytestCheckHook, + rustPlatform, +}: +let + cargoLockPatch = ( + fetchpatch { + name = "cargo.lock.patch"; + url = "https://github.com/KyokoMiki/pycambia/commit/00446e13c20a461c323b119e16f3f57489ba662d.patch"; + hash = "sha256-N7F67VRxfndoN8NllmGKEePOh3mgbjlNaToUvxh+IrE="; + } + ); +in +buildPythonPackage rec { + pname = "pycambia"; + version = "0.1.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "KyokoMiki"; + repo = "pycambia"; + tag = version; + hash = "sha256-ZflLy6Qa4tBlPZkTya3ELu463qcnRcMS57a6FfHpSNE="; + }; + + patches = [ cargoLockPatch ]; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit src; + hash = "sha256-jmdf+Idg9PR4jgZ7bexPsAyGj86vGxLseTWXnhzP7+E="; + patches = [ cargoLockPatch ]; + }; + + buildInputs = [ openssl ]; + + nativeBuildInputs = [ + pkg-config + rustPlatform.cargoSetupHook + rustPlatform.maturinBuildHook + ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + pythonImportsCheck = [ "cambia" ]; + + meta = { + description = "Python wrapper for compact disc ripper log checking utility cambia"; + homepage = "https://github.com/KyokoMiki/pycambia"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ undefined-landmark ]; + }; +} diff --git a/pkgs/development/python-modules/pyoxipng/default.nix b/pkgs/development/python-modules/pyoxipng/default.nix new file mode 100644 index 000000000000..f696a8a44b1c --- /dev/null +++ b/pkgs/development/python-modules/pyoxipng/default.nix @@ -0,0 +1,42 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + rustPlatform, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "pyoxipng"; + version = "9.1.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "nfrasser"; + repo = "pyoxipng"; + tag = "v${version}"; + hash = "sha256-aVya+0+X2p0VaWCZTxVlVUFFlqkqZ7A2lJjhxiXAgrE="; + }; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit src; + hash = "sha256-wMCx6cujqM4q96b1mg4eovKjWmsv0FcaDBCxy0OodmA="; + }; + + nativeBuildInputs = with rustPlatform; [ + cargoSetupHook + maturinBuildHook + ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + pythonImportsCheck = [ "oxipng" ]; + + meta = { + description = "Python wrapper for multithreaded PNG optimizer oxipng"; + homepage = "https://github.com/nfrasser/pyoxipng"; + changelog = "https://github.com/nfrasser/pyoxipng/blob/${src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ undefined-landmark ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e1098931490c..2eba7a5dc8d7 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13021,6 +13021,8 @@ self: super: with self; { pycairo = callPackage ../development/python-modules/pycairo { inherit (pkgs.buildPackages) meson; }; + pycambia = callPackage ../development/python-modules/pycambia { }; + pycangjie = callPackage ../development/python-modules/pycangjie { inherit (pkgs.buildPackages) meson; }; @@ -14116,6 +14118,8 @@ self: super: with self; { pyoxigraph = callPackage ../development/python-modules/pyoxigraph { }; + pyoxipng = callPackage ../development/python-modules/pyoxipng { }; + pypager = callPackage ../development/python-modules/pypager { }; pypalazzetti = callPackage ../development/python-modules/pypalazzetti { };