mirror of
https://github.com/srid/nixos-config.git
synced 2026-07-16 22:01:33 +08:00
58 lines
1.8 KiB
Nix
58 lines
1.8 KiB
Nix
# Depends on programs.jumphost.socks5Proxy (https://github.com/srid/jumphost-nix)
|
|
# for the local SOCKS5 listener. See modules/home/work/juspay.nix:29-31.
|
|
{ config, flake, pkgs, ... }:
|
|
|
|
let
|
|
socksPort = config.home-manager.users.${flake.config.me.username}.programs.jumphost.socks5Proxy.port;
|
|
|
|
proxychainsBin = "${config.programs.proxychains.package}/bin/proxychains4";
|
|
|
|
proxyExports = ''
|
|
export ALL_PROXY=socks5://127.0.0.1:${toString socksPort}
|
|
export HTTPS_PROXY=socks5://127.0.0.1:${toString socksPort}
|
|
export HTTP_PROXY=socks5://127.0.0.1:${toString socksPort}
|
|
'';
|
|
|
|
vanjaram-run = pkgs.writeShellScriptBin "vanjaram-run" ''
|
|
${proxyExports}
|
|
exec ${proxychainsBin} "$@"
|
|
'';
|
|
|
|
puBin = "${flake.inputs.project-unknown.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/pu";
|
|
|
|
pu = pkgs.writeShellScriptBin "pu" ''
|
|
${proxyExports}
|
|
exec ${proxychainsBin} ${puBin} "$@"
|
|
'';
|
|
in
|
|
{
|
|
programs.proxychains = {
|
|
enable = true;
|
|
quietMode = true;
|
|
chain.type = "strict";
|
|
proxyDNS = true;
|
|
proxies.devbox = {
|
|
enable = true;
|
|
type = "socks5";
|
|
host = "127.0.0.1";
|
|
port = socksPort;
|
|
};
|
|
};
|
|
|
|
environment.systemPackages = [
|
|
vanjaram-run
|
|
pu
|
|
];
|
|
|
|
# pu writes per-instance ssh_config files under ~/.pu-state/<name>/. Including
|
|
# them lets `ssh <name>` work directly. The inner ssh those configs spawn goes
|
|
# to `pu@<PU_HOST>` which is only reachable via vanjaram — route any ssh to
|
|
# user `pu` through the SOCKS5 proxy.
|
|
home-manager.users.${flake.config.me.username}.programs.ssh = {
|
|
includes = [ "~/.pu-state/*/ssh_config" ];
|
|
matchBlocks."pu-jumphost" = {
|
|
match = "user pu";
|
|
proxyCommand = "${pkgs.netcat-openbsd}/bin/nc -X 5 -x 127.0.0.1:${toString socksPort} %h %p";
|
|
};
|
|
};
|
|
}
|