2023-10-27 14:01:54 +02:00
|
|
|
{ config, lib, pkgs, materusArg, ... }:
|
2023-10-08 11:42:08 +02:00
|
|
|
let
|
2023-11-13 00:44:03 +01:00
|
|
|
packages = epkgs: with epkgs; [
|
|
|
|
load-relative
|
2023-11-08 10:46:45 +01:00
|
|
|
elcord
|
|
|
|
persp-mode
|
2023-11-04 10:50:50 +01:00
|
|
|
dashboard
|
2023-10-25 19:28:25 +02:00
|
|
|
magit
|
2023-10-25 15:34:43 +02:00
|
|
|
helm
|
|
|
|
avy
|
|
|
|
corfu
|
|
|
|
vterm
|
|
|
|
centaur-tabs
|
2023-11-08 10:46:45 +01:00
|
|
|
projectile
|
2023-11-13 00:44:03 +01:00
|
|
|
company
|
|
|
|
clipetty
|
2023-11-08 10:46:45 +01:00
|
|
|
|
2023-10-25 15:34:43 +02:00
|
|
|
treemacs
|
2023-10-25 19:28:25 +02:00
|
|
|
treemacs-nerd-icons
|
2023-11-08 10:46:45 +01:00
|
|
|
treemacs-perspective
|
|
|
|
treemacs-icons-dired
|
|
|
|
treemacs-magit
|
|
|
|
treemacs-projectile
|
2023-10-25 19:28:25 +02:00
|
|
|
tree-edit
|
2023-11-08 10:46:45 +01:00
|
|
|
vertico
|
2023-10-25 19:28:25 +02:00
|
|
|
nerd-icons
|
|
|
|
nerd-icons-completion
|
2023-11-08 10:46:45 +01:00
|
|
|
perspective
|
|
|
|
minions
|
|
|
|
telephone-line
|
2023-11-13 00:44:03 +01:00
|
|
|
rainbow-delimiters
|
|
|
|
use-package
|
2023-10-25 15:34:43 +02:00
|
|
|
|
|
|
|
lsp-mode
|
2023-11-13 00:44:03 +01:00
|
|
|
lsp-bridge
|
|
|
|
dap-mode
|
2023-10-25 15:34:43 +02:00
|
|
|
d-mode
|
2023-11-13 00:44:03 +01:00
|
|
|
multiple-cursors
|
2023-10-25 15:34:43 +02:00
|
|
|
org
|
2023-11-13 00:44:03 +01:00
|
|
|
org-rainbow-tags
|
2023-10-25 15:34:43 +02:00
|
|
|
markdown-mode
|
|
|
|
json-mode
|
2023-11-08 10:46:45 +01:00
|
|
|
nix-mode
|
|
|
|
|
|
|
|
minimap
|
2023-11-05 11:59:54 +01:00
|
|
|
moe-theme
|
2023-10-25 15:34:43 +02:00
|
|
|
];
|
2023-11-13 00:44:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
default-config = ''
|
|
|
|
(defvar materus/nix-packages t)
|
|
|
|
(defvar materus/init-from-home nil)
|
|
|
|
(defvar materus/init-from-default nil)
|
|
|
|
(when (not materus/init-from-home)
|
|
|
|
(setq-default materus/init-from-default t)
|
|
|
|
(message "Config loading not from homeDir, need "materus/init-from-home" variable in init.el")
|
|
|
|
${setNixInit}
|
|
|
|
(require 'materus-config)
|
|
|
|
)
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
materus-config = epkgs: epkgs.trivialBuild rec {
|
|
|
|
pname = "materus-config";
|
|
|
|
src = pkgs.symlinkJoin {
|
|
|
|
name = "materus-emacs-config";
|
|
|
|
paths = [
|
|
|
|
configPath
|
|
|
|
];
|
|
|
|
};
|
|
|
|
version = "1.0";
|
|
|
|
packageRequires = (packages epkgs);
|
|
|
|
buildPhase = ''
|
|
|
|
runHook preBuild
|
|
|
|
|
|
|
|
emacs -L . --batch -f batch-byte-compile **/*.el
|
|
|
|
emacs -L . --batch -f batch-byte-compile *.el
|
|
|
|
|
|
|
|
runHook postBuild
|
|
|
|
'';
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
runHook preInstall
|
|
|
|
|
|
|
|
LISPDIR=$out/share/emacs/site-lisp
|
|
|
|
install -d $LISPDIR
|
|
|
|
install **.el **.elc $LISPDIR
|
|
|
|
cp -r materus $LISPDIR
|
|
|
|
emacs --batch -l package --eval "(package-generate-autoloads \"${pname}\" \"$LISPDIR\")"
|
|
|
|
|
|
|
|
runHook postInstall
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cfg = config.materus.profile.editor.emacs;
|
|
|
|
configPath = "${materusArg.cfg.path}" + "/extraFiles/config/emacs/";
|
|
|
|
emacsPkgs = with pkgs;[
|
|
|
|
python3
|
|
|
|
lua
|
|
|
|
multimarkdown
|
|
|
|
git
|
|
|
|
];
|
|
|
|
setNixInit = ''
|
|
|
|
(setenv "PATH" (concat (getenv "PATH") ":${lib.makeBinPath emacsPkgs}"))
|
|
|
|
${builtins.concatStringsSep "\n" (builtins.map (x: "(setq exec-path (append exec-path '(\""+x+"/bin\")))" ) emacsPkgs)}
|
|
|
|
(call-process-shell-command "${pkgs.xorg.xmodmap}/bin/xmodmap -e \"keycode 66 = 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 {
|
|
|
|
xdg.configFile."emacs/init.el".text = ''
|
|
|
|
(defvar materus/nix-packages nil)
|
|
|
|
(defvar materus/init-from-home t)
|
|
|
|
(defvar materus/init-from-default nil)
|
|
|
|
${setNixInit}
|
|
|
|
(setq-default materus/init-from-home t)
|
|
|
|
(setq-default materus/nix-packages (require 'materus-config nil 'noerror))
|
|
|
|
(when (not materus/nix-packages)
|
|
|
|
(load (concat user-emacs-directory "materus/init"))
|
|
|
|
(message "Config loaded from user dir")
|
|
|
|
)
|
|
|
|
'';
|
|
|
|
xdg.configFile."emacs/materus" = {
|
|
|
|
source = configPath + "materus";
|
|
|
|
recursive = true;
|
|
|
|
};
|
|
|
|
programs.emacs = {
|
|
|
|
enable = true;
|
|
|
|
package = with pkgs; lib.mkDefault (emacs29.override { withX = true; withGTK3 = true; withAlsaLib = true; withGconf = true; withImageMagick = true; withXwidgets = true; });
|
|
|
|
extraPackages = epkgs: ((packages epkgs) ++ [(materus-config epkgs)]);
|
|
|
|
extraConfig = default-config;
|
2023-10-25 15:34:43 +02:00
|
|
|
};
|
2023-10-08 11:42:08 +02:00
|
|
|
|
|
|
|
};
|
|
|
|
}
|