Subject: bug#78497: closed (Re: [bug#78497] [PATCH] environment: Provide a writable /run/user/$UID.)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 24 May 2025 13:41:03 +0000

Your bug report

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

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
78497: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78497
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#78497] [PATCH] environment: Provide a writable /run/user/$UID.
From: Ludovic Courtès <[email-masked]>
To: Tomas Volf <[email-masked]>
Cc: [email-masked]
Date: Sat, 24 May 2025 15:39:43 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Tomas Volf <[email-masked]> writes:

> Ludovic Courtès <[email-masked]> writes:
>
>>> For normal users this is fine, but for root the whole /run should be
>>> writable, the way it is on normal system.  Thoughts?
>>
>> For root, the whole root file system should be writable.
>
> Well... That would be one way to solve this.  Default to --writable-root
> if UID is zero.
>
>> So I wonder if it makes sense to special-case the above to be “/run”
>> when UID is zero; WDYT?
>
> I was thinking about programs that are expected to be run as a root and
> have hard-coded PID file, lock file or something else under /run.  But I
> have no example to put forward.  So maybe your version is enough, and we
> can revisit this in another pass later if the need realizes?

Yeah, probably.  Pushed as f8527e7f2044ec7bb19efcb25158ec7aa0fe5fa3.

Let’s see if we need something else now.  :-)  I’m less concerned about
guest UID zero, because that’s probably an uncommon use case.

Thanks!

Ludo’.

Subject: [PATCH] environment: Provide a writable /run/user/$UID.
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: Ludovic Courtès <[email-masked]>, Tomas Volf <[email-masked]>
Date: Mon, 19 May 2025 21:30:53 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

* 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’.

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.

base-commit: 11e88de06043d367d02ceceade84733a65f84e27
-- 
2.49.0