services: oci: Fix OCI backed Shepherd services HOME variable.

This patch allows containers run with podman to run each with their own
specific user.

* doc/guix.texi: Fix wrong type for oci-container-configuration's
shepherd-dependencies field.
* gnu/services/containers.scm (oci-container-shepherd-service): In case
a specific container is not run through the user provisioned by the
oci-service-type, its environment is different from the globally
provisioned one and must be recomputed.

Change-Id: I5d636ad0616ced0af124002de4403da3067334de
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Giacomo Leidi 2025-09-10 09:21:53 +02:00 committed by Ludovic Courtès
parent b9b7351a1d
commit 877610c1ce
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 7 additions and 2 deletions

View file

@ -44867,7 +44867,7 @@ is @code{#f}, the service has to be started manually with @command{herd start}.
Whether to have Shepherd restart the service when it stops, for instance when
the underlying process dies.
@item @code{shepherd-actions} (default: @code{'()}) (type: list-of-symbols)
@item @code{shepherd-actions} (default: @code{'()}) (type: list-of-shepherd-actions)
This is a list of @code{shepherd-action} records defining actions supported
by the service.

View file

@ -1277,7 +1277,12 @@ by CONFIG through RUNTIME-CLI."
(define environment-variables
#~(append
(list #$@host-environment)
(list #$@(oci-runtime-state-runtime-environment runtime-state))))
;; In case this specific container is not run through the user
;; provisioned by the oci-service-type, its environment is different
;; from the globally provisioned one and must be recomputed.
(list #$@(if (maybe-value-set? user)
(oci-runtime-system-environment runtime user)
(oci-runtime-state-runtime-environment runtime-state)))))
(define invocation
(oci-container-run-invocation
(oci-container-configuration->oci-container-invocation