aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/applications/networking/protonvpn-gui/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/protonvpn-gui/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/networking/protonvpn-gui/default.nix86
1 files changed, 86 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/networking/protonvpn-gui/default.nix b/nixpkgs/pkgs/applications/networking/protonvpn-gui/default.nix
new file mode 100644
index 00000000000..38ffb42aaf8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protonvpn-gui/default.nix
@@ -0,0 +1,86 @@
+{ lib, fetchFromGitHub, makeDesktopItem, makeWrapper, imagemagick
+, python3Packages, wrapGAppsHook, protonvpn-cli, gtk3, pango
+, gobject-introspection, libnotify, libappindicator-gtk3
+, procps, openvpn }:
+
+let
+ extraPath = lib.makeBinPath [ procps openvpn ];
+
+in python3Packages.buildPythonApplication rec {
+ pname = "protonvpn-linux-gui";
+ version = "2.1.1";
+
+ src = fetchFromGitHub {
+ owner = "protonvpn";
+ repo = "linux-gui";
+ rev = "v${version}";
+ sha256 = "avo5/2eq53HSHCnnjtxrsmpURtHvxmLZn2BxActImGY=";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "ProtonVPN";
+ desktopName = "ProtonVPN GUI";
+ type = "Application";
+ exec = "protonvpn-gui";
+ icon = "protonvpn";
+ categories = "Network;";
+ terminal = "false";
+ };
+
+ trayDesktopItem = makeDesktopItem {
+ name = "ProtonVPN Tray";
+ desktopName = "ProtonVPN Tray";
+ type = "Application";
+ exec = "protonvpn-tray";
+ icon = "protonvpn";
+ categories = "Network;";
+ terminal = "false";
+ };
+
+ nativeBuildInputs = [ wrapGAppsHook makeWrapper imagemagick ];
+
+ propagatedBuildInputs = (with python3Packages; [
+ pygobject3
+ pycairo
+ requests
+ configparser
+ ]) ++ [
+ protonvpn-cli
+ gtk3
+ gobject-introspection
+ libnotify
+ libappindicator-gtk3
+ ];
+
+ prePatch = ''
+ # if pkexec is used, we want to have more time to enter password
+ substituteInPlace linux_gui/services/login_service.py --replace 'timeout=8' 'timeout=30'
+ '';
+
+ postInstall = ''
+ # wrap binaries with extra required path
+ wrapProgram "$out/bin/protonvpn-tray" --prefix PATH ":" ${extraPath}
+ wrapProgram "$out/bin/protonvpn-gui" --prefix PATH ":" ${extraPath}
+
+ # install desktop files
+ mkdir -p $out/share/applications
+ cp "$desktopItem/share/applications/ProtonVPN.desktop" $out/share/applications/protonvpn-gui.desktop
+ cp "$trayDesktopItem/share/applications/ProtonVPN Tray.desktop" $out/share/applications/protonvpn-tray.desktop
+
+ # create 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" \
+ linux_gui/resources/img/logo/protonvpn_logo.png \
+ $out/share/icons/hicolor/"$size"x"$size"/apps/protonvpn.png
+ done
+ '';
+
+ meta = with lib; {
+ description = "Linux GUI for ProtonVPN, written in Python.";
+ homepage = "https://github.com/ProtonVPN/linux-gui";
+ maintainers = with maintainers; [ offline ];
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ };
+}