Merge pull request #205784 from Eliot00/v2raya-fix

v2raya: v2rayA should start after nftables

Nick Cao a1291d0d 03057aa1

Changed files
+45 -23
nixos
modules
services
networking
pkgs
tools
networking
v2raya
+30 -19
nixos/modules/services/networking/v2raya.nix
···
config = mkIf config.services.v2raya.enable {
environment.systemPackages = [ pkgs.v2raya ];
-
systemd.services.v2raya = {
-
unitConfig = {
-
Description = "v2rayA service";
-
Documentation = "https://github.com/v2rayA/v2rayA/wiki";
-
After = [ "network.target" "nss-lookup.target" "iptables.service" "ip6tables.service" ];
-
Wants = [ "network.target" ];
-
};
+
systemd.services.v2raya =
+
let
+
nftablesEnabled = config.networking.nftables.enable;
+
iptablesServices = [
+
"iptables.service"
+
] ++ optional config.networking.enableIPv6 "ip6tables.service";
+
tableServices = if nftablesEnabled then [ "nftables.service" ] else iptablesServices;
+
in
+
{
+
unitConfig = {
+
Description = "v2rayA service";
+
Documentation = "https://github.com/v2rayA/v2rayA/wiki";
+
After = [
+
"network.target"
+
"nss-lookup.target"
+
] ++ tableServices;
+
Wants = [ "network.target" ];
+
};
+
+
serviceConfig = {
+
User = "root";
+
ExecStart = "${getExe pkgs.v2raya} --log-disable-timestamp";
+
Environment = [ "V2RAYA_LOG_FILE=/var/log/v2raya/v2raya.log" ];
+
LimitNPROC = 500;
+
LimitNOFILE = 1000000;
+
Restart = "on-failure";
+
Type = "simple";
+
};
-
serviceConfig = {
-
User = "root";
-
ExecStart = "${getExe pkgs.v2raya} --log-disable-timestamp";
-
Environment = [ "V2RAYA_LOG_FILE=/var/log/v2raya/v2raya.log" ];
-
LimitNPROC = 500;
-
LimitNOFILE = 1000000;
-
Restart = "on-failure";
-
Type = "simple";
+
wantedBy = [ "multi-user.target" ];
+
path = with pkgs; [ iptables bash iproute2 ]; # required by v2rayA TProxy functionality
};
-
-
wantedBy = [ "multi-user.target" ];
-
path = with pkgs; [ iptables bash iproute2 ]; # required by v2rayA TProxy functionality
-
};
};
meta.maintainers = with maintainers; [ elliot ];
+15 -4
pkgs/tools/networking/v2raya/default.nix
···
let
pname = "v2raya";
version = "2.0.0";
+
src = fetchFromGitHub {
owner = "v2rayA";
repo = "v2rayA";
rev = "v${version}";
sha256 = "sha256-1fWcrMd+TSrlS1H0z7XwVCQzZAa8DAFtlekEZNRMAPA=";
};
+
web = mkYarnPackage {
inherit pname version;
src = "${src}/gui";
···
dontInstall = true;
dontFixup = true;
};
+
+
assetsDir = symlinkJoin {
+
name = "assets";
+
paths = [ v2ray-geoip v2ray-domain-list-community ];
+
};
+
in
buildGoModule {
inherit pname version;
+
src = "${src}/service";
vendorSha256 = "sha256-Ud4pwS0lz7zSTowg3gXNllfDyj8fu33H1L20szxPcOA=";
+
ldflags = [
"-s"
"-w"
"-X github.com/v2rayA/v2rayA/conf.Version=${version}"
];
+
subPackages = [ "." ];
+
nativeBuildInputs = [ makeWrapper ];
preBuild = ''
cp -a ${web} server/router/web
'';
+
postInstall = ''
install -Dm 444 ${src}/install/universal/v2raya.desktop -t $out/share/applications
install -Dm 444 ${src}/install/universal/v2raya.png -t $out/share/icons/hicolor/512x512/apps
···
wrapProgram $out/bin/v2rayA \
--prefix PATH ":" "${lib.makeBinPath [ v2ray ]}" \
-
--prefix XDG_DATA_DIRS ":" ${symlinkJoin {
-
name = "assets";
-
paths = [ v2ray-geoip v2ray-domain-list-community ];
-
}}/share
+
--prefix XDG_DATA_DIRS ":" ${assetsDir}/share
'';
+
meta = with lib; {
description = "A Linux web GUI client of Project V which supports V2Ray, Xray, SS, SSR, Trojan and Pingtunnel";
homepage = "https://github.com/v2rayA/v2rayA";