{ lib, pkgs, config, ... }: with lib; let cfg = config.custom.ssh-proxy; in { options.custom.ssh-proxy = { enable = mkOption { type = types.bool; default = false; description = '' Enable ssh-proxy for WSL ''; }; }; config = mkIf cfg.enable { home.packages = with pkgs; [ npiperelay socat ]; systemd.user = { startServices = true; services.ssh-proxy = { Unit = { Description = "WSL Proxy"; After = "network.target";}; Service = { ExecStart = "${pkgs.writeShellScript "start-proxy" '' set -x -o xtrace # print commands ${pkgs.coreutils}/bin/rm -f /home/sstent/.ssh/wsl-ssh-agent.sock ${pkgs.util-linux}/bin/setsid ${pkgs.socat}/bin/socat UNIX-LISTEN:/home/sstent/.ssh/wsl-ssh-agent.sock,fork EXEC:"${pkgs.npiperelay}/bin/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork ''}"; }; #Install = { WantedBy = [ "default.target" ]; }; }; }; }; }