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}