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