Andrew Wong <brosas...@gmail.com> skribis:

> Greetings!
>
> Recently I’ve been trying to have an Emacs daemon start in the background on
> login. On Guix, I’ve found some interesting behavior in that an Emacs started
> with no args and then the command “server-start” will then be available to
> subsequent emacsclient calls, but an “emacs —daemon” is inaccessible, even if
> I call the command from my WM startup.
>
> 1. Does anyone understand why Guix’s design results in this behavior?
> 2. How can I set up a service in my configure-home.scm to start emacs —daemon
> (and have it be available) on login? I found a post from 2019 about it, but it
> must be outdated as it doesn’t mention the Guix home feature.
>
> Thank you for your assistance,
> Andrew

Hi.
In my Guix home configuration, I use the following service to start an
Emacs server:

--8<---------------cut here---------------start------------->8---
(define (emacs-server-shepherd-service config)
  (list (shepherd-service
         (documentation "Emacs server.")
         (provision '(emacs-server))
         (start #~(make-forkexec-constructor
                   (list #$(file-append emacs "/bin/emacs")
                         "--fg-daemon")))
         (stop #~(make-kill-destructor)))))

(define home-emacs-server-service-type
  (service-type
   (name 'home-emacs-server)
   (extensions (list (service-extension home-shepherd-service-type
                                        emacs-server-shepherd-service)))
   (default-value #f)
   (description "Run Emacs in server mode.")))

(home-environment
  ...
  (services
   (list ...
         (service home-emacs-server-service-type)
         ...)))
--8<---------------cut here---------------end--------------->8---

Then, using "emacsclient -n -c some-file" works.

Attachment: signature.asc
Description: PGP signature

Reply via email to