This commit adds a new service type to generate configuration file for the mpv
media player.
Originally I attempted to use Guix Records (via define-configuration) for
this, but ran into the bug #74748, so I had to switch to procedures instead.
The usage is (hopefully) sufficiently described in the documentation. When
the bug is resolved, I will update it to use define-configuration instead.
The full list of supported options is documented, however I decided to *not*
document types and purpose for each individual fields. While I had mostly
working prototype to extract the documentation from mpv, once I realized it
would be few 10k of lines added, I decided it is not worth it. It would bloat
the .texi file (by more than 50%), be hard to maintain and, in my opinion,
would not provide enough value to justify that. The current version seems
like sane middle ground.
* gnu/home/services/mpv.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Register it.
* doc/guix.texi (mpv Media Player): Document it.
Change-Id: I2deb44799a28047cb5d67da97dc6007a9df873af
Since this seems to be the case when the devel manual is being built on
bayfront.
* doc/build.scm: Use the current working directory as a fallback
if (current-source-directory) is #f, and log the value of root.
Change-Id: Ic43fd05a4a0822d9efb935069850f0a8cadd80aa
* gnu/services/messaging.scm (<mosquitto-configuration>): New record type.
(mosquitto-accounts): New procedure.
(mosquitto-shepherd-service): New procedure.
(mosquitto-service-type): New variable.
* doc/guix.texi (Messaging Services): Document it.
Change-Id: I3500c5b6b69084c1f4a6da66ea45bfd42c871f3f
Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
This reverts 4df6eda30f ("gnu: Rename
`texlive-updmap.cfg' into `texlive-local-tree'.") just for doc/build.scm.
As the build farm uses 'guix' as provided by the guix-daemon; an updated to the
guix package and reconfiguration of Berlin would be required to fix building
the latest development manual. Use the deprecated texlive-updmap.cfg binding
for now.
* doc/build.scm (pdf-manual): Revert to use texlive-updmap.cfg for now.
Change-Id: I133deaa7a345e711a99ea469ec6fecfde9c729de
This is an incompatible change where the root file system in
‘guix shell -C’ is now read-only by default.
* guix/scripts/environment.scm (show-environment-options-help)
(%options): Add ‘--writable-root’.
* guix/scripts/environment.scm (setup-fhs): Invoke /sbin/ldconfig; moved
from…
(launch-environment): … here.
(launch-environment/container): Add #:writable-root? and pass it to
‘call-with-container’. Move root file system setup to #:populate-file-system.
(guix-environment*): Honor ‘--writable-root’.
* tests/guix-environment-container.sh: Test it.
* doc/guix.texi (Invoking guix shell): Document ‘--writable-root’.
(Debugging Build Failures): Mention it before “rm /bin/sh”.
Change-Id: I2e8517d6f01eb8093160bffc0f9f56071ad6fee6
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* guix/scripts/home.scm (process-action): Handle operating-system declaration
and extract home environment for current user.
* doc/guix.texi (Guix Services)[Guix Home Service]: Document it.
Change-Id: I995f79c2549e6edc76322542d0422159e0b79996
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail>
This commit adds a password-file to the postgresql-role field. It
allows users to provision Postgres roles with a set password.
* gnu/services/databases.scm (postgresql-role): Add password-file field.
(postgresql-role-configuration): Add requirement field.
(postgresql-create-roles): Add support for setting passwords from a
file without leaking passwords to the command line.
(postgresql-role-shepherd-service): Add support for customizable
requirements.
(postgresql-role-service-type): Pass on postgresql-role-configuration
fields values by default, this way user configured fields are not lost.
* gnu/tests/databases.scm: Test it.
* doc/guix.texi: Document the new field and fix the extension point example.
Change-Id: I3aabaa10b0c5e826c5aa874e5649e25a3508a585
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* gnu/services/virtualization.scm (libvirt-configuration): Fix typos and
punctuation, and decorate with more Texinfo adornments. Remove extraneous
text. Convert enumerations to sentences re-generating the Texinfo
documentation with configuration->documentation doesn't require fixing these
by hand after (the text is re-flowed, breaking enumerations). Mention the use
of 'log-filters' is preferable to 'log-level', as commented in the defaut
libvirt.conf template.
* doc/guix.texi (Virtualization Services): Re-generate.
Change-Id: Icc2abe21a787b4bb6ac3b35a95f6aaaf3bbda9aa
This re-introduces commit dd64f441d3, which had
been reverted due to previously causing a system hang when debug? was enabled,
a problem that appears to have been resolved within Shepherd.
* gnu/services/base.scm (<udev-configuration>): <debug?>: New field.
* gnu/services/base.scm (udev-shepherd-service): Use it to add '--debug' to
the command line, if applicable.
* doc/guix.texi (Base Services): Document it.
Change-Id: I88243fb4f321ff0876dd227e3c2b22082d37cfcf
It is often useful to be able to use the `postgres' user for management tasks,
so this commit allows setting that. The default behavior is not changed.
I have also added missing exports and sorted them by alphabet.
* gnu/services/databases.scm (%default-home-directory): New variable.
(<postgresql-configuration>): Add home-directory, allow-login? fields.
(create-postgresql-account): Use them.
* doc/guix.texi (Database Services): Document it.
Change-Id: I2212e5082ff4e87c49a5a8a4711bf929dd08626a
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Modified-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/base.scm (run-with-writable-store)
(guix-ownership-change-program): New procedures.
(<guix-configuration>)[privileged?]: New field.
(guix-shepherd-service): Rename to…
(guix-shepherd-services): … this. Add the ‘guix-ownership’ service.
Change ‘guix-daemon’ service to depend on it; when unprivileged,
prefix ‘daemon-command’ by ‘run-with-writable-store’ and
omit ‘--build-users-group’; adjust socket activation endpoints.
(guix-accounts): When unprivileged, create the “guix-daemon” user and
group in addition to the others.
(guix-service-type)[extensions]: Adjust to name change.
* gnu/tests/base.scm (run-guix-daemon-test): Add ‘name’ parameter.
(%test-guix-daemon): Adjust accordingly.
(%test-guix-daemon-unprivileged): New test.
* doc/guix.texi (Base Services): Document ‘privileged?’.
(Migrating to the Unprivileged Daemon): Explain that this is automatic
on Guix System.
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I28a9a22e617416c551dccb24e43a253b544ba163
* doc/guix.texi (Build Environment Setup): Add “Migrating to the
Unprivileged Daemon” section.
(Upgrading Guix): Link to it.
Change-Id: I2bac3f4419d85b7c718c6c4a3908387b4f6ee582
Otherwise the service could fail starting if the networking interface takes
some time to be created during the boot (one such example are WireGuard
interfaces).
* gnu/services/messaging.scm (ngircd-configuration)
[shepherd-requirement]: Add networking.
* doc/guix.texi (Messaging Services): Update.
Change-Id: I387ae5780a35cad5b74d9883ac53f13de1a08c78
This reverts commit b17268b53e, which was
meant for the ‘emacs-team’ branch as part of a patch series.
Change-Id: I9d9b01924698aaf5bb6ac2c8472311976eeaacc6
* doc/contributing.texi (Emacs Packages): Removeoutdated commentary on
testing. We now run the tests by default like is done in other build systems.
Change-Id: I245a0a412615a1177fbd1b6e723fda3749f7e49f
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/services/sound.scm (speakersafetyd-configuration) [log-file]: New field.
(speakersafetyd): Use it via #:log-file.
Change-Id: I870bc7bfd69249da3a9c981f627e751395386bd2
* gnu/services/sound.scm (speakersafetyd): Run as unprivileged user.
(speakersafetyd-accounts): New procedure.
(speakersafetyd-activation): Likewise.
(speakersafetyd-shepherd-service): Specify the #:group, #:user and
#:supplementary-groups arguments.
(speakersafetyd-service-type): Extend activation-service-type.
Change-Id: I870bc7bfd69249da3a9c981f627e751395386bd2
The use of make-systemd-constructor appears to cause problems when connecting
via TLS (see: https://github.com/ngircd/ngircd/issues/330).
* gnu/services/messaging.scm (ngircd-global): [pid-file]: Set default value
and remove maybeness. Adjust doc.
* gnu/services/messaging.scm (ngircd-configuration): Adjust comment.
(ngircd-wrapper): Expose writable PID file and preserve pid namespace.
(ngircd-shepherd-service): Replace make-systemd-constructor with
make-forkexec-constructor and adjust surrounding accordingly.
(ngircd-activation): New procedure.
(ngircd-service-type): Extend activation-service-type with it.
Change-Id: Ic7c135ab45122e180107cde8bb9976426e3afbc4
This was the original intention, as PAM authentication cannot be easily
satisfied when the service runs as non-root, which is the case.
* gnu/services/messaging.scm (ngircd-configuration) <options>: Remove maybe
and set default value.
* doc/guix.texi (Messaging Services): Update.
Change-Id: I8435cf5be7206f9165d69cbbac11c205bf928c8f
* gnu/services/mail.scm (opensmtpd-configuration): Add log-file field.
(opensmtpd-shepherd-service)[start]: Add a command line flag to not
daemonize. Drop #:pid-file. Add #:log-file.
* doc/guix.texi (Mail Services): Document the additional parameter.
Change-Id: I485e040d680ccb39fa62e49d2e6ea916f047972c
Signed-off-by: Andreas Enge <andreas@enge.fr>
* 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
* gnu/services/messaging.scm (ngircd-configuration): Adjust comment.
(ngircd-wrapper): Nest bindings within the (maybe-value-set? ssl) check, to
avoid errors when not providing an explicit value to the ssl field.
(ngircd-service-type) [default-value]: New field.
Change-Id: I1d2d7973cc9314e9bbc5870bf7b5f872d074b49b
* gnu/services/version-control.scm (<gitolite-configuration>): Add admin-name
field.
(gitolite-activation): Use it.
* doc/guix.texi (Version Control Services): Document it. Remove the wrong
default value of admin-pubkey. State the need for .pub extension.
Change-Id: Idadf4b2697cee6d1da10e6ba03bdc2e1d729c417
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
In preparation for further customizability of the git configuration, extract
the current setup into a separate record type.
* gnu/services/version-control.scm (<gitolite-git-configuration>): New record
type.
(gitolite-git-configuration-compiler): And gexp compiler for it.
(<gitolite-configuration>): Add git-config field.
(gitolite-activation): Use it.
* doc/guix.texi (Version Control Services): Document both.
Change-Id: I7658698a93f938f62f41a4fa45b72de1eeb14414
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
`file-database-service-type' appends 'bin/updatedb' path to the `package'
field provided by `file-database-configuration'. This prevents users from
using alternate packages which also provide 'updatedb' but in a different
location.
For example, the `plocate' package installs 'updatedb' in 'sbin/updatedb'.
Fallback to 'sbin/' if 'updatedb' is not found in 'bin/'.
* gnu/services/admin.scm (<file-database-configuration>)[package]:
Update docstring.
(file-database-shepherd-services): Locate 'updatedb' binary.
* doc/guix.texi (File Search Services): Update accordingly.
Change-Id: Ic741716044be3a8f51a157510f9f923bd66c41d7
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Modified-by: Ludovic Courtès <ludo@gnu.org>