Subject: [bug#44400] [PATCH v2 4/4] WIP: gnu: Add phosh.

From: phodina <[email-masked]>
Date: Sun, 28 Nov 2021 10:46:14 +0000

Hi Johnatan,

I've managed to substitute the systemd dependency for elogind. So the phosh package now builds.

However, there is some error regarding the glib schema. I haven't worked that much with glib so that's the next thing on my list.

I'm posting the error in case you know how to fix that and you'll find the patch attached as well.

$ /gnu/store/z5dfz6hf9wb5jbndrkzhlc1yzgdqjjak-phosh-0.14.0/libexec/phosh

(phosh:8740): phosh-keyboard-events-WARNING **: 13:40:53.719: Skipping grab manager due to missing phosh_private protocol extension

(phosh:8740): GLib-GIO-ERROR **: 13:40:53.722: Settings schema 'sm.puri.phosh' is not installed
Trace/breakpoint trap
cylon2p0@rocinante ~/guix/gnu/packages$ /gnu/store/z5dfz6hf9wb5jbndrkzhlc1yzgdqjjak-phosh-0.14.0/libexec/phosh

(phosh:10766): phosh-keyboard-events-WARNING **: 15:23:33.151: Skipping grab manager due to missing phosh_private protocol extension

(phosh:10766): GLib-GIO-ERROR **: 15:23:33.154: Settings schema 'sm.puri.phosh' is not installed

----
Petr

From 9aefa3e4a808d0e49040ea16ebd3660e75133121 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Wed, 17 Nov 2021 11:14:15 +0100
Subject: [PATCH v3] WIP: gnu: Add phosh.

* gnu/packages/gnome.scm (phosh): New variable.

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 9348cf356e..a0d4e90927 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -83,6 +83,7 @@ (define-module (gnu packages gnome)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages aspell)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages backup)
@@ -1278,6 +1279,102 @@ (define-public phodav
    (home-page "https://wiki.gnome.org/phodav")
    (license license:lgpl2.1+)))
 
+(define-public phosh
+  (package
+    (name "phosh")
+    (version "0.14.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/World/Phosh/phosh")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0fhp2jmwjzzxd66b4figc2wdpzdjycpq3cf4lx3z04dzl9vmw65a"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:meson ,meson-next
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'get-libgnome-volume-control
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "libgnome-volume-control-source")
+                               "subprojects/gvc")))
+         (add-after 'unpack 'get-libcall-ui
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "libcall-ui")
+                               "subprojects/libcall-ui")))
+         ;; we use elogind instead of systemd
+         (add-after 'unpack 'patch-systemd
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "meson.build"
+               (("libsystemd") "libelogind"))
+             (substitute* "src/meson.build"
+               (("libsystemd_dep") "libelogind_dep"))
+             (substitute* "src/util.c"
+               (("systemd/sd-login.h") "elogind/sd-login.h"))
+             (substitute* "src/main.c"
+               (("systemd/sd-daemon.h") "elogind/sd-daemon.h"))))
+         (add-before 'configure 'fix-phoc-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "data/phosh.in"
+               (("@bindir@") (string-append (assoc-ref inputs "phoc") "/bin")))))
+         (delete 'check)    ; TODO: needs a running wayland compositor
+         )))
+    (native-inputs
+     `(("elogind" ,elogind)
+       ("gcr" ,gcr)
+       ("gettext" ,gettext-minimal)
+       ("git" ,git)
+       ("glib:bin" ,glib "bin")
+       ("gnome-desktop" ,gnome-desktop)
+       ("gtk+:bin" ,gtk+ "bin")
+       ("libgnome-volume-control-source" ; needs to be present in subprojects/gvc folder
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://gitlab.gnome.org/GNOME/libgnome-volume-control.git")
+                 (commit "ae1a34aafce7026b8c0f65a43c9192d756fe1057")))
+           (file-name (string-append name "-" version "-checkout"))
+           (sha256
+            (base32
+             "0a4qh5pgyjki904qf7qmvqz2ksxb0p8xhgl2aixfbhixn0pw6saw"))))
+       ("libcall-ui" ; needs to be present in subprojects/libcall-ui folder
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://gitlab.gnome.org/World/Phosh/libcall-ui")
+                 (commit "465f6add090b623fb80c6c5cbb9ab2880ff531a4")))
+           (file-name (string-append name "-" version "-checkout"))
+           (sha256
+            (base32
+             "1as857npl2yra4zh4bfph9wvhvjck53i2qp3zzbv3mbpi36nscfr"))))
+       ("callaudiod" ,callaudiod)
+       ("libsecret" ,libsecret)
+       ("linux-pam" ,linux-pam)
+       ("network-manager" ,network-manager)
+       ("pkg-config" ,pkg-config)
+       ("polkit" ,polkit)
+       ("upower" ,upower)))
+    (inputs
+     `(("feedbackd" ,feedbackd)
+       ("libhandy" ,libhandy)
+       ("libgudev" ,libgudev)
+       ("pulseaudio" ,pulseaudio)))
+    (propagated-inputs
+     ;; "missing" schema files
+     ;; org.gnome.DejaDup.File org.guido-berhoerster.code.package-update-indicator org.blueberry
+     `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ;org.gnome.desktop.wm.keybindings
+       ("gnome-session" ,gnome-session)
+       ("mutter" ,mutter)               ;org.gnome.mutter.keybindings
+       ("network-manager-applet" ,network-manager-applet) ;org.gnome.nm-applet
+       ("phoc" ,phoc)))                 ;sm.puri.phoc
+    (synopsis "Wayland shell for GNOME on mobile devices")
+    (description "Phosh is a pure Wayland prototype intended for mobile devices.")
+    (home-page "https://gitlab.gnome.org/World/Phosh/phosh")
+    (license license:gpl3+)))
+
 (define-public gnome-color-manager
   (package
    (name "gnome-color-manager")
-- 
2.33.0