Hi Guix.
I'm trying to come up with a reasonable way to use my Guix machine
sitting in the attic as my remote development server. This presents
several challenges. Locally I would typically follow these steps:
1. Create a project dir with guix.scm describing (possibly empty)
package
2. `guix shell` or start a container, with entire system if I need to
e.g. run a db
3. start emacs from that shell or container forwarding to my main
DISPLAY
When attempting to do something similar remotely, you very quickly run
into issues. X forwarding to a Linux machine kinda works, but sadly on
OSX, which I have to use as a client, XQuartz X server implementation
can't deal with hi DPI and the end result is miserable. Then there're
potential rendering issues when your remote server doesn't even have a
graphics card. We're sadly left with ssh + terminal Emacs. However,
just ssh and then follow the above steps won't be enough. When your
ssh session goes down, it'll take everything with it.
I hear you say `tmux`. I thought so too, but fresh `guix package -i
tmux` gives me `Incorrect locale LC_all, LC_CTYPE or LANG` when I try
to run it. Weird, seeing how this is attempted on Guix SD. No matter.
Lets just go with `screen`, which seems to work. Then follow the above
steps.
This sort of works and how I would imagine most people attempting this
would end up with. It leaves me itchy though. I mean, do I even need
that `screen` there when `emacs --daemon=name` exist? Latter will
happily detach itself from your tty and persist across ssh sessions.
Problem of course is the 2nd step above, which assumes we spawn a
shell (possibly run a container, maybe even the entire system). I
wonder if there's a way to avoid the intermediate `screen` or `tmux`
completely. Way I understand it, `guix shell`, `guix shell -c` and
`guix system --container` are Unix processes. Could they be detached
or put under some group or smth? I mean, screen works ok, but I
wonder.
Thanks