1{ lib 2, buildPythonPackage 3, fetchFromGitHub 4, decorator 5, packaging 6, pynput 7, regex 8, lark 9, enum34 10, pyperclip 11, six 12, requests 13, psutil 14, json-rpc 15, werkzeug 16, kaldi-active-grammar 17, sounddevice 18, webrtcvad 19, setuptools 20, xdotool 21, wmctrl 22, xorg 23}: 24 25buildPythonPackage rec { 26 pname = "dragonfly"; 27 version = "0.35.0"; 28 29 src = fetchFromGitHub { 30 owner = "dictation-toolbox"; 31 repo = pname; 32 rev = version; 33 sha256 = "sha256-sqEEEr5/KG3cn4rmOGJt9zMNAjeLO6h3NJgg0EyewrM="; 34 }; 35 36 postPatch = '' 37 substituteInPlace setup.py --replace 'lark-parser == 0.8.*' 'lark' 38 substituteInPlace dragonfly/actions/keyboard/_x11_xdotool.py \ 39 --replace 'xdotool = "xdotool"'${" "}'xdotool = "${xdotool}/bin/xdotool"' 40 substituteInPlace dragonfly/windows/x11_window.py \ 41 --replace 'xdotool = "xdotool"'${" "}'xdotool = "${xdotool}/bin/xdotool"' \ 42 --replace 'xprop = "xprop"'${" "}'xprop = "${xorg.xprop}/bin/xprop"' \ 43 --replace 'wmctrl = "wmctrl"'${" "}'wmctrl = "${wmctrl}/bin/wmctrl"' 44 ''; 45 46 propagatedBuildInputs = [ 47 decorator 48 packaging 49 pynput 50 regex 51 lark 52 enum34 53 pyperclip 54 six 55 requests 56 psutil 57 json-rpc 58 werkzeug 59 kaldi-active-grammar # for the Kaldi engine 60 sounddevice 61 webrtcvad 62 setuptools # needs pkg_resources at runtime 63 ]; 64 65 # Too many tests fail because of the unusual environment or 66 # because of the missing dependencies for some of the engines. 67 doCheck = false; 68 69 pythonImportsCheck = [ "dragonfly" ]; 70 71 meta = with lib; { 72 description = "Speech recognition framework allowing powerful Python-based scripting"; 73 homepage = "https://github.com/dictation-toolbox/dragonfly"; 74 license = licenses.lgpl3Plus; 75 maintainers = with maintainers; [ ckie ]; 76 }; 77}