[PATCHSET] Add senpai

  • Open
  • quality assurance status badge
Details
2 participants
  • Nguy?n Gia Phong
  • (
Owner
unassigned
Submitted by
(
Severity
normal
Blocked by
(
(address . guix-patches@gnu.org)
CLWPENC3WXQF.ZBRZMSSOUFDW@guix-aspire
This patchset adds the Senpai https://git.sr.ht/~taiite/senpai IRC
client, along with its prerequisites.

Note: This patchset includes packages that already exist in certain
other patchsets:

go-github-com-lucasb-eyer-go-colorful: #55903
go-github-com-google-shlex: #47539, #54882, #55903
go-git-sr-ht--emersion-go-scfg: #54882

Such is the nature of Go... :(

( (6):
gnu: packages: Add go-github-com-lucasb-eyer-go-colorful.
gnu: packages: Add go-github-com-delthas-tcell.
gnu: packages: Add go-mvdan-cc-xurls.
gnu: packages: Add go-github-com-google-shlex.
gnu: packages: Add go-git-sr-ht--emersion-go-scfg.
gnu: packages: Add senpai.

-- (
(
[PATCH 1/6] gnu: packages: Add go-github-com-lucasb-eyer-go-colorful.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220803211822.21182-1-paren@disroot.org
* gnu/packages/golang.scm (go-github-com-lucasb-eyer-go-colorful):
New variable.
---
gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 1ce55875d8..8962d18b3e 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -35,6 +35,7 @@
;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
;;; Copyright © 2022 Pier-Hugues Pellerin <phpellerin@gmail.com>
;;; Copyright © 2022 muradm <mail@muradm.net>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -9891,3 +9892,28 @@ (define-public go-github-com-sourcegraph-jsonrpc2
(description
"Package jsonrpc2 provides a Go implementation of JSON-RPC 2.0.")
(license license:expat)))
+
+(define-public go-github-com-lucasb-eyer-go-colorful
+ (package
+ (name "go-github-com-lucasb-eyer-go-colorful")
+ (version "1.2.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lucasb-eyer/go-colorful")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "08c3fkf27r16izjjd4w94xd1z7w1r4mdalbl53ms2ka2j465s3qs"))))
+ (build-system go-build-system)
+ (propagated-inputs (list go-golang-org-x-image))
+ (arguments
+ (list #:import-path "github.com/lucasb-eyer/go-colorful"))
+ (home-page "https://github.com/lucasb-eyer/go-colorful")
+ (synopsis "Library for manipulating colors in Go")
+ (description
+ "This package provides a library for manipulating colors in Go.
+It stores colors in RGB and provides methods for converting them to
+other color-spaces.")
+ (license license:expat)))
--
2.37.1
(
[PATCH 2/6] gnu: packages: Add go-github-com-delthas-tcell.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220803211822.21182-2-paren@disroot.org
* gnu/packages/golang.scm (go-github-com-delthas-tcell): New
variable.
---
gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 8962d18b3e..34b9853a2e 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9917,3 +9917,29 @@ (define-public go-github-com-lucasb-eyer-go-colorful
It stores colors in RGB and provides methods for converting them to
other color-spaces.")
(license license:expat)))
+
+(define-public go-github-com-delthas-tcell
+ (package
+ (inherit go-github-com-gdamore-tcell-v2)
+ (name "go-github-com-delthas-tcell")
+ (version "v2.4.1-0.20220223131437-2362f49a2b6c")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/delthas/tcell")
+ (commit (go-version->git-ref version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "04mai0gicllhjqv7p0i29cdf9myzl8q5h672bdhmid7lv3x1k32f"))))
+ (arguments
+ (list #:import-path "github.com/gdamore/tcell/v2"))
+ (inputs (list))
+ (propagated-inputs
+ (list go-github-com-gdamore-encoding
+ go-github-com-lucasb-eyer-go-colorful
+ go-github-com-mattn-go-runewidth
+ go-golang-org-x-sys
+ go-golang-org-x-term
+ go-golang-org-x-text))
+ (home-page "https://github.com/delthas/tcell")))
--
2.37.1
(
[PATCH 4/6] gnu: packages: Add go-github-com-google-shlex.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220803211822.21182-4-paren@disroot.org
* gnu/packages/golang.scm (go-github-com-google-shlex): New variable.
---
gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 13dc28ddc6..90cd1849fd 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9968,3 +9968,27 @@ (define-public go-mvdan-cc-xurls
"This package provides a library for extracting URLs from plain text
using regular expressions in Go.")
(license license:bsd-3)))
+
+(define-public go-github-com-google-shlex
+ (let ((commit "c34317bd91bf98fab745d77b03933cf8769299fe")
+ (revision "0"))
+ (package
+ (name "go-github-com-google-shlex")
+ (version "1.2.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "github.com/google/shlex")
+ (commit commit)))
+ (file-name (git-file-name name commit))
+ (sha256
+ (base32
+ "00qivza4hkllfkar2vpqmyxybi0fwqipgijv61dgapq4xddxdq0r"))))
+ (build-system go-build-system)
+ (arguments (list #:import-path "github.com/google/shlex"))
+ (home-page "github.com/google/shlex")
+ (synopsis "Simple shell lexer for Go")
+ (description
+ "Shlex is a simple shell-syntax lexer for Go that supports
+quoting, commenting, and escaping.")
+ (license license:asl2.0))))
--
2.37.1
(
[PATCH 3/6] gnu: packages: Add go-mvdan-cc-xurls.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220803211822.21182-3-paren@disroot.org
* gnu/packages/golang.scm (go-mvdan-cc-xurls): New variable.
---
gnu/packages/golang.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 34b9853a2e..13dc28ddc6 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9943,3 +9943,28 @@ (define-public go-github-com-delthas-tcell
go-golang-org-x-term
go-golang-org-x-text))
(home-page "https://github.com/delthas/tcell")))
+
+(define-public go-mvdan-cc-xurls
+ (package
+ (name "go-mvdan-cc-xurls")
+ (version "2.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mvdan/xurls")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0b040nbk1vwlk1qljavh8w8fn2r243q700n6gr8j2asmnz0xq84p"))))
+ (build-system go-build-system)
+ (arguments (list #:import-path "mvdan.cc/xurls/v2"))
+ (propagated-inputs
+ (list go-golang-org-x-sync
+ go-github-com-rogpeppe-go-internal))
+ (home-page "https://mvdan.cc/xurls/v2")
+ (synopsis "Extract URLs from text in Go")
+ (description
+ "This package provides a library for extracting URLs from plain text
+using regular expressions in Go.")
+ (license license:bsd-3)))
--
2.37.1
(
[PATCH 5/6] gnu: packages: Add go-git-sr-ht--emersion-go-scfg.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220803211822.21182-5-paren@disroot.org
* gnu/packages/golang.scm (go-git-sr-ht--emersion-go-scfg): New
variable.
---
gnu/packages/golang.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 90cd1849fd..38a07bc647 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9992,3 +9992,28 @@ (define-public go-github-com-google-shlex
"Shlex is a simple shell-syntax lexer for Go that supports
quoting, commenting, and escaping.")
(license license:asl2.0))))
+
+(define-public go-git-sr-ht--emersion-go-scfg
+ (package
+ (name "go-git-sr-ht--emersion-go-scfg")
+ (version "0.0.0-20211215104734-c2c7a15d6c99")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~emersion/go-scfg")
+ (commit (go-version->git-ref version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02gn8hz8zfv8y0krysx2wv951gw8hmhdfqf1ysidwm7i293365w4"))))
+ (build-system go-build-system)
+ (arguments (list #:import-path "git.sr.ht/~emersion/go-scfg"))
+ (propagated-inputs
+ (list go-github-com-google-shlex
+ go-github-com-davecgh-go-spew))
+ (home-page "https://git.sr.ht/~emersion/go-scfg")
+ (synopsis "SCFG parser for Go")
+ (description
+ "This package provides a @acronym{SCFG, Simple Configuration}
+parsing library for Go.")
+ (license license:expat)))
--
2.37.1
(
[PATCH 6/6] gnu: packages: Add senpai.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220803211822.21182-6-paren@disroot.org
* gnu/packages/irc.scm (senpai): New variable.
---
gnu/packages/irc.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)

Toggle diff (96 lines)
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index efb32a39e0..3684e02e32 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,6 +39,7 @@ (define-module (gnu packages irc)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
#:use-module (guix build-system qt)
@@ -61,10 +63,12 @@ (define-module (gnu packages irc)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages lua)
#:use-module (gnu packages lxqt)
+ #:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages openldap)
#:use-module (gnu packages kde)
@@ -688,3 +692,60 @@ (define-public inspircd
server written in C++ for Unix-like operating systems.")
(home-page "https://www.inspircd.org/")
(license license:gpl2)))
+
+(define-public senpai
+ (let ((commit "e8ed8e7e13134ee7fc8ac116d58efc55813632a1")
+ (revision "2"))
+ (package
+ (name "senpai")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~taiite/senpai")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rq07ldi8ga5pv9mm0g4sgipqxnnjcff2n1wsmjx3wqcbrmrqhbg"))))
+ (build-system go-build-system)
+ (arguments
+ (list #:import-path "git.sr.ht/~taiite/senpai"
+ #:install-source? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key import-path #:allow-other-keys)
+ (invoke "make" "-C"
+ (string-append "src/" import-path))))
+ (add-after 'build 'build-docs
+ (lambda* (#:key import-path #:allow-other-keys)
+ (with-directory-excursion
+ (string-append "src/" import-path)
+ (invoke "sh" "-c"
+ (string-append "scdoc < doc/senpai.1.scd "
+ "> doc/senpai.1 && "
+ "scdoc < doc/senpai.5.scd "
+ "> doc/senpai.5")))))
+ (replace 'install
+ (lambda* (#:key outputs import-path #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (invoke "make" "install" "-C"
+ (string-append "src/" import-path)
+ (string-append "PREFIX=" out))))))))
+ (native-inputs (list scdoc))
+ (propagated-inputs
+ (list go-github-com-delthas-tcell
+ go-mvdan-cc-xurls
+ go-golang-org-x-time
+ go-golang-org-x-term
+ go-golang-org-x-net
+ go-github-com-mattn-go-runewidth
+ go-git-sr-ht--emersion-go-scfg))
+ (home-page "https://git.sr.ht/~taiite/senpai")
+ (synopsis "IRC client that works best with bouncers")
+ (description
+ "@code{senpai} is an IRC client that works best with bouncers. No
+logs are kept, history is fetched from the server via @code{CHATHISTORY},
+and networks are fetched from the server via @code{bouncer-networks}.")
+ (license license:isc))))
--
2.37.1
(
[PATCH v2 1/4] gnu: packages: Add go-github-com-delthas-tcell.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20221010165709.22638-1-paren@disroot.org
* gnu/packages/golang.scm (go-github-com-delthas-tcell): New
variable.
---
gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7dd3d4d501..cce9c09ca8 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -6085,6 +6085,32 @@ (define-public go-github-com-gdamore-tcell-v2
(modify-inputs (package-inputs go-github-com-gdamore-tcell)
(prepend go-golang-org-x-term go-golang-org-x-sys)))))
+(define-public go-github-com-delthas-tcell
+ (package
+ (inherit go-github-com-gdamore-tcell-v2)
+ (name "go-github-com-delthas-tcell")
+ (version "v2.4.1-0.20220223131437-2362f49a2b6c")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/delthas/tcell")
+ (commit (go-version->git-ref version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "04mai0gicllhjqv7p0i29cdf9myzl8q5h672bdhmid7lv3x1k32f"))))
+ (arguments
+ (list #:import-path "github.com/gdamore/tcell/v2"))
+ (inputs (list))
+ (propagated-inputs
+ (list go-github-com-gdamore-encoding
+ go-github-com-lucasb-eyer-go-colorful
+ go-github-com-mattn-go-runewidth
+ go-golang-org-x-sys
+ go-golang-org-x-term
+ go-golang-org-x-text))
+ (home-page "https://github.com/delthas/tcell")))
+
(define-public go-github-com-rivo-tview
(package
(name "go-github-com-rivo-tview")
--
2.38.0
(
[PATCH v2 2/4] gnu: packages: Add go-mvdan-cc-xurls.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20221010165709.22638-2-paren@disroot.org
* gnu/packages/golang.scm (go-mvdan-cc-xurls): New variable.
---
gnu/packages/golang.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index cce9c09ca8..3455861d33 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -11206,6 +11206,31 @@ (define-public go-github-com-onsi-ginkgo
Gomega matcher library.")
(license license:expat)))
+(define-public go-mvdan-cc-xurls
+ (package
+ (name "go-mvdan-cc-xurls")
+ (version "2.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mvdan/xurls")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0b040nbk1vwlk1qljavh8w8fn2r243q700n6gr8j2asmnz0xq84p"))))
+ (build-system go-build-system)
+ (arguments (list #:import-path "mvdan.cc/xurls/v2"))
+ (propagated-inputs
+ (list go-golang-org-x-sync
+ go-github-com-rogpeppe-go-internal))
+ (home-page "https://mvdan.cc/xurls/v2")
+ (synopsis "Extract URLs from text in Go")
+ (description
+ "This package provides a library for extracting URLs from plain text
+using regular expressions in Go.")
+ (license license:bsd-3)))
+
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar
--
2.38.0
(
[PATCH v2 3/4] gnu: packages: Add senpai.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20221010165709.22638-3-paren@disroot.org
* gnu/packages/irc.scm (senpai): New variable.
---
gnu/packages/irc.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)

Toggle diff (83 lines)
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index b82210081c..b64932310b 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,6 +39,7 @@ (define-module (gnu packages irc)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
#:use-module (guix build-system qt)
@@ -61,10 +63,12 @@ (define-module (gnu packages irc)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages lua)
#:use-module (gnu packages lxqt)
+ #:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages openldap)
#:use-module (gnu packages kde)
@@ -688,3 +692,47 @@ (define-public inspircd
server written in C++ for Unix-like operating systems.")
(home-page "https://www.inspircd.org/")
(license license:gpl2)))
+
+(define-public senpai
+ (package
+ (name "senpai")
+ (version "0.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~taiite/senpai")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1g3fpchjl859xl529wwdx8l0m88ji813mphmh316shdkm09ff160"))))
+ (build-system go-build-system)
+ (arguments
+ (list #:import-path "git.sr.ht/~taiite/senpai"
+ #:install-source? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key import-path #:allow-other-keys)
+ (invoke "make" "-C" (string-append "src/" import-path))))
+ (replace 'install
+ (lambda* (#:key import-path #:allow-other-keys)
+ (invoke "make" "install" "-C"
+ (string-append "src/" import-path)
+ (string-append "PREFIX=" #$output)))))))
+ (native-inputs (list scdoc))
+ (propagated-inputs
+ (list go-github-com-delthas-tcell
+ go-mvdan-cc-xurls
+ go-golang-org-x-time
+ go-golang-org-x-term
+ go-golang-org-x-net
+ go-github-com-mattn-go-runewidth
+ go-git-sr-ht-emersion-go-scfg))
+ (home-page "https://git.sr.ht/~taiite/senpai")
+ (synopsis "IRC client that works best with bouncers")
+ (description
+ "@code{senpai} is an IRC client that works best with bouncers. No logs
+are kept, history is fetched from the server via @code{CHATHISTORY}, and
+networks are fetched via @code{bouncer-networks}.")
+ (license license:isc)))
--
2.38.0
(
[PATCH v2 4/4] gnu: Add home-senpai-service-type.
(address . 56961@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20221010165709.22638-4-paren@disroot.org
* gnu/local.mk: Add gnu/home/services/irc.scm.
* gnu/home/services/irc.scm (home-senpai-configuration): New
record type.
(home-senpai-service-type): New variable.
* doc/guix.texi ("Home Configuration")["Home Services"]: Document
them.
---
doc/guix.texi | 87 +++++++++++++++++++++
gnu/home/services/irc.scm | 154 ++++++++++++++++++++++++++++++++++++++
gnu/local.mk | 1 +
3 files changed, 242 insertions(+)
create mode 100644 gnu/home/services/irc.scm

Toggle diff (279 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 14592142dd..f62d84c6e9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -40363,6 +40363,7 @@ services)}.
* Essential Home Services:: Environment variables, packages, on-* scripts.
* Shells: Shells Home Services. POSIX shells, Bash, Zsh.
* Mcron: Mcron Home Service. Scheduled User's Job Execution.
+* IRC: IRC Home Services. Services for Internet Relay Chat.
* Power Management: Power Management Home Services. Services for battery power.
* Shepherd: Shepherd Home Service. Managing User's Daemons.
* SSH: Secure Shell. Setting up the secure shell client.
@@ -40815,6 +40816,92 @@ specifications,, mcron, GNU@tie{}mcron}).
@end table
@end deftp
+@node IRC Home Services
+@subsection IRC Home Services
+
+@cindex irc
+@cindex messaging
+The @code{(gnu home services irc)} module provides home services for
+Internet Relay Chat-related programs.
+
+@defvr {Scheme Variable} home-senpai-service-type
+Service for configuration of @code{senpai}, a terminal-based IRC client
+that works best with network bouncers such as @code{znc} and @code{soju}.
+@end defvr
+
+@deftp {Data Type} home-senpai-configuration
+Data type representing the configuration of the
+@code{home-senpai-service-type}.
+
+@table @asis
+@item @code{address}
+The address of the IRC server to connect to.
+
+@item @code{nickname}
+A string to use as the IRC nickname.
+
+@item @code{username} (default: @code{#f})
+A string to use as the IRC username.
+
+@item @code{realname} (default: @code{#f})
+A string to use as the IRC real name.
+
+@item @code{password}
+Either a string to use as the IRC password, or a list of strings
+and file-like objects representing a command line that prints the
+password to standard output.
+
+@item @code{channels} (default: @code{#f})
+A list of channels to connect to by default.
+
+@item @code{highlight-words} (default: @code{#f})
+A list of words that, when said by another user, will cause you to
+be ``highlighted'', as if you were mentioned.
+
+@item @code{highlight-beep?} (default: @code{#f})
+Whether to make a sound when you are ``highlighted''.
+
+@item @code{highlight-script} (default: @code{#f})
+A file-like object representing a shell script to be run when you
+are ``highlighted''. State information is passed to the script via
+the environment; see @command{man senpai.5} for the list of
+variables passed to the script.
+
+@item @code{nicknames-width} (default: @code{14})
+The width of the pane containing the nicknames corresponding to
+each message.
+
+@item @code{channels-width} (default: @code{16})
+The width of the pane containing the list of channels.
+
+@item @code{members-width} (default: @code{16})
+The width of the pane containing the list of channel members.
+
+@item @code{message-width} (default: @code{0})
+The width of the messages.
+
+@item @code{tls?} (default: @code{#t})
+Whether to enable TLS connection support.
+
+@item @code{typing-notify?} (default: @code{#t})
+Whether to send typing notifications to others.
+
+@item @code{mouse?} (default: @code{#t})
+Whether to enable mouse interaction.
+
+@item @code{prompt-color} (default: @code{-1})
+The foreground colour (either an ANSI colour code number or a
+hexadecimal colour string) to use for the ``>'' in the message
+prompt.
+
+@item @code{unread-color} (default: @code{-1})
+The foreground colour to use for buffers with unread messages.
+
+@item @code{debug?} (default: @code{#f})
+Whether to print debugging information to the home message buffer.
+@end table
+@end deftp
+
@node Power Management Home Services
@subsection Power Management Home Services
diff --git a/gnu/home/services/irc.scm b/gnu/home/services/irc.scm
new file mode 100644
index 0000000000..1097f9a5f0
--- /dev/null
+++ b/gnu/home/services/irc.scm
@@ -0,0 +1,154 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 ( <paren@disroot.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu home services irc)
+ #:use-module (gnu home services)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix records)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+
+ #:export (home-senpai-service-type
+ home-senpai-configuration))
+
+;;; Commentary:
+;;;
+;;; This module contains home services for Internet Relay Chat.
+;;;
+;;; Code:
+
+
+;;;
+;;; Senpai.
+;;;
+
+(define-record-type* <home-senpai-configuration>
+ home-senpai-configuration make-home-senpai-configuration
+ home-senpai-configuration?
+ (address home-senpai-address) ;string
+ (nickname home-senpai-nickname) ;string
+ (username home-senpai-username ;string | #f
+ (default #f))
+ (realname home-senpai-realname ;string | #f
+ (default #f))
+ (password home-senpai-password) ;string | file-like, list of string
+ (channels home-senpai-channels ;list of string | #f
+ (default #f))
+ (highlight-words home-senpai-highlight-words ;list of string | #f
+ (default #f))
+ (highlight-beep? home-senpai-highlight-beep? ;boolean
+ (default #f))
+ (highlight-script home-senpai-highlight-script ;file-like | #f
+ (default #f))
+ (nicknames-width home-senpai-nicknames-width ;integer
+ (default 14))
+ (channels-width home-senpai-channels-width ;integer
+ (default 16))
+ (members-width home-senpai-members-width ;integer
+ (default 16))
+ (message-width home-senpai-message-width ;integer
+ (default 0))
+ (tls? home-senpai-tls? ;boolean
+ (default #t))
+ (typing-notify? home-senpai-typing-notify? ;boolean
+ (default #t))
+ (mouse? home-senpai-mouse? ;boolean
+ (default #t))
+ (prompt-color home-senpai-prompt-color ;integer | string
+ (default -1))
+ (unread-color home-senpai-unread-color ;integer | string
+ (default -1))
+ (debug? home-senpai-debug? ;boolean
+ (default #f)))
+
+(define (home-senpai-xdg-configuration-files config)
+ (define (string-field name field)
+ (let ((value (field config)))
+ (if value
+ (list name " \"" value "\"\n")
+ '())))
+
+ (define (string-list-field name field)
+ (let ((value (field config)))
+ (if value
+ (append (list name)
+ (concatenate (map (cute list " \"" <> "\"") value))
+ (list "\n"))
+ '())))
+
+ (define (integer-field name field)
+ (let ((value (field config)))
+ (if value
+ (list name " " (number->string value) "\n")
+ '())))
+
+ (define (colour-field name field)
+ (let ((value (field config)))
+ (if (string? value)
+ (string-field name (compose (cute string-append "#" <>)
+ field))
+ (integer-field name field))))
+
+ (define (boolean-field name field)
+ (let ((value (field config)))
+ (list name " " (if value "true" "false") "\n")))
+
+ (define (symbol-field name field)
+ (string-field name (compose symbol->string field)))
+
+ (define* (record-field name #:rest fields)
+ (append (list name " {\n")
+ (concatenate fields)
+ (list "}\n")))
+
+ `(("senpai/sen.scfg"
+ ,(apply mixed-text-file "senpai.scfg"
+ (append (string-field "address" home-senpai-address)
+ (string-field "nickname" home-senpai-nickname)
+ (string-field "username" home-senpai-username)
+ (string-field "realname" home-senpai-realname)
+ (if (list? (home-senpai-password config))
+ (string-list-field "password-cmd" home-senpai-password)
+ (string-field "password" home-senpai-password))
+ (string-list-field "channel" home-senpai-channels)
+ (string-list-field "highlight" home-senpai-highlight-words)
+ (boolean-field "on-highlight-beep" home-senpai-highlight-beep?)
+ (string-field "on-highlight-path" home-senpai-highlight-script)
+ (record-field "pane-widths"
+ (integer-field "nicknames" home-senpai-nicknames-width)
+ (integer-field "channels" home-senpai-channels-width)
+ (integer-field "members" home-senpai-members-width)
+ (integer-field "text" home-senpai-message-width))
+ (boolean-field "tls" home-senpai-tls?)
+ (boolean-field "typings" home-senpai-typing-notify?)
+ (boolean-field "mouse" home-senpai-mouse?)
+ (record-field "colors"
+ (colour-field "prompt" home-senpai-prompt-color)
+ (colour-field "unread" home-senpai-unread-color))
+ (boolean-field "debug" home-senpai-debug?))))))
+
+(define home-senpai-service-type
+ (service-type
+ (name 'home-senpai)
+ (extensions
+ (list (service-extension home-xdg-configuration-files-service-type
+ home-senpai-xdg-configuration-files)))
+ (description
+ "Configure senpai, a terminal-based IRC client designed for use
+with bouncers.")))
diff --git a/gnu/local.mk b/gnu/local.mk
index 9a1aad300e..3bb4f2a353 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -90,6 +90,7 @@ GNU_SYSTEM_MODULES = \
%D%/home/services/symlink-manager.scm \
%D%/home/services/fontutils.scm \
%D%/home/services/guix.scm \
+ %D%/home/services/irc.scm \
%D%/home/services/pm.scm \
%D%/home/services/shells.scm \
%D%/home/services/shepherd.scm \
--
2.38.0
(
(address . control@debbugs.gnu.org)
CNIEJK8ZP3ET.48FE50TTI6KD@guix-framework
block 56961 by 55903
thanks

This patchset now depends on the aerc patchset for several dependencies.

-- (
N
N
Nguy?n Gia Phong wrote on 25 Jul 2023 19:29
(address . 56961@debbugs.gnu.org)
CUBFHTS5QM07.33ULV4ZGT7AC3@nix
Didn't see this earlier, but I think my 64222 superseded it.
?