1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 gobject-introspection,
6 setuptools,
7 networkmanager,
8 proton-vpn-killswitch,
9 proton-vpn-logger,
10 pycairo,
11 pygobject3,
12 pytestCheckHook,
13}:
14
15buildPythonPackage rec {
16 pname = "proton-vpn-killswitch-network-manager";
17 version = "0.4.3";
18 pyproject = true;
19
20 src = fetchFromGitHub {
21 owner = "ProtonVPN";
22 repo = "python-proton-vpn-killswitch-network-manager";
23 rev = "refs/tags/v${version}";
24 hash = "sha256-kN41b6OZ2YXoBsmNZD3NrX4uJChSmm6DVP+5LYwiZMw=";
25 };
26
27 nativeBuildInputs = [
28 # Solves ImportError: cannot import name NM, introspection typelib not found
29 gobject-introspection
30 setuptools
31 ];
32
33 propagatedBuildInputs = [
34 # Needed here for the NM namespace
35 networkmanager
36 proton-vpn-killswitch
37 proton-vpn-logger
38 pycairo
39 pygobject3
40 ];
41
42 postPatch = ''
43 substituteInPlace setup.cfg \
44 --replace "--cov=proton.vpn.killswitch.backend.linux.networkmanager --cov-report=html --cov-report=term" ""
45 '';
46
47 pythonImportsCheck = [ "proton.vpn.killswitch.backend.linux.networkmanager" ];
48
49 nativeCheckInputs = [ pytestCheckHook ];
50
51 meta = with lib; {
52 description = "Implementation of the proton-vpn-killswitch interface using Network Manager";
53 homepage = "https://github.com/ProtonVPN/python-proton-vpn-killswitch-network-manager";
54 license = licenses.gpl3Only;
55 maintainers = [ ];
56 };
57}