(name . Guix Patches)(address . guix-patches@gnu.org)
From be0c4d4ef73e68ace117f2a1b1396331a4fcdf84 Mon Sep 17 00:00:00 2001
From: raid5atemyhomework <raid5atemyhomework@protonmail.com>
Date: Sun, 14 Mar 2021 16:40:47 +0800
Subject: [PATCH] gnu: Add zfs-auto-snapshot.
* gnu/packages/file-systems.scm (zfs-auto-snapshot): New variable.
---
gnu/packages/file-systems.scm | 54 +++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
Toggle diff (65 lines)
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index e7d78e41fb..0543be2d82 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -975,6 +975,60 @@ originally developed for Solaris and is now maintained by the OpenZFS
community.")
(license license:cddl1.0)))
+(define-public zfs-auto-snapshot
+ (package
+ (name "zfs-auto-snapshot")
+ (version "1.2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/zfsonlinux/zfs-auto-snapshot/archive/upstream/"
+ version ".tar.gz"))
+ (sha256
+ (base32 "16ry1w43i44xc67gr73x6fa48ninfhqxr498ad4m3kya93vp2zrh"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; No tests
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ ;; Guix System may not have a traditional cron system, but
+ ;; the cron scripts installed by this package are convenient
+ ;; to use as targets for an mcron job specification, so make
+ ;; sure they can be run in-store.
+ (add-before 'install 'fix-cron-scripts
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (zfs-auto-snapshot (string-append
+ out
+ "/sbin/zfs-auto-snapshot")))
+ (substitute* '("etc/zfs-auto-snapshot.cron.daily"
+ "etc/zfs-auto-snapshot.cron.frequent"
+ "etc/zfs-auto-snapshot.cron.hourly"
+ "etc/zfs-auto-snapshot.cron.monthly"
+ "etc/zfs-auto-snapshot.cron.weekly")
+ (("zfs-auto-snapshot")
+ zfs-auto-snapshot)))))
+ ;; Provide DESTDIR and PREFIX on make command.
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (invoke "make" "install"
+ "PREFIX="
+ (string-append "DESTDIR=" out)))
+ #t)))))
+ (home-page "https://github.com/zfsonlinux/zfs-auto-snapshot")
+ (synopsis "Automatically create, rotate, and destroy periodic ZFS snapshots")
+ (description
+ "An alternative implementation of the zfs-auto-snapshot service for Linux
+that is compatible with zfs-linux and zfs-fuse.
+
+On Guix System, you will need to invoke the installed shell scripts as @code{job}
+declarations in your @code{operating-system} configuration.")
+ (license license:gpl2+)))
+
(define-public mergerfs
(package
(name "mergerfs")
--
2.30.2