* [bug#62102] [PATCH] services: Add whoogle-service-type.
@ 2023-03-10 20:11 conses
2023-03-31 11:30 ` Bruno Victal
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: conses @ 2023-03-10 20:11 UTC (permalink / raw)
To: 62102; +Cc: contact, Andrew Tropin
---
gnu/services/web.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index d56e893527..66cc640a6d 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -35,6 +35,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)
@@ -46,6 +47,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)
@@ -235,6 +237,9 @@ (define-module (gnu services web)
varnish-service-type
+ whoogle-service-type
+ whoogle-configuration
+
patchwork-database-configuration
patchwork-database-configuration?
patchwork-database-configuration-engine
@@ -1575,6 +1580,47 @@ (define varnish-service-type
(default-value
(varnish-configuration))))
+\f
+;;;
+;;; Whoogle
+;;;
+
+(define-configuration/no-serialization whoogle-configuration
+ (whoogle
+ (package whoogle-search)
+ "The @code{whoogle-search} package to use."))
+
+(define (whoogle-shepherd-service config)
+ (list
+ (shepherd-service
+ (provision '(whoogle-search))
+ (start #~(make-forkexec-constructor
+ (list (string-append #$(whoogle-configuration-whoogle config)
+ "/bin/whoogle-search"))
+ #:environment-variables
+ (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
+ (default-environment-variables))))
+ (stop #~(make-kill-destructor))
+ (documentation "Run a @code{whoogle-search} instance."))))
+
+(define (whoogle-profile-service config)
+ (list
+ (whoogle-configuration-whoogle config)))
+
+(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
+ whoogle-profile-service)))
+ (default-value (whoogle-configuration))
+ (description "Run the @code{whoogle-search} engine.")))
+
\f
;;;
;;; Patchwork
--
2.39.1
--
Best regards,
conses
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH] services: Add whoogle-service-type.
2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
@ 2023-03-31 11:30 ` Bruno Victal
2023-06-09 21:03 ` Ludovic Courtès
2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
2024-02-11 20:34 ` [bug#62102] [PATCH] " Miguel Ángel Moreno
2 siblings, 1 reply; 9+ messages in thread
From: Bruno Victal @ 2023-03-31 11:30 UTC (permalink / raw)
To: conses; +Cc: 62102, Andrew Tropin
Hi,
On 2023-03-10 20:11, conses wrote:
>
> + whoogle-service-type
> + whoogle-configuration
> +
[...]
> patchwork-database-configuration
> patchwork-database-configuration?
> patchwork-database-configuration-engine
> @@ -1575,6 +1580,47 @@ (define varnish-service-type
> (default-value
> (varnish-configuration))))
>
> +\f
Missing page-break character here?
If you're using Emacs you can insert one with C-q C-l.
> +;;;
> +;;; Whoogle
> +;;;
> +
> +(define-configuration/no-serialization whoogle-configuration
> + (whoogle
> + (package whoogle-search)
> + "The @code{whoogle-search} package to use."))
I prefer this field to be named 'package' instead, to make it less prone
to confusion. The accessor, whoogle-configuration-package, should be exported
as well.
> +(define (whoogle-shepherd-service config)
> + (list
> + (shepherd-service
> + (provision '(whoogle-search))
> + (start #~(make-forkexec-constructor
> + (list (string-append #$(whoogle-configuration-whoogle config)
> + "/bin/whoogle-search"))
In general, you may prefer to use match-record instead of using accessors
as it results in much less code to type.
> + #:environment-variables
> + (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
> + (default-environment-variables))))
Is (default-environment-variables) necessary?
> + (stop #~(make-kill-destructor))
> + (documentation "Run a @code{whoogle-search} instance."))))
> +
> +(define (whoogle-profile-service config)
> + (list
> + (whoogle-configuration-whoogle config)))
[...]
> +
> +(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
> + whoogle-profile-service)))
You can use match-record here or use the accessor here instead.
(e.g., (compose list whoogle-configuration-package))
Could you add a system test for this service as well?
It makes things easier to check and maintain.
Cheers,
Bruno
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH] services: Add whoogle-service-type.
2023-03-31 11:30 ` Bruno Victal
@ 2023-06-09 21:03 ` Ludovic Courtès
2023-06-09 21:07 ` Miguel Ángel Moreno
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2023-06-09 21:03 UTC (permalink / raw)
To: conses; +Cc: Bruno Victal, 62102, Andrew Tropin
Hi conses,
Did you have a chance to look into Bruno’s suggestions below?
Please let us know what you think.
Thanks in advance,
Ludo’.
Bruno Victal <mirai@makinata.eu> skribis:
> Hi,
>
> On 2023-03-10 20:11, conses wrote:
>>
>> + whoogle-service-type
>> + whoogle-configuration
>> +
>
> [...]
>
>> patchwork-database-configuration
>> patchwork-database-configuration?
>> patchwork-database-configuration-engine
>> @@ -1575,6 +1580,47 @@ (define varnish-service-type
>> (default-value
>> (varnish-configuration))))
>>
>> +\f
>
> Missing page-break character here?
> If you're using Emacs you can insert one with C-q C-l.
>
>> +;;;
>> +;;; Whoogle
>> +;;;
>> +
>> +(define-configuration/no-serialization whoogle-configuration
>> + (whoogle
>> + (package whoogle-search)
>> + "The @code{whoogle-search} package to use."))
>
> I prefer this field to be named 'package' instead, to make it less prone
> to confusion. The accessor, whoogle-configuration-package, should be exported
> as well.
>
>> +(define (whoogle-shepherd-service config)
>> + (list
>> + (shepherd-service
>> + (provision '(whoogle-search))
>> + (start #~(make-forkexec-constructor
>> + (list (string-append #$(whoogle-configuration-whoogle config)
>> + "/bin/whoogle-search"))
>
> In general, you may prefer to use match-record instead of using accessors
> as it results in much less code to type.
>
>> + #:environment-variables
>> + (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
>> + (default-environment-variables))))
>
> Is (default-environment-variables) necessary?
>
>> + (stop #~(make-kill-destructor))
>> + (documentation "Run a @code{whoogle-search} instance."))))
>> +
>> +(define (whoogle-profile-service config)
>> + (list
>> + (whoogle-configuration-whoogle config)))
>
> [...]
>
>> +
>> +(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
>> + whoogle-profile-service)))
>
> You can use match-record here or use the accessor here instead.
> (e.g., (compose list whoogle-configuration-package))
>
>
> Could you add a system test for this service as well?
> It makes things easier to check and maintain.
>
>
> Cheers,
> Bruno
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH] services: Add whoogle-service-type.
2023-06-09 21:03 ` Ludovic Courtès
@ 2023-06-09 21:07 ` Miguel Ángel Moreno
2023-08-08 15:26 ` Ludovic Courtès
0 siblings, 1 reply; 9+ messages in thread
From: Miguel Ángel Moreno @ 2023-06-09 21:07 UTC (permalink / raw)
To: 62102
On 2023-06-09 23:03, Ludovic Courtès wrote:
> Hi conses,
>
> Did you have a chance to look into Bruno’s suggestions below?
>
> Please let us know what you think.
>
Hey Ludovic,
Yes, I've noted them but I haven't gotten around to implementing them
yet. I'll give this a shot soon.
>
> Bruno Victal <mirai@makinata.eu> skribis:
>
>> Hi,
>>
>> On 2023-03-10 20:11, conses wrote:
>>>
>>> + whoogle-service-type
>>> + whoogle-configuration
>>> +
>>
>> [...]
>>
>>> patchwork-database-configuration
>>> patchwork-database-configuration?
>>> patchwork-database-configuration-engine
>>> @@ -1575,6 +1580,47 @@ (define varnish-service-type
>>> (default-value
>>> (varnish-configuration))))
>>>
>>> +\f
>>
>> Missing page-break character here?
>> If you're using Emacs you can insert one with C-q C-l.
>>
>>> +;;;
>>> +;;; Whoogle
>>> +;;;
>>> +
>>> +(define-configuration/no-serialization whoogle-configuration
>>> + (whoogle
>>> + (package whoogle-search)
>>> + "The @code{whoogle-search} package to use."))
>>
>> I prefer this field to be named 'package' instead, to make it less prone
>> to confusion. The accessor, whoogle-configuration-package, should be exported
>> as well.
>>
>>> +(define (whoogle-shepherd-service config)
>>> + (list
>>> + (shepherd-service
>>> + (provision '(whoogle-search))
>>> + (start #~(make-forkexec-constructor
>>> + (list (string-append #$(whoogle-configuration-whoogle config)
>>> + "/bin/whoogle-search"))
>>
>> In general, you may prefer to use match-record instead of using accessors
>> as it results in much less code to type.
>>
>>> + #:environment-variables
>>> + (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
>>> + (default-environment-variables))))
>>
>> Is (default-environment-variables) necessary?
>>
>>> + (stop #~(make-kill-destructor))
>>> + (documentation "Run a @code{whoogle-search} instance."))))
>>> +
>>> +(define (whoogle-profile-service config)
>>> + (list
>>> + (whoogle-configuration-whoogle config)))
>>
>> [...]
>>
>>> +
>>> +(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
>>> + whoogle-profile-service)))
>>
>> You can use match-record here or use the accessor here instead.
>> (e.g., (compose list whoogle-configuration-package))
>>
>>
>> Could you add a system test for this service as well?
>> It makes things easier to check and maintain.
>>
>>
>> Cheers,
>> Bruno
--
Best regards,
Miguel Ángel Moreno
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH] services: Add whoogle-service-type.
2023-06-09 21:07 ` Miguel Ángel Moreno
@ 2023-08-08 15:26 ` Ludovic Courtès
2023-08-13 10:57 ` Miguel Ángel Moreno
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2023-08-08 15:26 UTC (permalink / raw)
To: Miguel Ángel Moreno; +Cc: 62102
Hey,
Miguel Ángel Moreno <contact@conses.eu> skribis:
> On 2023-06-09 23:03, Ludovic Courtès wrote:
>
>> Hi conses,
>>
>> Did you have a chance to look into Bruno’s suggestions below?
>>
>> Please let us know what you think.
>>
>
> Hey Ludovic,
>
> Yes, I've noted them but I haven't gotten around to implementing them
> yet. I'll give this a shot soon.
Friendly ping! :-)
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH] services: Add whoogle-service-type.
2023-08-08 15:26 ` Ludovic Courtès
@ 2023-08-13 10:57 ` Miguel Ángel Moreno
0 siblings, 0 replies; 9+ messages in thread
From: Miguel Ángel Moreno @ 2023-08-13 10:57 UTC (permalink / raw)
To: 62102
On 2023-08-08 17:26, Ludovic Courtès wrote:
> Hey,
>
Hi Ludovic,
> Miguel Ángel Moreno <contact@conses.eu> skribis:
>
>> On 2023-06-09 23:03, Ludovic Courtès wrote:
>>
>>> Hi conses,
>>>
>>> Did you have a chance to look into Bruno’s suggestions below?
>>>
>>> Please let us know what you think.
>>>
I addressed Bruno's points, added extra fields to configure this service
further, and documented these in the manual.
In regard to tests, I had a glance at ./tests/services/ to see what kind
of tests there were, and most them test serialization or some
service-specific feature. Since Whoogle is essentially a Flask web
application, I wouldn't know how to go about testing it in the context
of a service.
Other than that, happy to hear your feedback on the new revision :)
>>
>> Hey Ludovic,
>>
>> Yes, I've noted them but I haven't gotten around to implementing them
>> yet. I'll give this a shot soon.
>
> Friendly ping! :-)
>
> Ludo’.
--
Best regards,
Miguel Ángel Moreno
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH v2] services: Add whoogle-service-type.
2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
2023-03-31 11:30 ` Bruno Victal
@ 2023-08-13 10:37 ` Miguel Ángel Moreno
2024-02-19 21:25 ` Ludovic Courtès
2024-02-11 20:34 ` [bug#62102] [PATCH] " Miguel Ángel Moreno
2 siblings, 1 reply; 9+ messages in thread
From: Miguel Ángel Moreno @ 2023-08-13 10:37 UTC (permalink / raw)
To: 62102
* gnu/services/web.scm (whoogle-service-type): New variable.
* doc/guix.texi (Web Services): Document it.
---
doc/guix.texi | 32 +++++++++++++++++++++++++
gnu/services/web.scm | 56 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 88 insertions(+)
diff --git a/doc/guix.texi b/doc/guix.texi
index 409ca2ad62..35746ec21e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -31031,6 +31031,38 @@ Web Services
@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
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 818226a4f7..ed53572eec 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -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
@@ -1604,6 +1614,52 @@ (define varnish-service-type
(default-value
(varnish-configuration))))
+\f
+;;;
+;;; 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.")))
+
\f
;;;
;;; Patchwork
--
2.41.0
--
Best regards,
Miguel Ángel Moreno
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH v2] services: Add whoogle-service-type.
2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
@ 2024-02-19 21:25 ` Ludovic Courtès
0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2024-02-19 21:25 UTC (permalink / raw)
To: Miguel Ángel Moreno; +Cc: 62102
Hi,
Miguel Ángel Moreno <mail@migalmoreno.com> skribis:
> * gnu/services/web.scm (whoogle-service-type): New variable.
> * doc/guix.texi (Web Services): Document it.
Finally applied! I followed up by expanding the Whoogle intro in the
manual a bit.
Things nice-to-have that come to mind:
• A system test. This is normally required for all new system
services. I was willing to make an exception here because it’s
already taken way too long, but would be nice to have such a test to
ensure the service actually keeps working.
• Running the daemon with ‘least-authority-wrapper’. It’s a good idea
for all network-facing daemons.
• Adding a Home service via ‘define-service-type-mapping’.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#62102] [PATCH] services: Add whoogle-service-type.
2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
2023-03-31 11:30 ` Bruno Victal
2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
@ 2024-02-11 20:34 ` Miguel Ángel Moreno
2 siblings, 0 replies; 9+ messages in thread
From: Miguel Ángel Moreno @ 2024-02-11 20:34 UTC (permalink / raw)
To: 62102; +Cc: mail, Ludovic Courtès, Sharlatan Hellseher
Hi,
Friendly ping on this patch :)
--
Best regards,
Miguel Ángel Moreno
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-02-19 21:25 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
2023-03-31 11:30 ` Bruno Victal
2023-06-09 21:03 ` Ludovic Courtès
2023-06-09 21:07 ` Miguel Ángel Moreno
2023-08-08 15:26 ` Ludovic Courtès
2023-08-13 10:57 ` Miguel Ángel Moreno
2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
2024-02-19 21:25 ` Ludovic Courtès
2024-02-11 20:34 ` [bug#62102] [PATCH] " Miguel Ángel Moreno
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).