1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, substituteAll
6, dbus-python
7, distro
8, jinja2
9, keyring
10, proton-client
11, pygobject3
12, pyxdg
13, systemd
14, ncurses
15, networkmanager
16, pkgs-systemd
17, python
18, xdg-utils
19, makeWrapper
20}:
21
22buildPythonPackage rec {
23 pname = "protonvpn-nm-lib";
24 version = "3.16.0";
25 disabled = pythonOlder "3.7";
26
27 src = fetchFromGitHub {
28 owner = "ProtonVPN";
29 repo = pname;
30 rev = "refs/tags/${version}";
31 hash = "sha256-n3jfBHMYqyQZgvFFJcylNbTWZ3teuqhdelTfpNrwWuA=";
32 };
33
34 propagatedBuildInputs = [
35 dbus-python
36 distro
37 jinja2
38 keyring
39 proton-client
40 pygobject3
41 pyxdg
42 systemd
43 ncurses
44 networkmanager
45 pkgs-systemd
46 xdg-utils
47 ];
48
49 patches = [
50 (substituteAll {
51 src = ./0001-Patching-GIRepository.patch;
52 networkmanager_path = "${networkmanager}/lib/girepository-1.0";
53 })
54 ];
55
56 postPatch = ''
57 substituteInPlace protonvpn_nm_lib/core/dbus/dbus_reconnect.py \
58 --replace "exec_start = python_interpreter_path + \" \" + python_service_path" "exec_start = \"$out/bin/protonvpn_reconnector.py\""
59 '';
60
61 postInstall = ''
62 makeWrapper ${python.interpreter} $out/bin/protonvpn_reconnector.py \
63 --add-flags $out/${python.sitePackages}/protonvpn_nm_lib/daemon/dbus_daemon_reconnector.py \
64 --prefix PYTHONPATH : "$PYTHONPATH"
65 '';
66
67 # Checks cannot be run in the sandbox
68 # "Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory"
69 doCheck = false;
70
71 pythonImportsCheck = [ "protonvpn_nm_lib" ];
72
73 meta = with lib; {
74 description = "ProtonVPN NetworkManager Library intended for every ProtonVPN service user";
75 homepage = "https://github.com/ProtonVPN/protonvpn-nm-lib";
76 license = licenses.gpl3Only;
77 maintainers = with maintainers; [ wolfangaukang ];
78 platforms = platforms.linux;
79 };
80}