tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
protonvpn-gui: build new official client
P. R. d. O
4 years ago
35278505
a26ebd98
+31
-67
1 changed file
expand all
collapse all
unified
split
pkgs
applications
networking
protonvpn-gui
default.nix
+31
-67
pkgs/applications/networking/protonvpn-gui/default.nix
···
1
1
-
{ lib, fetchFromGitHub, makeDesktopItem, makeWrapper, imagemagick
2
2
-
, python3Packages, wrapGAppsHook, protonvpn-cli, gtk3, pango
3
3
-
, gobject-introspection, libnotify, libappindicator-gtk3
4
4
-
, procps, openvpn }:
1
1
+
{ lib, fetchFromGitHub, gobject-introspection, imagemagick,
2
2
+
wrapGAppsHook, python3Packages, gtk3, networkmanager, webkitgtk }:
5
3
6
6
-
let
7
7
-
extraPath = lib.makeBinPath [ procps openvpn ];
8
8
-
9
9
-
in python3Packages.buildPythonApplication rec {
4
4
+
python3Packages.buildPythonApplication rec {
10
5
pname = "protonvpn-linux-gui";
11
11
-
version = "2.1.1";
6
6
+
version = "1.4.1";
12
7
13
8
src = fetchFromGitHub {
14
14
-
owner = "protonvpn";
15
15
-
repo = "linux-gui";
16
16
-
rev = "v${version}";
17
17
-
sha256 = "avo5/2eq53HSHCnnjtxrsmpURtHvxmLZn2BxActImGY=";
9
9
+
owner = "ProtonVPN";
10
10
+
repo = "linux-app";
11
11
+
rev = version;
12
12
+
sha256 = "sha256-08gXEKm8udgNltRdqvAMFL0pDCWZu/kfl1xGQtZPBCc=";
18
13
};
19
14
20
20
-
desktopItem = makeDesktopItem {
21
21
-
name = "ProtonVPN";
22
22
-
desktopName = "ProtonVPN GUI";
23
23
-
type = "Application";
24
24
-
exec = "protonvpn-gui";
25
25
-
icon = "protonvpn";
26
26
-
categories = "Network;";
27
27
-
terminal = "false";
28
28
-
};
29
29
-
30
30
-
trayDesktopItem = makeDesktopItem {
31
31
-
name = "ProtonVPN Tray";
32
32
-
desktopName = "ProtonVPN Tray";
33
33
-
type = "Application";
34
34
-
exec = "protonvpn-tray";
35
35
-
icon = "protonvpn";
36
36
-
categories = "Network;";
37
37
-
terminal = "false";
38
38
-
};
39
39
-
40
40
-
nativeBuildInputs = [ wrapGAppsHook makeWrapper imagemagick ];
41
41
-
42
42
-
propagatedBuildInputs = (with python3Packages; [
43
43
-
pygobject3
44
44
-
pycairo
45
45
-
requests
46
46
-
configparser
47
47
-
]) ++ [
48
48
-
protonvpn-cli
49
49
-
gtk3
50
50
-
gobject-introspection
51
51
-
libnotify
52
52
-
libappindicator-gtk3
53
53
-
];
15
15
+
strictDeps = false;
54
16
55
55
-
prePatch = ''
56
56
-
# if pkexec is used, we want to have more time to enter password
57
57
-
substituteInPlace linux_gui/services/login_service.py --replace 'timeout=8' 'timeout=30'
58
58
-
'';
17
17
+
nativeBuildInputs = [
18
18
+
gobject-introspection imagemagick wrapGAppsHook
19
19
+
];
59
20
60
60
-
postInstall = ''
61
61
-
# wrap binaries with extra required path
62
62
-
wrapProgram "$out/bin/protonvpn-tray" --prefix PATH ":" ${extraPath}
63
63
-
wrapProgram "$out/bin/protonvpn-gui" --prefix PATH ":" ${extraPath}
21
21
+
propagatedBuildInputs = with python3Packages; [
22
22
+
protonvpn-nm-lib
23
23
+
psutil
24
24
+
];
64
25
65
65
-
# install desktop files
66
66
-
mkdir -p $out/share/applications
67
67
-
cp "$desktopItem/share/applications/ProtonVPN.desktop" $out/share/applications/protonvpn-gui.desktop
68
68
-
cp "$trayDesktopItem/share/applications/ProtonVPN Tray.desktop" $out/share/applications/protonvpn-tray.desktop
26
26
+
buildInputs = [
27
27
+
gtk3 networkmanager webkitgtk
28
28
+
];
69
29
70
70
-
# create icons
30
30
+
postFixup = ''
31
31
+
# Setting icons
71
32
for size in 16 32 48 64 72 96 128 192 512 1024; do
72
33
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
73
73
-
convert -resize "$size"x"$size" \
74
74
-
linux_gui/resources/img/logo/protonvpn_logo.png \
75
75
-
$out/share/icons/hicolor/"$size"x"$size"/apps/protonvpn.png
34
34
+
convert -resize $size'x'$size \
35
35
+
protonvpn_gui/assets/icons/protonvpn-logo.png \
36
36
+
$out/share/icons/hicolor/$size'x'$size/apps/protonvpn.png
76
37
done
38
38
+
39
39
+
install -Dm644 protonvpn.desktop -t $out/share/applications/
40
40
+
substituteInPlace $out/share/applications/protonvpn.desktop \
41
41
+
--replace 'protonvpn-logo' protonvpn
77
42
'';
78
43
79
79
-
# no tests
44
44
+
# Project has a dummy test
80
45
doCheck = false;
81
46
82
47
meta = with lib; {
83
48
description = "Linux GUI for ProtonVPN, written in Python";
84
84
-
homepage = "https://github.com/ProtonVPN/linux-gui";
85
85
-
maintainers = with maintainers; [ offline ];
49
49
+
homepage = "https://github.com/ProtonVPN/linux-app";
50
50
+
maintainers = with maintainers; [ offline wolfangaukang ];
86
51
license = licenses.gpl3Plus;
87
52
platforms = platforms.linux;
88
88
-
mainProgram = "protonvpn-gui";
89
53
};
90
54
}