1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchFromGitHub,
6
7 # build-system
8 setuptools,
9 setuptools-lint,
10 sphinx,
11
12 # dependencies
13 xlib,
14 evdev,
15 darwin,
16 six,
17
18 # tests
19 unittestCheckHook,
20}:
21
22buildPythonPackage rec {
23 pname = "pynput";
24 version = "1.7.6";
25 format = "pyproject";
26
27 src = fetchFromGitHub {
28 owner = "moses-palmer";
29 repo = "pynput";
30 rev = "refs/tags/v${version}";
31 hash = "sha256-gRq4LS9NvPL98N0Jk09Z0GfoHS09o3zM284BEWS+NW4=";
32 };
33
34 postPatch = ''
35 substituteInPlace setup.py \
36 --replace "'sphinx >=1.3.1'" ""
37 '';
38
39 nativeBuildInputs = [
40 setuptools
41 setuptools-lint
42 sphinx
43 ];
44
45 propagatedBuildInputs =
46 [ six ]
47 ++ lib.optionals stdenv.isLinux [
48 evdev
49 xlib
50 ]
51 ++ lib.optionals stdenv.isDarwin (
52 with darwin.apple_sdk.frameworks;
53 [
54 ApplicationServices
55 Quartz
56 ]
57 );
58
59 doCheck = false; # requires running X server
60
61 nativeCheckInputs = [ unittestCheckHook ];
62
63 meta = with lib; {
64 broken = stdenv.isDarwin;
65 description = "Library to control and monitor input devices";
66 homepage = "https://github.com/moses-palmer/pynput";
67 license = licenses.lgpl3;
68 maintainers = with maintainers; [ nickhu ];
69 };
70}