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.
65 lines
1.4 KiB
Nix
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 ];
|
|
};
|
|
}
|