(define-module (conf home emacs)
#:use-module (conf home program)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shepherd)
#:use-module (gnu packages emacs)
#:use-module (gnu services)
#:use-module (guix gexp)
#:export (emacs-services))
+(define emacs-daemon-shepherd-service
+ (shepherd-service
+ (provision '(emacs))
+ (start #~(make-forkexec-constructor
+ (list "emacs" "--fg-daemon")
+ #:directory (getenv "HOME")))
+ (stop #~(make-kill-destructor))
+ (documentation "")))
+
+(define emacs-daemon-service
+ (simple-service 'emacs-daemon-service
+ home-shepherd-service-type
+ (list emacs-daemon-shepherd-service)))
(define emacs-service
(service home-program-service-type
(home-program-configuration
(packages
(list emacs))
- (dotfiles '()))))
+ (dotfiles
+ (list "emacs/.local/bin/emacs_client")))))
(define emacs-services
- (list emacs-service))
+ (list emacs-daemon-service
+ emacs-service))
--- /dev/null
+#!/bin/sh
+# Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+# License: GPL-3.0 or later.
+
+emacsclient --socket-name=/run/user/$(id -u)/emacs/server --create-frame &