Subject: [PATCH] gnu: Add trash-d.

From: Hugo Nobrega <[email-masked]>
Date: Thu, 7 Dec 2023 12:34:40 -0300

Change-Id: Ib216ec159ef256b79b3fba740ad3fc1575f5ecbc
---
 gnu/packages/dlang-xyz.scm | 75 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)
 create mode 100644 gnu/packages/dlang-xyz.scm

diff --git a/gnu/packages/dlang-xyz.scm b/gnu/packages/dlang-xyz.scm
new file mode 100644
index 0000000000..14015f8bc2
--- /dev/null
+++ b/gnu/packages/dlang-xyz.scm
@@ -0,0 +1,75 @@
+;;; GNU Guix --- Functional package management for GNU
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages dlang-xyz)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages commencement)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages dlang)
+  #:use-module (gnu packages groff)
+  #:use-module (guix build-system dub)
+  #:use-module (guix git-download)
+  #:use-module (guix packages))
+
+(define-public trash-d
+  (package
+    (name "trash-d")
+    (version "19")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rushsteve1/trash-d.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256 (base32 "1ljj1fqlby15iaar4pzni3h2hc7ncj2gads26bz2cala0inl3ywf"))))
+    (build-system dub-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-env-cc
+           (lambda _
+             (setenv "CC" "gcc")))
+         (add-before 'build 'touch-dub-json
+           (lambda _
+             (mkdir-p ".dub")
+             (open-output-file ".dub/dub.json")))
+         (add-before 'build 'patch-build-dub
+           (lambda _
+             (substitute* "dub.json"
+               (("\"dflags-linux-ldc\": \\[\"-static\"\\]")
+                "\"dflags-ldc\": []"))))
+         (add-before 'install 'make-man-page
+           (lambda _
+             (invoke "ronn" "--roff" "MANUAL.md")
+             (invoke "mv" "MANUAL.1" "trash.1")
+             (invoke "gzip" "-9" "trash.1")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "build/trash" (string-append (assoc-ref outputs "out")
+                                                        "/bin"))
+             (install-file "trash.1.gz" (string-append (assoc-ref outputs "out")
+                                                       "/share/man/man1")))))))
+    (native-inputs
+     (list ld-gold-wrapper ronn-ng groff-minimal gzip))
+    (home-page "https://github.com/rushsteve1/trash-d")
+    (synopsis "Delete files using the FreeDesktop trash bin")
+    (description "A near drop-in replacement for rm that uses the FreeDesktop
+trash bin. trash-d is written in the D programming language using only D's
+Phobos standard library.")
+    (license license:expat)))

base-commit: 06f25a9a85be1bbe7a709e58ce41c1a834e5f1ae
-- 
2.41.0