Files
samfelag/modules/editors/emacs.nix
2022-11-24 01:30:43 +01:00

136 lines
3.9 KiB
Nix

{ config, inputs, lib, options, pkgs, ... }:
with lib;
let
cfg = config.samfelag.modules.editors.emacs;
i3Cfg = config.samfelag.modules.desktop.i3;
emacsPackages = epkgs: [
epkgs.vterm
];
emacsWithPackages = with pkgs; ((emacsPackagesFor emacsNativeComp).emacsWithPackages emacsPackages);
in {
options.samfelag.modules.editors.emacs = {
enable = mkEnableOption "emacs";
};
config = mkIf cfg.enable {
nixpkgs.overlays = [ inputs.emacs-overlay.overlay ];
environment.systemPackages = with pkgs; [
## Emacs itself
binutils
emacsWithPackages
# emacsPgtkGcc
## Doom dependencies
git
(ripgrep.override { withPCRE2 = true; })
gnutls
## Opt deps
fd
imagemagick
pinentry_emacs
zstd
## Modules deps
# :tools vterm
gcc
gnumake
libtool
cmake
# # :lang cc
# ccls
# cmake
# gcc
# glslang
# # :lang haskell
# stack
# haskellPackages.ghcide
# haskellPackages.hoogle
# # :lang latex && :lang org (latex preview)
# (texlive.combine { inherit (texlive) scheme-full; })
# # biber
# # :lang nix
# nixfmt
# # :lang python
# black
# python3
# python3Packages.isort
# # python3Packages.python-language-server
# python3Packages.pytest
# python3Packages.setuptools
# nodePackages.pyright
# # :tools lookup & :lang org +roam
# sqlite
# # :tools direnv
# direnv
# Fonts
emacs-all-the-icons-fonts
# fira-code
# fira-code-symbols
graphviz
];
fonts.fonts = [ pkgs.emacs-all-the-icons-fonts ];
env.PATH = [ "$HOME/.config/emacs/bin" ];
hm.xdg.configFile = {
"doom/modules".source = ../../config/doom/modules;
"doom/config.el".source = ../../config/doom/config.el;
"doom/custom.el".source = ../../config/doom/custom.el;
"doom/init.el".source = ../../config/doom/init.el;
"doom/packages.el".source = ../../config/doom/packages.el;
# Themeing
"doom/themes/base16-samfelag-theme.el".text = ''
(require 'base16-theme)
(defvar base16-samfelag-theme-colors
'(:base00 "#${config.colorScheme.colors.base00}"
:base01 "#${config.colorScheme.colors.base01}"
:base02 "#${config.colorScheme.colors.base02}"
:base03 "#${config.colorScheme.colors.base03}"
:base04 "#${config.colorScheme.colors.base04}"
:base05 "#${config.colorScheme.colors.base05}"
:base06 "#${config.colorScheme.colors.base06}"
:base07 "#${config.colorScheme.colors.base07}"
:base08 "#${config.colorScheme.colors.base08}"
:base09 "#${config.colorScheme.colors.base09}"
:base0A "#${config.colorScheme.colors.base0A}"
:base0B "#${config.colorScheme.colors.base0B}"
:base0C "#${config.colorScheme.colors.base0C}"
:base0D "#${config.colorScheme.colors.base0D}"
:base0E "#${config.colorScheme.colors.base0E}"
:base0F "#${config.colorScheme.colors.base0F}")
"All colors for Base16 Samfelag are defined here.")
(deftheme base16-samfelag)
(base16-theme-define 'base16-samfelag base16-samfelag-theme-colors)
(provide-theme 'base16-samfelag)
(provide 'base16-samfelag-theme)
'';
};
system.userActivationScripts = {
installDoomEmacs = ''
EMACS_FOLDER="$HOME/.config/emacs"
echo $XDG_CONFIG_HOME
echo $EMACS_FOLDER
if [ ! -d "$EMACS_FOLDER" ]; then
${pkgs.git}/bin/git clone --depth=1 --single-branch "https://github.com/doomemacs/doomemacs" "$EMACS_FOLDER"
fi
'';
};
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
"${i3Cfg.mod}+Shift+e" = "exec ${emacsWithPackages}/bin/emacs";
};
};
}