[bug#78497] environment: Provide a writable /run/user/$UID.

Message ID fda82779cee9cc1b1a73a18624c1aa508b573243.1747682960.git.ludo@gnu.org
State New
Headers
Series [bug#78497] environment: Provide a writable /run/user/$UID. |

Commit Message

Ludovic Courtès May 19, 2025, 7:30 p.m. UTC
  * guix/scripts/environment.scm (launch-environment/container): Add
/run/user/UID to ‘file-systems’.
* tests/guix-environment-container.sh: Test it.

Change-Id: I44c70a7554a06f40d073c25929ea7c6ded356d08
---
 guix/scripts/environment.scm        | 5 +++++
 tests/guix-environment-container.sh | 3 +++
 2 files changed, 8 insertions(+)

Hello Guix!

This may sound like a recurring joke but hey! when running shepherd
in ‘guix shell -C’, I figured that a writable /run/user/$UID would
be welcome too.

Thoughts?

Ludo’.


base-commit: 11e88de06043d367d02ceceade84733a65f84e27
  

Patch

diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 96bbc6c9fa..1c2d222c74 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -875,6 +875,11 @@  (define* (launch-environment/container #:key command bash user user-mappings
                    reqs)))
             (file-systems (append %container-file-systems
                                   (list tmpfs        ; RW /tmp
+                                        (file-system ; RW /run
+                                          (inherit tmpfs)
+                                          (mount-point
+                                           (string-append "/run/user/"
+                                                          (number->string uid))))
                                         (file-system ; RW ~
                                           (device "none")
                                           (mount-point
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index e1c3655846..220e6b8ec8 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -203,6 +203,9 @@  guix environment --bootstrap --container --ad-hoc guile-bootstrap \
 guix environment --bootstrap --container --ad-hoc guile-bootstrap \
      -- guile -c '(mkdir (string-append (getenv "HOME") "/foo"))'
 
+# And /run too!
+guix environment --bootstrap --container --ad-hoc guile-bootstrap \
+     -- guile -c '(mkdir "/run/user/1000/shepherd")'
 
 # Check the exit code.