2025-06-26 01:45:38 +08:00

98 lines
1.8 KiB
Nix

{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
pythonOlder,
pdm-backend,
loguru,
platformdirs,
requests,
setuptools,
toml,
websocket-client,
asciimatics,
pyperclip,
aria2,
fastapi,
psutil,
pytest-xdist,
pytestCheckHook,
responses,
uvicorn,
withTui ? true,
}:
buildPythonPackage rec {
pname = "aria2p";
version = "0.12.1";
pyproject = true;
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "pawamoy";
repo = "aria2p";
tag = version;
hash = "sha256-JEXTCDfFjxI1hooiEQq0KIGGoS2F7fyzOM0GMl+Jr7w=";
};
build-system = [ pdm-backend ];
dependencies = [
loguru
platformdirs
requests
setuptools # for pkg_resources
toml
websocket-client
] ++ lib.optionals withTui optional-dependencies.tui;
optional-dependencies = {
tui = [
asciimatics
pyperclip
];
};
preCheck = ''
export HOME=$TMPDIR
'';
nativeCheckInputs = [
aria2
fastapi
pytest-xdist
pytestCheckHook
responses
psutil
uvicorn
] ++ optional-dependencies.tui;
disabledTests = [
# require a running display server
"test_add_downloads_torrents_and_metalinks"
"test_add_downloads_uris"
# require a running aria2 server
"test_cli_autoclear_commands"
"test_get_files_method"
"test_pause_subcommand"
"test_resume_method"
];
pythonImportsCheck = [ "aria2p" ];
meta = {
homepage = "https://github.com/pawamoy/aria2p";
changelog = "https://github.com/pawamoy/aria2p/blob/${src.tag}/CHANGELOG.md";
description = "Command-line tool and library to interact with an aria2c daemon process with JSON-RPC";
mainProgram = "aria2p";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [ koral ];
badPlatforms = [
lib.systems.inspect.patterns.isDarwin
];
};
}