dotfiles/modules/services/emacs/default.nix

71 lines
1.7 KiB
Nix
Raw Normal View History

2021-09-10 14:00:56 +02:00
{ config, lib, pkgs, inputs, ... }:
2021-09-09 21:55:28 +02:00
let
base = {
programs.emacs.enable = true;
2021-09-10 14:00:56 +02:00
programs.emacs.package = pkgs.emacsGit;
2021-09-09 21:55:28 +02:00
services.emacs.enable = true;
2021-09-10 14:00:56 +02:00
services.emacs.package = pkgs.emacsGit;
2021-09-09 21:55:28 +02:00
xdg = {
enable = true;
configFile = {
"doom" = {
2021-09-09 22:06:18 +02:00
source = ./doom;
2021-09-09 21:55:28 +02:00
recursive = true;
onChange = ''
2021-09-15 00:41:46 +02:00
#!/bin/sh
DOOM="$HOME/.emacs.d"
if [ ! -d "$DOOM" ]; then
git clone https://github.com/hlissner/doom-emacs.git "$DOOM"
"$DOOM/bin/doom" -y install
fi
2021-09-09 21:55:28 +02:00
2021-09-15 00:41:46 +02:00
"$DOOM/bin/doom" sync
'';
2021-09-09 21:55:28 +02:00
};
};
};
2021-09-10 14:00:56 +02:00
home.packages = with pkgs; [
## Emacs itself
2021-09-15 00:41:46 +02:00
binutils # native-comp needs 'as', provided by this
2021-09-10 14:00:56 +02:00
# emacsPgtkGcc # 28 + pgtk + native-comp
# ((emacsPackagesNgGen emacsPgtkGcc).emacsWithPackages (epkgs: [
# epkgs.vterm
# ]))
## Doom dependencies
git
2021-09-15 00:41:46 +02:00
(ripgrep.override { withPCRE2 = true; })
gnutls # for TLS connectivity
2021-09-10 14:00:56 +02:00
## Optional dependencies
2021-09-15 00:41:46 +02:00
fd # faster projectile indexing
imagemagick # for image-dired
zstd # for undo-fu-session/undo-tree compression
2021-09-10 14:00:56 +02:00
## Module dependencies
# :checkers spell
2021-09-29 13:37:02 +02:00
(aspellWithDicts (ds: with ds; [ en en-computers en-science de ]))
2021-09-10 14:00:56 +02:00
# :checkers grammar
languagetool
# :tools lookup & :lang org +roam
sqlite
# :lang latex & :lang org (latex previews)
texlive.combined.scheme-medium
2021-09-29 13:37:02 +02:00
# :lang nix
nixfmt # for formating nix
# :app everywhere
xdotool
xorg.xwininfo
xclip
xorg.xprop
2021-09-10 14:00:56 +02:00
];
2021-09-09 21:55:28 +02:00
};
2021-09-29 13:37:02 +02:00
in {
2021-09-10 14:00:56 +02:00
fonts.fonts = [ pkgs.emacs-all-the-icons-fonts ];
2021-09-15 00:41:46 +02:00
home-manager.users.moritz = { ... }: (base);
2021-09-09 21:55:28 +02:00
}