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
|
(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-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-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-inf-ruby
emacs-ivy
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-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)))))
|