Files
nixpkgs/pkgs/development/python-modules/disnake/default.nix
2025-07-24 13:55:40 +02:00

68 lines
1.4 KiB
Nix

{
lib,
setuptools,
aiohttp,
buildPythonPackage,
fetchFromGitHub,
libopus,
pynacl,
pythonOlder,
withVoice ? true,
ffmpeg,
}:
buildPythonPackage rec {
pname = "disnake";
version = "2.10.1";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "DisnakeDev";
repo = "disnake";
tag = "v${version}";
hash = "sha256-MQxYkUA3uclmY2cKBr4DsBg79ovsH1EsMOjiVPGaLVE=";
};
build-system = [ setuptools ];
dependencies = [
aiohttp
]
++ 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"'
'';
# Only have integration tests with discord
doCheck = false;
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/v${version}/docs/whats_new.rst";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ infinidoge ];
};
}