summaryrefslogtreecommitdiff
path: root/accounts/gkleen@skadhi/emacs/default.nix
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2026-09-23 21:08:35 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2026-09-23 21:08:35 +0200
commitae9a80c1f012686c1f65fce7ce76fdd1b77b0b71 (patch)
tree141f738276cf84c6b7e5633c2bd5f2b44e9b0b75 /accounts/gkleen@skadhi/emacs/default.nix
parent6a763272038e637a8a03dd9059d43a1ff44921dd (diff)
downloadnixos-ae9a80c1f012686c1f65fce7ce76fdd1b77b0b71.tar
nixos-ae9a80c1f012686c1f65fce7ce76fdd1b77b0b71.tar.gz
nixos-ae9a80c1f012686c1f65fce7ce76fdd1b77b0b71.tar.bz2
nixos-ae9a80c1f012686c1f65fce7ce76fdd1b77b0b71.tar.xz
nixos-ae9a80c1f012686c1f65fce7ce76fdd1b77b0b71.zip
...
Diffstat (limited to 'accounts/gkleen@skadhi/emacs/default.nix')
-rw-r--r--accounts/gkleen@skadhi/emacs/default.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/accounts/gkleen@skadhi/emacs/default.nix b/accounts/gkleen@skadhi/emacs/default.nix
new file mode 100644
index 00000000..4cf6b0b9
--- /dev/null
+++ b/accounts/gkleen@skadhi/emacs/default.nix
@@ -0,0 +1,67 @@
1{ pkgs, lib, config, sources, ... }:
2let
3 editor = pkgs.symlinkJoin {
4 name = "${config.services.emacs.package.name}-editor";
5 buildInputs = with pkgs; [ makeWrapper ];
6 paths = [ config.services.emacs.package ];
7 postBuild = ''
8 wrapProgram $out/bin/emacsclient \
9 --inherit-argv0 \
10 --add-flags ${lib.escapeShellArg (lib.escapeShellArgs config.services.emacs.client.arguments)}
11 '';
12 };
13in {
14 config = {
15 home.persistence."/persistent".directories = [
16 ".local/state/emacs/saves" ".local/state/emacs/undo"
17 ];
18
19 programs.emacs = {
20 enable = true;
21 package = pkgs.emacs-pgtk;
22 extraPackages = epkgs: with epkgs; [
23 evil evil-dvorak undo-tree magit haskell-tng-mode nix-mode
24 yaml-mode json-mode shakespeare-mode smart-mode-line
25 highlight-parentheses highlight-symbol ag sass-mode
26 lua-mode fira-code-mode use-package wanderlust # notmuch
27 git-gutter scratch edit-server mediawiki editorconfig
28 typescript-mode markdown-mode nftables-mode rustic
29 lsp-mode lsp-ui direnv company projectile
30 tomorrow-night-paradise-theme
31 treesit-grammars.with-all-grammars magit-delta scad-mode
32 typst-ts-mode
33 ];
34 overrides = self: super: {
35 tomorrow-night-paradise-theme = super.trivialBuild {
36 inherit (sources.tomorrow-night-paradise-theme) pname version src;
37 };
38 scratch = pkgs.stdenv.mkDerivation {
39 inherit (sources.emacs-scratch_el) pname version src;
40
41 phases = [ "unpackPhase" "installPhase" ];
42
43 installPhase = ''
44 install -Dt $out/share/emacs/site-lisp scratch.el
45 '';
46 };
47 };
48 };
49 xdg.configFile."emacs/init.el".source = pkgs.substitute {
50 src = ./emacs.el;
51 substitutions = [
52 "--subst-var-by" "ksshaskpass" (lib.getExe pkgs.kdePackages.ksshaskpass)
53 ];
54 };
55
56 home.sessionVariables.EDITOR = lib.getExe' editor "emacsclient";
57
58 services.emacs = {
59 enable = true;
60 socketActivation.enable = true;
61 client = {
62 enable = true;
63 arguments = lib.mkForce ["--create-frame" "--alternate-editor" (lib.getExe config.services.emacs.package)];
64 };
65 };
66 };
67}