summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/maintainers.nix1
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/backup/znapzend.nix36
-rw-r--r--pkgs/tools/backup/znapzend/default.nix72
-rw-r--r--pkgs/top-level/all-packages.nix2
-rw-r--r--pkgs/top-level/perl-packages.nix40
6 files changed, 145 insertions, 7 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index cbf7e02d3f4..5fccdcb4ae3 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -251,6 +251,7 @@
   olcai = "Erik Timan <dev@timan.info>";
   orbitz = "Malcolm Matalka <mmatalka@gmail.com>";
   osener = "Ozan Sener <ozan@ozansener.com>";
+  otwieracz = "Slawomir Gonet <slawek@otwiera.cz>";
   oxij = "Jan Malakhovski <oxij@oxij.org>";
   page = "Carles Pagès <page@cubata.homelinux.net>";
   paholg = "Paho Lurie-Gregg <paho@paholg.com>";
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 3dd60ad99dc..d317333f963 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -114,6 +114,7 @@
   ./services/backup/rsnapshot.nix
   ./services/backup/sitecopy-backup.nix
   ./services/backup/tarsnap.nix
+  ./services/backup/znapzend.nix
   ./services/cluster/fleet.nix
   ./services/cluster/kubernetes.nix
   ./services/cluster/panamax.nix
diff --git a/nixos/modules/services/backup/znapzend.nix b/nixos/modules/services/backup/znapzend.nix
new file mode 100644
index 00000000000..648089f90b7
--- /dev/null
+++ b/nixos/modules/services/backup/znapzend.nix
@@ -0,0 +1,36 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.znapzend;
+in
+{
+  options = {
+    services.znapzend = {
+      enable = mkEnableOption "ZnapZend daemon";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = [ pkgs.znapzend ];
+
+    systemd.services = {
+      "znapzend" = {
+        description = "ZnapZend - ZFS Backup System";
+        after       = [ "zfs.target" ];
+
+        path = with pkgs; [ znapzend zfs mbuffer openssh ];
+
+        script = ''
+          znapzend
+        '';
+
+        reload = ''
+          /bin/kill -HUP $MAINPID
+        '';
+      };
+    };
+
+  };
+}
diff --git a/pkgs/tools/backup/znapzend/default.nix b/pkgs/tools/backup/znapzend/default.nix
new file mode 100644
index 00000000000..1534a0bab0a
--- /dev/null
+++ b/pkgs/tools/backup/znapzend/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchFromGitHub, zfs, mbuffer, perl, perlPackages, wget, autoconf, automake }:
+
+let
+  version = "0.15.3";
+  checksum = "1xk0lgb23kv1cl0wc2rav75hjrjigd0cp3hjw9gxab835vsvnkq0";
+in
+stdenv.mkDerivation rec {
+  name = "znapzend-${version}";
+
+  src = fetchFromGitHub{
+    owner = "oetiker";
+    repo = "znapzend";
+    rev = "v${version}";
+    sha256 = checksum;
+  };
+
+  buildInputs = [ perl perlPackages.TestHarness perlPackages.Mojolicious
+                  perlPackages.TAPParserSourceHandlerpgTAP perlPackages.MojoIOLoopForkCall
+                  perlPackages.IOPipely wget ];
+
+  nativeBuildInputs = [ autoconf automake ];
+
+  preConfigure = ''
+    sed -i 's/^SUBDIRS =.*$/SUBDIRS = lib/' Makefile.am
+
+    grep -v thirdparty/Makefile configure.ac > configure.ac.tmp
+    mv configure.ac.tmp configure.ac
+
+    autoconf
+  '';
+
+  preBuild = ''
+    aclocal
+    automake
+  '';
+
+  postInstall = ''
+    substituteInPlace $out/bin/znapzend --replace "${perl}/bin/perl" \
+      "${perl}/bin/perl \
+      -I${perlPackages.TestHarness}/${perl.libPrefix} \
+      -I${perlPackages.Mojolicious}/${perl.libPrefix} \
+      -I${perlPackages.TAPParserSourceHandlerpgTAP}/${perl.libPrefix} \
+      -I${perlPackages.MojoIOLoopForkCall}/${perl.libPrefix} \
+      -I${perlPackages.IOPipely}/${perl.libPrefix} \
+      "
+    substituteInPlace $out/bin/znapzendzetup --replace "${perl}/bin/perl" \
+      "${perl}/bin/perl \
+      -I${perlPackages.TestHarness}/${perl.libPrefix} \
+      -I${perlPackages.Mojolicious}/${perl.libPrefix} \
+      -I${perlPackages.TAPParserSourceHandlerpgTAP}/${perl.libPrefix} \
+      -I${perlPackages.MojoIOLoopForkCall}/${perl.libPrefix} \
+      -I${perlPackages.IOPipely}/${perl.libPrefix} \
+      "
+    substituteInPlace $out/bin/znapzendztatz --replace "${perl}/bin/perl" \
+      "${perl}/bin/perl \
+      -I${perlPackages.TestHarness}/${perl.libPrefix} \
+      -I${perlPackages.Mojolicious}/${perl.libPrefix} \
+      -I${perlPackages.TAPParserSourceHandlerpgTAP}/${perl.libPrefix} \
+      -I${perlPackages.MojoIOLoopForkCall}/${perl.libPrefix} \
+      -I${perlPackages.IOPipely}/${perl.libPrefix} \
+      "
+  '';
+
+
+  meta = with stdenv.lib; {
+    description = "High performance open source ZFS backup with mbuffer and ssh support";
+    homepage    = http://www.znapzend.org;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ otwieracz ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 665e4144527..e5716d5dc01 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3274,6 +3274,8 @@ in
 
   talkfilters = callPackage ../misc/talkfilters {};
 
+  znapzend = callPackage ../tools/backup/znapzend { };
+  
   tarsnap = callPackage ../tools/backup/tarsnap { };
 
   tcpcrypt = callPackage ../tools/security/tcpcrypt { };
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 83a70775843..e3cdfd49ce4 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -7792,17 +7792,43 @@ let self = _self // overrides; _self = with self; {
       description = "Embed a Perl interpreter in the Apache HTTP server";
     };
   };
-
-  Mojolicious = buildPerlPackage {
-    name = "Mojolicious-4.63";
+  Mojolicious = buildPerlPackage rec {
+    name = "Mojolicious-6.56";
     src = fetchurl {
-      url = mirror://cpan/authors/id/S/SR/SRI/Mojolicious-4.63.tar.gz;
-      sha256 = "f20f77e86fc560dac1c958e765ed64242dcf6343939ed605b45f2bbe2596d5e9";
+      url = "mirror://cpan/authors/id/S/SR/SRI/${name}.tar.gz";
+      sha256 = "82f73553836ac378edf825fd9f24be982653be9e0d78f8ba38b7841aabdafb02";
     };
+    propagatedBuildInputs = [ JSONPP ];
     meta = {
-      homepage = http://mojolicio.us;
+      homepage = http://mojolicious.org;
       description = "Real-time web framework";
-      license = stdenv.lib.licenses.artistic2;
+      license = with stdenv.lib.licenses; [ artistic2 ];
+    };
+  };
+
+  MojoIOLoopForkCall = buildPerlModule rec {
+    name = "Mojo-IOLoop-ForkCall-0.17";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/J/JB/JBERGER/${name}.tar.gz";
+      sha256 = "886de5c3b44194a86228471075fac4036073bda19093e776c702aa65c3ef1824";
+    };
+    propagatedBuildInputs = [ IOPipely Mojolicious ];
+    meta = {
+      description = "Run blocking functions asynchronously by forking";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+  IOPipely = buildPerlPackage rec {
+    name = "IO-Pipely-0.005";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/R/RC/RCAPUTO/${name}.tar.gz";
+      sha256 = "e33b6cf5cb2b46ee308513f51e623987a50a89901e81bf19701dce35179f2e74";
+    };
+    meta = {
+      homepage = http://search.cpan.org/dist/IO-Pipely/;
+      description = "Portably create pipe() or pipe-like handles";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
   };