]> Git — Sourcephile - julm/julm-nix.git/blob - home-manager/profiles/emacs.nix
nix: shell: install nixfmt-rfc-style
[julm/julm-nix.git] / home-manager / profiles / emacs.nix
1 {
2 inputs,
3 pkgs,
4 lib,
5 config,
6 ...
7 }:
8 {
9 /*
10 imports = [
11 inputs.nix-doom-emacs.hmModule
12 ];
13 programs.doom-emacs = {
14 enable = true;
15 doomPrivateDir =
16 "${config.home.homeDirectory}/.doom.d";
17 };
18 */
19 services.emacs = {
20 enable = lib.mkDefault true;
21 package = config.programs.emacs.finalPackage;
22 client.enable = true;
23 socketActivation.enable = true;
24 };
25 programs.emacs = {
26 enable = lib.mkDefault true;
27 extraPackages = epkgs: [
28 epkgs.vterm
29 ];
30 };
31 fonts.fontconfig.enable = lib.mkDefault true;
32 home.packages = with pkgs; [
33 # DOOM Emacs dependencies
34 binutils
35 (ripgrep.override { withPCRE2 = true; })
36 fd
37 gnutls
38 hack-font
39 imagemagick
40 zstd
41 #nodePackages.javascript-typescript-langserver
42 sqlite
43 #editorconfig-core-c
44 #emacs-all-the-icons-fonts
45 (nerdfonts.override {
46 fonts = [
47 "NerdFontsSymbolsOnly"
48 ];
49 })
50 ];
51 home.sessionPath = [ "${config.xdg.configHome}/emacs/bin" ];
52 home.sessionVariables = {
53 DOOMDIR = "${config.xdg.configHome}/doom";
54 DOOMLOCALDIR = "${config.xdg.dataHome}/doom";
55 DOOMPROFILELOADFILE = "${config.xdg.stateHome}/doom/load.el";
56 };
57 xdg.configFile = {
58 "doom/cli.el".text = lib.readFile emacs/cli.el;
59 "doom/config.el".text = lib.readFile emacs/config.el;
60 "doom/init.el".text = lib.readFile emacs/init.el;
61 "doom/packages.el".text = lib.readFile emacs/packages.el;
62 "emacs" = {
63 source = inputs.doom-emacs;
64 # FIXME: the first install takes ages, it timeouts home-manager-${USER}.service
65 onChange = "${pkgs.writeShellScript "doom-change" ''
66 export DOOMDIR="${config.home.sessionVariables.DOOMDIR}"
67 export DOOMLOCALDIR="${config.home.sessionVariables.DOOMLOCALDIR}"
68 export DOOMPROFILELOADFILE="${config.home.sessionVariables.DOOMPROFILELOADFILE}"
69 if [ ! -d "$DOOMLOCALDIR" ]; then
70 ${config.xdg.configHome}/emacs/bin/doom install
71 else
72 ${config.xdg.configHome}/emacs/bin/doom sync
73 fi
74 ''}";
75 };
76 };
77 xresources.properties = {
78 #"Emacs.FontBackend" = "xft";
79 };
80 }