services: Add whoogle-service-type.

* gnu/services/web.scm (whoogle-service-type): New variable.
* doc/guix.texi (Web Services): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Miguel Ángel Moreno 2023-08-13 12:37:04 +02:00 committed by Ludovic Courtès
parent 0497b1696f
commit 0a7bf792c8
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 88 additions and 0 deletions

View file

@ -31863,6 +31863,38 @@ Additional arguments to pass to the @command{varnishd} process.
@end table
@end deftp
@subheading Whoogle Search
@cindex Whoogle Search
@uref{https://github.com/benbusby/whoogle-search, Whoogle Search} is a
self-hosted, ad-free, privacy-respecting metasearch engine that collects
and displays Google search results.
@defvar whoogle-service-type
Service type for Whoogle Search.
@end defvar
@deftp {Data Type} whoogle-configuration
Data type representing Whoogle Search service configuration.
@table @asis
@item @code{package} (default: @code{whoogle-search})
The Whoogle Search package to use.
@item @code{host} (default: @code{"127.0.0.1"})
The host address to run Whoogle on.
@item @code{port} (default: @code{5000})
The port where Whoogle will be exposed.
@item @code{environment-variables} (default: @code{'()})
A list of strings with the environment variables to configure Whoogle.
You can consult
@uref{https://github.com/benbusby/whoogle-search/blob/main/whoogle.template.env,
its environment variables template} for the list of available options.
@end table
@end deftp
@subsubheading Patchwork
@cindex Patchwork
Patchwork is a patch tracking system. It can collect patches sent to a

View file

@ -16,6 +16,7 @@
;;; Copyright © 2020, 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Miguel Ángel Moreno <mail@migalmoreno.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -36,6 +37,7 @@ (define-module (gnu services web)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (gnu services admin)
#:use-module (gnu services configuration)
#:use-module (gnu services getmail)
#:use-module (gnu services mail)
#:use-module (gnu system pam)
@ -47,6 +49,7 @@ (define-module (gnu services web)
#:use-module (gnu packages patchutils)
#:use-module (gnu packages php)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages guile)
#:use-module (gnu packages logging)
@ -240,6 +243,13 @@ (define-module (gnu services web)
varnish-service-type
whoogle-service-type
whoogle-configuration
whoogle-configuration-package
whoogle-configuration-host
whoogle-configuration-port
whoogle-configuration-environment-variables
patchwork-database-configuration
patchwork-database-configuration?
patchwork-database-configuration-engine
@ -1603,6 +1613,52 @@ (define varnish-service-type
(default-value
(varnish-configuration))))
;;;
;;; Whoogle
;;;
(define-configuration/no-serialization whoogle-configuration
(package
(package whoogle-search)
"The @code{whoogle-search} package to use.")
(host
(string "127.0.0.1")
"The host address to run Whoogle on.")
(port
(integer 5000)
"The port to run Whoogle on.")
(environment-variables
(list-of-strings '())
"A list of strings specifying environment variables used to configure
Whoogle."))
(define (whoogle-shepherd-service config)
(match-record config <whoogle-configuration>
(package host port environment-variables)
(list
(shepherd-service
(provision '(whoogle-search))
(start #~(make-forkexec-constructor
(list (string-append #$package "/bin/whoogle-search")
"--host" #$host "--port" #$(number->string port))
#:environment-variables
(append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
'#$environment-variables)))
(stop #~(make-kill-destructor))
(documentation "Run a @code{whoogle-search} instance.")))))
(define whoogle-service-type
(service-type
(name 'whoogle-search)
(extensions
(list (service-extension shepherd-root-service-type
whoogle-shepherd-service)
(service-extension profile-service-type
(compose list whoogle-configuration-package))))
(default-value (whoogle-configuration))
(description "Set up the @code{whoogle-search} metasearch engine.")))
;;;
;;; Patchwork