diff mbox series

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

Message ID 20210810200756.9581-3-mail@muradm.net
State Accepted
Headers show
Series gnu: desktop: Add seatd-service-type and greetd-service-type | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

muradm Aug. 10, 2021, 8:07 p.m. UTC
* gnu/packages/freedesktop.scm (greetd): Add greetd 0.7.0
---
 gnu/packages/freedesktop.scm | 80 ++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

Comments

Xinglu Chen Aug. 11, 2021, 11:29 a.m. UTC | #1
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.

> +               (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?

> +               #t))))))

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

> +    (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

> +    (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?
muradm Aug. 11, 2021, 8:10 p.m. UTC | #2
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 :)
Xinglu Chen Aug. 12, 2021, 11:45 a.m. UTC | #3
On Wed, Aug 11 2021, muradm wrote:

> 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

Hmm, weird, the docs for ‘install-file’ says

   -- Scheme Procedure: install-file FILE DIRECTORY
       Create DIRECTORY if it does not exist and copy FILE in there under
       the same name.

>>> +               (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

The phases LGTM!

>>> +    (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 :)

Ah, OK, then maybe “what program” instead of just “what”?  Someone might
try to launch a missile with it ;-)
muradm Aug. 12, 2021, 7:51 p.m. UTC | #4
Xinglu Chen <public@yoctocell.xyz> writes:

> On Wed, Aug 11 2021, muradm wrote:
>
>> 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
>
> Hmm, weird, the docs for ‘install-file’ says
>
>    -- Scheme Procedure: install-file FILE DIRECTORY
>        Create DIRECTORY if it does not exist and copy FILE in 
>        there under
>        the same name.
>

Yeah, you are right, there was wrong excursions when i tested,
now works as expected, i think i just forgot to delete this 
comment,
thanks.

>>>> +               (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
>
> The phases LGTM!
>
>>>> +    (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 :)
>
> Ah, OK, then maybe “what program” instead of just “what”? 
> Someone might
> try to launch a missile with it ;-)

/gnu/store/....-missiles-1.01/bin/launch why not? :D

in next update, i will try to put some more sentences from greetd
description, it might be more useful may be.
diff mbox series

Patch

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)
+               (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)
+               #t))))))
+    (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.")
+    (description
+     "greetd is a minimal and flexible login manager daemon
+that makes no assumptions about what you want to launch.")
+    (license license:gpl3+)))
+
 (define-public packagekit
   (package
     (name "packagekit")