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 Whether to have Shepherd restart the service when it stops, for instance when
the underlying process dies. 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 This is a list of @code{shepherd-action} records defining actions supported
by the service. by the service.

View file

@ -1277,7 +1277,12 @@ by CONFIG through RUNTIME-CLI."
(define environment-variables (define environment-variables
#~(append #~(append
(list #$@host-environment) (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 (define invocation
(oci-container-run-invocation (oci-container-run-invocation
(oci-container-configuration->oci-container-invocation (oci-container-configuration->oci-container-invocation