diff --git a/pkgs/tools/security/sshuttle/default.nix b/pkgs/tools/security/sshuttle/default.nix index 61ba63862af..18997abb678 100644 --- a/pkgs/tools/security/sshuttle/default.nix +++ b/pkgs/tools/security/sshuttle/default.nix @@ -1,34 +1,46 @@ -{ stdenv, fetchurl, iptables, python, pythonPackages }: +{ stdenv, fetchFromGitHub, makeWrapper, pandoc +, coreutils, iptables, nettools, openssh, procps, python }: +let version = "0.71"; in stdenv.mkDerivation rec { name = "sshuttle-${version}"; - version = "0.61"; - src = fetchurl { - url = "https://github.com/apenwarr/sshuttle/archive/sshuttle-0.61.tar.gz"; - sha256 = "1v2v1kbwnmx6ygzhbgqcmyafx914s2p7vjp7l0pf52sa7qkliy9b"; + src = fetchFromGitHub { + sha256 = "0yr8nih97jg6azfj3k7064lfbh3g36l6vwyjlngl4ph6mgcki1cm"; + rev = name; + repo = "sshuttle"; + owner = "sshuttle"; }; - preBuild = '' - substituteInPlace Documentation/all.do --replace "/bin/ls" "$(type -tP ls)"; - substituteInPlace Documentation/md2man.py --replace "/usr/bin/env python" "${python}/bin/python" - ''; + nativeBuildInputs = [ makeWrapper pandoc ]; + buildInputs = [ coreutils iptables nettools openssh procps python ]; - phases = "unpackPhase installPhase"; + preConfigure = '' + cd src + ''; installPhase = '' + mkdir -p $out/share/sshuttle + cp -R sshuttle *.py compat $out/share/sshuttle + mkdir -p $out/bin - cp -R . $out - ln -s $out/sshuttle $out/bin/sshuttle + ln -s $out/share/sshuttle/sshuttle $out/bin + wrapProgram $out/bin/sshuttle --prefix PATH : \ + "${stdenv.lib.concatStringsSep ":" (map (x: "${x}/bin") buildInputs)}" + + install -Dm644 sshuttle.8 $out/share/man/man8/sshuttle.8 ''; - - buildInputs = [ iptables python pythonPackages.markdown pythonPackages.beautifulsoup ]; - meta = with stdenv.lib; { - homepage = https://github.com/apenwarr/sshuttle; + inherit version; + inherit (src.meta) homepage; description = "Transparent proxy server that works as a poor man's VPN"; - maintainers = with maintainers; [ iElectric ]; + longDescription = '' + Forward connections over SSH, without requiring administrator access to the + target network (though it does require Python 2 at both ends). + Works with Linux and Mac OS and supports DNS tunneling. + ''; + maintainers = with maintainers; [ iElectric nckx ]; platforms = platforms.unix; }; }