Files
2026-03-24 01:18:34 +01:00

78 lines
1.6 KiB
Nix

{
lib,
setuptools,
aiohttp,
buildPythonPackage,
fetchFromGitHub,
typing-extensions,
libopus,
pynacl,
pytestCheckHook,
pytest-asyncio,
looptime,
withVoice ? true,
ffmpeg,
}:
buildPythonPackage rec {
pname = "disnake";
version = "2.11.0";
pyproject = true;
src = fetchFromGitHub {
owner = "DisnakeDev";
repo = "disnake";
tag = "v${version}";
hash = "sha256-pwhUX5lzqSPik/rPsT42M3AMjzWWeqFN+0mVHA84cCo=";
};
build-system = [ setuptools ];
dependencies = [
aiohttp
typing-extensions
]
++ lib.optionals withVoice [
libopus
pynacl
ffmpeg
];
postPatch = lib.optionalString withVoice ''
substituteInPlace "disnake/opus.py" \
--replace-fail 'ctypes.util.find_library("opus")' "'${libopus}/lib/libopus.so.0'"
substituteInPlace "disnake/player.py" \
--replace-fail 'executable: str = "ffmpeg"' 'executable: str="${ffmpeg}/bin/ffmpeg"'
'';
nativeCheckInputs = [
pytestCheckHook
pytest-asyncio
looptime
];
pytestFlags = [
# DeprecationWarning: There is no current event loop
"-Wignore::DeprecationWarning"
];
pythonImportsCheck = [
"disnake"
"disnake.file"
"disnake.member"
"disnake.user"
"disnake.state"
"disnake.guild"
"disnake.webhook"
"disnake.ext.commands.bot"
];
meta = {
description = "API wrapper for Discord written in Python";
homepage = "https://disnake.dev/";
changelog = "https://github.com/DisnakeDev/disnake/blob/${src.tag}/docs/whats_new.rst";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ infinidoge ];
};
}