diff --git a/pkgs/applications/networking/sync/rsync/base.nix b/pkgs/applications/networking/sync/rsync/base.nix new file mode 100644 index 000000000000..86b90ea22ef2 --- /dev/null +++ b/pkgs/applications/networking/sync/rsync/base.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: + +rec { + version = "3.2.1"; + src = fetchurl { + # signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5 + url = "mirror://samba/rsync/src/rsync-${version}.tar.gz"; + sha256 = "1hm1q04hz15509f0p9bflw4d6jzfvpm1d36dxjwihk1wzakn5ypc"; + }; + patches = fetchurl { + # signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5 + url = "mirror://samba/rsync/rsync-patches-${version}.tar.gz"; + sha256 = "09i3dcl37p22dp75vlnsvx7bm05ggafnrf1zwhf2kbij4ngvxvpd"; + }; + + meta = with stdenv.lib; { + homepage = http://rsync.samba.org/; + license = licenses.gpl3Plus; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/networking/sync/rsync/default.nix b/pkgs/applications/networking/sync/rsync/default.nix index c13bb1b329df..b65eb43351ef 100644 --- a/pkgs/applications/networking/sync/rsync/default.nix +++ b/pkgs/applications/networking/sync/rsync/default.nix @@ -5,21 +5,15 @@ assert enableACLs -> acl != null; +let + base = import ./base.nix { inherit stdenv fetchurl; }; +in stdenv.mkDerivation rec { - name = "rsync-${version}"; - version = "3.1.2"; + name = "rsync-${base.version}"; - mainSrc = fetchurl { - # signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5 - url = "mirror://samba/rsync/src/rsync-${version}.tar.gz"; - sha256 = "1hm1q04hz15509f0p9bflw4d6jzfvpm1d36dxjwihk1wzakn5ypc"; - }; + mainSrc = base.src; - patchesSrc = fetchurl { - # signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5 - url = "mirror://samba/rsync/rsync-patches-${version}.tar.gz"; - sha256 = "09i3dcl37p22dp75vlnsvx7bm05ggafnrf1zwhf2kbij4ngvxvpd"; - }; + patchesSrc = base.patches; srcs = [mainSrc] ++ stdenv.lib.optional enableCopyDevicesPatch patchesSrc; patches = stdenv.lib.optional enableCopyDevicesPatch "./patches/copy-devices.diff"; @@ -29,11 +23,8 @@ stdenv.mkDerivation rec { configureFlags = "--with-nobody-group=nogroup"; - meta = with stdenv.lib; { - homepage = http://rsync.samba.org/; + meta = base.meta // { description = "A fast incremental file transfer utility"; - license = licenses.gpl3Plus; - platforms = platforms.unix; - maintainers = with maintainers; [ simons ehmry ]; + maintainers = with stdenv.lib.maintainers; [ simons ehmry kampfschlaefer ]; }; } diff --git a/pkgs/applications/networking/sync/rsync/rrsync.nix b/pkgs/applications/networking/sync/rsync/rrsync.nix new file mode 100644 index 000000000000..7563b0ea1950 --- /dev/null +++ b/pkgs/applications/networking/sync/rsync/rrsync.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, perl, rsync }: + +let + base = import ./base.nix { inherit stdenv fetchurl; }; +in +stdenv.mkDerivation rec { + name = "rrsync-${base.version}"; + + src = base.src; + + buildInputs = [ rsync ]; + nativeBuildInputs = [perl]; + + # Skip configure and build phases. + # We just want something from the support directory + configurePhase = "true"; + dontBuild = true; + + postPatch = '' + substituteInPlace support/rrsync --replace /usr/bin/rsync ${rsync}/bin/rsync + ''; + + installPhase = '' + mkdir -p $out/bin + cp support/rrsync $out/bin + chmod a+x $out/bin/rrsync + ''; + + meta = base.meta // { + description = "A helper to run rsync-only environments from ssh-logins"; + maintainers = [ stdenv.lib.maintainers.kampfschlaefer ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 537988ecaa21..f344b397b4c9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13311,6 +13311,7 @@ let enableACLs = !(stdenv.isDarwin || stdenv.isSunOS || stdenv.isFreeBSD); enableCopyDevicesPatch = (config.rsync.enableCopyDevicesPatch or false); }; + rrsync = callPackage ../applications/networking/sync/rsync/rrsync.nix {}; rtl-sdr = callPackage ../applications/misc/rtl-sdr { };