home: services: emacs: Inherit graphical session environment.

This commit is contained in:
Hilton Chain 2026-04-11 00:08:23 +08:00
parent 057f66639a
commit 74832c049d
No known key found for this signature in database
GPG Key ID: ACC66D09CA528292

View File

@ -31,7 +31,10 @@
(packages (packages
(manifest (manifest '())) (manifest (manifest '()))
"A manifest (@pxref{Writing Manifests,,, guix, GNU Guix Reference Manual}) "A manifest (@pxref{Writing Manifests,,, guix, GNU Guix Reference Manual})
of Emacs extensions.")) of Emacs extensions.")
(shepherd-requirement
(list-of-symbols '())
"List of services that should be started before this service."))
(define home-emacs-package (define home-emacs-package
(match-record-lambda <home-emacs-configuration> (match-record-lambda <home-emacs-configuration>
@ -111,16 +114,24 @@ of Emacs extensions."))
(propagated-inputs '()) (propagated-inputs '())
(outputs '("out")))))) (outputs '("out"))))))
(define home-emacs-shepherd (define (home-emacs-shepherd config)
(match-record config <home-emacs-configuration>
(shepherd-requirement)
(let ((emacs (home-emacs-package config)))
(list (shepherd-service (list (shepherd-service
(documentation "Run Emacs daemon.") (documentation "Run Emacs daemon.")
(provision '(emacs-daemon)) (provision '(emacs-daemon))
(requirement shepherd-requirement)
(modules '((shepherd support))) (modules '((shepherd support)))
(start (start
#~(make-forkexec-constructor #~(lambda args
'("emacs" "--fg-daemon") ((make-forkexec-constructor
#:log-file (in-vicinity %user-log-dir "emacs-daemon.log"))) (list #$(file-append emacs "/bin/emacs") "--fg-daemon")
(stop #~(make-kill-destructor))))) #:log-file (in-vicinity %user-log-dir "emacs-daemon.log")
;; Inherit graphical session environment.
#:environment-variables (environ))
args)))
(stop #~(make-kill-destructor)))))))
(define home-emacs-service-type (define home-emacs-service-type
(service-type (service-type
@ -129,6 +140,6 @@ of Emacs extensions."))
(list (service-extension home-profile-service-type (list (service-extension home-profile-service-type
(compose list home-emacs-package)) (compose list home-emacs-package))
(service-extension home-shepherd-service-type (service-extension home-shepherd-service-type
(const home-emacs-shepherd)))) home-emacs-shepherd)))
(default-value (home-emacs-configuration)) (default-value (home-emacs-configuration))
(description "Install Emacs into home profile and run its daemon."))) (description "Install Emacs into home profile and run its daemon.")))