114 lines
3.6 KiB
Nix
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\\'"'' ];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|