aboutsummaryrefslogtreecommitdiff
path: root/kbg/services/emacs.scm
blob: 5f3fa19fcd31753408f97aff6ced159f53de6303 (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
(define-module (kbg services emacs)
  #:use-module (kbg)
  #:use-module (gnu)
  #:use-module (guix)
  #:use-module (guix git-download)
  #:use-module (gnu home services)
  #:use-module (gnu home-services emacs)
  #:use-module (gnu packages emacs)
  #:use-module (gnu packages tree-sitter)
  #:use-module ((gnu packages emacs-xyz) #:prefix emacs-xyz:)
  #:use-module (emacs packages melpa)
  #:use-module (kbg packages emacs-xyz)
  #:use-module (kbg packages jdtls)
  #:use-module (kbg packages languagetool))

(define rewrite
  (package-input-rewriting
   `((,emacs-xyz:emacs-async . ,emacs-async)
     (,emacs-xyz:emacs-cider . ,emacs-cider)
     (,emacs-xyz:emacs-dash . ,emacs-dash)
     (,emacs-xyz:emacs-esxml . ,emacs-esxml)
     (,emacs-xyz:emacs-helm . ,emacs-helm)
     (,emacs-xyz:emacs-tablist . ,emacs-tablist))))

(define emacs-packages
  (map rewrite
       (list
        emacs-add-node-modules-path
        emacs-adoc-mode
        emacs-ag
        ;; emacs-alchemist
        emacs-all-the-icons
        ;; emacs-anaconda-mode
        emacs-anzu
        emacs-awqat
        emacs-async
        emacs-async-status
        emacs-xyz:emacs-auctex
        emacs-auctex-latexmk
        emacs-autodisass-java-bytecode
        emacs-avy
        emacs-bash-completion
        ;; emacs-bind-key
        emacs-bibtex-to-plain-text
        emacs-bnf-mode
        emacs-browse-kill-ring
        emacs-buffer-move
        ;; emacs-bundler
        emacs-calibredb
        emacs-casual
        emacs-cider
        emacs-circadian
        emacs-citar
        emacs-citar-org-roam
        emacs-citeproc
        emacs-citeproc-org
        emacs-cljsbuild-mode
        emacs-clojure-mode
        emacs-coffee-mode
        emacs-company-native-complete
        emacs-company
        emacs-counsel
        emacs-counsel-projectile
        emacs-counsel-tramp
        emacs-cov
        emacs-coverlay
        ;; emacs-css-eldoc
        emacs-xyz:emacs-csv-mode
        emacs-cwl-mode
        emacs-d-mode
        emacs-daemons
        emacs-dap-mode
        emacs-dash
        emacs-xyz:emacs-debbugs
        emacs-define-word
        emacs-deft
        emacs-xyz:emacs-delight
        emacs-devdocs
        emacs-diff-hl
        emacs-diminish
        emacs-direnv
        emacs-disable-mouse
        ;; emacs-djvu
        ;; emacs-djvu3
        emacs-docker
        emacs-docker-compose-mode
        emacs-dockerfile-mode
        emacs-xyz:emacs-ebdb
        emacs-editorconfig
        ;; emacs-edts
        emacs-xyz:emacs-eglot
        ;; emacs-eglot-java
        emacs-ein
        emacs-elein
        emacs-elfeed
        emacs-elfeed-org
        emacs-elfeed-score
        ;; emacs-elgantt
        emacs-elixir-mode
        emacs-elm-mode
        emacs-emms
        emacs-envrc
        emacs-epkg
        ;; emacs-erlang
        emacs-eshell-fringe-status
        emacs-eshell-syntax-highlighting
        ;; emacs-eshell-vterm
        emacs-ess
        emacs-exec-path-from-shell
        emacs-expand-region
        emacs-f
        ;; emacs-fetchmail
        emacs-flycheck
        emacs-flycheck-aspell
        emacs-flycheck-clojure
        emacs-flycheck-color-mode-line
        ;; emacs-flycheck-credo
        ;; emacs-flycheck-elixir
        emacs-flycheck-elm
        emacs-flycheck-haskell
        emacs-flycheck-languagetool
        emacs-flycheck-ledger
        emacs-flycheck-ocaml
        emacs-flycheck-popup-tip
        ;; emacs-flycheck-pos-tip
        ;; emacs-flycheck-posframe
        emacs-flycheck-rust
        emacs-flycheck-vale
        emacs-flyspell-correct
        emacs-fold-dwim
        emacs-forge
        emacs-fullframe
        ;; emacs-geben
        ;; emacs-geben-helm-projectile
        emacs-gc-stats
        emacs-geiser
        emacs-geiser-guile
        emacs-geiser-racket
        emacs-ggtags
        emacs-git-auto-commit-mode
        emacs-git-commit
        emacs-git-link
        emacs-git-modes
        emacs-git-timemachine
        emacs-gnuplot
        emacs-gnus-alias
        emacs-golden-ratio
        emacs-go-autocomplete
        emacs-go-eldoc
        emacs-go-mode
        emacs-go-stacktracer
        emacs-graphviz-dot-mode
        emacs-guix
        emacs-gxref
        emacs-haml-mode
        emacs-haskell-mode
        emacs-helm
        emacs-helm-bibtex
        emacs-helm-bibtexkey
        emacs-helm-descbinds
        emacs-helm-flycheck
        emacs-helm-flyspell
        emacs-helm-git-grep
        emacs-helm-gtags
        emacs-helm-make
        emacs-helm-mu
        emacs-helm-org
        emacs-helm-org-ql
        emacs-helm-pass
        emacs-helm-proc
        emacs-helm-project
        emacs-helm-shell-history
        emacs-helm-sql-connect
        emacs-helm-tramp
        emacs-helm-tree-sitter
        emacs-helm-unicode
        emacs-helm-wordnet
        emacs-xyz:emacs-helm-wordnut
        emacs-helm-xref
        emacs-helpful
        emacs-hg-histedit
        emacs-hgignore-mode
        emacs-highlight-escape-sequences
        ;; emacs-hindent
        emacs-htmlize
        emacs-hydra
        emacs-ibuffer-vc
        emacs-iedit
        ;; emacs-import-js
        emacs-xyz:emacs-info-plus
        emacs-inf-ruby
        emacs-ivy
        emacs-xyz:emacs-jarchive
        emacs-jedi
        emacs-js-comint
        emacs-js2-mode
        emacs-json-mode
        ;; emacs-language-detection
        emacs-ledger-mode
        ;; emacs-less-css-mode
        emacs-link-hint
        emacs-list-unicode-display
        emacs-literate-calc-mode
        emacs-lsp-haskell
        emacs-lsp-jedi
        emacs-lsp-java
        emacs-lsp-mode
        emacs-lsp-ui
        emacs-lua-mode
        emacs-magit
        emacs-magit-annex
        emacs-marginalia
        emacs-markdown-mode
        emacs-mbsync
        emacs-xyz:emacs-memory-usage
        emacs-mmm-mode
        emacs-xyz:emacs-modus-themes
        emacs-mpdel
        emacs-mu4e-marker-icons
        emacs-mu4e-overview
        emacs-mu4e-query-fragments
        emacs-multiple-cursors
        emacs-mwim
        emacs-native-complete
        emacs-nginx-mode
        emacs-nix-mode
        emacs-xyz:emacs-nov-el
        ;; emacs-ob-ipython
        emacs-olivetti
        emacs-orderless
        emacs-xyz:emacs-org
        emacs-xyz:emacs-orgalist
        emacs-ob-async
        emacs-ob-restclient
        emacs-org-brain
        ;; emacs-org-babel-eval-in-repl
        ;; emacs-org-cliplink
        emacs-org-contacts
        emacs-xyz:emacs-org-contrib
        emacs-org-dblock-gantt
        emacs-org-gcal
        emacs-org-inline-pdf
        emacs-org-mime
        emacs-xyz:emacs-org-pandoc-import
        emacs-org-pomodoro
        emacs-org-ql
        emacs-org-ref
        emacs-org-roam
        emacs-org-roam-bibtex
        emacs-org-roam-ui
        emacs-xyz:emacs-org-transclusion
        emacs-org-web-tools
        emacs-ox-gfm
        emacs-page-break-lines
        emacs-pass
        emacs-password-store
        emacs-password-store-otp
        emacs-pcmpl-args
        emacs-pcmpl-git
        emacs-pcmpl-pip
        emacs-pcomplete-extension
        emacs-xyz:emacs-pcre2el
        emacs-xyz:emacs-pdf-tools
        emacs-peep-dired
        ;; emacs-persp-projectile
        emacs-perspective
        emacs-php-mode
        emacs-pip-requirements
        emacs-polymode
        emacs-powerline
        ;; emacs-projectile
        emacs-proof-general
        emacs-xyz:emacs-pulsar
        emacs-racer
        emacs-xyz:emacs-rainbow-mode
        emacs-rainbow-delimiters
        ;; emacs-realgud
        ;; emacs-realgud-jdb
        emacs-reformatter
        emacs-regex-tool
        emacs-restclient
        emacs-robe
        ;; emacs-rspec-mode
        ;; emacs-ruby-compilation
        ;; emacs-ruby-hash-syntax
        ;; emacs-rust-mode
        emacs-rustic
        ;; emacs-sass-mode
        ;; emacs-scss-mode
        emacs-shroud
        emacs-shx
        emacs-simple-httpd
        ;; emacs-skewer-less
        emacs-skewer-mode
        emacs-slurm-mode
        emacs-smartparens
        emacs-smex
        emacs-smooth-scrolling
        emacs-spaceline
        emacs-xyz:emacs-spinner
        emacs-swiper
        emacs-swiper-helm
        emacs-switch-window
        emacs-synosaurus
        emacs-tabspaces
        emacs-tagedit
        emacs-toml-mode
        emacs-transmission
        emacs-treemacs
        emacs-tuareg
        emacs-typescript-mode
        emacs-unfill
        emacs-unicode-fonts
        emacs-unicode-whitespace
        emacs-use-package
        emacs-use-package
        ;; emacs-virtualenvwrapper
        emacs-vterm
        emacs-xyz:emacs-vundo
        emacs-wgrep
        emacs-wgrep-ag
        emacs-whitespace-cleanup-mode
        emacs-whole-line-or-region
        emacs-with-editor
        emacs-wordnut
        emacs-xyz:emacs-x509-mode
        emacs-xyz:emacs-xr
        emacs-xref-js2
        emacs-yasnippet
        emacs-z3-mode
        emacs-zeal-at-point
        emacs-zenburn-theme)))

(define (emacs-file fname)
  (string-append ".config/emacs/" fname))

(define tree-sitter-langs
  (directory-union "tree-sitter-union"
                   (list tree-sitter
                         tree-sitter-bash
                         tree-sitter-bibtex
                         tree-sitter-c
                         tree-sitter-clojure
                         tree-sitter-cmake
                         tree-sitter-cpp
                         tree-sitter-css
                         tree-sitter-dockerfile
                         tree-sitter-elixir
                         tree-sitter-elm
                         tree-sitter-go
                         tree-sitter-gomod
                         tree-sitter-haskell
                         tree-sitter-html
                         tree-sitter-java
                         tree-sitter-javascript
                         tree-sitter-json
                         tree-sitter-markdown
                         tree-sitter-markdown-gfm
                         tree-sitter-ocaml
                         tree-sitter-org
                         tree-sitter-python
                         tree-sitter-r
                         tree-sitter-racket
                         tree-sitter-ruby
                         tree-sitter-rust
                         tree-sitter-scheme
                         tree-sitter-typescript)))

(define-public emacs-service
  (list (simple-service 'emacs-config
                        home-files-service-type
                        `((,(emacs-file "early-init.el")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/early-init.el")))
                          (,(emacs-file "init.el")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/init.el")))
                          (".gnus.el"
                           ,(if (file-exists? (string-append %dotfiles-root "config/emacs/emacs.d/gnus.el"))
                                (local-file (string-append %dotfiles-root "config/emacs/emacs.d/gnus.el"))
                                (plain-file "gnus.el" "")))
                          (,(emacs-file "org-captures")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/org-captures")
                                        #:recursive? #t))
                          (,(emacs-file "org-roam-templates")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/org-roam-templates")
                                        #:recursive? #t))
                          (,(emacs-file "site-lisp")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/site-lisp")
                                        #:recursive? #t))
                          (,(emacs-file "lsp-java")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/lsp-java")
                                        #:recursive? #t))
                          (,(emacs-file "language-tool") ,languagetool)
                          (,(emacs-file "share/eclipse.jdt.ls") ,jdtls)
                          (,(emacs-file "share/junit-platform-console-standalone.jar")
                           ,(file-append java-junit-platform-console-standalone "/junit-platform-console-standalone-1.10.0.jar"))
                          (,(emacs-file "snippets")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/snippets")
                                        #:recursive? #t))
                          (,(emacs-file "transient/levels.el")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/transient/levels.el")))
                          (,(emacs-file "schemas.xml")
                           ,(local-file (string-append %dotfiles-root "config/emacs/emacs.d/schemas.xml")))
                          (,(emacs-file "tree-sitter") ,(file-append tree-sitter-langs "/lib/tree-sitter/"))))
        (service home-emacs-service-type
                 (home-emacs-configuration
                  (package emacs-next-pgtk)
                  (rebuild-elisp-packages? #t)
                  (server-mode? #t)
                  (elisp-packages emacs-packages)))))