Subject: bug#78363: Home is read-only in guix shell container

From: Tomas Volf <[email-masked]>
Date: Fri, 16 May 2025 17:49:21 +0200

Ludovic Courtès <[email-masked]> writes:

>>> As noted in the ‘guix pull’ news, you can use ‘--writable-root’.
>>> Otherwise, everything but the current directory and /tmp is read-only.
>>
>> Does that make sense though?  You have already made an exception for
>> /tmp, I would argue that ~ is another candidate for special-casing.
>>
>> I think people would reasonably expect that touching a file in your own
>> home should work.  But it does not:
>>
>> $ guix shell --no-cwd -C coreutils bash -- sh -c 'touch ~/foo'
>> touch: cannot touch '/home/user/foo': Read-only file system
>>
>>
>> Some software just fails to start in the container:
>>
>> $ guix shell --no-cwd -C deluge -- deluged
>> 20:22:20 [ERROR   ][deluge.common:136 ] Unable to use default config directory, exiting... ([Errno 30] Read-only file system: '/home/user/.config')
>
> It’s surprising that deluged tries to write to ~/.config,

In absence of the configuration, it generates default one and stores it
into the ~/.config/deluge.  This behavior is sensible for this specific
program.

> but yeah, more generally, I agree that many programs will want to
> write to ~/.cache and the likes.
>
> So hmm, maybe we can make another exception?  It doesn’t hurt anyway
> since it’s a tmpfs.

Yeah, I agree.  I can try to produce a patch (I should have some time on
Sunday), but obviously anyone feel free to step in.

Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.