parent
18bd82edcc
commit
abfcc2e0ff
@ -0,0 +1,19 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
{ |
||||
options.services.mozillavpn.enable = lib.mkOption { |
||||
type = lib.types.bool; |
||||
default = false; |
||||
description = '' |
||||
Enable the Mozilla VPN daemon. |
||||
''; |
||||
}; |
||||
|
||||
config = lib.mkIf config.services.mozillavpn.enable { |
||||
environment.systemPackages = [ pkgs.mozillavpn ]; |
||||
services.dbus.packages = [ pkgs.mozillavpn ]; |
||||
systemd.packages = [ pkgs.mozillavpn ]; |
||||
}; |
||||
|
||||
meta.maintainers = with lib.maintainers; [ andersk ]; |
||||
} |
@ -0,0 +1,111 @@ |
||||
{ buildGoModule |
||||
, fetchFromGitHub |
||||
, go |
||||
, lib |
||||
, pkg-config |
||||
, polkit |
||||
, python3 |
||||
, qmake |
||||
, qtbase |
||||
, qtcharts |
||||
, qtgraphicaleffects |
||||
, qtnetworkauth |
||||
, qtquickcontrols2 |
||||
, qttools |
||||
, qtwebsockets |
||||
, stdenv |
||||
, which |
||||
, wireguard-tools |
||||
, wrapQtAppsHook |
||||
}: |
||||
|
||||
let |
||||
glean_parser_4_1_1 = python3.pkgs.buildPythonPackage rec { |
||||
pname = "glean_parser"; |
||||
version = "4.1.1"; |
||||
src = python3.pkgs.fetchPypi { |
||||
inherit pname version; |
||||
hash = "sha256-4noazRqjjJNI2kTO714kSp70jZpWmqHWR2vnkgAftLE="; |
||||
}; |
||||
nativeBuildInputs = with python3.pkgs; [ setuptools-scm ]; |
||||
propagatedBuildInputs = with python3.pkgs; [ |
||||
appdirs |
||||
click |
||||
diskcache |
||||
jinja2 |
||||
jsonschema |
||||
pyyaml |
||||
setuptools |
||||
yamllint |
||||
]; |
||||
postPatch = '' |
||||
substituteInPlace setup.py --replace '"pytest-runner", ' "" |
||||
''; |
||||
doCheck = false; |
||||
}; |
||||
|
||||
pname = "mozillavpn"; |
||||
version = "2.7.1"; |
||||
src = fetchFromGitHub { |
||||
owner = "mozilla-mobile"; |
||||
repo = "mozilla-vpn-client"; |
||||
rev = "v${version}"; |
||||
fetchSubmodules = true; |
||||
hash = "sha256-i551UkCOwWnioe1YgCNZAlYiQJ4YDDBMoDZhfbkLTbs="; |
||||
}; |
||||
|
||||
netfilter-go-modules = (buildGoModule { |
||||
inherit pname version src; |
||||
vendorSha256 = "sha256-KFYMim5U8WlJHValvIBQgEN+17SDv0JVbH03IiyfDc0="; |
||||
modRoot = "linux/netfilter"; |
||||
}).go-modules; |
||||
|
||||
in |
||||
stdenv.mkDerivation { |
||||
inherit pname version src; |
||||
|
||||
buildInputs = [ |
||||
polkit |
||||
qtbase |
||||
qtcharts |
||||
qtgraphicaleffects |
||||
qtnetworkauth |
||||
qtquickcontrols2 |
||||
qtwebsockets |
||||
]; |
||||
nativeBuildInputs = [ |
||||
glean_parser_4_1_1 |
||||
go |
||||
pkg-config |
||||
python3 |
||||
python3.pkgs.pyyaml |
||||
qmake |
||||
qttools |
||||
which |
||||
wrapQtAppsHook |
||||
]; |
||||
|
||||
postPatch = '' |
||||
for file in linux/*.service linux/extra/*.desktop src/platforms/linux/daemon/*.service; do |
||||
substituteInPlace "$file" --replace /usr/bin/mozillavpn "$out/bin/mozillavpn" |
||||
done |
||||
''; |
||||
|
||||
preBuild = '' |
||||
ln -s '${netfilter-go-modules}' linux/netfilter/vendor |
||||
python3 scripts/generate_glean.py |
||||
python3 scripts/importLanguages.py |
||||
''; |
||||
|
||||
qmakeFlags = [ "USRPATH=$(out)" "ETCPATH=$(out)/etc" ]; |
||||
qtWrapperArgs = |
||||
[ "--prefix" "PATH" ":" (lib.makeBinPath [ wireguard-tools ]) ]; |
||||
|
||||
meta = { |
||||
description = "Client for the Mozilla VPN service"; |
||||
homepage = "https://vpn.mozilla.org/"; |
||||
license = lib.licenses.mpl20; |
||||
maintainers = with lib.maintainers; [ andersk ]; |
||||
platforms = lib.platforms.linux; |
||||
}; |
||||
} |
Loading…
Reference in new issue