<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/gnu/services/web.scm, branch master</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>gnu: services: Export nginx-server-configuration-try-files.</title>
<updated>2026-08-03T01:27:04+00:00</updated>
<author>
<name>Arun Isaac</name>
<email>arunisaac@systemreboot.net</email>
</author>
<published>2026-07-31T01:25:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=027110a650f2ceb3b569bc9b5addbf0a9fcc9cde'/>
<id>027110a650f2ceb3b569bc9b5addbf0a9fcc9cde</id>
<content type='text'>
* gnu/services/web.scm: Export nginx-server-configuration-try-files.

Change-Id: Ia6132547b32c887fb6353c2eeb3104bd82d07acf
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/services/web.scm: Export nginx-server-configuration-try-files.

Change-Id: Ia6132547b32c887fb6353c2eeb3104bd82d07acf
</pre>
</div>
</content>
</entry>
<entry>
<title>services: Eliminate tab-based indentations.</title>
<updated>2026-07-27T02:53:41+00:00</updated>
<author>
<name>Nguyễn Gia Phong</name>
<email>cnx@loang.net</email>
</author>
<published>2026-07-27T02:46:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=a6149814533863a14f239c6d227b9c02ea7dd209'/>
<id>a6149814533863a14f239c6d227b9c02ea7dd209</id>
<content type='text'>
* 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>services: nginx: Use a fixed location for the nginx configuration file.</title>
<updated>2026-06-03T04:52:35+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2026-05-25T03:19:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=2aa2bbc5fe4594daa3c782a4bfe258db77fdc01f'/>
<id>2aa2bbc5fe4594daa3c782a4bfe258db77fdc01f</id>
<content type='text'>
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.
&lt;actions&gt;: 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
&lt;actions&gt;: 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
</pre>
</div>
</content>
</entry>
<entry>
<title>services: mumi: Make rsync and index timer event configurable.</title>
<updated>2026-05-29T08:48:26+00:00</updated>
<author>
<name>Arun Isaac</name>
<email>arunisaac@systemreboot.net</email>
</author>
<published>2026-05-20T19:29:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=b8354c29794d36ddc87f467f79ee4583f9f36107'/>
<id>b8354c29794d36ddc87f467f79ee4583f9f36107</id>
<content type='text'>
* gnu/services/web.scm (&lt;mumi-configuration&gt;)[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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/services/web.scm (&lt;mumi-configuration&gt;)[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
</pre>
</div>
</content>
</entry>
<entry>
<title>services: gunicorn: Allow configuration of control-socket.</title>
<updated>2026-05-26T16:43:22+00:00</updated>
<author>
<name>Sören Tempel</name>
<email>soeren+git@soeren-tempel.net</email>
</author>
<published>2026-05-19T14:20:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=056de157b2101d18222ee6dd5eff09f0798f7156'/>
<id>056de157b2101d18222ee6dd5eff09f0798f7156</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>services: gunicorn: Fix usage with non-uri listening addresses.</title>
<updated>2026-05-26T16:43:16+00:00</updated>
<author>
<name>Sören Tempel</name>
<email>soeren+git@soeren-tempel.net</email>
</author>
<published>2026-05-19T14:16:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=5b4c715e2aae4cb1ec14b32c9da66138bee2b1ab'/>
<id>5b4c715e2aae4cb1ec14b32c9da66138bee2b1ab</id>
<content type='text'>
If the provided unix-socket? parameter is not an URI uri-&gt;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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the provided unix-socket? parameter is not an URI uri-&gt;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
</pre>
</div>
</content>
</entry>
<entry>
<title>services: nginx: Add nginx to the system profile.</title>
<updated>2026-05-25T04:58:07+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2026-05-25T01:47:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=39d04c9f8624a35b7f888c848b89ca7d312ba60c'/>
<id>39d04c9f8624a35b7f888c848b89ca7d312ba60c</id>
<content type='text'>
* gnu/services/web.scm (nginx-service-type): Extend the profile-service-type
with the nginx package.

Change-Id: I72b592c603a971bf9fbb64fe5ce02420010ac363
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/services/web.scm (nginx-service-type): Extend the profile-service-type
with the nginx package.

Change-Id: I72b592c603a971bf9fbb64fe5ce02420010ac363
</pre>
</div>
</content>
</entry>
<entry>
<title>services: nginx: Adjust indentation.</title>
<updated>2026-05-25T04:58:07+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2026-05-25T01:50:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=cb1c7ce47bc3e183944ec9bd8803eab2fa5654d6'/>
<id>cb1c7ce47bc3e183944ec9bd8803eab2fa5654d6</id>
<content type='text'>
* gnu/services/web.scm (nginx-service-type): Adjust indentation.

Change-Id: I86696b13f7b6209bb3da7970ad4252e8de17305b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/services/web.scm (nginx-service-type): Adjust indentation.

Change-Id: I86696b13f7b6209bb3da7970ad4252e8de17305b
</pre>
</div>
</content>
</entry>
<entry>
<title>services: gunicorn: Allow configuration of socket user/group/mode</title>
<updated>2026-05-17T15:59:35+00:00</updated>
<author>
<name>Sören Tempel</name>
<email>soeren+git@soeren-tempel.net</email>
</author>
<published>2026-05-16T11:57:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=258cabed3285ec66893cc83ae704a40d57fec9ac'/>
<id>258cabed3285ec66893cc83ae704a40d57fec9ac</id>
<content type='text'>
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 (&lt;gunicorn-app&gt;): 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 (&lt;gunicorn-app&gt;): 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
</pre>
</div>
</content>
</entry>
<entry>
<title>services: go-webdav: Don't run service as root.</title>
<updated>2026-05-01T05:46:47+00:00</updated>
<author>
<name>Sören Tempel</name>
<email>soeren+git@soeren-tempel.net</email>
</author>
<published>2026-04-23T18:59:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=9c844b6008db4c790e1f4c904501fc94853799d9'/>
<id>9c844b6008db4c790e1f4c904501fc94853799d9</id>
<content type='text'>
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 &lt;liliana.prikler@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;liliana.prikler@gmail.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
