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