summaryrefslogtreecommitdiffstats
path: root/guix/jd/home/services/emacs.scm
blob: 5eb74e8d63003bdb985c98776040f179926d9a27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
(define-module (jd home services emacs)
  #:use-module (jd packages emacs)

  #:use-module (gnu packages)
  #:use-module (gnu packages emacs)

  #:use-module (gnu services)
  #:use-module (gnu services configuration)
  #:use-module (gnu home services)
  #:use-module (gnu home services shepherd)
  #:use-module (gnu home services desktop)

  #:use-module (guix gexp)
  #:use-module (guix packages)
  #:use-module (guix profiles))

(define-configuration home-emacs-service-configuration
  (emacs-package
   (package emacs-next-pgtk)
   "Emacs packages"))

(define (emacs-profile-service config)
  (append (list emacs-org-roam-ui
		emacs-lsp-mode!
		(home-emacs-service-configuration-emacs-package
		 config))
	  (specifications->packages '("emacs-sway"
				      "emacs-shackle"
				      "emacs-ytdl"
				      "emacs-desktop-environment"
				      "emacs-exwm"
				      "emacs-perspective"
				      "emacs-mu4e-alert"
				      "mu"
				      "isync"
				      "emacs-htmlize"
				      "emacs-bluetooth"
				      "emacs-nov-el"
				      "emacs-password-store"
				      "emacs-mastodon"
				      "emacs-elfeed"
				      "emacs-pdf-tools"
				      "emacs-emms"
				      "emacs-all-the-icons-dired"
				      "emacs-vterm"
				      "emacs-restclient"
				      "emacs-magit"
				      "emacs-neotree"
				      "emacs-projectile"
				      "emacs-company-box"
				      "emacs-company"
				      "emacs-docker"
				      "emacs-yaml-mode"
				      "emacs-web-mode"
				      "emacs-flycheck"
				      "emacs-tide"
				      "emacs-cider"
				      "emacs-typescript-mode"
				      "emacs-pyvenv"
				      "emacs-geiser-guile"
				      "emacs-racket-mode"
				      "emacs-geiser-racket"
				      "emacs-geiser"
				      "emacs-sly"
				      "emacs-rainbow-delimiters"
				      "emacs-paredit"
				      ;; "emacs-lsp-ivy"
				      ;; "emacs-lsp-mode"
				      "emacs-org-pomodoro"
				      "emacs-org-roam"
				      "emacs-org-roam-bibtex"
				      "emacs-org-superstar"
				      "emacs-org"
				      "emacs-ox-pandoc"
				      "emacs-beacon"
				      "emacs-all-the-icons"
				      "emacs-which-key"
				      "emacs-counsel"
				      "emacs-ivy"
				      "emacs-hl-todo"
				      "emacs-diminish"
				      "emacs-solarized-theme"
				      "font-terminus"
				      "emacs-undo-tree"
				      "emacs-hydra"
				      "emacs-multiple-cursors"
				      "emacs-general"
				      "emacs-guix"     
				      "emacs-doom-modeline"
				      "emacs-use-package"))))

(define (emacs-shepherd-services config)
  (list (shepherd-service
         (documentation "Emacs daemon.")
         (provision '(emacs))
         (start #~(make-forkexec-constructor
                   (list #$(file-append (home-emacs-service-configuration-emacs-package
					 config)
					"/bin/emacs")
			 "--fg-daemon")))
         (stop #~(make-kill-destructor)))))

(define-public home-emacs-service-type
  (service-type (name 'home-emacs)
                (extensions (list (service-extension home-profile-service-type
						     emacs-profile-service)
				  (service-extension home-shepherd-service-type
						     emacs-shepherd-services)
				  ))
                (default-value (home-emacs-service-configuration))
                (description "Runs emacs daemon service.")))