···11+# CAVEATS:
22+# - Have only tested this with rsync, scp, and sftp. cvs support should work, but chroot integration is unlikely to function without further work
33+# - It is compiled without rdist support because rdist is ludicrously ancient (and not already in nixpkgs)
44+55+{ stdenv, fetchurl, openssh, rsync, cvs }:
66+77+stdenv.mkDerivation rec {
88+ name = "rssh-${version}";
99+ version = "2.3.4";
1010+1111+ src = fetchurl {
1212+ url = "mirror://sourceforge/rssh/rssh/${version}/${name}.tar.gz";
1313+ sha256 = "f30c6a760918a0ed39cf9e49a49a76cb309d7ef1c25a66e77a41e2b1d0b40cd9";
1414+ };
1515+1616+ patches = [
1717+ ./fix-config-path.patch
1818+1919+ # Patches from AUR
2020+ (fetchurl {
2121+ url = https://aur.archlinux.org/cgit/aur.git/plain/0001-fail-logging.patch?h=rssh;
2222+ name = "0001-fail-logging.patch";
2323+ sha256 = "d30f2f4fdb1b57f94773f5b0968a4da3356b14a040efe69ec1e976c615035c65";
2424+ })
2525+ (fetchurl {
2626+ url = https://aur.archlinux.org/cgit/aur.git/plain/0002-info-to-debug.patch?h=rssh;
2727+ name = "0002-info-to-debug.patch";
2828+ sha256 = "86f6ecf34f62415b0d6204d4cbebc47322dc2ec71732d06aa27758e35d688fcd";
2929+ })
3030+ (fetchurl {
3131+ url = https://aur.archlinux.org/cgit/aur.git/plain/0003-man-page-spelling.patch?h=rssh;
3232+ name = "0003-man-page-spelling.patch";
3333+ sha256 = "455b3bbccddf1493999d00c2cd46e62930ef4fd8211e0b7d3a89d8010d6a5431";
3434+ })
3535+ (fetchurl {
3636+ url = https://aur.archlinux.org/cgit/aur.git/plain/0004-mkchroot.patch?h=rssh;
3737+ name = "0004-mkchroot.patch";
3838+ sha256 = "f7fd8723d2aa94e64e037c13c2f263a52104af680ab52bfcaea73dfa836457c2";
3939+ })
4040+ (fetchurl {
4141+ url = https://aur.archlinux.org/cgit/aur.git/plain/0005-mkchroot-arch.patch?h=rssh;
4242+ name = "0005-mkchroot-arch.patch";
4343+ sha256 = "ac8894c4087a063ae8267d2fdfcde69c2fe6b67a8ff5917e4518b8f73f08ba3f";
4444+ })
4545+ (fetchurl {
4646+ url = https://aur.archlinux.org/cgit/aur.git/plain/0006-mkchroot-symlink.patch?h=rssh;
4747+ name = "0006-mkchroot-symlink.patch";
4848+ sha256 = "bce98728cb9b55c92182d4901c5f9adf49376a07c5603514b0004e3d1c85e9c7";
4949+ })
5050+ (fetchurl {
5151+ url = https://aur.archlinux.org/cgit/aur.git/plain/0007-destdir.patch?h=rssh;
5252+ name = "0007-destdir.patch";
5353+ sha256 = "7fa03644f81dc37d77cc7e2cad994f17f91b2b8a49b1a74e41030a4ac764385e";
5454+ })
5555+ (fetchurl {
5656+ url = https://aur.archlinux.org/cgit/aur.git/plain/0008-rsync-protocol.patch?h=rssh;
5757+ name = "0008-rsync-protocol.patch";
5858+ sha256 = "0c772afe9088eeded129ead86775ef18e58c318bbc58fc3e2585e7ff09cc5e91";
5959+ })
6060+ ];
6161+6262+ buildInputs = [ openssh rsync cvs ];
6363+6464+ configureFlags = [
6565+ "--with-sftp-server=${openssh}/libexec/sftp-server"
6666+ "--with-scp=${openssh}/bin/scp"
6767+ "--with-rsync=${rsync}/bin/rsync"
6868+ "--with-cvs=${cvs}/bin/cvs"
6969+ ];
7070+7171+7272+ meta = with stdenv.lib; {
7373+ description = "A restricted shell for use with OpenSSH, allowing only scp and/or sftp";
7474+ longDescription = ''
7575+ rssh also includes support for rsync and cvs. For example, if you have a server which you only want to allow users to copy files off of via scp, without providing shell access, you can use rssh to do that.
7676+ '';
7777+ homepage = "http://www.pizzashack.org/rssh/";
7878+ license = licenses.bsd2;
7979+ platforms = platforms.unix;
8080+ maintainers = with maintainers; [ arobyn ];
8181+ };
8282+}