Commit Graph
159 Commits
Author SHA1 Message Date
Arun Isaac 027110a650 gnu: services: Export nginx-server-configuration-try-files.
* gnu/services/web.scm: Export nginx-server-configuration-try-files.

Change-Id: Ia6132547b32c887fb6353c2eeb3104bd82d07acf
2026-08-03 02:27:04 +01:00
Nguyễn Gia Phong a614981453 services: Eliminate tab-based indentations.
* gnu/services/admin.scm: Replace tabs with 8 spaces.
* gnu/services/dbus.scm: Likewise.
* gnu/services/power.scm: Likewise.
* gnu/services/ssh.scm: Likewise.
* gnu/services/virtualization.scm: Likewise.
* gnu/services/web.scm: Likewise.
* gnu/services/xorg.scm: Likewise.
* gnu/services/networking.scm: Reindent lines with tabs.
2026-07-27 11:53:41 +09:00
Maxim Cournoyer 2aa2bbc5fe services: nginx: Use a fixed location for the nginx configuration file.
The motivation is twofold:

 1. We can ensure the presence of the nginx default configuration fragments in
    the configuration file directory;
 2. 'herd reload nginx' can now be used to reload an updated configuration
    file.

Before this change, 'include fastcgi_params;', for example, would fail with
error:

  nginx: [emerg] open() "/gnu/store/fastcgi_params" failed
  (2: No such file or directory) in /gnu/store/...-nginx.conf:50

* gnu/services/web.scm (%nginx-configuration-file): New variable.
(nginx-activation): Delay configuration file check to...
(nginx-shepherd-service): ... a new one-shot 'nginx-init' service.  Adjust to
use the %nginx-configuration-file variable for the configuration file.
<actions>: Add a new 'configuration' action.
(nginx-conf-files, nginx-etc-directory): New procedures.
(nginx-service-type): Extend etc-service-type with nginx-service-type.
* gnu/tests/web.scm (%nginx-servers): Add an include directive to test config
to ensure it now works.

Merges: !8811
Change-Id: I26882ab01288ec4dd374e9f282e95ffa33dfa3cc
2026-06-03 13:52:35 +09:00
Arun Isaac b8354c2979 services: mumi: Make rsync and index timer event configurable.
* gnu/services/web.scm (<mumi-configuration>)[rsync-and-index-event]: New
field.
* gnu/services/web.scm (mumi-shepherd-services): Use it.
* doc/guix.texi (Web Services)[Mumi]: Document it.

Change-Id: I5910c4a93106b44eaf3900d6a72fb501c01b8773
2026-05-29 09:48:26 +01:00
Sören Tempel 056de157b2 services: gunicorn: Allow configuration of control-socket.
Since gunicorn is run in its own Linux namespace, where $HOME is
read-only, creating that control-socket fails and prevents gunicorn
from starting by default.  Therefore, this patch disables it by
default but allows supplying a custom path via a newly added
configuration field.

* gnu/services/web.scm (gunicorn-app): Add gunicorn-app-control-socket.
(gunicorn-shepherd-services): Respect gunicorn-app-control-socket.
* doc/guix.texi (gunicorn-app): Document it.

Change-Id: I648079b630293a47801713425728a4d602c8088c
2026-05-26 18:43:22 +02:00
Sören Tempel 5b4c715e2a services: gunicorn: Fix usage with non-uri listening addresses.
If the provided unix-socket? parameter is not an URI uri->string returns
to be raised.  For example, on inputs such as "0.0.0.0:8080".  This is
fixed in this commit by first checking if the input parameter is a valid
URI, before calling uri-scheme.

* gnu/tests/web.scm (unix-socket?): Check URI before calling uri-scheme.

Change-Id: Icd9cb1e215a09b1f5dcbec4630e7df3256cde4aa
2026-05-26 18:43:16 +02:00
Maxim Cournoyer 39d04c9f86 services: nginx: Add nginx to the system profile.
* gnu/services/web.scm (nginx-service-type): Extend the profile-service-type
with the nginx package.

Change-Id: I72b592c603a971bf9fbb64fe5ce02420010ac363
2026-05-25 13:58:07 +09:00
Maxim Cournoyer cb1c7ce47b services: nginx: Adjust indentation.
* gnu/services/web.scm (nginx-service-type): Adjust indentation.

Change-Id: I86696b13f7b6209bb3da7970ad4252e8de17305b
2026-05-25 13:58:07 +09:00
Sören Tempel 258cabed32 services: gunicorn: Allow configuration of socket user/group/mode
Without this change, the mode is not at all configurable meaning
that—depending on the umask(1)—it may allow access to others.  Further,
in many scenarios the owner/group of the Unix domain socket should
differ from the owner/group of the gunicorn process.  For example,
we might want to grant the nginx group access to the socket but not
use that as the GID for the gunicorn process.

* gnu/services/web.scm (<gunicorn-app>): Add socket-user, socket-group
and socket-mode.
* gnu/services/web.scm (gunicorn-activation): Respect
gunicorn-app-socket-user, gunicorn-socket-app-group, and
gunicorn-app-socket-mode.
* doc/guix.texi (Guix Services): Document new record fields.

Change-Id: I1fe5b77deb791c38c1642753a52098d304124049
2026-05-17 17:59:35 +02:00
Sören Tempel 9c844b6008 services: go-webdav: Don't run service as root.
Instead, run it as the created go-webdav user. Since go-webdav doesn't
drop privileges by itself this requires explicitly passing the users and
group via make-forkexec-constructor, which was overlooked here.

Without this patch, the account created by go-webdav-account-service
is just not used at all, which is not what was intended here.

* gnu/services/web.scm (go-webdav-shepherd-service): Pass #:user as well
as #:group to make-forkexec-constructor.

Change-Id: Ib48aa7884aca84c488133a035a76a7edfaaf0aab
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-05-01 07:46:47 +02:00
Sören Tempel bdd1a6655d services: sogogi: Don't run service as root.
Instead, run it as the created sogogi user. Since sogogi doesn't drop
privileges by itself this requires explicitly passing the users and
group via make-forkexec-constructor, which was overlooked here.

Without this patch, the account created by sogogi-account-service
is just not used at all, which is not what was intended here.

* gnu/services/web.scm (sogogi-shepherd-service): Pass #:user as well
as #:group to make-forkexec-constructor.

Change-Id: Ifcb4291090e1aa6a43502c9ed581b0b0ff68a1b4
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-05-01 07:46:47 +02:00
Daniel Littlewood fe89ae08c2 services: nginx: Fix ‘stop’ in cases where a custom config file is passed.
A previous commit (c7cb771cf4) fixed an issue with the nginx service to
ensure it can be stopped when started from a custom config file.
The stop command, which should have been `nginx -s stop`, was mistakenly
written as `nginx stop`, which means that `herd stop nginx` still fails
in the given case. This commit corrects that typo.

* gnu/services/web.scm (nginx-shepherd-service): In ‘stop’, correctly
  call “nginx -s stop” when ‘value’ is not a process.

Fixes: guix/guix#7061
Reported-by: Dan Littlewood
Change-Id: I3055fc24084d30da969afd508861d2423a396ced
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #8128
2026-04-24 22:16:01 +02:00
Ludovic Courtès c7cb771cf4 services: nginx: Fix ‘stop’ in cases where a custom config file is passed.
Previously, when the ‘file’ field of ‘nginx-configuration’ was true, the PID
file would be unknown; thus, the ‘start’ method would return #t and the ‘stop’
method would eventually fail with a type error because it would receive #t
instead of a process.

This fixes it by changing ‘stop’ to invoke “nginx -s stop” when the service’s
value is not a process.

* gnu/services/web.scm (nginx-shepherd-service): In ‘stop’, change to invoke
“nginx -s stop” when ‘value’ is not a process.

Fixes: guix/guix#7061
Reported-by: Dan Littlewood
Change-Id: I20ff065ecd2c64e5fc98f59c25d91b300bc7b4cd
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #7543
2026-04-07 13:26:20 +02:00
Evgeny Pisemsky f7c9456a6f services: cat-avatar-generator: Fix default cache directory.
* gnu/services/web.scm (cat-avatar-generator-service):
  Append slash to default cache directory.
* doc/guix.texi (PHP-FPM)<cat-avatar-generator-service>:
  Likewise.  Mention requirements.

Change-Id: Idd46deca135bf37133b46bee3ba535d9bedf9258
Merges: https://codeberg.org/guix/guix/pulls/5189
Reviewed-by: Yan Abu Arab <yanabuarab@gmail.com>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-02 13:24:51 +09:00
Sören Tempel 3f3cec8993 services: web: Add sogogi service.
* gnu/services/web.scm (sogogi-service-type): New services.
(sogogi-serialize-section, sogogi-serialize-field)
(sogogi-serialize-string, sogogi-serialize-list-of-strings)
(sogogi-serialize-sogogi-user, sogogi-serialize-sogogi-location)
(sogogi-serialize-list-of-sogogi-user): New procedures.
(sogogi-user, sogogi-location)
(sogogi-configuration): New record types.
(sogogi-account-service): New variable.
(sogogi-config-file, sogogi-shepherd-service): New procedures.
* gnu/tests/web.scm (%test-sogogi): Add tests for the service.
* doc/guix.texi (Web Services): Document it.

Change-Id: I5cc6dd84d6c7c8d5d13b685853b19c5d433ed7e5
2026-03-29 14:12:56 +02:00
Fabio NataliandArun Isaac 0c506e6f52 gnu: services: Add gunicorn-service-type.
* gnu/services/web.scm
(<gunicorn-configuration>, <gunicorn-app>): New records.
(unix-socket?, unix-socket-path, gunicorn-activation,
gunicorn-shepherd-services): New procedures.
(gunicorn-service-type): New variable.
* doc/guix.texi (Web Services): Document the new service.

Co-authored-by: Arun Isaac <arunisaac@systemreboot.net>
Change-Id: I3aa970422e6a5d31158b798b1061e6928ad2160b
Signed-off-by: jgart <jgart@dismail.de>
2026-03-01 08:33:54 -05:00
Rodion Goritskov 396a9451d4 services: Add configuration action to miniflux-service-type.
* gnu/services/web.scm (miniflux-shepherd-service): Add configuration action.
* gnu/tests/web.scm (run-miniflux-test): Add configuration action check.

Change-Id: I515653070cc0c39fcbe31fef19d8745a1a8d47cb
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-02-23 23:58:25 +00:00
Sören Tempel 64622248cd services: web: Add go-webdav.
* gnu/services/web.scm (go-webdav-service-type): New service.
(go-webdav-account-service): New variable.
(go-webdav-shepherd-service): New procedures.
* gnu/tests/web.scm (%test-go-webdav): Add tests for the service.
* doc/guix.texi (Web Services): Document it.

Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2026-02-08 23:53:58 +01:00
Christopher Baines f7125fb55d gnu: Fix patchwork service test.
* gnu/packages/patchutils.scm (patchwork):[arguments]: Write version.txt,
tweak some indentation, patch the STATICFILES_DIRS entry.
[propagated-inputs]: Add python-tzdata.
* gnu/services/web.scm (patchwork-settings-module-compiler): Don't set
STATIC_ROOT on debug, as this clashes with STATICFILES_DIRS.
(patchwork-django-admin-gexp): Fix.
(patchwork-shepherd-services): Workaround issue referencing random-token.
* gnu/tests/web.scm (patchwork-initial-database-setup-service): Don't use
primitive-fork, as this doesn't work with newer shepherds.
(run-patchwork-test): Check the setup runs.

Change-Id: I7dfeb816b4f6c9070358d433fb7ca8faa1fbfd2a
2025-11-10 10:27:36 +00:00
Rodion Goritskov 054aae7bb2 services: Add miniflux-service-type.
* doc/guix.texi: Document Miniflux service and configuration.
* gnu/services/web.scm: New service.
* gnu/services/web.scm: Define shepherd service and account roles.
* gnu/tests/web.scm: (%miniflux-create-admin-credentials,
miniflux-base-system, %test-miniflux-admin-string, %test-miniflux-admin-file,
%test-miniflux-socket): Add system tests for Miniflux service.

Change-Id: I4a336e677ec8b46aed632f0ded9cc11c2d38975f
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-09-26 21:39:40 +02:00
Arun Isaac 7b8ef76b0f services: mumi: Raise maximum duration of indexing job.
Indexing all Debbugs issues from scratch can take more than an hour.

* gnu/services/web.scm (mumi-shepherd-services): Raise #:max-duration to 2
hours.
2025-09-25 11:37:06 +01:00
Arun IsaacandMaxim Cournoyer 1a22809928 services: mumi: Add Debbugs rsync as shepherd timer.
* gnu/services/web.scm (<mumi-configuration>)[data-directory, rsync-remote,
rsync-flags]: New fields.
(%mumi-worker-log): Delete variable.
(%mumi-rsync-and-index-log): New variable.
(mumi-rsync-and-index): New function.
(mumi-shepherd-services): Remove mumi-worker service. Add mumi-rsync-and-index
service.
(mumi-service-type): Remove default value.
* doc/guix.texi (Web Services)[mumi]: Document data-directory, rsync-remote
and rsync-flags fields.

Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-09-25 01:33:10 +01:00
Arun Isaac 464d738655 services: nginx: Add stream configuration.
* gnu/services/web.scm (<nginx-stream-configuration>): New record type.
(<nginx-configuration>)[stream]: New field.
(emit-nginx-server-config): Add context argument.
(default-nginx-config): Serialize stream.
* doc/guix.texi (Web Services): Document it.
2025-09-24 12:21:30 +01:00
Ian Eure 96c30d2bf6 gnu: Remove Tailon services and documentation.
The tailon package was removed in 63023deaf9,
but the associated service and documentation weren’t, leading to `guix pull`
breaking.

Fixes guix/guix#2689.

* doc/guix.texi: Remove Tailon documentation.
* gnu/services/web.scm (tailon-service-type): Delete variable.
(tailon-configuration-file): Delete variable.
(tailon-configuration-file?): Delete variable.
(tailon-configuration-file-files): Delete variable.
(tailon-configuration-file-bind): Delete variable.
(tailon-configuration-file-relative-root): Delete variable.
(tailon-configuration-file-allow-transfers?): Delete variable.
(tailon-configuration-file-follow-names?): Delete variable.
(tailon-configuration-file-tail-lines): Delete variable.
(tailon-configuration-file-allowed-commands): Delete variable.
(tailon-configuration-file-debug?): Delete variable.
(tailon-configuration-file-http-auth): Delete variable.
(tailon-configuration-file-users): Delete variable
(tailon-configuration): Delete variable.
(tailon-configuration?): Delete variable.
(tailon-configuration-config-file): Delete variable.
(tailon-configuration-package): Delete variable.
* gnu/tests/web.scm (%test-tailon): Delete variable.

Change-Id: I3b507df8233b0440baa6a2bce4604b5813cb3bb0
2025-09-14 11:13:17 -07:00
Ludovic Courtès b377ec079d services: nginx: Ensure ‘stop’ is synchronous.
Fixes guix/maintenance#17.

Fixes a bug whereby ‘nginx -s stop’ might return before the main nginx process
has actually stopped, which in turn would lead ‘herd restart nginx’ to hang.

* gnu/services/web.scm (nginx-shepherd-service): Change ‘stop’ to use
‘make-kill-destructor’.

Reported-by: Maxim Cournoyer <maxim@guixotic.coop>
Change-Id: I69e8626aab07f806ddc8b1d09d9f0e052a85cf47
2025-09-03 12:34:13 +02:00
Arun Isaac 825d3baa87 services: nginx: Rotate log files.
* gnu/services/web.scm (nginx-access-log-file, nginx-error-log-file,
nginx-log-files): New functions.
(nginx-service-type): Extend log-rotation-service-type.
2025-08-24 09:30:02 +01:00
Ludovic Courtès 8c3e925ace services: anonip: Rotate log files.
* gnu/services/web.scm (anonip-log-files): New procedure.
(anonip-service-type): Use it to extend ‘log-rotation-service-type’.
* doc/guix.texi (Log Rotation): Document it.

Change-Id: I903bb79e0992b794bb0a40e504283cd57a8a087b
2025-04-08 17:12:29 +02:00
Ludovic Courtès 3f44387416 services: nginx: ‘stop’ method returns #f.
* gnu/services/web.scm (nginx-shepherd-service)[nginx-action]: Return #f
for ‘stop’.

Change-Id: I85290b5297f71a1dbfcd17b864d672d38c986d9b
2025-03-18 11:17:35 +01:00
Arun Isaac fd19785a9a gnu: mumi: Update to 0.11.0.
* gnu/packages/mail.scm (mumi): Update to 0.11.0.
* gnu/services/web.scm (<mumi-configuration>)[file-tags]: Remove field.
[packages]: New field.
(<mumi-package-configuration>): New record type.
(mumi-package-configuration->alist): New function.
* gnu/services/web.scm (mumi-config-file): Serialize packages configuration.
* doc/guix.texi (Web Services)[mumi]: Document packages configuration.
2025-03-17 03:02:31 +00:00
Arun Isaac 85b0321908 gnu: mumi: Update to 0.9.0.
* gnu/packages/mail.scm (mumi): Update to 0.9.0.
* gnu/services/web.scm (mumi-config-file): Write mailer-enabled? field.
(mumi-shepherd-services): Remove --disable-mailer argument.
2025-03-14 16:02:10 +00:00
Arun Isaac ded45b7b9f services: mumi: Add file-tags configuration.
* gnu/services/web.scm (<mumi-configuration>)[file-tags]: New field.
* gnu/services/web.scm (mumi-config-file): New function.
(mumi-shepherd-services): Pass --config argument.
* doc/guix.texi (Web Services)[mumi]: Document file-tags.
2025-03-08 22:57:36 +00:00
Ludovic Courtès bd7b9e6a60 services: Add missing Shepherd dependency on ‘user-processes’.
Fixes <https://issues.guix.gnu.org/76368>.

* gnu/services/auditd.scm (auditd-shepherd-service):
* gnu/services/base.scm (rngd-service-type):
(gpm-shepherd-service):
* gnu/services/ci.scm (laminar-shepherd-service):
* gnu/services/containers.scm (rootless-podman-cgroups-fs-owner-service):
(rootless-podman-cgroups-limits-service):
* gnu/services/cups.scm (cups-shepherd-service):
* gnu/services/databases.scm (postgresql-role-shepherd-service):
* gnu/services/desktop.scm (upower-shepherd-service):
(bluetooth-shepherd-service):
(elogind-shepherd-service):
(inputattach-shepherd-service):
(seatd-shepherd-service):
* gnu/services/dns.scm (knot-resolver-shepherd-services):
(dnsmasq-shepherd-service):
* gnu/services/docker.scm (containerd-shepherd-service):
(docker-shepherd-service):
* gnu/services/file-sharing.scm (transmission-daemon-shepherd-service):
* gnu/services/games.scm (joycond-shepherd-service):
(wesnothd-shepherd-service):
* gnu/services/guix.scm (guix-build-coordinator-shepherd-services):
(guix-data-service-shepherd-services):
(nar-herder-shepherd-services):
(bffe-shepherd-services):
* gnu/services/ldap.scm (directory-server-shepherd-service):
* gnu/services/linux.scm (cachefilesd-shepherd-service):
(rasdaemon-shepherd-service):
* gnu/services/mail.scm (dovecot-shepherd-service):
(imap4d-shepherd-service):
(radicale-shepherd-service):
(rspamd-configuration):
* gnu/services/monitoring.scm (prometheus-node-exporter-shepherd-service):
(vnstat-shepherd-service):
* gnu/services/networking.scm (opendht-shepherd-service):
(openvswitch-shepherd-service):
(pagekite-shepherd-service):
(ipfs-shepherd-service):
* gnu/services/nfs.scm (rpcbind-service-type):
(gss-service-type):
(idmap-service-type):
* gnu/services/pm.scm (thermald-shepherd-service):
* gnu/services/rsync.scm (rsync-shepherd-service):
* gnu/services/samba.scm (samba-samba-shepherd-service):
(samba-nmbd-shepherd-service):
(samba-smbd-shepherd-service):
(samba-winbindd-shepherd-service):
(wsdd-shepherd-service):
* gnu/services/security-token.scm (pcscd-shepherd-service):
* gnu/services/sound.scm (speakersafetyd-shepherd-service):
* gnu/services/spice.scm (spice-vdagent-shepherd-service):
* gnu/services/ssh.scm (lsh-shepherd-service):
(openssh-shepherd-service):
(dropbear-shepherd-service):
(autossh-shepherd-service):
* gnu/services/telephony.scm (jami-shepherd-services):
(mumble-server-shepherd-service):
* gnu/services/version-control.scm (git-daemon-shepherd-service):
* gnu/services/virtualization.scm (virtlogd-shepherd-service):
* gnu/services/vnc.scm (xvnc-shepherd-service):
* gnu/services/vpn.scm (openvpn-shepherd-service):
(strongswan-shepherd-service):
* gnu/services/web.scm (httpd-shepherd-services):
(fcgiwrap-shepherd-service):
(php-fpm-shepherd-service):
(hpcguix-web-shepherd-service):
(tailon-shepherd-service):
(varnish-shepherd-service):
(whoogle-shepherd-service):
(mumi-shepherd-services):
(gmnisrv-shepherd-service):
(agate-shepherd-service): Add ‘user-processes’ requirement.
* doc/guix.texi (Mail Services): Update accordingly.

Reported-by: Dariqq <dariqq@posteo.net>
Change-Id: I947bd2afc83b786cb17c555cfe73ab586b806618
2025-02-23 22:53:06 +01:00
Ludovic Courtès e36d6ab24b services: Use ‘spawn-command’ instead of ‘fork’ + ‘waitpid’.
Fixes <https://issues.guix.gnu.org/76315>.

This is more concise and more robust: these ‘waitpid’ calls would
compete with those made by shepherd’s event loop upon SIGCHLD, and they
could hang forever, as illustrated with ‘dhcp-client-service-type’
in <https://issues.guix.gnu.org/76315>.

* gnu/services/databases.scm (postgresql-role-shepherd-service): Use
‘spawn-command’ instead of ‘fork+exec-command’ followed by ‘waitpid’.
* gnu/services/networking.scm (dhcp-client-shepherd-service): Change
‘start’ to use ‘spawn-command’ instead of ‘fork+exec-command’ and
* gnu/services/web.scm (patchwork-django-admin-gexp): Use
‘spawn-command’ instead of ‘primitive-fork’ + ‘waitpid’.

Change-Id: I449290bfa46f8600e6ccdb5a6da990ad0cb7948c
Reported-by: Tomas Volf <~@wolfsden.cz>
2025-02-21 15:27:12 +01:00
Ludovic Courtès 6942161b44 services: Switch from mcron + Rottlog to Shepherd’s log rotation.
* gnu/services/admin.scm (unattended-upgrade-log-rotations): Remove.
(unattended-upgrade-service-type): Remove ‘rottlog-service-type’
extension.
* gnu/services/audio.scm (mpd-log-rotation): Remove.
(mpd-service-type): Remove ‘rottlog-service-type’ extension.
(mympd-log-rotation): Remove.
(mympd-service-type): Remove rottlog-service-type’ extension.
* gnu/services/base.scm (%guix-publish-log-rotations): Remove.
(guix-publish-service-type): Remove ‘rottlog-service-type’ extension.
(%base-services): Instantiate ‘log-rotation-service-type’ instead of
‘rottlog-service-type’.
(%default-syslog-files): New variable.
(syslog-service-type): Extend ‘log-rotation-service-type’.
* gnu/services/cuirass.scm (cuirass-log-rotations): Remove.
(cuirass-service-type): Remove ‘rottlog-service-type’ extension.
(cuirass-remote-worker-log-rotations): Remove.
(cuirass-remote-worker-service-type): Remove ‘rottlog-service-type’
extension.
* gnu/services/file-sharing.scm (%transmission-daemon-log-rotations):
Remove.
(transmission-daemon-service-type): Remove ‘rottlog-service-type’
extension.
* gnu/services/linux.scm (%earlyoom-log-rotation): Remove.
(earlyoom-service-type): Remove ‘rottlog-service-type’ extension.
* gnu/services/networking.scm (%ntp-log-rotation): Remove.
(ntp-service-type): Remove ‘rottlog-service-type’ extension.
(openntpd-service-type): Likewise.
(%connman-log-rotation): Remove.
(connman-service-type): Remove ‘rottlog-service-type’ extension.
(%hostapd-log-rotation): Remove.
(hostapd-service-type): Remove ‘rottlog-service-type’ extension.
(%pagekite-log-rotation): Remove.
(pagekite-service-type): Remove ‘rottlog-service-type’ extension.
(%yggdrasil-log-rotation): Remove.
(yggdrasil-service-type): Remove ‘rottlog-service-type’ extension.
(%ipfs-log-rotation): Remove.
(ipfs-service-type): Remove ‘rottlog-service-type’ extension.
(%keepalived-log-rotation): Remove.
(keepalived-service-type): Remove ‘rottlog-service-type’ extension.
* gnu/services/web.scm (%hpcguix-web-log-rotations): Remove.
(hpcguix-web-service-type): Remove ‘rottlog-service-type’ extension.
(%mumi-log-rotations): Remove.
(mumi-service-type): Remove ‘rottlog-service-type’ extension.
* doc/guix.texi (Log Rotation): Adjust text regarding which one is in
‘%base-services’.

Change-Id: I8802d4c2337a1e08e3c084d6217f76527d7ee1fb
2025-01-16 22:30:02 +01:00
Leo Nikkilä 5ee26f0bf4 services: nginx: Make log formats configurable.
* gnu/services/web.scm (<nginx-log-format-configuration>): New record.
(<nginx-configuration>)[log-format, log-formats]: New fields.
(assert-valid-log-format-escape): New procedure.
(emit-nginx-log-format-config): New procedure.
(default-nginx-config): Make log formats configurable.
* doc/guix.texi (Web Services): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: I8a16a1a9a20f64606dac0a1e14f1c5217d351f90
2025-01-11 23:36:58 +01:00
Tomas Volf ad09bf9638 services: nginx-upstream-configuration: Allow file-like objects
* gnu/services/web.scm (emit-nginx-upstream-config): Support file-like
objects.
* doc/guix.texi (Web Services)[nginx-upstream-configuration]: Document it.

Change-Id: I49996e358174dc77b31e3c91b908a6a72f3eb705
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-11-20 23:41:08 +01:00
Tomas Volf 123dcaefe9 services: nginx: Print extra-content before the server-blocks.
The configuration file is processed sequentially, which meant that there was
no way to set for example log format shared between the server-blocks, because
the final configuration file would have this order:

  ...
  http {
    ...
    server {
    }
    ...
    $extra-content
  }

Moving the extra-content before the serialization of server-blocks resolves
this.

* gnu/services/web.scm (default-nginx-config): Move extra-content before
server-blocks.

Change-Id: Ie8286a533dfed575abc58a0f4800706b3ad6adc2
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-11-20 23:39:11 +01:00
Maxim Cournoyer 2c322884b4 services: anonip: Add 'debug?' configuration field.
* gnu/services/web.scm (<anonip-configuration>) [debug?]: New field.
(anonip-shepherd-service): Honor it.
* doc/guix.texi (Log Rotation) <anonip-configuration>: Document it.

Change-Id: Iaf57b5992808374b069a55c34a9adfdfe52b046c
2024-11-01 23:15:20 +09:00
Maxim Cournoyer 49375f83fc services: web: Fix race between nginx activation and anonip.
* gnu/services/web.scm (anonip-shepherd-service): Recreate the input file when
it's not a FIFO.

Fixes: <https://issues.guix.gnu.org/59181>
Change-Id: I8ba87f9fc48ecfd515e34bdee9e2949a2a559f9c
2024-11-01 21:58:28 +09:00
Rodion Goritskov 61a7930cb0 services: agate: Change variable names and add system test.
* doc/guix.texi (Web Services): Update documentation for agate-service-type.
* gnu/services/web.scm (agate-configuration): Rename certs, addr, lang and
central-conf variables.
* gnu/tests/web.scm (%test-agate): Add system test for agate-service-type.

Change-Id: Ie14814fca1d5158acd67899da0c3fc2c5b586c72
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-08-31 19:06:39 +02:00
Rodion Goritskov 4bc49e2185 services: agate: Update options for compatibility with the current Agate version.
* gnu/services/web.scm (<agate-configuration>)[certs]: Add.
[cert]: Remove.
[key]: Remove.
[hostname]: Change from string to list.
[silent?]: Remove.
[only-tls13?]: Add.
[central-conf?]: Add.
[ed25519?]: Add.
[skip-port-check?]: Add.
(agate-shepherd-service): Change handling of addr and hostname, add new
options handling.
* doc/guix.texi (Web Services): Update.

Change-Id: Ifb4968d704627344913bb69f20636d710a4fe738
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-07-26 18:55:07 +02:00
Tomas Volf e8347bc177 services: web: Return success from nginx-action.
Previous value of #f lead to `head reload nginx' returning exit code 1,
complicating usage from scripts (and other actions).  Returning #t fixes that.
Any actual failures are still covered by the invoke call above.

* gnu/services/web.scm (nginx-shepherd-service)[nginx-action]<-s>: Return #t.

Change-Id: I4ce1645798a85baddeb0f5bd702a2567db3c7aaa
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-07-10 16:05:54 +02:00
Tomas Volf 01183a77aa services: web: Pass run-directory to nginx's actions.
Reloading nginx lead to (harmless, yet annoying) alert being logged:

    nginx: [alert] could not open error log file: open() "/gnu/store/9l2lznlqpjcm79znq1xas378maqgysc8-nginx-1.27.0/logs/error.log" failed (2: No such file or directory)

Since there already is prepared runtime directory for nginx, all that was
missing was to also pass it to the reload and reopen invocations.

* gnu/services/web.scm (nginx-shepherd-service)[reload, reopen]: Pass -p flag
with run-directory as value.

Change-Id: Id5c558d65def8c1fe5cf581a4a370508ac05e550
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-07-10 16:05:10 +02:00
Richard Sent da3e71f472 services: web: Improve nginx formatting for extra-content.
When extra-content is a list, add 4 space indentation and a newline to every
line. If it's a string, continue inserting it directly. This makes the list
serialization behavior more consistent with other services.

* gnu/services/web (default-nginx-config): Support lists.
* doc/guix.texi (Web Services)[nginx-configuration]: Document it.

Change-Id: Iec8614ba3cfc37292a566197e8d39b352b04846a
Signed-off-by: Christopher Baines <mail@cbaines.net>
2024-06-26 15:11:52 +01:00
Miguel Ángel Moreno 0a7bf792c8 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>
2024-02-20 10:57:16 +01:00
Ludovic Courtès 3d6583727e services: Remove unnecessary references to (gnu build shepherd).
* gnu/services/databases.scm (memcached-shepherd-service): Remove
‘with-imported-modules’ form and ‘modules’ field.
* gnu/services/security-token.scm (pcscd-shepherd-service): Remove
‘with-imported-modules’ form.
* gnu/services/web.scm (hpcguix-web-shepherd-service): Likewise.

Change-Id: Ieb817508f1751e0c1ff551a0e078789a4a813c1c
2023-12-22 00:31:41 +01:00
Ludovic Courtès 4017555367 services: hpcguix-web: Add ‘configuration’ action.
* gnu/services/web.scm (hpcguix-web-shepherd-service): Define
‘config-file’ and use it.  Add ‘actions’ field.

Change-Id: I085df403270039ede3c13f21a5d60682c7510e2e
2023-12-14 23:12:24 +01:00
Michal Atlas 4d934786c0 gnu: gmnisrv: Fix typo.
* gnu/services/web.scm (gmnisrv-service-type): Change the service name to gmnisrv

Change-Id: I1ca46c312db851486313c431fe0454786f0a673e
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-12-03 23:55:09 +01:00
b0715d7cd2 gnu: Use ‘libc-utf8-locales-for-target’.
* guix/packages.scm (%standard-patch-inputs): Use
‘libc-utf8-locales-for-target’ instead of ‘glibc-utf8-locales’.
* guix/self.scm (%packages): Likewise.
* gnu/home/services/ssh.scm (file-join): Likewise
* gnu/installer.scm (build-compiled-file): Likewise.
* gnu/packages/chromium.scm (ungoogled-chromium/wayland): Likewise.
* gnu/packages/gnome.scm (libgweather4, tracker): Likewise.
* gnu/packages/javascript.scm (js-mathjax): Likewise.
* gnu/packages/package-management.scm (guix, flatpak): Likewise.
* gnu/packages/raspberry-pi.scm (raspi-arm64-chainloader): Likewise.
* gnu/packages/suckless.scm (svkbd): Likewise.
* gnu/services.scm (cleanup-gexp): Likewise.
* gnu/services/base.scm (guix-publish-shepherd-service): Likewise.
* gnu/services/guix.scm (guix-build-coordinator-shepherd-services)
(guix-build-coordinator-agent-shepherd-services): Likewise.
* gnu/services/guix.scm (guix-build-coordinator-queue-builds-shepherd-services):
(guix-data-service-shepherd-services)
(nar-herder-shepherd-services)
(bffe-shepherd-services): Likewise.
* gnu/services/web.scm (anonip-shepherd-service)
(mumi-shepherd-services): Likewise.
* gnu/system/image.scm (system-disk-image, system-iso9660-image)
(system-docker-image, system-tarball-image): Likewise.
* gnu/system/install.scm (%installation-services): Likewise.
* guix/profiles.scm (info-dir-file): Likewise.
(ca-certificate-bundle, profile-derivation): Likewise.
* guix/scripts/pack.scm (store-database, set-utf8-locale): Likewise.
* tests/pack.scm: Likewise.
* tests/profiles.scm ("profile-derivation, cross-compilation"):
Likewise.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Co-authored-by: Christopher Baines <mail@cbaines.net>
Change-Id: I24239f427bcc930c29d2ba5d00dc615960a6c374
2023-12-02 12:25:45 +01:00
Bruno Victal cbc14b3bae services: nginx: Harden php-location settings.
* gnu/services/web.scm (nginx-php-location): Only pass existing PHP files
to the back end.  Mitigate httpoxy vulnerability.
2023-07-02 02:00:01 +02:00