summaryrefslogtreecommitdiff
path: root/gnu/packages/rust-apps.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/rust-apps.scm')
-rw-r--r--gnu/packages/rust-apps.scm54
1 files changed, 54 insertions, 0 deletions
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 0677e29766..a3c459fbbd 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -991,6 +991,60 @@ This package is the community maintained fork of @code{exa}.")
(define-public exa
(deprecated-package "exa" eza))
+(define-public fclones
+ (package
+ (name "fclones")
+ (version "0.35.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "fclones" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1danl1sn7l1b5wz27aqbx43nnvsm9nflly8l8xqf41c4ainq5j07"))))
+ (build-system cargo-build-system)
+ (arguments
+ (list
+ #:install-source? #f
+ #:modules
+ '((guix build cargo-build-system)
+ (guix build utils)
+ (ice-9 match))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'install-completions
+ (lambda* (#:key native-inputs #:allow-other-keys)
+ (for-each
+ (match-lambda
+ ((shell . path)
+ (mkdir-p (in-vicinity #$output (dirname path)))
+ (let ((binary
+ (if #$(%current-target-system)
+ (search-input-file native-inputs "bin/fclones")
+ (in-vicinity #$output "bin/fclones"))))
+ (with-output-to-file (in-vicinity #$output path)
+ (lambda _
+ (invoke binary "complete" shell))))))
+ '(("bash" . "share/bash-completion/completions/fclones")
+ ("elvish" . "share/elvish/lib/fclones")
+ ("fish" . "share/fish/vendor_completions.d/fclones.fish")
+ ("zsh" . "share/zsh/site-functions/_fclones"))))))))
+ (native-inputs
+ (if (%current-target-system)
+ (list this-package)
+ '()))
+ (inputs (cargo-inputs 'fclones))
+ (home-page "https://github.com/pkolaczk/fclones")
+ (synopsis "Find and operate on duplicate files")
+ (description
+ "@command{fclones} is a command line utility that identifies groups of
+identical files and gets rid of the file copies you no longer need. It comes
+with plenty of configuration options for controlling the search scope and
+offers many ways of removing duplicates. For maximum flexibility, it
+integrates well with other Unix utilities like @command{find} and it speaks
+JSON, so you have a lot of control over the search and cleanup process.")
+ (license license:expat)))
+
(define-public fd
(package
(name "fd")