[PATCHSET] Add senpai

  • Done
  • quality assurance status badge
Details
3 participants
  • Nguy?n Gia Phong
  • (
  • Sharlatan Hellseher
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.
S
S
Sharlatan Hellseher wrote on 19 Mar 23:29 +0100
(address . 56961-done@debbugs.gnu.org)
87jzlxvosn.fsf@gmail.com
Senpai was added from https://issues.guix.gnu.org/64222

Closing this issue as not implemented.

--
Oleg
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEmEeB3micIcJkGAhndtcnv/Ys0rUFAmX6EbgACgkQdtcnv/Ys
0rXHxhAAuyyovj1JDe+WlvtVSGxinxBQUrmH0fKHtNFDPMwK2xGY1C01MZW+uSdj
uemFlma27OVuf1EmZjPGiZb1TXO7SoM+UMwbCx9CVlPRiOUQ7UODJm++QHe9JtS8
xHnrrodJ5K3dlz3NrNZEJvKHqBb6ytlx33P0d/IXUOO6SktlB1EKfDy4ZypcCQpS
Xe65wO5gwaxcciqBm8nIyoIrrjfzdo1OqbrfKkRGeSuLn2/FjM+q1zPioAzi8Hfe
tCAL4RVI/kzmtg78OMoLhoBzzbaPfMysw/TFEKhXjBEDmZVgy7kjZpi0GdukMbFs
ewST5TFgToZ+7wiIvYGnMaUQnBptjWfdg/3X95dGjZUZZkTC7ut4XuRnOki84dRr
MNHuDNYvwDFvm6d2cuv06iSqEw2gyyXMtUaSldn33eBBe8tcB962CXYzuj9PVZB+
+46he9oF8uIsKHcf3NPkXxYVvCEtSMWCe3P1hVecoMIonHKRD9MilwY7Gqc7ZulX
9g22yLYzeeCGGKc3/hWyio7se4cjkC1+QNkcCJbfGbLIYjUxntc8xB9p8SLvS0OM
0XNDmhC84Z+HfxDbjV5gJwYWpqWJpdB48n+89qlf94y21LtvH0a1bc/nNjU58qJz
MhuIiZkfiNH7hGYm30iAsc2y3TdoWbvaP9HX9lBGH015g8o7kcs=
=ORXe
-----END PGP SIGNATURE-----

Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 56961@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 56961
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch