diff --git a/pkgs/tools/networking/wsl-vpnkit/default.nix b/pkgs/tools/networking/wsl-vpnkit/default.nix new file mode 100644 index 000000000000..39152cbab205 --- /dev/null +++ b/pkgs/tools/networking/wsl-vpnkit/default.nix @@ -0,0 +1,84 @@ +{ lib +, resholve +, fetchFromGitHub + + # Runtime dependencies +, coreutils +, dnsutils +, gawk +, gnugrep +, gvproxy +, iproute2 +, iptables +, iputils +, wget +}: + +let + version = "0.4.1"; + gvproxyWin = gvproxy.overrideAttrs (_: { + buildPhase = '' + GOARCH=amd64 GOOS=windows go build -ldflags '-s -w' -o bin/gvproxy-windows.exe ./cmd/gvproxy + ''; + }); +in +resholve.mkDerivation { + pname = "wsl-vpnkit"; + inherit version; + + src = fetchFromGitHub { + owner = "sakai135"; + repo = "wsl-vpnkit"; + rev = "v${version}"; + hash = "sha256-Igbr3L2W32s4uBepllSz07bkbI3qwAKMZkBrXLqGrGA="; + }; + + postPatch = '' + substituteInPlace wsl-vpnkit \ + --replace "/app/wsl-vm" "${gvproxy}/bin/gvforwarder" \ + --replace "/app/wsl-gvproxy.exe" "${gvproxyWin}/bin/gvproxy-windows.exe" + ''; + + installPhase = '' + mkdir -p $out/bin + cp wsl-vpnkit $out/bin + ''; + + solutions.wsl-vpnkit = { + scripts = [ "bin/wsl-vpnkit" ]; + interpreter = "none"; + inputs = [ + coreutils + dnsutils + gawk + gnugrep + iproute2 + iptables + iputils + wget + ]; + + keep = { + "$VMEXEC_PATH" = true; + "$GVPROXY_PATH" = true; + }; + + execer = [ + "cannot:${iproute2}/bin/ip" + "cannot:${wget}/bin/wget" + ]; + + fix = { + aliases = true; + ping = "${iputils}/bin/ping"; + }; + }; + + meta = with lib; { + description = "Provides network connectivity to Windows Subsystem for Linux (WSL) when blocked by VPN"; + homepage = "https://github.com/sakai135/wsl-vpnkit"; + changelog = "https://github.com/sakai135/wsl-vpnkit/releases/tag/v${version}"; + license = licenses.mit; + maintainers = with maintainers; [ terlar ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3e84d0716f4c..0a890e6c7fc5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7441,6 +7441,8 @@ with pkgs; wsl-open = callPackage ../tools/misc/wsl-open { }; + wsl-vpnkit = callPackage ../tools/networking/wsl-vpnkit { }; + xkcdpass = with python3Packages; toPythonApplication xkcdpass; xjobs = callPackage ../tools/misc/xjobs { };