aboutsummaryrefslogtreecommitdiff
path: root/config/emacs/default.nix
blob: 4920df9e09f40885e6226b9d8b07ef63a9514616 (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
{ pkgs, config, ... }:
let
  emacs-dir = "${config.home.homeDirectory}/.config/emacs";
  kb-emacs = pkgs.callPackage ../../packages/emacs {};
in
{
  xdg.configFile.emacs-early-init = {
    source = ./emacs.d/early-init.el;
    target = "emacs/early-init.el";
  };
  xdg.configFile.emacs-init = {
    source = ./emacs.d/init.el;
    target = "emacs/init.el";
  };
  xdg.configFile.emacs-lisp = {
    recursive = true;
    source = ./emacs.d/lisp;
    target = "emacs/lisp";
  };
  xdg.configFile.emacs-org-captures = {
    recursive = true;
    source = ./emacs.d/org-captures;
    target = "emacs/org-captures";
  };
  xdg.configFile.emacs-site-lisp = {
    recursive = true;
    source = ./emacs.d/site-lisp;
    target = "emacs/site-lisp";
  };
  xdg.configFile.emacs-lsp-java = {
    recursive = true;
    source = ./emacs.d/lsp-java;
    target = "emacs/lsp-java";
  };
  xdg.configFile.emacs-snippets = {
    recursive = true;
    source = ./emacs.d/snippets;
    target = "emacs/snippets";
  };
  xdg.configFile.emacs-xml = {
    recursive = true;
    source = ./emacs.d/xml;
    target = "emacs/xml";
  };
  xdg.configFile.emacs-schemas = {
    target = "emacs/schemas.xml";
    text = ''
    <?xml version="1.0"?>
    <locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
        <uri pattern="pom.xml" uri="file://${emacs-dir}/xml/maven-v4_0_0.rnc"/>
        <uri pattern="build.xml" uri="file://${emacs-dir}/xml/ant-1.8.2.rnc"/>
        <uri ns="http://docbook.org/ns/docbook"
             uri="${pkgs.docbook5}/share/xml/docbook-5.0/rng/docbookxi.rnc"/>
    </locatingRules>
    '';
  };
  xdg.dataFile.emacsclient = {
    source = ./emacsclient.desktop;
    target = "applications/emacsclient.desktop";
  };
  home.sessionVariables = {
    EDITOR = "${kb-emacs}/bin/emacsclient -a";
  };

  programs.emacs = {
    enable = true;
    package = kb-emacs;
  };
}