summary refs log tree commit diff
path: root/pkgs/tools/networking/v2ray
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/networking/v2ray')
-rw-r--r--pkgs/tools/networking/v2ray/default.nix79
-rw-r--r--pkgs/tools/networking/v2ray/generic.nix52
-rwxr-xr-xpkgs/tools/networking/v2ray/update.sh12
3 files changed, 71 insertions, 72 deletions
diff --git a/pkgs/tools/networking/v2ray/default.nix b/pkgs/tools/networking/v2ray/default.nix
index ab3f5eb3ef4..8c82c379c38 100644
--- a/pkgs/tools/networking/v2ray/default.nix
+++ b/pkgs/tools/networking/v2ray/default.nix
@@ -1,38 +1,89 @@
-{ callPackage, fetchFromGitHub, fetchurl
+{ lib, fetchFromGitHub, fetchurl, linkFarm, buildGoModule, runCommand, makeWrapper, nixosTests
 , assetOverrides ? {}
-, ... } @ args:
+}:
 
-callPackage ./generic.nix (rec {
-  version = "4.26.0";
+let
+  version = "4.41.0";
 
   src = fetchFromGitHub {
-    owner = "v2ray";
+    owner = "v2fly";
     repo = "v2ray-core";
     rev = "v${version}";
-    sha256 = "069wm0n44i4l9pnrhwf60ssld65p6gfj4wfc68hrhj4zi4jvlyds";
+    sha256 = "1300gl6y94i1488ja6kic0m5fa2qxakbdc06qd0lgkg6inzbm6gz";
   };
 
-  vendorSha256 = "1520h69z0inbsrw5505cxbinqakvwcrdx3pisrwnp9lv4jsrzzsr";
+  vendorSha256 = "sha256-oHKXDzufvTzOzBqFjBzu3vCwTF/FJMomopY3cUktwiM=";
 
   assets = {
     # MIT licensed
     "geoip.dat" = let
-      geoipRev = "202007080004";
-      geoipSha256 = "1j4qg831dhxdy7brgxn4ca69cvwr3zsgizidlzasbkdn2rwai17y";
+      geoipRev = "202106240309";
+      geoipSha256 = "0ypydpgvizf9pfdxna3f6fqn1svsrkac0p3j9s63y55gbqpglacq";
     in fetchurl {
-      url = "https://github.com/v2ray/geoip/releases/download/${geoipRev}/geoip.dat";
+      url = "https://github.com/v2fly/geoip/releases/download/${geoipRev}/geoip.dat";
       sha256 = geoipSha256;
     };
 
     # MIT licensed
     "geosite.dat" = let
-      geositeRev = "20200708125309";
-      geositeSha256 = "1pr4137ri3v3r880yx5sqf2p7qfn8g7s555q51x3smkjzkyrskcy";
+      geositeRev = "20210626145509";
+      geositeSha256 = "0skhwwlzlyh8rvzyblg1l2xw1bawqs12i6zw5sv3d55pnw7wmf2z";
     in fetchurl {
-      url = "https://github.com/v2ray/domain-list-community/releases/download/${geositeRev}/dlc.dat";
+      url = "https://github.com/v2fly/domain-list-community/releases/download/${geositeRev}/dlc.dat";
       sha256 = geositeSha256;
     };
 
   } // assetOverrides;
 
-} // args)
+  assetsDrv = linkFarm "v2ray-assets" (lib.mapAttrsToList (name: path: {
+    inherit name path;
+  }) assets);
+
+  core = buildGoModule rec {
+    pname = "v2ray-core";
+    inherit version src;
+
+    inherit vendorSha256;
+
+    doCheck = false;
+
+    buildPhase = ''
+      buildFlagsArray=(-v -p $NIX_BUILD_CORES -ldflags="-s -w")
+      runHook preBuild
+      go build "''${buildFlagsArray[@]}" -o v2ray ./main
+      go build "''${buildFlagsArray[@]}" -o v2ctl -tags confonly ./infra/control/main
+      runHook postBuild
+    '';
+
+    installPhase = ''
+      install -Dm755 v2ray v2ctl -t $out/bin
+    '';
+
+    meta = {
+      homepage = "https://www.v2fly.org/en_US/";
+      description = "A platform for building proxies to bypass network restrictions";
+      license = with lib.licenses; [ mit ];
+      maintainers = with lib.maintainers; [ servalcatty ];
+    };
+  };
+
+in runCommand "v2ray-${version}" {
+  inherit src version;
+  inherit (core) meta;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  passthru = {
+    inherit core;
+    updateScript = ./update.sh;
+    tests = {
+      simple-vmess-proxy-test = nixosTests.v2ray;
+    };
+  };
+
+} ''
+  for file in ${core}/bin/*; do
+    makeWrapper "$file" "$out/bin/$(basename "$file")" \
+      --set-default V2RAY_LOCATION_ASSET ${assetsDrv}
+  done
+''
diff --git a/pkgs/tools/networking/v2ray/generic.nix b/pkgs/tools/networking/v2ray/generic.nix
deleted file mode 100644
index 4499e91425f..00000000000
--- a/pkgs/tools/networking/v2ray/generic.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ lib, linkFarm, buildGoModule, runCommand, makeWrapper
-
-# Version specific args
-, version, src, assets, vendorSha256
-, ... }:
-
-let
-  assetsDrv = linkFarm "v2ray-assets" (lib.mapAttrsToList (name: path: {
-    inherit name path;
-  }) assets);
-
-  core = buildGoModule rec {
-    pname = "v2ray-core";
-    inherit version src;
-
-    inherit vendorSha256;
-
-    doCheck = false;
-
-    buildPhase = ''
-      runHook preBuild
-
-      go build -o v2ray v2ray.com/core/main
-      go build -o v2ctl v2ray.com/core/infra/control/main
-
-      runHook postBuild
-    '';
-
-    installPhase = ''
-      install -Dm755 v2ray v2ctl -t $out/bin
-    '';
-  };
-
-in runCommand "v2ray-${version}" {
-  inherit version;
-
-  buildInputs = [ assetsDrv core ];
-  nativeBuildInputs = [ makeWrapper ];
-
-  meta = {
-    homepage = "https://www.v2ray.com/en/index.html";
-    description = "A platform for building proxies to bypass network restrictions";
-    license = with lib.licenses; [ mit ];
-    maintainers = with lib.maintainers; [ servalcatty ];
-  };
-
-} ''
-  for file in ${core}/bin/*; do
-    makeWrapper "$file" "$out/bin/$(basename "$file")" \
-      --set-default V2RAY_LOCATION_ASSET ${assetsDrv}
-  done
-''
diff --git a/pkgs/tools/networking/v2ray/update.sh b/pkgs/tools/networking/v2ray/update.sh
index 56a148444c7..f645b8ea093 100755
--- a/pkgs/tools/networking/v2ray/update.sh
+++ b/pkgs/tools/networking/v2ray/update.sh
@@ -14,7 +14,7 @@ echo "Current version:" >&2
 echo "core: $old_core_rev, geoip: $old_geoip_rev, geosite: $old_geosite_rev" >&2
 
 function fetch_latest_rev {
-    curl "https://api.github.com/repos/v2ray/$1/releases" |
+    curl "https://api.github.com/repos/v2fly/$1/releases" |
         jq '.[0].tag_name' --raw-output
 }
 
@@ -28,7 +28,7 @@ echo "core: $core_rev, geoip: $geoip_rev, geosite: $geosite_rev" >&2
 if [[ $core_rev != $old_core_rev ]]; then
     echo "Prefetching core..." >&2
     { read hash; read store_path; } < <(
-        nix-prefetch-url --unpack --print-path "https://github.com/v2ray/v2ray-core/archive/v$core_rev.zip"
+        nix-prefetch-url --unpack --print-path "https://github.com/v2fly/v2ray-core/archive/v$core_rev.zip"
     )
 
     sed --in-place \
@@ -40,7 +40,7 @@ fi
 
 if [[ $geoip_rev != $old_geoip_rev ]]; then
     echo "Prefetching geoip..." >&2
-    hash=$(nix-prefetch-url "https://github.com/v2ray/geoip/releases/download/$geoip_rev/geoip.dat")
+    hash=$(nix-prefetch-url "https://github.com/v2fly/geoip/releases/download/$geoip_rev/geoip.dat")
     sed --in-place \
         -e "s/\bgeoipRev = \".*\"/geoipRev = \"$geoip_rev\"/" \
         -e "s/\bgeoipSha256 = \".*\"/geoipSha256 = \"$hash\"/" \
@@ -49,7 +49,7 @@ fi
 
 if [[ $geosite_rev != $old_geosite_rev ]]; then
     echo "Prefetching geosite..." >&2
-    hash=$(nix-prefetch-url "https://github.com/v2ray/domain-list-community/releases/download/$geosite_rev/dlc.dat")
+    hash=$(nix-prefetch-url "https://github.com/v2fly/domain-list-community/releases/download/$geosite_rev/dlc.dat")
     sed --in-place \
         -e "s/\bgeositeRev = \".*\"/geositeRev = \"$geosite_rev\"/" \
         -e "s/\bgeositeSha256 = \".*\"/geositeSha256 = \"$hash\"/" \
@@ -61,11 +61,11 @@ set +o pipefail
 vendorSha256=$(
     nix-build "$nixpkgs" -A v2ray --no-out-link 2>&1 |
     tee /dev/stderr |
-    sed -nE 's/.*got:\s*sha256:(\w+)$/\1/p'
+    sed -nE 's/.*got:\s*(sha256\S+)$/\1/p'
 )
 [[ "$vendorSha256" ]]
 sed --in-place \
-    -e "s/vendorSha256 = \".*\"/vendorSha256 = \"$vendorSha256\"/" \
+    -e "s#vendorSha256 = \".*\"#vendorSha256 = \"$vendorSha256\"#" \
     "$version_nix"
 
 echo "vendorSha256 updated" >&2