dotfiles/nix/home-manager/modules/emacs/default.nix
Magic_RB 5ab9980b9d
Factor out Tree Sitter into a Org Roam file
Signed-off-by: Magic_RB <magic_rb@redalder.org>
2021-12-22 23:49:54 +01:00

91 lines
2.5 KiB
Nix

{ pkgs, config, lib, secret, ... }:
with lib;
let
cfg = config.magic_rb.programs.emacs;
inherit (config.magic_rb.pkgs) nixpkgs;
in
{
options.magic_rb.programs.emacs = {
enable = mkEnableOption "Enable emacs with my config";
package = mkOption {
description = "Which emacs package to use.";
type = types.package;
default =
let
# gensymb is not here, dont add
tex = with pkgs;
texlive.combine
{ inherit (texlive)
scheme-full;
};
r = with pkgs;
rWrapper.override
{ packages = with rPackages; [ ggplot2 ]; };
in
(nixpkgs.magic_rb.emacs.override
{ march = config.magic_rb.optimisation.march;
hunspell.enable = true;
hunspell.dictionaries = with pkgs.hunspellDicts;
[ en_US ];
environment =
{ MU4E_CONTEXTS = secret.emacs.mu4eContexts;
};
additionalPackages =
[ tex
r
] ++
(with pkgs;
[ krita
ripgrep
mu isync
]);
}).bundle;
};
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
cfg.package
(makeDesktopItem {
name = "Org-Protocol";
exec = "emacsclient %u";
comment = "Org protocol";
desktopName = "org-protocol";
type = "Application";
mimeType = "x-scheme-handler/org-protocol";
})
fira-code
(iosevka-bin.override { variant = "aile"; })
(iosevka-bin.override { variant = "etoile"; })
(iosevka-bin.override { variant = ""; })
emacs-all-the-icons-fonts
];
home.activation.emacsStraightVerions = config.lib.dag.entryAfter
["writeBoundary"] ''
mkdir -p ~/.emacs.d/straight/versions
ln -sfn ~/dotfiles/nix/home-manager/modules/emacs/straight-versions.el ~/.emacs.d/straight/versions/default.el
'';
home.file = {
".emacs".source = ./.emacs;
".mbsyncrc".source = secret.emacs.mbsyncrc;
".emacs.d/org" = {
source = ./.emacs.d/org;
recursive = true;
};
".emacs.d/lisp" = {
source = ./.emacs.d/lisp;
recursive = true;
};
".emacs.d/mu4e-contexts" = {
source = secret.emacs.mu4eContexts;
};
".emacs.d/treesitter-grammars" = {
source = pkgs.tree-sitter.withPlugins (p: builtins.attrValues p);
};
};
};
}