diff --git a/adapter/outbound/vmess.go b/adapter/outbound/vmess.go index b8d09f45..a66ee40f 100644 --- a/adapter/outbound/vmess.go +++ b/adapter/outbound/vmess.go @@ -54,6 +54,7 @@ type VmessOption struct { PacketAddr bool `proxy:"packet-addr,omitempty"` XUDP bool `proxy:"xudp,omitempty"` PacketEncoding string `proxy:"packet-encoding,omitempty"` + GlobalPadding bool `proxy:"global-padding,omitempty"` AuthenticatedLength bool `proxy:"authenticated-length,omitempty"` } @@ -311,6 +312,9 @@ func (v *Vmess) SupportUOT() bool { func NewVmess(option VmessOption) (*Vmess, error) { security := strings.ToLower(option.Cipher) var options []vmess.ClientOption + if option.GlobalPadding { + options = append(options, vmess.ClientWithGlobalPadding()) + } if option.AuthenticatedLength { options = append(options, vmess.ClientWithAuthenticatedLength()) } diff --git a/default.nix b/default.nix deleted file mode 100755 index 7e9eb182..00000000 --- a/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ lib -, fetchFromGitHub -, buildGoModule -}: -buildGoModule rec { - pname = "clash-meta"; - version = "dev"; - src = ./.; - vendorSha256 = "sha256-7HjYcoqWA5gvPUc5psCgy0UTc17CBzBJ/OiGvII/iBA="; - - # Do not build testing suit - excludedPackages = [ "./test" ]; - - CGO_ENABLED = 0; - - ldflags = [ - "-s" - "-w" - "-X github.com/Dreamacro/clash/constant.Version=${version}" - ]; - - # network required - doCheck = false; - - postInstall = '' - mv $out/bin/clash $out/bin/clash-meta - ''; - - meta = with lib; { - description = "Another Clash Kernel"; - homepage = "https://github.com/MetaCubeX/Clash.Meta"; - license = licenses.gpl3Only; - }; -} diff --git a/flake.lock b/flake.lock index 01b81807..7da95ac3 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1664638641, - "narHash": "sha256-r2gVLq9DD1A0Igv4AdkmpuuVykXmKVsJTAJinS/ZFrM=", + "lastModified": 1664705630, + "narHash": "sha256-MLi1J9tIZQFj8v9RKmG89HJAE5ja3z4ui4Tf9+wG/bM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cb81a9ca94e7631bc67788d858e214d56571983a", + "rev": "f71b215225dec75df6266ff7764d54c2e44ef226", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 3e8fd557..4afb1d53 100644 --- a/flake.nix +++ b/flake.nix @@ -9,19 +9,49 @@ utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { + inherit system; + overlays = [ self.overlay ]; + }; in - { - packages = rec{ - clash-meta = pkgs.callPackage ./. { }; - default = clash-meta; - }; - - apps = rec { - clash-meta = utils.lib.mkApp { drv = self.packages.${system}.clash-meta; }; - default = clash-meta; - }; + rec { + packages.default = pkgs.clash-meta; } - ); + ) // + ( + let version = nixpkgs.lib.substring 0 8 self.lastModifiedDate or self.lastModified or "19700101"; in + { + overlay = final: prev: { + + clash-meta = final.buildGoModule { + pname = "clash-meta"; + inherit version; + src = ./.; + + vendorSha256 = "sha256-Af1RgeB6APxKW9m+rm2mkpYSXwAgFTzRyW0GJe9ML+A="; + + # Do not build testing suit + excludedPackages = [ "./test" ]; + + CGO_ENABLED = 0; + + ldflags = [ + "-s" + "-w" + "-X github.com/Dreamacro/clash/constant.Version=dev-${version}" + "-X github.com/Dreamacro/clash/constant.BuildTime=${version}" + ]; + + # Network required + doCheck = false; + + postInstall = '' + mv $out/bin/clash $out/bin/clash-meta + ''; + + }; + }; + } + ); }