crun: 1.8.3 -> 1.8.4
[NixPkgs.git] / pkgs / tools / networking / v2raya / default.nix
blob022a4c3df9a67412ea5365a63f93b11276096b9a
1 { lib
2 , fetchFromGitHub
3 , mkYarnPackage
4 , buildGoModule
5 , makeWrapper
6 , v2ray
7 , v2ray-geoip
8 , v2ray-domain-list-community
9 , symlinkJoin
11 let
12   pname = "v2raya";
13   version = "2.0.2";
15   src = fetchFromGitHub {
16     owner = "v2rayA";
17     repo = "v2rayA";
18     rev = "v${version}";
19     sha256 = "sha256-C7N23s/GA66gQ5SVXtXcM9lXIjScR3pLYCrf0w2nHfY=";
20   };
22   web = mkYarnPackage {
23     inherit pname version;
24     src = "${src}/gui";
25     yarnNix = ./yarn.nix;
26     packageJSON = ./package.json;
27     yarnLock = ./yarn.lock;
28     buildPhase = ''
29       export NODE_OPTIONS=--openssl-legacy-provider
30       ln -s $src/postcss.config.js postcss.config.js
31       OUTPUT_DIR=$out yarn --offline build
32     '';
33     distPhase = "true";
34     dontInstall = true;
35     dontFixup = true;
36   };
38   assetsDir = symlinkJoin {
39     name = "assets";
40     paths = [ v2ray-geoip v2ray-domain-list-community ];
41   };
44 buildGoModule {
45   inherit pname version;
47   src = "${src}/service";
48   vendorSha256 = "sha256-vnhqI9G/p+SLLA4sre2wfmg1RKIYZmzeL0pSTbHb+Ck=";
50   ldflags = [
51     "-s"
52     "-w"
53     "-X github.com/v2rayA/v2rayA/conf.Version=${version}"
54   ];
56   subPackages = [ "." ];
58   nativeBuildInputs = [ makeWrapper ];
59   preBuild = ''
60     cp -a ${web} server/router/web
61   '';
63   postInstall = ''
64     install -Dm 444 ${src}/install/universal/v2raya.desktop -t $out/share/applications
65     install -Dm 444 ${src}/install/universal/v2raya.png -t $out/share/icons/hicolor/512x512/apps
66     substituteInPlace $out/share/applications/v2raya.desktop \
67       --replace 'Icon=/usr/share/icons/hicolor/512x512/apps/v2raya.png' 'Icon=v2raya'
69     wrapProgram $out/bin/v2rayA \
70       --prefix PATH ":" "${lib.makeBinPath [ v2ray ]}" \
71       --prefix XDG_DATA_DIRS ":" ${assetsDir}/share
72   '';
74   meta = with lib; {
75     description = "A Linux web GUI client of Project V which supports V2Ray, Xray, SS, SSR, Trojan and Pingtunnel";
76     homepage = "https://github.com/v2rayA/v2rayA";
77     mainProgram = "v2rayA";
78     license = licenses.agpl3Only;
79     platforms = platforms.linux;
80     maintainers = with maintainers; [ elliot ];
81   };