From f4176dac0954addbec901a6fbc6712477c4c2eeb Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 14:41:42 -0600 Subject: [PATCH 01/13] python3Packages.proton-core: init at 0.1.15-unstable-2023-10-24 --- .../python-modules/proton-core/default.nix | 76 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 78 insertions(+) create mode 100644 pkgs/development/python-modules/proton-core/default.nix diff --git a/pkgs/development/python-modules/proton-core/default.nix b/pkgs/development/python-modules/proton-core/default.nix new file mode 100644 index 000000000000..9623cb0544d9 --- /dev/null +++ b/pkgs/development/python-modules/proton-core/default.nix @@ -0,0 +1,76 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, aiohttp +, bcrypt +, pyopenssl +, python-gnupg +, requests +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-core"; + version = "0.1.15-unstable-2023-10-24"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-core"; + rev = "5e795e04094dff67c03c56f2f3de03ff43514cc4"; + hash = "sha256-hchwrolc65tVmSe2IzxwH2zDU2JZzXrCMzWaETWcMDI="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + bcrypt + aiohttp + pyopenssl + python-gnupg + requests + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + disabledTestPaths = [ + # Single test, requires internet connection + "tests/test_alternativerouting.py" + ]; + + disabledTests = [ + # Invalid modulus + "test_modulus_verification" + # Permission denied: '/run' + "test_broken_data" + "test_broken_index" + "test_sessions" + # No working transports found + "test_auto_works_on_prod" + "test_ping" + "test_successful" + "test_without_pinning" + # Failed assertions + "test_bad_pinning_fingerprint_changed" + "test_bad_pinning_url_changed" + ]; + + meta = { + description = "Core logic used by the other Proton components"; + homepage = "https://github.com/ProtonVPN/python-proton-core"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4c088f84d056..c9c46cc8284b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9721,6 +9721,8 @@ self: super: with self; { proton-client = callPackage ../development/python-modules/proton-client { }; + proton-core = callPackage ../development/python-modules/proton-core { }; + protonup-ng = callPackage ../development/python-modules/protonup-ng { }; protonvpn-nm-lib = callPackage ../development/python-modules/protonvpn-nm-lib { From a85895797539c4fff3891287f07006b334d0c133 Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 14:42:23 -0600 Subject: [PATCH 02/13] python3Packages.proton-vpn-logger: init at 0.2.1-unstable-2023-05-10 --- .../proton-vpn-logger/default.nix | 51 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 53 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-logger/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-logger/default.nix b/pkgs/development/python-modules/proton-vpn-logger/default.nix new file mode 100644 index 000000000000..6091c2b25a1e --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-logger/default.nix @@ -0,0 +1,51 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, proton-core +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-logger"; + version = "0.2.1-unstable-2023-05-10"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-logger"; + rev = "0acbc1ab41a65cbc9ceb340e3db011e6f89eb65a"; + hash = "sha256-VIggBKopAAKiNdQ5ypG1qI74E2WMDwDSriSuka/DBKA="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + proton-core + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton/vpn/logging/ --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.logging" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + preCheck = '' + # Needed for Permission denied: '/homeless-shelter' + export HOME=$(mktemp -d) + ''; + + meta = with lib; { + description = "General purpose logging package for the entire ProtonVPN Linux client"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-logger"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c9c46cc8284b..b67de8d57dc2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9723,6 +9723,8 @@ self: super: with self; { proton-core = callPackage ../development/python-modules/proton-core { }; + proton-vpn-logger = callPackage ../development/python-modules/proton-vpn-logger { }; + protonup-ng = callPackage ../development/python-modules/protonup-ng { }; protonvpn-nm-lib = callPackage ../development/python-modules/protonvpn-nm-lib { From f119508cf0e99d64d8f3b2c21bafa28b50e1a7bd Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 14:43:23 -0600 Subject: [PATCH 03/13] python3Packages.proton-vpn-session: init at 0.6.2-unstable-2023-10-24 --- .../proton-vpn-session/default.nix | 67 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 69 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-session/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-session/default.nix b/pkgs/development/python-modules/proton-vpn-session/default.nix new file mode 100644 index 000000000000..b61bed91682a --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-session/default.nix @@ -0,0 +1,67 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, cryptography +, distro +, proton-core +, proton-vpn-logger +, pynacl +, aiohttp +, pyopenssl +, pytest-asyncio +, requests +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-session"; + version = "0.6.2-unstable-2023-10-24"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-session"; + rev = "419b25bd1823f78d1219dc4cc441eeaf37646068"; + hash = "sha256-YPyNxbKxw+670bNQZ7U5nljyUjsNJ+k7eL+HpGiSCLk="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + cryptography + distro + proton-core + proton-vpn-logger + pynacl + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton.vpn.session --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.session" ]; + + postInstall = '' + # Needed for Permission denied: '/homeless-shelter' + export HOME=$(mktemp -d) + ''; + + nativeCheckInputs = [ + aiohttp + pyopenssl + pytest-asyncio + requests + pytestCheckHook + ]; + + meta = { + description = "Provides utility classes to manage VPN sessions"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-session"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b67de8d57dc2..1ff72e0e0330 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9725,6 +9725,8 @@ self: super: with self; { proton-vpn-logger = callPackage ../development/python-modules/proton-vpn-logger { }; + proton-vpn-session = callPackage ../development/python-modules/proton-vpn-session { }; + protonup-ng = callPackage ../development/python-modules/protonup-ng { }; protonvpn-nm-lib = callPackage ../development/python-modules/protonvpn-nm-lib { From ee5c9cc711474cebdf32df0210d0184ab423428d Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 14:46:52 -0600 Subject: [PATCH 04/13] python3Packages.proton-vpn-killswitch: init at 0.2.0-unstable-2023-09-05 --- .../proton-vpn-killswitch/default.nix | 46 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 48 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-killswitch/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-killswitch/default.nix b/pkgs/development/python-modules/proton-vpn-killswitch/default.nix new file mode 100644 index 000000000000..d36dedfbd4aa --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-killswitch/default.nix @@ -0,0 +1,46 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, proton-core +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-killswitch"; + version = "0.2.0-unstable-2023-09-05"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-killswitch"; + rev = "6e84588ea6ae0946141d4b44b2cf5df8465d5eba"; + hash = "sha256-eFwWN8E+nIDpbut8tkWqXucLhzm7HaLAMBIbAq/X2eo="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + proton-core + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton --cov-report=html --cov-report=term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.killswitch.interface" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "Defines the ProtonVPN kill switch interface"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-killswitch"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1ff72e0e0330..19d122d63c16 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9723,6 +9723,8 @@ self: super: with self; { proton-core = callPackage ../development/python-modules/proton-core { }; + proton-vpn-killswitch = callPackage ../development/python-modules/proton-vpn-killswitch { }; + proton-vpn-logger = callPackage ../development/python-modules/proton-vpn-logger { }; proton-vpn-session = callPackage ../development/python-modules/proton-vpn-session { }; From 3b4700191799e30e5a2e71ec41c49c244c306b25 Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 14:49:51 -0600 Subject: [PATCH 05/13] python3Packages.proton-vpn-connection: init at 0.11.0-unstable-2023-09-05 --- .../proton-vpn-connection/default.nix | 71 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 73 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-connection/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-connection/default.nix b/pkgs/development/python-modules/proton-vpn-connection/default.nix new file mode 100644 index 000000000000..7acbb173e8b6 --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-connection/default.nix @@ -0,0 +1,71 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, proton-core +, proton-vpn-killswitch +, proton-vpn-logger +, jinja2 +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-connection"; + version = "0.11.0-unstable-2023-09-05"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-connection"; + rev = "747ccacb5350ad59f2a09953b8d20c5c161aab54"; + hash = "sha256-WyMG0kmwBKoWc0mHnaop9E0upPAYHFwS/A9I1//WwlY="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + jinja2 + proton-core + proton-vpn-killswitch + proton-vpn-logger + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton.vpn.connection --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.connection" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + disabledTests = [ + # Permission denied: '/run' + "test_ensure_configuration_file_is_deleted" + "test_ensure_generate_is_returning_expected_content" + "test_ensure_same_configuration_file_in_case_of_duplicate" + "test_ensure_configuration_file_is_created" + "test_wireguard_config_content_generation" + "test_wireguard_with_malformed_credentials" + "test_wireguard_with_non_certificate" + "test_wireguard_without_settings" + # Neiter udp or tcp are working + "test_ovpnconfig_with_settings" + "test_ovpnconfig_with_missing_settings_applies_expected_defaults" + "test_ovpnconfig_with_malformed_params" + "test_ovpnconfig_with_certificate_and_malformed_credentials" + "test_ovpnconfig_with_malformed_server" + "test_ovpnconfig_with_malformed_server_and_credentials" + ]; + + meta = with lib; { + description = "Defines the interface that VPN connection backends should implement"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-connection"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 19d122d63c16..ce106b41cde9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9723,6 +9723,8 @@ self: super: with self; { proton-core = callPackage ../development/python-modules/proton-core { }; + proton-vpn-connection = callPackage ../development/python-modules/proton-vpn-connection { }; + proton-vpn-killswitch = callPackage ../development/python-modules/proton-vpn-killswitch { }; proton-vpn-logger = callPackage ../development/python-modules/proton-vpn-logger { }; From f63489a7f0a548df967dc58d7d8fd18a0046d37d Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 14:54:28 -0600 Subject: [PATCH 06/13] python3Packages.proton-vpn-api-core: init at 0.20.1-unstable-2023-10-10 --- .../proton-vpn-api-core/default.nix | 66 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 68 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-api-core/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-api-core/default.nix b/pkgs/development/python-modules/proton-vpn-api-core/default.nix new file mode 100644 index 000000000000..0906d2bd4248 --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-api-core/default.nix @@ -0,0 +1,66 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, proton-core +, proton-vpn-connection +, proton-vpn-logger +, proton-vpn-killswitch +, proton-vpn-session +, distro +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-api-core"; + version = "0.20.1-unstable-2023-10-10"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-api-core"; + rev = "9c03fc30d3ff08559cab3644eadde027b029375d"; + hash = "sha256-vnz1+NazQceAs9KA3Jq0tsJditRoG/LoBR+0wuDzzHk="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + distro + proton-core + proton-vpn-connection + proton-vpn-logger + proton-vpn-killswitch + proton-vpn-session + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton/vpn/core/ --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.core" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + preCheck = '' + # Needed for Permission denied: '/homeless-shelter' + export HOME=$(mktemp -d) + ''; + + disabledTestPaths = [ + # Has a single test failing with Permission denied: '/run' + "tests/test_session.py" + ]; + + meta = with lib; { + description = "Acts as a facade to the other Proton VPN components, exposing a uniform API to the available Proton VPN services"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-api-core"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ce106b41cde9..d62a3a330c97 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9723,6 +9723,8 @@ self: super: with self; { proton-core = callPackage ../development/python-modules/proton-core { }; + proton-vpn-api-core = callPackage ../development/python-modules/proton-vpn-api-core { }; + proton-vpn-connection = callPackage ../development/python-modules/proton-vpn-connection { }; proton-vpn-killswitch = callPackage ../development/python-modules/proton-vpn-killswitch { }; From fa25dd8118aa2e44655a22d9fd81d32dbc3507e0 Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 15:01:28 -0600 Subject: [PATCH 07/13] python3Packages.proton-vpn-network-manager: init at 0.3.0-unstable-2023-09-05 --- .../proton-vpn-network-manager/default.nix | 58 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 60 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-network-manager/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-network-manager/default.nix b/pkgs/development/python-modules/proton-vpn-network-manager/default.nix new file mode 100644 index 000000000000..f8874e1d0f3a --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-network-manager/default.nix @@ -0,0 +1,58 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, gobject-introspection +, setuptools +, networkmanager +, proton-core +, proton-vpn-connection +, pycairo +, pygobject3 +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-network-manager"; + version = "0.3.0-unstable-2023-09-05"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-network-manager"; + rev = "6ffd04fa0ae88a89d2b733443317066ef23b3ccd"; + hash = "sha256-Bqlwo7U/mwodQarl30n3/BNETqit1MVQUJT+mAhC6AI="; + }; + + nativeBuildInputs = [ + # Needed to recognize the NM namespace + gobject-introspection + setuptools + ]; + + propagatedBuildInputs = [ + # Needed here for the NM namespace + networkmanager + proton-core + proton-vpn-connection + pycairo + pygobject3 + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton/vpn/backend/linux/networkmanager --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.backend.linux.networkmanager" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "Provides the necessary functionality for other ProtonVPN components to interact with NetworkManager"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d62a3a330c97..4d9732c4bf80 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9731,6 +9731,8 @@ self: super: with self; { proton-vpn-logger = callPackage ../development/python-modules/proton-vpn-logger { }; + proton-vpn-network-manager = callPackage ../development/python-modules/proton-vpn-network-manager { }; + proton-vpn-session = callPackage ../development/python-modules/proton-vpn-session { }; protonup-ng = callPackage ../development/python-modules/protonup-ng { }; From 5d5343aae2924e2aa19be594e95855dec50d83ef Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 15:08:13 -0600 Subject: [PATCH 08/13] python3Packages.proton-vpn-killswitch-network-manager: init at 0.2.0-unstable-2023-09-05 --- .../default.nix | 58 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 60 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix b/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix new file mode 100644 index 000000000000..d0f62ac6f998 --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix @@ -0,0 +1,58 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, gobject-introspection +, setuptools +, networkmanager +, proton-vpn-killswitch +, proton-vpn-logger +, pycairo +, pygobject3 +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-killswitch-network-manager"; + version = "0.2.0-unstable-2023-09-05"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-killswitch-network-manager"; + rev = "39d4398f169539e335c1f661e0dfc5551df0e6af"; + hash = "sha256-vmTXMIhXZgRvXeUX/XslT+ShqY60w4P7kJBQzWhA66k="; + }; + + nativeBuildInputs = [ + # Solves ImportError: cannot import name NM, introspection typelib not found + gobject-introspection + setuptools + ]; + + propagatedBuildInputs = [ + # Needed here for the NM namespace + networkmanager + proton-vpn-killswitch + proton-vpn-logger + pycairo + pygobject3 + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton.vpn.killswitch.backend.linux.networkmanager --cov-report=html --cov-report=term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.killswitch.backend.linux.networkmanager" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "Implementation of the proton-vpn-killswitch interface using Network Manager"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-killswitch-network-manager"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4d9732c4bf80..507fa88bb167 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9729,6 +9729,8 @@ self: super: with self; { proton-vpn-killswitch = callPackage ../development/python-modules/proton-vpn-killswitch { }; + proton-vpn-killswitch-network-manager = callPackage ../development/python-modules/proton-vpn-killswitch-network-manager { }; + proton-vpn-logger = callPackage ../development/python-modules/proton-vpn-logger { }; proton-vpn-network-manager = callPackage ../development/python-modules/proton-vpn-network-manager { }; From 740207e85b713454dcc7e6bc27f11e171ba9c545 Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 15:14:51 -0600 Subject: [PATCH 09/13] python3Packages.proton-vpn-network-manager-openvpn: init at 0.0.4-unstable-2023-07-05 --- .../default.nix | 51 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 53 insertions(+) create mode 100644 pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix diff --git a/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix b/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix new file mode 100644 index 000000000000..9eca560ac005 --- /dev/null +++ b/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix @@ -0,0 +1,51 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, gobject-introspection +, setuptools +, proton-core +, proton-vpn-network-manager +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-vpn-network-manager-openvpn"; + version = "0.0.4-unstable-2023-07-05"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-vpn-network-manager-openvpn"; + rev = "b79f6732646378ef1b92696de3665ff9560286d3"; + hash = "sha256-Z5X8RRu+1KaZ0pnH7tzGhfeST2W8bxMZnuryLhFjG/g="; + }; + + nativeBuildInputs = [ + # Solves Namespace NM not available + gobject-introspection + setuptools + ]; + + propagatedBuildInputs = [ + proton-core + proton-vpn-network-manager + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton.vpn.backend.linux.networkmanager.protocol.openvpn --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.vpn.backend.linux.networkmanager.protocol" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "Adds support for the OpenVPN protocol using NetworkManager"; + homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager-openvpn"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 507fa88bb167..4d0e0501775a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9735,6 +9735,8 @@ self: super: with self; { proton-vpn-network-manager = callPackage ../development/python-modules/proton-vpn-network-manager { }; + proton-vpn-network-manager-openvpn = callPackage ../development/python-modules/proton-vpn-network-manager-openvpn { }; + proton-vpn-session = callPackage ../development/python-modules/proton-vpn-session { }; protonup-ng = callPackage ../development/python-modules/protonup-ng { }; From 36245fdd360012e5295b540527ca65f11e0def13 Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 15:18:42 -0600 Subject: [PATCH 10/13] python3Packages.proton-keyring-linux: init at 0.0.1-unstable-2023-04-14 --- .../proton-keyring-linux/default.nix | 48 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 50 insertions(+) create mode 100644 pkgs/development/python-modules/proton-keyring-linux/default.nix diff --git a/pkgs/development/python-modules/proton-keyring-linux/default.nix b/pkgs/development/python-modules/proton-keyring-linux/default.nix new file mode 100644 index 000000000000..4dac98134ac0 --- /dev/null +++ b/pkgs/development/python-modules/proton-keyring-linux/default.nix @@ -0,0 +1,48 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, keyring +, proton-core +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-keyring-linux"; + version = "0.0.1-unstable-2023-04-14"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-keyring-linux"; + rev = "5ff3c7f9a1a162836649502dd23c2fbe1f487d73"; + hash = "sha256-4d8ZePG8imURhdNtLbraMRisrTLoRvJ+L2UuuOo3MPM="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + keyring + proton-core + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton.keyring_linux.core --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.keyring_linux.core" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "ProtonVPN core component to access Linux's keyring"; + homepage = "https://github.com/ProtonVPN/python-proton-keyring-linux"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4d0e0501775a..52795f7f44c6 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9723,6 +9723,8 @@ self: super: with self; { proton-core = callPackage ../development/python-modules/proton-core { }; + proton-keyring-linux = callPackage ../development/python-modules/proton-keyring-linux { }; + proton-vpn-api-core = callPackage ../development/python-modules/proton-vpn-api-core { }; proton-vpn-connection = callPackage ../development/python-modules/proton-vpn-connection { }; From bbadbae8b77ac2fd1e46822fd7932f631e1b767e Mon Sep 17 00:00:00 2001 From: "P." Date: Tue, 5 Dec 2023 15:21:24 -0600 Subject: [PATCH 11/13] python3Packages.proton-keyring-linux-secretservice: init at 0.0.1-unstable-2023-04-14 --- .../default.nix | 46 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 48 insertions(+) create mode 100644 pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix diff --git a/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix b/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix new file mode 100644 index 000000000000..78de141dad56 --- /dev/null +++ b/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix @@ -0,0 +1,46 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, proton-keyring-linux +, pytestCheckHook +}: + +buildPythonPackage { + pname = "proton-keyring-linux-secretservice"; + version = "0.0.1-unstable-2023-04-14"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "python-proton-keyring-linux-secretservice"; + rev = "973d2646ec4d04bc270df53058df892950244e70"; + hash = "sha256-JlhvJBpbewT2c8k31CPMUlvvo/orWW1qfylFZLnDxeY="; + }; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = [ + proton-keyring-linux + ]; + + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton.keyring_linux.secretservice --cov-report html --cov-report term" "" + ''; + + pythonImportsCheck = [ "proton.keyring_linux" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = with lib; { + description = "ProtonVPN component to access Linux's keyring secret service API"; + homepage = "https://github.com/ProtonVPN/python-proton-keyring-linux-secretservice"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ wolfangaukang ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 52795f7f44c6..0b5d279ac150 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9725,6 +9725,8 @@ self: super: with self; { proton-keyring-linux = callPackage ../development/python-modules/proton-keyring-linux { }; + proton-keyring-linux-secretservice = callPackage ../development/python-modules/proton-keyring-linux-secretservice { }; + proton-vpn-api-core = callPackage ../development/python-modules/proton-vpn-api-core { }; proton-vpn-connection = callPackage ../development/python-modules/proton-vpn-connection { }; From d392a5dab9f1d7228f0a9d2eeceedb0cb7b2838b Mon Sep 17 00:00:00 2001 From: "P." Date: Thu, 7 Dec 2023 07:01:42 -0600 Subject: [PATCH 12/13] protonvpn-gui: 1.12.0 -> 4.1.0-unstable-2023-10-25 --- .../networking/protonvpn-gui/default.nix | 117 +++++++++++------- 1 file changed, 73 insertions(+), 44 deletions(-) diff --git a/pkgs/applications/networking/protonvpn-gui/default.nix b/pkgs/applications/networking/protonvpn-gui/default.nix index 14844161d18e..df0afdee4da4 100644 --- a/pkgs/applications/networking/protonvpn-gui/default.nix +++ b/pkgs/applications/networking/protonvpn-gui/default.nix @@ -1,74 +1,103 @@ { lib , buildPythonApplication , fetchFromGitHub -, wrapGAppsHook -, gdk-pixbuf -, glib-networking , gobject-introspection -, imagemagick -, librsvg -, pango -, webkitgtk -# Python libs -, protonvpn-nm-lib -, psutil -# Optionals +, setuptools +, wrapGAppsHook +, dbus-python +, packaging +, proton-core +, proton-keyring-linux +, proton-keyring-linux-secretservice +, proton-vpn-api-core +, proton-vpn-connection +, proton-vpn-killswitch +, proton-vpn-killswitch-network-manager +, proton-vpn-logger +, proton-vpn-network-manager +, proton-vpn-network-manager-openvpn +, proton-vpn-session +, pycairo +, pygobject3 +, pytestCheckHook , withIndicator ? true -, libappindicator-gtk3 }: +, libappindicator-gtk3 +, libayatana-appindicator +}: buildPythonApplication rec { pname = "protonvpn-gui"; - version = "1.12.0"; + version = "4.1.0-unstable-2023-10-25"; + pyproject = true; src = fetchFromGitHub { owner = "ProtonVPN"; - repo = "linux-app"; - rev = "refs/tags/${version}"; - sha256 = "sha256-MPS4d/yNkccsc/j85h7/4k4xL8uSCvhj/9JWPa7ezLY="; + repo = "proton-vpn-gtk-app"; + rev = "713324e9e4ee9f030c8115072cae379eb3340c42"; + hash = "sha256-DfuM4b2cSIA8j9Ux3TzInRCvzQGb9LvJDSwRhfadBPY="; }; nativeBuildInputs = [ - gdk-pixbuf + # Needed for the NM namespace gobject-introspection - imagemagick + setuptools wrapGAppsHook ]; - propagatedBuildInputs = [ - glib-networking # needed for the login captcha - protonvpn-nm-lib - psutil + buildInputs = lib.optionals withIndicator [ + # Adds AppIndicator3 namespace + libappindicator-gtk3 + # Adds AyatanaAppIndicator3 namespace + libayatana-appindicator ]; - buildInputs = [ - librsvg - pango - webkitgtk - ] ++ lib.optionals withIndicator [ libappindicator-gtk3 ]; + propagatedBuildInputs = [ + dbus-python + packaging + proton-core + proton-keyring-linux + proton-keyring-linux-secretservice + proton-vpn-api-core + proton-vpn-connection + proton-vpn-killswitch + proton-vpn-killswitch-network-manager + proton-vpn-logger + proton-vpn-network-manager + proton-vpn-network-manager-openvpn + proton-vpn-session + pycairo + pygobject3 + ]; - postInstall = '' - # Setting icons - for size in 16 32 48 64 72 96 128 192 512 1024; do - mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps - convert -resize $size'x'$size \ - protonvpn_gui/assets/icons/protonvpn-logo.png \ - $out/share/icons/hicolor/$size'x'$size/apps/protonvpn.png - done - - install -Dm644 protonvpn.desktop -t $out/share/applications/ - substituteInPlace $out/share/applications/protonvpn.desktop \ - --replace 'protonvpn-logo' protonvpn + postPatch = '' + substituteInPlace setup.cfg \ + --replace "--cov=proton --cov-report=html --cov-report=term" "" ''; - # Project has a dummy test + postInstall = '' + mkdir -p $out/share/{applications,pixmaps} + install -Dm 644 ${src}/rpmbuild/SOURCES/protonvpn-app.desktop $out/share/applications + install -Dm 644 ${src}/rpmbuild/SOURCES/proton-vpn-logo.svg $out/share/pixmaps + ''; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + preCheck = '' + # Needed for Permission denied: '/homeless-shelter' + export HOME=$(mktemp -d) + ''; + + # Gets a segmentation fault after the widgets test doCheck = false; meta = with lib; { - description = "Official ProtonVPN Linux app"; - homepage = "https://github.com/ProtonVPN/linux-app"; - maintainers = with maintainers; [ wolfangaukang ]; + description = "Proton VPN GTK app for Linux"; + homepage = "https://github.com/ProtonVPN/proton-vpn-gtk-app"; license = licenses.gpl3Plus; - mainProgram = "protonvpn"; platforms = platforms.linux; + mainProgram = "protonvpn-app"; + maintainers = with maintainers; [ wolfangaukang ]; }; } From 9aa6e8c534a2393d726d2b5785e2864f135760a6 Mon Sep 17 00:00:00 2001 From: "P." Date: Thu, 7 Dec 2023 07:03:16 -0600 Subject: [PATCH 13/13] protonvpn-gui_legacy: init at 1.12.0 --- .../networking/protonvpn-gui/legacy.nix | 79 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 80 insertions(+) create mode 100644 pkgs/applications/networking/protonvpn-gui/legacy.nix diff --git a/pkgs/applications/networking/protonvpn-gui/legacy.nix b/pkgs/applications/networking/protonvpn-gui/legacy.nix new file mode 100644 index 000000000000..7464a279cf8a --- /dev/null +++ b/pkgs/applications/networking/protonvpn-gui/legacy.nix @@ -0,0 +1,79 @@ +{ lib +, buildPythonApplication +, fetchFromGitHub +, setuptools +, wrapGAppsHook +, gdk-pixbuf +, glib-networking +, gobject-introspection +, imagemagick +, librsvg +, pango +, python3 +, webkitgtk +# Python libs +, protonvpn-nm-lib +, psutil +# Optionals +, withIndicator ? true +, libappindicator-gtk3 }: + +buildPythonApplication rec { + pname = "protonvpn-gui"; + version = "1.12.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ProtonVPN"; + repo = "linux-app"; + rev = "refs/tags/${version}"; + sha256 = "sha256-MPS4d/yNkccsc/j85h7/4k4xL8uSCvhj/9JWPa7ezLY="; + }; + + nativeBuildInputs = [ + gdk-pixbuf + gobject-introspection + imagemagick + setuptools + wrapGAppsHook + ]; + + propagatedBuildInputs = [ + glib-networking # needed for the login captcha + protonvpn-nm-lib + psutil + ]; + + buildInputs = [ + librsvg + pango + webkitgtk + ] ++ lib.optionals withIndicator [ libappindicator-gtk3 ]; + + postInstall = '' + # Setting icons + for size in 16 32 48 64 72 96 128 192 512 1024; do + mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps + convert -resize $size'x'$size \ + protonvpn_gui/assets/icons/protonvpn-logo.png \ + $out/share/icons/hicolor/$size'x'$size/apps/protonvpn.png + done + + install -Dm644 protonvpn.desktop -t $out/share/applications/ + chmod 644 $out/${python3.sitePackages}/protonvpn_gui/assets/icons/plus-server.png + substituteInPlace $out/share/applications/protonvpn.desktop \ + --replace 'protonvpn-logo' protonvpn + ''; + + # Project has a dummy test + doCheck = false; + + meta = with lib; { + description = "Official ProtonVPN Linux app"; + homepage = "https://github.com/ProtonVPN/linux-app"; + maintainers = with maintainers; [ wolfangaukang ]; + license = licenses.gpl3Plus; + mainProgram = "protonvpn"; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c4ab4e179285..f2d41609190d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -34825,6 +34825,7 @@ with pkgs; protonvpn-cli_2 = python3Packages.callPackage ../applications/networking/protonvpn-cli/2.nix { }; protonvpn-gui = python3Packages.callPackage ../applications/networking/protonvpn-gui { }; + protonvpn-gui_legacy = python3Packages.callPackage ../applications/networking/protonvpn-gui/legacy.nix { }; ps2client = callPackage ../applications/networking/ps2client { };