nixos-config/modules/emacs.nix
2021-03-09 10:17:18 +01:00

114 lines
3.6 KiB
Nix

{ config, lib, pkgs, ... }:
{
options.chvp.emacs = {
enable = lib.mkOption {
default = true;
example = false;
};
};
config = lib.mkIf config.chvp.emacs.enable {
home-manager.users.charlotte = { ... }: {
programs.emacs = {
enable = true;
init = {
enable = true;
prelude = ''
(when window-system
(set-frame-font "Fira Code 9"))
(electric-pair-mode)
(global-display-line-numbers-mode)
(defun emoji-fonts ()
(set-fontset-font t 'symbol "Noto Color Emoji")
(set-fontset-font t 'symbol "Symbola" nil 'append))
(if (daemonp)
(add-hook 'server-after-make-frame-hook #'emoji-fonts)
(emoji-fonts))
'';
recommendedGcSettings = true;
usePackageVerbose = true;
usePackage = {
better-defaults.enable = true;
company = {
enable = true;
diminish = [ "company-mode" ];
config = "(global-company-mode)";
};
evil = {
enable = true;
config = "(evil-mode 1)";
};
fira-code-mode = {
enable = true;
config = "(when window-system (global-fira-code-mode))";
};
flycheck = {
enable = true;
diminish = [ "flycheck-mode" ];
config = "(global-flycheck-mode)";
};
ledger-mode = {
enable = true;
mode = [ ''"\\.journal\\'"'' ];
config = ''
(setq ledger-binary-path "hledger")
(setq ledger-highlight-xact-under-point nil)
(setq ledger-post-account-alignment-column 4)
(setq ledger-post-amount-alignment-at :decimal)
(setq ledger-post-amount-alignment-column 59)
(setq ledger-post-auto-align t)
'';
};
lsp-mode = {
enable = true;
command = [ "lsp" ];
};
markdown-mode = {
enable = true;
command = [ "markdown-mode" "gfm-mode" ];
mode = [
''("README\\.md\\'" . gfm-mode)''
''("\\.md\\'" . markdown-mode)''
''("\\.markdown\\'" . markdown-mode)''
];
};
modus-themes = {
enable = true;
config = ''
(setq modus-themes-bold-constructs t
modus-themes-syntax 'alt-syntax-yellow-comments
modus-themes-promts 'intense-accented
modus-themes-mode-line 'borderless
modus-themes-region 'bg-only)
(modus-themes-load-themes)
(modus-themes-load-operandi)
'';
};
nix.enable = true;
nix-mode = {
enable = true;
mode = [ ''"\\.nix\\'"'' ];
};
python-mode = {
enable = true;
mode = [ ''"\\.py\\'"'' ];
};
ruby-mode = {
enable = true;
mode = [
''("\\.\\(?:cap\\|gemspec\\|irbrc\\|gemrc\\|rake\\|rb\\|ru\\|thor\\)\\'" . ruby-mode)''
''("\\(?:Brewfile\\|Capfile\\|Gemfile\\(?:\\.[a-zA-Z0-9._-]+\\)?\\|[rR]akefile\\)\\'" . ruby-mode)''
];
};
web-mode = {
enable = true;
mode = [ ''"\\.html\\.erb\\'"'' ];
};
};
};
};
};
};
}