[bug#74315,v3,1/1] gnu: Add ptouch-print.

Message ID b7a7fd34793619837281602bced369e782a4f7b9.1744655013.git.plattfot@posteo.net
State New
Headers
Series gnu: Add ptouch-print. |

Commit Message

Fredrik Salomonsson April 14, 2025, 6:38 p.m. UTC
  * gnu/packages/printers.scm (ptouch-print): New variable.

Change-Id: I2ab2a80b80932af8566f6c5879e63e7b0bced747
---
 gnu/packages/printers.scm | 52 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
  

Comments

Ludovic Courtès April 15, 2025, 7:56 a.m. UTC | #1
Fredrik Salomonsson <plattfot@posteo.net> writes:

> * gnu/packages/printers.scm (ptouch-print): New variable.
>
> Change-Id: I2ab2a80b80932af8566f6c5879e63e7b0bced747

Applied, thanks!
  

Patch

diff --git a/gnu/packages/printers.scm b/gnu/packages/printers.scm
index 6060f8afb2..be13c2a10c 100644
--- a/gnu/packages/printers.scm
+++ b/gnu/packages/printers.scm
@@ -23,13 +23,17 @@  (define-module (gnu packages printers)
   #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages golang-xyz)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages qt))
 
 ;; This is a module for packages related to printer-like devices, but not
@@ -88,6 +92,54 @@  (define-public ipp-usb
 simply relay a TCP connection to USB do not work.")
     (license license:bsd-2)))
 
+(define-public ptouch-print
+  (package
+    (name "ptouch-print")
+    (version "1.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.familie-radermacher.ch/linux/ptouch-print.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1pxi30a74azhzsl1wni2va4rkhlfn97qxmz4kryrj9xkvf55jv88"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f ;no test target
+       #:phases (modify-phases %standard-phases
+                  (add-before 'configure 'patch-cmakefile
+                    (lambda _
+                      (substitute* "CMakeLists.txt"
+                        ;; Remove the internal override of CMAKE_INSTALL_PREFIX
+                        (("set\\(CMAKE_INSTALL_PREFIX /usr\\)")
+                         "")
+                        ;; Remove hard coded udev install steps, installing it in the
+                        ;; install-udev-rules phase
+                        (("if\\(EXISTS /etc/udev/rules.d\\)
+[[:blank:]]+install\\(FILES udev/.*?\\.rules DESTINATION /etc/udev/rules.d\\)
+[[:blank:]]+install\\(CODE \".*?\"\\)
+endif\\(\\)
+")
+                         ""))))
+                  (add-after 'install 'install-udev-rules
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (rules (string-append out "/lib/udev/rules.d/")))
+                        (install-file
+                         "../source/udev/90-usb-ptouch-permissions.rules"
+                         rules)))))))
+    (native-inputs (list gd git gettext-minimal libusb pkg-config))
+    (synopsis "CLI tool to print labels on Brother P-Touch printers")
+    (description
+     "This package provides the command line tool @command{ptouch-print} to
+print labels on Brother P-Touch printers.  It also contains udev rules for
+non-root access for the known P-Touch printers.  This does not require CUPS
+to work as the printer is accessed directly via libusb.")
+    (home-page "https://dominic.familie-radermacher.ch/projekte/ptouch-print/")
+    (license license:gpl3)))
+
 (define-public robocut
   (package
     (name "robocut")