nixpkgs/pkgs/development/python-modules/discordpy/default.nix
Alex James 235cec51d3
python3Packages.discordpy: fix libopus path on Darwin
Darwin uses .dylib as the extension for dynamic libraries (unlike Linux
which uses .so). Replace the hardcoded extension with
stdenv.hostPlatform.extensions.sharedLibrary to fix Opus support on
darwin.
2023-07-15 23:46:17 -05:00

65 lines
1.4 KiB
Nix

{ lib
, stdenv
, aiohttp
, buildPythonPackage
, fetchFromGitHub
, libopus
, pynacl
, pythonOlder
, withVoice ? true
, ffmpeg
}:
buildPythonPackage rec {
pname = "discord.py";
version = "2.3.1";
format = "setuptools";
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "Rapptz";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-vbbTnmzYI6cbF7GWjPVGqy7KKDGpWQ+4q96/kGFjQ8Y=";
};
propagatedBuildInputs = [
aiohttp
] ++ lib.optionals withVoice [
libopus
pynacl
ffmpeg
];
patchPhase = ''
substituteInPlace "discord/opus.py" \
--replace "ctypes.util.find_library('opus')" "'${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}'"
'' + lib.optionalString withVoice ''
substituteInPlace "discord/player.py" \
--replace "executable='ffmpeg'" "executable='${ffmpeg}/bin/ffmpeg'"
'';
# Only have integration tests with discord
doCheck = false;
pythonImportsCheck = [
"discord"
"discord.file"
"discord.member"
"discord.user"
"discord.state"
"discord.guild"
"discord.webhook"
"discord.ext.commands.bot"
];
meta = with lib; {
description = "Python wrapper for the Discord API";
homepage = "https://discordpy.rtfd.org/";
changelog = "https://github.com/Rapptz/discord.py/blob/v${version}/docs/whats_new.rst";
license = licenses.mit;
maintainers = with maintainers; [ ivar ];
};
}