Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / python-modules / notify-py / default.nix
blob61c1c9026e0be076cf0dcccc3e5d43da9bae5d50
1 { lib
2 , stdenv
3 , buildPythonPackage
4 , pythonOlder
5 , fetchFromGitHub
6 , substituteAll
7 , alsa-utils
8 , libnotify
9 , which
10 , poetry-core
11 , pythonRelaxDepsHook
12 , jeepney
13 , loguru
14 , pytest
15 , dbus
16 , coreutils
19 buildPythonPackage rec {
20   pname = "notify-py";
21   version = "0.3.42";
22   format = "pyproject";
24   disabled = pythonOlder "3.6";
26   src = fetchFromGitHub {
27     owner = "ms7m";
28     repo = pname;
29     rev = "refs/tags/v${version}";
30     hash = "sha256-XtjJImH9UwPPZS/Yqs8S5xGXOLBRmJRawzxWXoPWvrM=";
31   };
33   patches = lib.optionals stdenv.isLinux [
34     # hardcode paths to aplay and notify-send
35     (substituteAll {
36       src = ./linux-paths.patch;
37       aplay = "${alsa-utils}/bin/aplay";
38       notifysend = "${libnotify}/bin/notify-send";
39     })
40   ] ++ lib.optionals stdenv.isDarwin [
41     # hardcode path to which
42     (substituteAll {
43       src = ./darwin-paths.patch;
44       which = "${which}/bin/which";
45     })
46   ];
48   nativeBuildInputs = [
49     poetry-core
50     pythonRelaxDepsHook
51   ];
53   pythonRelaxDeps = [
54     "loguru"
55   ];
57   propagatedBuildInputs = [
58     loguru
59   ] ++ lib.optionals stdenv.isLinux [
60     jeepney
61   ];
63   nativeCheckInputs = [
64     pytest
65   ] ++ lib.optionals stdenv.isLinux [
66     dbus
67   ];
69   checkPhase = if stdenv.isDarwin then ''
70     # Tests search for "afplay" binary which is built in to macOS and not available in nixpkgs
71     mkdir $TMP/bin
72     ln -s ${coreutils}/bin/true $TMP/bin/afplay
73     PATH="$TMP/bin:$PATH" pytest
74   '' else if stdenv.isLinux then ''
75     dbus-run-session \
76       --config-file=${dbus}/share/dbus-1/session.conf \
77       pytest
78   '' else ''
79     pytest
80   '';
82   # GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
83   # org.freedesktop.Notifications was not provided by any .service files
84   doCheck = false;
86   pythonImportsCheck = [ "notifypy" ];
88   meta = with lib; {
89     description = "Cross-platform desktop notification library for Python";
90     homepage = "https://github.com/ms7m/notify-py";
91     changelog = "https://github.com/ms7m/notify-py/releases/tag/v${version}";
92     license = licenses.mit;
93     maintainers = with maintainers; [ austinbutler dotlambda ];
94   };