Commit graph

549 commits

Author SHA1 Message Date
Maxim Cournoyer
10482f731e
Reapply "Update Maxim's email address."
This reverts commit a7db92d9b3, this time with
the more careful command, to avoid a world rebuild:

grep -rl --exclude-dir=build --exclude-dir=patches --exclude=ld-wrapper.in \
  --exclude=sitecustomize.py --exclude=guix-emacs.el maxim.cournoyer@gmail.com |
  xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'

Change-Id: I0871f5cf9ace79e34e78e24154d0da6ea95a3a91
2025-09-18 13:44:12 +09:00
Maxim Cournoyer
a7db92d9b3
Revert "Update Maxim's email address."
This reverts commit d0d87a744d. Oops! This
caused a world rebuild.

Change-Id: I25fff644b2b61d0ee93d69b457b04c72b5b74d15
2025-09-18 12:07:31 +09:00
Maxim Cournoyer
d0d87a744d
Update Maxim's email address.
The change was automated via:

  git grep -l maxim.cournoyer@gmail.com |
    xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'

* .mailmap: New entry.

Change-Id: Iaa88b1e51c94159c49138fb43910badb990eb169
2025-09-18 08:05:19 +09: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
Yelninei
fecaf550cf
services: hurd-vm: Support different hurd types.
* gnu/services/virtualization.scm (sanitize-hurd-vm-configuration-type): New procedure.
(hurd-vm-confiuration): Add type field.
(hurd-vm-disk-image): Use it.
* doc/guix.texi (hurd-vm-configuration): Document it.

* gnu/tests/virtualization.scm (%childhurd64-os): New variable.
(run-childhurd-test): Add the os a parameter.
(%test-childhurd): Adjust accordingly.
(%test-childhurd64): New system test.

Change-Id: Ie1c55a9414657ced4bf8b4324527037f1a1f78f4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-08-30 23:52:09 +02:00
Giacomo Leidi
1f8ee9e023
Revert "tests: Use lower-oci-image-state in container tests."
This reverts commit cc07ecd7cc, which breaks
'guix pull', for to-be-investigated reasons.

Fixes: #2252
Change-Id: Idd02dd2e0cd93034e636030845996a9ab3748839
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2025-08-25 17:34:29 +09:00
Giacomo Leidi
cc07ecd7cc
tests: Use lower-oci-image-state in container tests.
This patch replaces boilerplate in container related tests with
oci-image plumbing from (gnu services containers).

* gnu/tests/containers.scm (%oci-tarball): New variable;
(run-rootless-podman-test): use %oci-tarball;
(build-tarball&run-rootless-podman-test): drop procedure.
* gnu/tests/docker.scm (%docker-tarball): New variable;
(build-tarball&run-docker-test): use %docker-tarball;
(%docker-system-tarball): New variable;
(build-tarball&run-docker-system-test): new procedure.

Change-Id: Iad6f0704aee188d89464c83722dea0bb7adb084a
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2025-08-25 13:04:36 +09:00
Giacomo Leidi
60f4d72590
services: Add oci-service-type.
This patch implements a generalization of the
oci-container-service-type, which consequently is made deprecated.  The
oci-service-type, in addition to all the features from the
oci-container-service-type, can now provision OCI networks and volumes.
It only handles OCI objects creation, the user is supposed to handle
state once the objects are provsioned.

It currently supports two different OCI runtimes: Docker and rootless
Podman.  Both runtimes are tested to make sure provisioned containers
can connect to each other through provisioned networks and can
read/write data with provisioned volumes.

At last the Scheme API is thought to facilitate the implementation of a
Guix Home service in the future.

* gnu/build/oci-containers.scm: New file containg OCI runtime business
logic used in OCI backed Shepherd services.
oci-read-lines
(oci-system*,oci-object-exists?,oci-object-service-available?
oci-image-load,oci-log-verbose,oci-container-execlp,oci-object-create):
New procedures.
* gnu/local.mk: Add it.
* gnu/services/containers.scm (list-of-oci-containers?,
list-of-oci-networks?,list-of-oci-volumes?,%oci-supported-runtimes,
oci-runtime?,oci-runtime-system-environment,oci-runtime-system-extra-arguments,
oci-runtime-system-requirement,oci-runtime-cli,oci-runtime-system-cli,
oci-runtime-home-cli,oci-runtime-name,oci-runtime-group,
oci-container-shepherd-name,oci-networks-shepherd-name,
oci-networks-home-shepherd-name,oci-volumes-shepherd-name,
oci-volumes-home-shepherd-name,oci-container-configuration->options,
oci-network-configuration->options,oci-volume-configuration->options,
oci-container-shepherd-service,oci-objects-merge-lst,oci-extension-merge,
oci-service-accounts,oci-service-profile,oci-service-subids,
oci-configuration->shepherd-services,oci-configuration-extend): New
procedures.
(image-reference): Implement unambiguous naming convention, that paired
with the new implementation for listing caches images with docker ls or
podman ls, allows for more efficient image caching.
(oci-container-configuration)[user,group]: Change default-type to
maybe-string, since by default containers will run under the user and
group declared in oci-configuration records. When unset the
oci-service-type will derive their value from the OCI runtime state.
[runtime,host-environment,environment,shepherd-actions,ports,extra-arguments]:
define a predicate and use it as a type in the configuration.  This
way errors are reported with source location information.
(lower-manifest): Defer to caller the logic of setting up an image tag.
(lower-oci-image): Rename to load-oci-image-state.
(oci-runtime-state): Intermediate representation of the OCI runtime
details. It is supposed to be an internal API.
(oci-state): Intermediate representation of the OCI provisioning state,
such as containers and networks. It is supposed to be an internal API.
(oci-container-invocation): Intermediate representation of the OCI
runtime run command to start a container. It is supposed to be an
internal API.
(%oci-image-loader): Rename to oci-image-loader and use
oci-runtime-state and (gnu build oci-containers).
(oci-container-shepherd-service): Use oci-state and oci-runtime-state,
add command-line action.
(oci-network-configuration,oci-volume-configuration,oci-configuration,
oci-extension): New record types.
(oci-service-type): New service-type.
* doc/guix.texi: Document it.
* gnu/tests/containers.scm: Test it.
* gnu/services/docker.scm: Deprecate the oci-container-service-type.

Change-Id: I656b3db85832e42d53072fcbfb91d1226f39ef38
Modified-by: Maxim Cournoyer <maxim@guixotic.coop>
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2025-08-25 13:04:36 +09:00
Giacomo Leidi
d6200cefcc
tests: oci-container: Set explicit timeouts.
* gnu/tests/docker.scm: Simplify %test-oci-container test case and add
explicit timeouts to tests outcomes.

Change-Id: I75868479dcce031f3edc98064b1ebcf975f598f5
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2025-08-25 13:04:36 +09:00
Evgeny Pisemsky
45658a6730
services: mosquitto: Add test suite.
* gnu/tests/messaging.scm (%test-mosquitto): New variable.

Change-Id: Ia84291576b9417ce678df3e0ed18caa6ce27b759
Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2025-08-03 11:15:45 +02:00
Gabriel Wicki
39405f7981
gnu: tests: Replace deprecated dhcp client service.
* gnu/tests/audio.scm, gnu/tests/avahi.scm, gnu/tests/ci.scm,
gnu/tests/containers.scm, gnu/tests/cups.scm, gnu/tests/databases.scm,
gnu/tests/dict.scm, gnu/tests/dns.scm, gnu/tests/docker.scm,
gnu/tests/file-sharing.scm, gnu/tests/guix.scm, gnu/tests/install.scm,
gnu/tests/ldap.scm, gnu/tests/lightdm.scm, gnu/tests/mail.scm,
gnu/tests/messaging.scm, gnu/tests/monitoring.scm, gnu/tests/networking.scm,
gnu/tests/nfs.scm, gnu/tests/package-management.scm, gnu/tests/rsync.scm,
gnu/tests/samba.scm, gnu/tests/ssh.scm, gnu/tests/telephony.scm,
gnu/tests/upnp.scm, gnu/tests/version-control.scm,
gnu/tests/virtualization.scm, gnu/tests/vnstat.scm,
gnu/tests/web.scm: (services): Replace dhcp-client-service-type with its
replacement dhcpcd-service-type.

Change-Id: I01d7f9a8c01736d8c8da591aaf4749bbfa4dcdad
2025-07-24 18:46:34 +02:00
wrobell
c65da197cf
services: Add rabbitmq service.
* gnu/services/high-availability.scm (<rabbitmq-configuration>): New record.
  (rabbitmq-shepherd-service): New procedure.
  (rabbitmq-service-type): New variable.
* gnu/tests/high-availability.scm (run-rabbitmq-test): New procedure.
  (%rabbitmq-os, %tests-rabbitmq): New variables.
* doc/gnu.texi (High Availability Services): Document it.

Change-Id: I53e9f2881b6340e1ed314785e4c5529b81381a3b
Co-authored-by: Christopher Baines <mail@cbaines.net>
Reviewed-by: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2025-07-19 01:47:50 +01:00
Ludovic Courtès
14c8728f0d
mapped-devices: luks: Adjust to support extra arguments.
Fixes <https://issues.guix.gnu.org/70826>.

When using ‘luks-device-mapping-with-options’, procedures such as
‘operating-system-boot-mapped-devices’ would fail to identify LUKS
mapped devices because they would check whether the mapped device type
is ‘eq?’ to ‘luks-device-mapping’.

This addresses that by ensuring mapped devices are always of the
‘luks-device-mapping’ type, even when different options are used.

* gnu/system/mapped-devices.scm (close-luks-device): Add #:rest.
(luks-device-mapping-with-options): Deprecate.
* gnu/tests/install.scm (%encrypted-home-os-key-file): Update
accordingly.
* doc/guix.texi (Mapped Devices): Document use of the ‘arguments’ field
of ‘luks-device-mapping’.  Remove ‘luks-device-mapping-with-options’
documentation.
(Bootloader Configuration): Update example with key file in extra
initrd.

Change-Id: I5442908cb8ef4e3891dbb053cccf5e42b895486f
Reported-by: Tadhg McDonald-Jensen <tadhgmister@gmail.com>
2025-07-18 00:57:31 +02:00
Ludovic Courtès
951e39718a
tests: foreign: Add ‘archlinux-install’ test.
* gnu/tests/foreign.scm (archlinux-qcow2, %test-archlinux-install): New
variables.

Co-authored-by: Ivan Popovych <ivan@ipvych.com>
Change-Id: I2fce962a2eafa58fafaf2bdff25fc23df28fd687
2025-07-18 00:43:51 +02:00
Ludovic Courtès
bf79804508
tests: foreign: Parameterize root partition device.
* gnu/tests/foreign.scm (run-foreign-install-test): Add #:device
parameter and honor it.

Change-Id: I68bddaa25e9ba4131fc10366efed6772a3586a31
2025-07-18 00:43:50 +02:00
Ludovic Courtès
9596822a6c
tests: foreign: Forcefully delete /bin/{wget,gpg}.
* gnu/tests/foreign.scm (run-foreign-install-test)[build]: Attempt to
delete /bin/{wget,gpg} before recreating them.

Change-Id: I5260cae7f706ce9a492a86b1859591c8446e04a3
2025-07-18 00:43:50 +02:00
Ludovic Courtès
08c23d2c13
tests: foreign: Preserve distro image size.
* gnu/tests/foreign.scm (qcow-image-with-marionette): Remove the “10G”
argument to ‘qemu-img create’ since it could lead to corrupt
images—e.g., with the Arch Linux image.

Change-Id: I92d7551a16f325376c98d32e2cd6a01f8ed05e51
2025-07-18 00:43:50 +02:00
Ludovic Courtès
224361d3a3
tests: foreign: Catch failure to mount distro image.
* gnu/tests/foreign.scm (qcow-image-with-marionette)[build]: Call
‘error’ when ‘mount’ exits with a non-zero code.

Change-Id: I7c608e0aa7dff1447c9df778951d7a5256e47255
2025-07-18 00:43:50 +02:00
Mathieu Othacehe
7c820cd888
tests: Fix the gui installation tests.
This is a follow-up of: 4c017ccfe5. The
run-basic-test procedure is used for the gui installation tests, but the
etc-profile-d-service-type and etc-bashrc-d-service-type services that are now
needed are only defined in the test-basic-os procedure.

Build upon the introduction of the extra-tests argument to define the
etc-profile-d-service-type and etc-bashrc-d-service-type specific tests
directly in the test-basic-os procedure.

* gnu/tests/base.scm (run-basic-test): Move the etc-profile-d-service-type and
etc-bashrc-d-service-type dedicated tests to ...
(test-basic-os): ... that procedure, where the matching services are defined.

Change-Id: I050f5ab87e19889bc90cc1a375a3cc28ea9a43ab
2025-07-01 11:50:16 +02:00
Mathieu Othacehe
11b5443e48
tests: Support basic tests extension with an extra-tests argument.
* gnu/tests/base.scm (run-basic-test)[extra-tests]: New argument.

Change-Id: Ia3595638309738d3361c583c93a66e0a872adabe
2025-07-01 11:50:16 +02:00
Mathieu Othacehe
f3a8db842d
tests: Really test the etc-bashrc-d-service-type service.
Follow-up of: 4c017ccfe5.

The --init-file script will only be run in the context of an interactive
shell, which is not the case here. Use the `-i` argument instead to force an
interactive shell. That way, the test_bashrc_d.sh is now really executed.

* gnu/tests/base.scm (run-basic-test): Fix the etc-bashrc-d-service-type test.

Change-Id: I3d749f65f51ff103c76f4e3d60746ae963660329
2025-07-01 11:50:15 +02:00
Efraim Flashner
214aa26e5c
gnu: installer: Remove enlightenment desktop option.
* gnu/installer/services.scm (%system-services): Remove
enlightenment-desktop-service-type.
* gnu/tests/install.scm (installation-target-desktop-os-for-gui-tests):
Remove enlightenment-desktop-service-type.
* etc/manifests/cross-compile.scm (%system-packages): Remove
enlightenment.
* etc/manifests/release.scm (%system-packages): Remove enlightenment.

Change-Id: I79cd8fc13ea0fda5eef72aee783b26edc77dcb5e
2025-06-30 11:41:56 +03:00
Maxim Cournoyer
cfa2de2a77
services: Modernize and test nftables service.
* doc/guix.texi (Networking Services) <nftables>: Update doc.
* gnu/services/networking.scm (list-of-debug-levels?):
(debug-level?, maybe-list-of-debug-levels?):
(nftables-configuration): Rewrite using `define-configuration'.
[debug-levels]: New field.
(nftables-shepherd-service): Honor it.
* gnu/tests/networking.scm (%inetd-echo-port): Extract to top level.
(run-iptables-test): Adjust accordingly.
(make-nftables-os): New procedure.
(%default-nftables-ruleset-for-tests): New variable.
(%nftables-os): Likewise.
(%test-nftables): New test.

Change-Id: I2889603342ff6d2be6261c3de6e4fddd9a9bbe2d
2025-05-26 13:43:28 +09:00
Maxim Cournoyer
c743d646ee
system: Factorize bashrc default configuration.
This factorizes out the remaining bashrc bits from /etc/skel/.bashrc to a the
template used for both /etc/bashrc on Guix System and ~/.bashrc for
home-bash-service-type.

Rationale: The use of /etc/skel introduce state: the file is only copied
originally when the user account is created, and never (automatically)
refreshed again.

* gnu/system.scm (operating-system-etc-service):
<profile>: Guard against souring /etc/bashrc in non-interactive, SSH case.
<bashrc>: Use %default-bashrc, having migrated the remaining definitions to...
* gnu/system/shadow.scm (%default-bashrc): ... here.  Factorize aliases to...
* gnu/services.scm (%default-bash-aliases): ... here.
(%default-bashrc-d-aliases): New variable.
(%default-etc-bashrc-d-files): Include it in the default configuration.
* gnu/services/base.scm (%base-services): Register etc-bashrc-d-service-type.
* gnu/home/services/shells.scm (add-bash-configuration): Do not set PS1, now
part of %default-bashrc.
(home-bash-configuration) [guix-defaults?]: Update doc.
[aliases]: Set %default-bash-aliases as the default value.  Update doc.
* doc/guix.texi (Shells Home Services): Update documentation.
(Service Reference): Update example.

Change-Id: I340c614983a78fd20a9c4a9705e7fc542ae9b513
2025-05-26 13:43:03 +09:00
Maxim Cournoyer
4c017ccfe5
services: Add etc-bashrc-d-service-type.
* gnu/services.scm (files->bashrc-d-directory) New procedure.
(etc-bashrc-d-service-type): New service type.
* doc/guix.texi (Service Reference): Document it.
* gnu/tests/base.scm (test-basic-os): Test it.

Change-Id: Ibbb0f684de7aee296adedbce5b1192786d661af2
2025-05-26 13:43:03 +09:00
Maxim Cournoyer
279adf431b
services: Add etc-profile-d-service-type.
* gnu/services.scm (make-files->etc-directory)
(files->profile-d-entries): New procedures.
(etc-profile-d-service-type): New service type.
* doc/guix.texi (Service Reference): Document it.
* gnu/tests/base.scm (run-basic-test): Test it.

Change-Id: I45dde43a1b9603c3384b933ebd1d6e45dba146b9
2025-05-26 13:43:03 +09:00
Sughosha
b1d2483ebe
home: services: Add readymedia.
* gnu/home/services/upnp.scm: New file.
* gnu/local.mk: Register it.
* gnu/services/upnp.scm: Export readymedia-activation and
readymedia-shepherd-service.
(<readymedia-configuration>)[home-service?]: New field.
[cache-directory]: Adjust value depending on 'for-home?'.
[log-directory]: Ditto.
(readymedia-shepherd-service): Adjust 'requirement' and 'start' according to
'home-service?'.
(readymedia-activation): Adjust creating 'media-directories' with permissions
according to 'home-service?'.
* gnu/tests/upnp.scm (%readymedia-configuration-test): Configure port with
%readymedia-default-port.
* doc/guix.texi (Miscellaneous Home Services): Document Readymedia Service.
(Miscellaneous Services): Add cross-reference.

Change-Id: I5c48595d84a815d98e03c7f68a716f048903720c
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-05-18 22:55:54 +02:00
Alexey Abramov
efcf1a2334
services: dnsmasq: Add stats and reload shepherd actions.
* gnu/services/dns.scm (dnsmasq-service-reload-action): New function.
Implements SIGHUP handling for reloading configurations.
(dnsmasq-service-stats-action): New function. Implements SIGUSR1
handling for dumping statistics.
(dnsmasq-shepherd-service): Use new actions.
* doc/guix.texi: Document new actions with examples.
* gnu/tests/networking.scm (%test-dnsmasq): Add tests to verify the
functionality of new actions.

Change-Id: I31f0eb4b26a582e95f7bfdb240110c139f0e16cc
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-05-16 17:01:11 +09:00
Maxim Cournoyer
3bb6147fdc
services: udev: Also create subsystem nodes at boot.
This is a more correct fix to CDROM/DVDROM events/auto-mounting than was made
in the now-reverted commit 670724edcf ("gnu: eudev: Fix optical discs
detection/auto-mounting.")

This changes causes the 60-block.rules udev rules file shipped with eudev to
correctly set the default polling period to 2000 ms on block devices, which is
necessary for kernel events to be fired for CDROM drives for example.  To
validate it is set:

  # cat /sys/module/block/parameters/events_dfl_poll_msecs
  2000

Before, it would return 0.

* gnu/services/base.scm (udev-shepherd-service): <#:start>: Add a 'udevadm
trigger --change=add --type=subsystems' invocation, so that it also creates
subsystem nodes, as done in Void Linux or LinuxFromScratch init scripts for
example.
* gnu/tests/base.scm (run-basic-test): Add test.

Fixes: <https://issues.guix.gnu.org/35584>
Change-Id: Idc0eb5640163b27e41b72cc0c1885412a60805c1
2025-05-14 22:10:44 +09:00
Maxim Cournoyer
fbf8b81971
tests: Fix (gnu tests base.scm) module indentation.
* gnu/tests/base.scm: Fix indentation.

Change-Id: I3432fafa2f5c2853a14b5d125cf9377786ca6594
2025-05-06 23:22:25 +09:00
Maxim Cournoyer
10cb04d8ac
tests: Fix indentation of (gnu tests base).
* gnu/tests/base.scm: Fix indentation.

Change-Id: I84ae82a8ce85ff0113a3eb1215b11c191d3929d6
2025-05-06 16:32:06 +09:00
Giacomo Leidi
9d216d2ae9
services: postgresql-role: Add support for password files.
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>
2025-05-02 15:32:25 +09:00
Maxim Cournoyer
5b981a2b5c
tests: elogind: Adjust expected output for new version.
* gnu/tests/desktop.scm (run-elogind-test): Adjust expected output of loginctl
commands.

Change-Id: I10c131872909ac18a85b8244327883549c76eac0
2025-04-25 10:42:16 +09:00
Maxim Cournoyer
c6ee7b0f79
tests: Fix failing 'guix-system-tests' derivation during 'guix pull'.
I have no idea why using specifications->packages in a system test OS breaks
this derivation; it'd be nice to find out.

* gnu/tests/messaging.scm (%pounce-os): Do not use `specifications->packages'.

Reported-by: Ada Stevenson <adanskana@gmail.com>
Reported-by: Ian Eure <ian@retrospec.tv>
Change-Id: Iea727bedecff7a140f895e456ef01503ad11dad0
2025-04-22 14:09:40 +09:00
Maxim Cournoyer
aab89b3d93
services: pounce: New service.
* gnu/services/messaging.scm (pounce-serialize-boolean):
(pounce-serialize-string, pounce-serialize-list-of-strings)
(pounce-serialize-pair, power-of-two?)
(pounce-serialize-number, pounce-serialize-power-of-two)
(pounce-serialize-port, pounce-serialize-maybe-boolean)
(pounce-serialize-maybe-number, pounce-serialize-maybe-pair)
(pounce-serialize-maybe-port, pounce-serialize-maybe-port
(pounce-maybe-power-of-two, pounce-serialize-maybe-string)
(pounce-serialize-maybe-list-of-strings): New procedures.
(pounce-configuration): New configuration.
(pounce-activation): New procedure.
(serialize-pounce-configuration, pounce-wrapper): Likewise.
(pounce-service-type): New service type.
* gnu/tests/messaging.scm (ngircd-tls-cert-service-type): New variable.
(%pounce-os): Likewise.
(run-pounce-test): New procedure.
(%test-pounce): New test.
* doc/guix.texi (Messaging Services): Document it.

Change-Id: I4bbd2bc4821072a93c2c4017b86df329c4b240cb
Reviewed-by: Ludovic Courtès <ludo@gnu.org>
2025-04-22 11:35:24 +09:00
Ludovic Courtès
e2583b5a17
services: guix: Allow ‘guix-daemon’ to run without root privileges.
* 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
2025-04-20 18:52:59 +02:00
Ludovic Courtès
2c7c059e0b
tests: guix-daemon: Wait for the ‘guix-daemon’ service to be up.
* gnu/tests/base.scm (run-guix-daemon-test): Add “guix-daemon service is
up” test.

Change-Id: I4d44a1248599fec45c854c285d4da201c30eb00c
2025-04-20 18:50:52 +02:00
Ludovic Courtès
6367e69f50
tests: guix-daemon: Send system log output to /dev/console.
* gnu/tests/base.scm (%daemon-os): New variable.
(%test-guix-daemon): Use it.

Change-Id: Iea31808cc59e94971ea4cbc12d565c94348bf7a4
2025-04-20 18:50:52 +02:00
Maxim Cournoyer
19de75a165
tests: Streamline ngircd test image.
* gnu/tests/messaging.scm (%ngircd-os): Remove openssh-service-type and screen
package.

Change-Id: Ia08225500c544087676606ef7805037fa2b0ea5b
2025-04-14 10:34:52 +09:00
Maxim Cournoyer
c9524b5841
services: Add ngircd-service-type.
* gnu/services/messaging.scm (pascal-case, ngircd-serialize-string)
(ngircd-serialize-boolean, ngircd-serialize-file-like)
(ngircd-serialize-list-of-strings, ngircd-serialize-list-of-ports)
(ngircd-serialize-number, ngircd-serialize-port)
(string-or-number?, ngircd-serialize-string-or-number): New procedures.
(ngircd-global, ngircd-limits, ngircd-options, ngircd-ssl)
(ngircd-operator, ngircd-server, ngircd-channel)
(ngircd-configuration): New configurations.
(serialize-ngircd-global, serialize-ngircd-limits)
(serialize-ngircd-options, serialize-ngircd-operator)
(serialize-list-of-ngircd-operators, serialize-ngircd-server)
(serialize-ngircd-channel, serialize-list-of-ngircd-channels)
(serialize-ngircd-configuration): New procedures.
(list-of-ngircd-operators?, list-of-ngircd-servers?)
(list-of-ngircd-channels?): New predicates.
(ngircd-generate-documentation): New procedure.
(ngircd-user+group, ngircd-account, ngircd-wrapper): Likewise.
(ngircd-shepherd-service): New shepherd service.
(ngircd-service-type): New service type.
* gnu/tests/messaging.scm (%ngircd-os): New variable.
(run-ngircd-test): New procedure.
(%test-ngircd): New test.
* doc/guix.texi (Messaging Services): Document it.

Change-Id: I3ce9a7fd0b33afab22cf15942a1db0cf5b12bfdb
2025-04-08 10:50:17 +09:00
Maxim Cournoyer
8c43056aab
tests: Properly check the quassel service is running.
Simply calling 'start-service' without checking its return value doesn't test
much.

* gnu/tests/messaging.scm (run-quassel-test): Check service is running via
`wait-for-service'.

Change-Id: Ieb0df9aaafeb79afc11901b5aef547e0b4585bd3
2025-03-31 11:25:41 +09:00
Maxim Cournoyer
2eb22e3d0f
services: libvirt: Add UEFI firmware support.
This makes libvirt able to boot images that require a UEFI bootloader, with
the available firmwares exposed to libvirt made configurable via a new
configuration field.  For more background on the problem this fixes, see the
same issue that was reported in NixOS (see:
https://github.com/NixOS/nixpkgs/issues/115996).

* gnu/services/virtualization.scm: (list-of-file-likes?): New predicate.
(libvirt-configuration): [firmwares]: New field.
(/etc/qemu/firmware): New procedure.
(libvirt-service-type): Extend the etc-service-type with it.
(generate-libvirt-documentation): Delete obsolete procedure.
* doc/guix.texi: Re-generate doc.
* gnu/tests/virtualization.scm (run-libvirt-test): Augment memory from 256 to
512 MiB.  Test it.

Series-to: 77110@debbugs.gnu.org
Change-Id: I40694964405f13681520bf1e28b7365b0200d8f7
2025-03-27 21:21:06 +09:00
Ludovic Courtès
14f10a1f83
tests: ganeti: Increase VM memory size.
* gnu/tests/ganeti.scm (run-ganeti-test): Pass ‘-m 1024’ to
‘make-marionette’.

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I82c8a0eb37c16079f1affe793afc0d8a773c62c8
2025-03-23 19:30:32 +01:00
Ludovic Courtès
30a5ada6be
tests: ganeti: Write system log to /dev/console.
* gnu/tests/ganeti.scm (%ganeti-os): Wrap in
‘operating-system-with-console-syslog’.

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: Ie86ad640ad6a7c154f5768ac4250acdd0e8940af
2025-03-23 19:30:26 +01:00
Ludovic Courtès
8de23e8260
tests: ganeti: Remove unnecessary ‘begin’.
* gnu/tests/ganeti.scm (run-ganeti-test): Remove ‘begin’ where
unnecessary.

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I3a36fffdc797c9187b5ffa406f7a06985f18d29c
2025-03-23 19:30:20 +01:00
Ludovic Courtès
caf5869a1d
tests: Make ‘operating-system-with-console-syslog’ public.
* gnu/tests/install.scm (operating-system-with-console-syslog): Move to…
* gnu/tests.scm (operating-system-with-console-syslog): … here.  New
procedure.

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I015e24525140365d09f22127d366107fdc9ca902
2025-03-23 19:30:12 +01:00
Ludovic Courtès
3511dab3f7
tests: Factorize ‘guix-daemon’ test cases.
* gnu/tests/base.scm (guix-daemon-test-cases): New procedure, with code
moved from…
(run-guix-daemon-test): … here. Use it.
* gnu/tests/foreign.scm (run-foreign-install-test): Likewise.

Change-Id: I6f2d03d30d7b7648b6eb7e77e36c3da54f80d79c
2025-03-10 15:41:34 +01:00
Ludovic Courtès
39c890cacf
tests: Factorize ‘%hello-dependencies-manifest’.
* gnu/tests/base.scm (%hello-dependencies-manifest): Export.
* gnu/tests/foreign.scm (%installation-tarball-manifest): Use it.

Change-Id: Id92232f479ab5d1f0c48036b0546e3745aa63e52
2025-03-10 15:41:33 +01:00
Ludovic Courtès
9e07d889c4
tests: Add ‘guix-daemon’ test.
* gnu/tests/base.scm (manifest-entry-without-grafts): New procedure.
(%hello-dependencies-manifest): New variable.
(run-guix-daemon-test): New procedure.
(%test-guix-daemon): New variable.

Change-Id: Ia37966de1f61fb428e6fb2244271bf389a74af6d
2025-03-10 15:41:33 +01:00
Ludovic Courtès
75e3d34295
tests: Move Avahi test to its own file.
This mirrors the (gnu services avahi) module.

* gnu/tests/base.scm (%avahi-os, run-nss-mdns-test, %test-nss-mdns):
Move to…
* gnu/tests/avahi.scm: … here.  New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

Change-Id: I04705e57408619d948c928873c40c470aa4e949d
2025-03-10 15:41:33 +01:00