1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6 replaceVars,
7 dbus-python,
8 distro,
9 jinja2,
10 keyring,
11 proton-client,
12 pygobject3,
13 pyxdg,
14 systemd,
15 ncurses,
16 networkmanager,
17 pkgs-systemd,
18 python,
19 xdg-utils,
20}:
21
22buildPythonPackage rec {
23 pname = "protonvpn-nm-lib";
24 version = "3.16.0";
25 format = "setuptools";
26 disabled = pythonOlder "3.7";
27
28 src = fetchFromGitHub {
29 owner = "ProtonVPN";
30 repo = "protonvpn-nm-lib";
31 tag = version;
32 hash = "sha256-n3jfBHMYqyQZgvFFJcylNbTWZ3teuqhdelTfpNrwWuA=";
33 };
34
35 propagatedBuildInputs = [
36 dbus-python
37 distro
38 jinja2
39 keyring
40 proton-client
41 pygobject3
42 pyxdg
43 systemd
44 ncurses
45 networkmanager
46 pkgs-systemd
47 xdg-utils
48 ];
49
50 patches = [
51 (replaceVars ./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 mainProgram = "protonvpn_reconnector.py";
76 homepage = "https://github.com/ProtonVPN/protonvpn-nm-lib";
77 license = licenses.gpl3Only;
78 maintainers = [ ];
79 platforms = platforms.linux;
80 };
81}