1{ lib 2, stdenv 3, buildPythonPackage 4, pythonOlder 5, fetchFromGitHub 6, miniaudio 7, cffi 8, pytestCheckHook 9, AudioToolbox 10, CoreAudio 11}: 12 13let 14 # TODO: recheck after 1.59 15 miniaudio' = miniaudio.overrideAttrs (oldAttrs: rec { 16 version = "0.11.16"; # cffi breakage with 0.11.17 17 src = fetchFromGitHub { 18 inherit (oldAttrs.src) owner repo; 19 rev = "refs/tags/${version}"; 20 hash = "sha256-POe/dYPJ25RKNGIhaLoqxm9JJ08MrTyHVN4NmaGOdwM="; 21 }; 22 }); 23in 24buildPythonPackage rec { 25 pname = "miniaudio"; 26 version = "1.59"; 27 28 disabled = pythonOlder "3.6"; 29 30 format = "setuptools"; 31 32 src = fetchFromGitHub { 33 owner = "irmen"; 34 repo = "pyminiaudio"; 35 rev = "refs/tags/v${version}"; 36 hash = "sha256-tMQOGqEThtownW3cnNpCzWye0Uo/Es7E8abVySo1QnQ="; 37 }; 38 39 postPatch = '' 40 rm -r miniaudio 41 ln -s ${miniaudio'} miniaudio 42 substituteInPlace build_ffi_module.py \ 43 --replace "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c"; 44 substituteInPlace miniaudio.c \ 45 --replace "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c"; 46 ''; 47 48 buildInputs = lib.optionals stdenv.isDarwin [ 49 AudioToolbox 50 CoreAudio 51 ]; 52 53 propagatedNativeBuildInputs = [ cffi ]; 54 propagatedBuildInputs = [ cffi ]; 55 56 nativeCheckInputs = [ 57 pytestCheckHook 58 ]; 59 60 pythonImportsCheck = [ "miniaudio" ]; 61 62 meta = with lib; { 63 description = "Python bindings for the miniaudio library and its decoders"; 64 homepage = "https://github.com/irmen/pyminiaudio"; 65 license = licenses.mit; 66 maintainers = with maintainers; [ dotlambda ]; 67 }; 68}