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 hash = "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}