nixos-config/configs/home-manager/foo-dogsquared/modules/programs/doom-emacs.nix

78 lines
2.0 KiB
Nix
Raw Normal View History

# I only use Emacs for org-roam (seriously... I only learned Emacs for
# that). Take note this profile doesn't setup Emacs-as-a-development-tool
# thing, rather Emacs-as-a-note-taking tool thing with the complete
# package.
{ config, lib, pkgs, ... }:
let
userCfg = config.users.foo-dogsquared;
cfg = userCfg.programs.doom-emacs;
in
{
options.users.foo-dogsquared.programs.doom-emacs.enable =
lib.mkEnableOption "foo-dogsquared's Doom Emacs configuration";
config = lib.mkIf cfg.enable {
programs.emacs = {
enable = true;
package = pkgs.emacs;
extraPackages = epkgs: with epkgs; [
all-the-icons-nerd-fonts
org-noter-pdftools
org-pdftools
org-roam
org-roam-bibtex
org-roam-ui
pdf-tools
vterm
];
};
# Automatically install Doom Emacs from here.
home.mutableFile."${config.xdg.configHome}/emacs" = {
url = "https://github.com/doomemacs/doomemacs.git";
type = "git";
extraArgs = [ "--depth" "1" ];
postScript = ''
${config.xdg.configHome}/emacs/bin/doom install --no-config --no-fonts --install --force
${config.xdg.configHome}/emacs/bin/doom sync
'';
};
home.sessionPath = [ "${config.xdg.configHome}/emacs/bin" ];
# Doom Emacs dependencies.
home.packages = with pkgs; [
# This is installed just to get Geiser to properly work.
guile_3_0
# Module dependencies.
## :checkers spell
aspell
aspellDicts.en
aspellDicts.en-computers
## :tools lookup
wordnet
## :lang org +roam2
texlive.combined.scheme-medium
(python3.withPackages (ps: with ps; [ jupyter ]))
sqlite
anystyle-cli
];
# Enable Emacs server for them quicknotes.
services.emacs = {
enable = true;
socketActivation.enable = true;
};
xdg.mimeApps.defaultApplications = {
"application/json" = [ "emacs.desktop" ];
"text/org" = [ "emacs.desktop" ];
"text/plain" = [ "emacs.desktop" ];
};
};
}