~ruther/guix-local

0a7bf792c88ebaf0ec6c55e03a4f587bd5597796 — Miguel Ángel Moreno 2 years ago 0497b16
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>
2 files changed, 88 insertions(+), 0 deletions(-)

M doc/guix.texi
M gnu/services/web.scm
M doc/guix.texi => doc/guix.texi +32 -0
@@ 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

M gnu/services/web.scm => gnu/services/web.scm +56 -0
@@ 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 @@
  #: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 @@
  #: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 @@

            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


@@ 1605,6 1615,52 @@ files.")


;;;
;;; 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
;;;