gnu: home: services: Add home-znc-service-type.

* gnu/home/services/messaging.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* po/guix/POTFILES.in: Likewise.
* doc/guix.texi (Messaging Home Services): Document it in new subsection.
This commit is contained in:
Jan (janneke) Nieuwenhuizen 2023-03-05 17:38:50 +01:00 committed by Janneke Nieuwenhuizen
parent 2c2f382e75
commit 193f547ca3
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273
4 changed files with 113 additions and 1 deletions

View file

@ -41705,6 +41705,7 @@ services)}.
* Guix: Guix Home Services. Services for Guix. * Guix: Guix Home Services. Services for Guix.
* Fonts: Fonts Home Services. Services for managing User's fonts. * Fonts: Fonts Home Services. Services for managing User's fonts.
* Sound: Sound Home Services. Dealing with audio. * Sound: Sound Home Services. Dealing with audio.
* Messaging: Messaging Home Services. Services for managing messaging.
@end menu @end menu
@c In addition to that Home Services can provide @c In addition to that Home Services can provide
@ -42797,6 +42798,42 @@ Stopping the Shepherd service turns off broadcasting.
This is the multicast address used by default by the two services above. This is the multicast address used by default by the two services above.
@end defvar @end defvar
@node Messaging Home Services
@subsection Messaging Home Services
@cindex znc
The @uref{https://znc.in, ZNC bouncer} can be run as a daemon to manage
your IRC presence. With the @code{(gnu home services znc)} service, you
can configure ZNC to run upon login.
You will have to provide a @file{~/.znc/configs/znc.conf} seperately.
Here is an example of a service and its configuration that you could add
to the @code{services} field of your @code{home-environment}:
@lisp
(service home-znc-service-type)
@end lisp
@defvr {Scheme Variable} home-znc-service-type
This is the type of the @code{git daemon} home service, whose value is an
@code{home-znc-configuration} object.
@end defvr
@deftp {Data Type} home-znc-configuration
Available @code{home-znc-configuration} fields are:
@table @asis
@item @code{git} (default: @code{git}) (type: file-like)
The git package to use.
@item @code{extra-options} (default: @code{'()})
Extra options will be passed to @command{znc}, please run @command{man
znc} for more information.
@end table
@end deftp
@node Invoking guix home @node Invoking guix home
@section Invoking @command{guix home} @section Invoking @command{guix home}

View file

@ -0,0 +1,73 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.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 messaging)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module (shepherd support)
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (gnu packages messaging)
#:use-module (gnu services configuration)
#:use-module (gnu services shepherd)
#:use-module (guix records)
#:use-module (guix gexp)
#:export (home-znc-configuration
home-znc-service-type))
;;;
;;; Znc.
;;;
(define-record-type* <home-znc-configuration>
home-znc-configuration make-home-znc-configuration
home-znc-configuration?
(znc home-znc-znc ;string
(default znc))
(extra-options home-znc-extra-options ;list of string
(default '())))
(define (home-znc-services config)
"Return a <shepherd-service> for znc with CONFIG."
(match config
(($ <home-znc-configuration> znc extra-options)
(let* ((znc (file-append znc "/bin/znc"))
(command `(,znc
"--foreground"
,@extra-options))
(log-file (string-append %user-log-dir "/znc.log")))
(list (shepherd-service
(documentation "Run the znc IRC bouncer.")
(provision '(znc))
(start #~(make-forkexec-constructor '#$command
#:log-file #$log-file))
(stop #~(make-kill-destructor))))))))
(define home-znc-service-type
(service-type
(name 'home-znc)
(default-value (home-znc-configuration))
(extensions
(list (service-extension home-shepherd-service-type
home-znc-services)))
(description
"Install and configure @command{znc}, an @acronym{IRC, Internet Relay
Chat} bouncer, as a Shepherd service.")))

View file

@ -11,7 +11,7 @@
# Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
# Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com> # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> # Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
# Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
# Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com> # Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
@ -91,6 +91,7 @@ GNU_SYSTEM_MODULES = \
%D%/home/services/symlink-manager.scm \ %D%/home/services/symlink-manager.scm \
%D%/home/services/fontutils.scm \ %D%/home/services/fontutils.scm \
%D%/home/services/guix.scm \ %D%/home/services/guix.scm \
%D%/home/services/messaging.scm \
%D%/home/services/pm.scm \ %D%/home/services/pm.scm \
%D%/home/services/shells.scm \ %D%/home/services/shells.scm \
%D%/home/services/shepherd.scm \ %D%/home/services/shepherd.scm \

View file

@ -13,6 +13,7 @@ gnu/services/shepherd.scm
gnu/services/samba.scm gnu/services/samba.scm
gnu/services/version-control.scm gnu/services/version-control.scm
gnu/home/services.scm gnu/home/services.scm
gnu/home/services/messaging.scm
gnu/home/services/ssh.scm gnu/home/services/ssh.scm
gnu/home/services/symlink-manager.scm gnu/home/services/symlink-manager.scm
gnu/system/file-systems.scm gnu/system/file-systems.scm