Files
NixOS/modules/dev/emacs/common.nix
Danilo Reyes 32729627b1
All checks were successful
MCP Tests / mcp-tests (push) Successful in 26s
portable emacs
2026-03-23 15:01:55 -06:00

76 lines
1.8 KiB
Nix

{
lib,
pkgs,
stylixEnabled,
emacsExtraConfig,
emacsExtraPackages,
}:
let
clipboardPackages =
if pkgs.stdenv.isDarwin then
builtins.attrValues {
inherit (pkgs) pngpaste;
}
else
builtins.attrValues {
inherit (pkgs)
xclip
wl-clipboard-rs
;
};
linuxWindowPackages = lib.optionals pkgs.stdenv.isLinux (
builtins.attrValues {
inherit (pkgs.xorg) xwininfo;
inherit (pkgs) xdotool;
}
);
doomDir = ../../../dotfiles/doom;
templateFiles = {
"events.org" = ../../../dotfiles/doom/templates/events.org;
"default.org" = ../../../dotfiles/doom/templates/default.org;
"programming.org" = ../../../dotfiles/doom/templates/programming.org;
};
templateDataFiles = {
"doom/templates/events.org".source = templateFiles."events.org";
"doom/templates/default.org".source = templateFiles."default.org";
"doom/templates/programming.org".source = templateFiles."programming.org";
};
in
{
inherit doomDir templateDataFiles templateFiles;
packages =
linuxWindowPackages
++ clipboardPackages
++ builtins.attrValues {
inherit (pkgs)
fd
fzf
ripgrep
tree-sitter
graphviz
tetex
languagetool
yaml-language-server
markdownlint-cli
;
inherit (pkgs.nodePackages)
vscode-json-languageserver
prettier
;
};
extraPackages =
epkgs:
let
extra = emacsExtraPackages epkgs;
themes = lib.optional stylixEnabled [
(epkgs.trivialBuild {
pname = "stylix-theme";
src = pkgs.writeText "stylix-theme.el" emacsExtraConfig;
version = "0.1.0";
packageRequires = extra;
})
];
in
extra ++ themes;
}