guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#49969] [PATCH v2 3/7] gnu: freedesktop: Add greetd 0.7.0


From: muradm
Subject: [bug#49969] [PATCH v2 3/7] gnu: freedesktop: Add greetd 0.7.0
Date: Wed, 11 Aug 2021 23:10:40 +0300
User-agent: mu4e 1.4.15; emacs 28.0.50


Xinglu Chen <public@yoctocell.xyz> writes:

On Tue, Aug 10 2021, muradm wrote:

* gnu/packages/freedesktop.scm (greetd): Add greetd 0.7.0
---
gnu/packages/freedesktop.scm | 80 ++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 693a79c738..631d36e765 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -24,6 +24,7 @@
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
+;;; Copyright © 2021 muradm <mail@muradm.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
@@ -62,6 +64,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crates-io)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages disk)
@@ -862,6 +865,83 @@ that require it. It also provides a universal seat management library that allows applications to use whatever seat management is available.")
     (license license:expat)))

+(define-public greetd
+  (package
+    (name "greetd")
+    (version "0.7.0")
+    (home-page "https://git.sr.ht/~kennylevinsen/greetd";)
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+ (base32 "0lmwr5ld9x2wlq00i7mjgm9by8zndiq9girj8g93k0kww9zbgr3g"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-nix" ,rust-nix-0.17)
+        ("rust-pam-sys" ,rust-pam-sys-0.5.6)
+        ("rust-rpassword" ,rust-rpassword-4)
+        ("rust-users" ,rust-users-0.9)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-tokio" ,rust-tokio-0.2)
+        ("rust-getopts" ,rust-getopts-0.2)
+        ("rust-thiserror" ,rust-thiserror-1)
+        ("rust-async-trait" ,rust-async-trait-0.1)
+        ("rust-enquote" ,rust-enquote-1))
+       #:phases
+       (modify-phases %standard-phases
+         ;; once https://todo.sr.ht/~kennylevinsen/greetd/25
+         ;; is solved, below patch can be removed
+         (add-after 'unpack 'patch-terminal-switch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "greetd/src/server.rs"
+               (("switch: true,")
+                "switch: false,"))))
+         (delete 'package)
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (sbin (string-append out "/sbin"))
+                    (share (string-append out "/share"))
+                    (man (string-append share "/man"))
+                    (man1 (string-append man "/man1"))
+                    (man5 (string-append man "/man5"))
+                    (man7 (string-append man "/man7"))
+                    (release "target/release")
+ (greetd-bin (string-append release "/greetd")) + (agreety-bin (string-append release "/agreety")))
+               (install-file greetd-bin sbin)
+               (install-file agreety-bin bin)
+               (mkdir-p man1)
+               (mkdir-p man5)
+               (mkdir-p man7)

No need to ‘mkdir-p’ if you will call ‘install-file’ on the directory.


Didn't work for me, without it I get:
In procedure copy-file: No such file or directory

+               (with-directory-excursion "man"
+                 (system "scdoc < greetd-1.scd > greetd.1")
+                 (system "scdoc < greetd-5.scd > greetd.5")
+ (system "scdoc < greetd-ipc-7.scd > greetd-ipc.7")
+                 (system "scdoc < agreety-1.scd > agreety.1"))
+               (install-file "man/greetd.1" man1)
+               (install-file "man/greetd.5" man5)
+               (install-file "man/greetd-ipc.7" man7)
+               (install-file "man/agreety.1" man1)

Why not put these four lines inside the (with-directory-excursion "man"
…) form, and remove the "man" prefix?


Refactored, scdoc moved to 'build-man-pages after 'build, install minimized

        (add-after 'build 'build-man-pages
          (lambda* (#:key inputs #:allow-other-keys)
            (define (scdoc-cmd doc lvl)
              (system (string-append "scdoc < "
                                     doc "-" lvl ".scd > "
                                     doc "." lvl)))
            (with-directory-excursion "man"
              (scdoc-cmd "greetd" "1")
              (scdoc-cmd "greetd" "5")
              (scdoc-cmd "greetd-ipc" "7")
              (scdoc-cmd "agreety" "1"))))
        (replace 'install
          (lambda* (#:key inputs outputs #:allow-other-keys)
            (let* ((out (assoc-ref outputs "out"))
                   (bin (string-append out "/bin"))
                   (sbin (string-append out "/sbin"))
                   (share (string-append out "/share"))
                   (man (string-append share "/man"))
                   (man1 (string-append man "/man1"))
                   (man5 (string-append man "/man5"))
                   (man7 (string-append man "/man7"))
                   (release "target/release")
                   (greetd-bin (string-append release "/greetd"))
(agreety-bin (string-append release "/agreety")))
              (install-file greetd-bin sbin)
              (install-file agreety-bin bin)
              (with-directory-excursion "man"
                (install-file "greetd.1" man1)
                (install-file "greetd.5" man5)
                (install-file "greetd-ipc.7" man7)
                (install-file "agreety.1" man1))))))))

Noted for next update, thanks

+               #t))))))

Phases don’t need to return #t once the ‘core-updates’ branch gets
merged.


Left over, i was using this to fail package build, noted for next update, thanks

+    (native-inputs
+     `(("linux-pam" ,linux-pam)
+       ("scdoc" ,scdoc)))
+    (synopsis
+     "greetd is a minimal and flexible login manager daemon
+that makes no assumptions about what you want to launch.")

The synosis is a bit long, maybe

  Minimal and flexible login manager daemon


Noted for next update, thanks

+    (description
+     "greetd is a minimal and flexible login manager daemon
+that makes no assumptions about what you want to launch.")

“what you want to launch” sounds a bit vague, is it referring to desktop
environment, window manager, or something else?

As description says anything, it is from official documentation. Launches any thing,
could be DE, WM, Emacs, top etc. literally any thing :)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]