Subject: [PATCH] Add duply.

From: Jonathan Pieper <[email-masked]>
Date: Wed, 1 Nov 2023 19:52:54 +0100

Adding duply as frontend for duplicity. Requires duplicity version >= 2.1.0.

---
  gnu/packages/backup.scm | 40 ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 40 insertions(+)

diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 12c4a45b9d..801f942076 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -24,6 +24,7 @@
  ;;; Copyright © 2022 Maxim Cournoyer <[email-masked]>
  ;;; Copyright © 2022 Feng Shu <[email-masked]>
  ;;; Copyright © 2023 Timo Wilken <[email-masked]>
+;;; Copyright © 2023 Jonathan Pieper <[email-masked]>
  ;;;
  ;;; This file is part of GNU Guix.
  ;;;
@@ -49,6 +50,7 @@ (define-module (gnu packages backup)
    #:use-module (guix download)
    #:use-module (guix utils)
    #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
    #:use-module (guix build-system gnu)
    #:use-module (guix build-system go)
    #:use-module (guix build-system python)
@@ -174,6 +176,44 @@ (define-public duplicity
  spying and/or modification by the server.")
      (license license:gpl2+)))

+(define-public duply
+  (package
+    (name "duply")
+    (version "2.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append 
"https://downloads.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/"
+                           (version-major+minor version)
+                           ".x/duply_" (version-major+minor+point 
version) ".tgz"))
+       (sha256
+        (base32 "19cr82rlvyv9v8j8aav5wazay4zkdxd3xjxj2kk21rasmvqq3kqa"))))
+    (build-system copy-build-system)
+    (propagated-inputs
+     `(("duplicity" ,duplicity)
+       ("python" ,python-wrapper)))
+    (arguments
+     (list
+      #:install-plan #~'(("duply" "bin/duply"))
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'install 'wrap-executable
+                     (lambda* (#:key inputs outputs #:allow-other-keys)
+                       (let ((out (assoc-ref outputs "out"))
+                             (python (string-append (assoc-ref inputs 
"python") "/bin/python")))
+                         (wrap-program (string-append out "/bin/duply")
+                           `("DUPL_PYTHON_BIN" = (,python)))))))))
+    (home-page "https://duply.net")
+    (synopsis "duply is a frontend for the mighty duplicity magic.")
+    (description
+     "duply simplifies running duplicity with cron or on command line by:
+
+- keeping recurring settings in profiles per backup job
+- automated import/export of keys between profile and keyring
+- enabling batch operations eg. backup_verify_purge
+- executing pre/post scripts
+- precondition checking for flawless duplicity operation")
+    (license license:gpl2+)))
+
  (define-public par2cmdline
    (package
      (name "par2cmdline")
-- 
2.41.0