Subject: [bug#60294] [PATCH] gnu: Add libxapp.

From: "Wamm K. D" <[email-masked]>
Date: Sat, 24 Dec 2022 01:30:10 -0600

* gnu/packages/cinnamon.scm (libxapp): New variable.
---
I wasn't sure where to put this as, while definitely used by Cinnamon,
I think this is used by Mate, as well (and possibly XFCE?). I don't
know if a mint.scm file might make any sense as it's quite literally
under the Linux Mint repo. account? If it would be better to place
this elsewhere, just let me know and I'll adjust.

 gnu/packages/cinnamon.scm | 72 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm
index fe33e797e4..c1f258c18d 100644
--- a/gnu/packages/cinnamon.scm
+++ b/gnu/packages/cinnamon.scm
@@ -26,6 +26,7 @@ (define-module (gnu packages cinnamon)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
@@ -37,6 +38,77 @@ (define-module (gnu packages cinnamon)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xorg))
 
+(define-public libxapp
+  (package
+    (name "libxapp")
+    (version "2.4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/linuxmint/xapp/")
+                    (commit version)))
+              (sha256
+               (base32
+                "0cy9g0zqcbx9zscc9qavqmghfyfb8244cg299llv1ha8n6mpxl3s"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'set-gtk-module-path
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (substitute* "libxapp/meson.build"
+                (("gtk3_dep\\.get_pkgconfig_variable[(]'libdir'[)]")
+                 (string-append "'" (assoc-ref outputs "out") "/lib'")))
+
+              (substitute* "pygobject/meson.build"
+                (("get_option[(]'py-overrides-dir'[)]")
+                 (string-append "'"
+                                (assoc-ref outputs "out")
+                                "/lib/python"
+                                #$(version-major+minor (package-version python))
+                                "/site-packages/gi/overrides'")))
+
+              (substitute* "scripts/pastebin"
+                (("'nc'") (string-append "'"
+                                         (assoc-ref inputs "netcat")
+                                         "/bin/nc'")))
+
+              (substitute* "scripts/upload-system-info"
+                (("'inxi'") (string-append "'"
+                                           (assoc-ref inputs "inxi-minimal")
+                                           "/bin/inxi'"))
+                (("'/usr/bin/pastebin'") (string-append "'"
+                                                        (assoc-ref outputs "out")
+                                                        "/bin/pastebin'"))
+                (("'xdg-open'") (string-append "'"
+                                               (assoc-ref inputs "xdg-utils")
+                                               "/bin/xdg-open'"))))))))
+    (inputs
+     (list dbus
+           glib ; for gio
+           gtk+
+           inxi-minimal ; used by upload-system-info
+           libdbusmenu
+           libgnomekbd
+           netcat ; used by pastebin
+           xdg-utils ; used by upload-system-info
+           ))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin") ; for glib-mkenums
+           gobject-introspection
+           pkg-config
+           python
+           python-pygobject
+           vala))
+    (home-page "https://github.com/linuxmint/xapp")
+    (synopsis "Cross-desktop libraries and common resources for X-apps")
+    (description
+     "The components which are common to multiple GTK desktop environments
+(Cinnamon, MATE and Xfce) and required to implement cross-DE solutions.")
+    (license license:lgpl3)))
+
 (define-public cinnamon-desktop
   (package
     (name "cinnamon-desktop")
-- 
2.38.1