Merge pull request #147975 from andersk/mozillavpn

This commit is contained in:
Sandro 2022-04-08 15:32:45 +02:00 committed by GitHub
commit 45b9690a75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 144 additions and 0 deletions

View file

@ -219,6 +219,15 @@
to be able to access the device.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://github.com/mozilla-mobile/mozilla-vpn-client">mozillavpn</link>,
the client for the
<link xlink:href="https://vpn.mozilla.org/">Mozilla VPN</link>
service. Available as
<link xlink:href="options.html#opt-services.mozillavpn">services.mozillavpn</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://github.com/mgumz/mtr-exporter">mtr-exporter</link>,

View file

@ -65,6 +65,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](options.html#opt-programs.k4-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device.
- [mozillavpn](https://github.com/mozilla-mobile/mozilla-vpn-client), the client for the [Mozilla VPN](https://vpn.mozilla.org/) service. Available as [services.mozillavpn](options.html#opt-services.mozillavpn).
- [mtr-exporter](https://github.com/mgumz/mtr-exporter), a Prometheus exporter for mtr metrics. Available as [services.mtr-exporter](options.html#opt-services.mtr-exporter.enable).
- [prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter), a tool that exposes information from the Proxmox VE API for use by Prometheus. Available as [services.prometheus.exporters.pve](options.html#opt-services.prometheus.exporters.pve).

View file

@ -816,6 +816,7 @@
./services/networking/mosquitto.nix
./services/networking/monero.nix
./services/networking/morty.nix
./services/networking/mozillavpn.nix
./services/networking/miredo.nix
./services/networking/mstpd.nix
./services/networking/mtprotoproxy.nix

View file

@ -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 ];
}

View file

@ -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;
};
}

View file

@ -5082,6 +5082,8 @@ with pkgs;
mcrcon = callPackage ../tools/networking/mcrcon {};
mozillavpn = libsForQt5.callPackage ../tools/networking/mozillavpn { };
mozwire = callPackage ../tools/networking/mozwire {
inherit (darwin.apple_sdk.frameworks) Security;
};