154 lines
3.5 KiB
Nix
154 lines
3.5 KiB
Nix
{ config, lib, pkgs, materusArg, ... }:
|
|
let
|
|
configPath = "${materusArg.cfg.path}" + "/extraFiles/config/emacs/";
|
|
|
|
inits = import ./init.nix {
|
|
path = configPath;
|
|
inherit pkgs;
|
|
};
|
|
packages = epkgs:
|
|
with epkgs; [
|
|
load-relative
|
|
elcord
|
|
persp-mode
|
|
dashboard
|
|
magit
|
|
helm
|
|
avy
|
|
corfu
|
|
vterm
|
|
centaur-tabs
|
|
projectile
|
|
company
|
|
clipetty
|
|
which-key
|
|
iedit
|
|
|
|
#Evil-Mode
|
|
evil
|
|
treemacs-evil
|
|
#########
|
|
|
|
treemacs
|
|
treemacs-nerd-icons
|
|
treemacs-perspective
|
|
treemacs-icons-dired
|
|
treemacs-magit
|
|
treemacs-projectile
|
|
tree-edit
|
|
vertico
|
|
nerd-icons
|
|
nerd-icons-completion
|
|
perspective
|
|
minions
|
|
telephone-line
|
|
rainbow-delimiters
|
|
use-package
|
|
|
|
cmake-mode
|
|
lsp-mode
|
|
lsp-java
|
|
lsp-jedi
|
|
lsp-haskell
|
|
lsp-ui
|
|
lsp-treemacs
|
|
dap-mode
|
|
d-mode
|
|
lua-mode
|
|
multiple-cursors
|
|
org
|
|
org-rainbow-tags
|
|
org-roam
|
|
org-roam-ui
|
|
org-review
|
|
csharp-mode
|
|
markdown-mode
|
|
json-mode
|
|
nix-mode
|
|
|
|
no-littering
|
|
right-click-context
|
|
|
|
moe-theme
|
|
doom-themes
|
|
];
|
|
|
|
default-config = ''
|
|
${setNixInit}
|
|
${inits.initText}
|
|
'';
|
|
|
|
emacsEnv = pkgs.buildEnv {
|
|
name = "emacs-env";
|
|
paths = with pkgs; [
|
|
python3
|
|
lua
|
|
multimarkdown
|
|
git
|
|
emacs-lsp-booster
|
|
llvmPackages.clang-tools
|
|
llvmPackages.clang
|
|
llvmPackages.lldb
|
|
(hiPrio gcc)
|
|
gdb
|
|
nixd
|
|
jdt-language-server
|
|
omnisharp-roslyn
|
|
];
|
|
};
|
|
|
|
cfg = config.materus.profile.editor.emacs;
|
|
|
|
setNixInit = ''
|
|
(setenv "PATH" (concat (getenv "PATH") ":${emacsEnv}/bin"))
|
|
(setq exec-path (append exec-path '("${emacsEnv}/bin")))
|
|
(call-process-shell-command "${pkgs.xorg.xmodmap}/bin/xmodmap -e \"keycode 148 = Hyper_L\" -e \"remove Mod4 = Hyper_L\" -e \"add Mod3 = Hyper_L\" &" nil 0)
|
|
'';
|
|
in
|
|
{
|
|
options.materus.profile.editor.emacs.enable =
|
|
materusArg.pkgs.lib.mkBoolOpt false "Enable emacs with materus cfg";
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.activation.emacsCompile = lib.hm.dag.entryAfter [ "linkGeneration" ] ''
|
|
mkdir -p ${config.xdg.configHome}/emacs/var/backups
|
|
mkdir -p ${config.xdg.configHome}/emacs/var/recovery
|
|
mkdir -p ${config.xdg.configHome}/emacs/etc
|
|
run ${config.programs.emacs.finalPackage}/bin/emacs --batch \
|
|
--eval '(setq warning-minimum-log-level :error)' \
|
|
--eval '(byte-compile-file "${config.xdg.configHome}/emacs/early-init.el")' \
|
|
--eval '(byte-compile-file "${config.xdg.configHome}/emacs/init.el")'
|
|
'';
|
|
|
|
xdg.configFile."emacs/early-init.el".text = ''
|
|
${inits.earlyInitText}
|
|
'';
|
|
xdg.configFile."emacs/init.el".text = ''
|
|
(require 'recentf)
|
|
(require 'no-littering)
|
|
(add-to-list 'recentf-exclude
|
|
(recentf-expand-file-name no-littering-var-directory))
|
|
(add-to-list 'recentf-exclude
|
|
(recentf-expand-file-name no-littering-etc-directory))
|
|
'';
|
|
|
|
programs.emacs = {
|
|
enable = true;
|
|
package = with pkgs;
|
|
lib.mkDefault (pkgs.emacs29.override {
|
|
withSQLite3 = true;
|
|
withWebP = true;
|
|
withX = true;
|
|
withGTK3 = true;
|
|
withAlsaLib = true;
|
|
withGconf = true;
|
|
withImageMagick = true;
|
|
withXwidgets = true;
|
|
});
|
|
extraPackages = epkgs: ((packages epkgs));
|
|
extraConfig = default-config;
|
|
};
|
|
|
|
};
|
|
}
|