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