about summary refs log tree commit diff
path: root/modules/common/emacs/default.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2023-11-16 01:47:45 +0300
committerAzat Bahawi <azat@bahawi.net>2023-11-16 01:47:45 +0300
commit1b39cfb14b608f374208a9483db661ccd1a43230 (patch)
treebe2fefbe6c50f4598a1eb22f8b0a9260726b2c0a /modules/common/emacs/default.nix
parent2023-11-13 (diff)
2023-11-16
Diffstat (limited to 'modules/common/emacs/default.nix')
-rw-r--r--modules/common/emacs/default.nix86
1 files changed, 65 insertions, 21 deletions
diff --git a/modules/common/emacs/default.nix b/modules/common/emacs/default.nix
index c5cf7ed..b16fb83 100644
--- a/modules/common/emacs/default.nix
+++ b/modules/common/emacs/default.nix
@@ -58,36 +58,28 @@ in {
           text = concatLines [
             (
               let
-                # NOTE gopls will require the "go" executable which must be provided
-                # by the project's flake/shell.
                 extraBins = with pkgs;
                   [
                     (aspellWithDicts (p: with p; [en ru])) # :checkers (spell +aspell)
-                    (python3.withPackages (p:
-                      with p; [
-                        black # :lang python :editor format
-                        isort # :lang python
-                        pyflakes # :lang python
-                        python-lsp-server # :lang (python +lsp)
-                      ]))
                     asmfmt # :editor format
+                    cargo # :lang rust
                     clang-tools # :lang (cc +lsp) :editor format
-                    cmake # :term vterm
                     cmake-format # :lang cc :editor format
                     cmigemo # :lang japanese
                     dockerfile-language-server-nodejs # :tools (docker +lsp)
-                    dockfmt # :tools docker
+                    dockfmt # :tools docker :editor format
                     editorconfig-core-c # :tools editorconfig
                     fd # doom!
-                    gcc # :tools magit :term vterm
-                    gnumake # :term vterm
+                    ghc # :lang haskell
                     gnuplot # :lang (org +gnuplot)
                     gnutls # doom!
-                    go # :lang go org
+                    go # :lang go
                     gocode # :lang go org
+                    godef # :lang go
                     gomodifytags # :lang go
                     gopls # :lang (go +lsp)
                     gore # :lang go
+                    gotests # :lang go
                     gotools # :lang go
                     graphviz # :lang (org +roam2) :lang plantuml
                     haskellPackages.cabal-fmt # :lang haskell :editor format
@@ -95,10 +87,9 @@ in {
                     haskellPackages.haskell-language-server # :lang (haskell +lsp)
                     haskellPackages.hoogle # :lang haskell
                     haskellPackages.ormolu # :lang haskell :editor format
-                    html-tidy # :lang web
+                    html-tidy # :lang web :editor format
                     jre # :lang plantuml
-                    libtool # :term vterm
-                    libxml2 # :lang data
+                    libxml2 # :lang data :editor format
                     nil # :lang (nix +lsp)
                     nodePackages.bash-language-server # :lang (sh +lsp)
                     nodePackages.eslint # :lang (json +lsp)
@@ -107,12 +98,22 @@ in {
                     nodePackages.stylelint # :lang web
                     nodejs # :tools debugger
                     pandoc # :lang org markdown latex
-                    perl # term vterm
                     pinentry-emacs # doom!
+                    pipenv # :lang python
                     pre-commit # :tools magit
+                    python3 # :lang python
+                    python3Packages.black # :lang python :editor format
+                    python3Packages.isort # :lang python :editor format
+                    python3Packages.nose # :lang python
+                    python3Packages.pyflakes # :lang python :editor format
+                    python3Packages.pytest # :lang python
+                    python3Packages.python-lsp-server # :lang python :editor format
+                    racket # :lang racket :editor format
                     ripgrep # doom!
                     rust-analyzer # :lang (rust +lsp)
+                    rustc # :lang rust
                     rustfmt # :lang rust
+                    sbcl # :lang common-lisp
                     shellcheck # :lang sh
                     shfmt # :lang sh :editor format
                     sqlite # :lang (org +roam2) :tools lookup
@@ -121,6 +122,7 @@ in {
                     unzip # :tools debugger
                     wordnet # :tools (lookup +dictionary +offline)
                     yaml-language-server # :lang (yaml +lsp)
+                    zig # :lang zig :editor format
                     zls # :lang (zig +lsp)
                     zstd # :emacs undo
                   ]
@@ -142,7 +144,7 @@ in {
                   concatMapStringsSep ":" (x: "${x}/bin") extraBins
                 }"))
 
-                (appendq! auth-sources '("${config.secrets.authinfo.path}"))
+                (appendq! auth-sources '(("${config.secrets.authinfo.path}")))
 
                 ;; The font must be set to n+2, otherwise it looks too small.
                 (setq doom-font (font-spec
@@ -165,7 +167,7 @@ in {
                 (setq migemo-dictionary "${pkgs.cmigemo}/share/migemo/utf-8/migemo-dict")
 
                 ;; :input japanese
-                ;; (setq skk-large-jisyo "${pkgs.skk-dicts}/share/skk/SKK-JISYO.L")
+                (setq skk-large-jisyo "${pkgs.skk-dicts}/share/skk/SKK-JISYO.L")
 
                 ;; :lang nix
                 (setq nix-nixfmt-bin "${pkgs.writeShellScript "nixfmt" ''
@@ -210,7 +212,49 @@ in {
 
       programs.emacs = {
         enable = true;
-        package = pkgs.emacs29; # Pin to avoid surprises.
+        package =
+          (pkgs.emacs29.override (finalAttrs: {
+            stdenv = with pkgs;
+              useMoldLinker
+              (withCFlags ["-O2"]
+                (impureUseNativeOptimizations finalAttrs.stdenv));
+          }))
+          .overrideAttrs (_: final: {
+            configureFlags =
+              final.configureFlags
+              ++ [
+                "--without-mailutils"
+                "--without-pop"
+              ];
+          });
+        # TODO https://github.com/NixOS/nixpkgs/issues/267548
+        # packageX = let
+        #   emacs = "emacs29"; # Pin the version to avoid surprises.
+        # in
+        #   (pkgs.${emacs}.pkgs.overrideScope
+        #     (_: super: {
+        #       emacs =
+        #         (pkgs.${emacs}.override (finalAttrs: {
+        #           stdenv = with pkgs;
+        #             useMoldLinker
+        #             (withCFlags ["-O2"]
+        #               (impureUseNativeOptimizations finalAttrs.stdenv));
+        #         }))
+        #         .overrideAttrs (_: final: {
+        #           configureFlags =
+        #             final.configureFlags
+        #             ++ [
+        #               "--without-mailutils"
+        #               "--without-pop"
+        #             ];
+        #         });
+        #     }))
+        #   .withPackages (p:
+        #     with p; [
+        #       emacsql # :tools magit
+        #       mu4e # :email mu4e
+        #       vterm # :term vterm
+        #     ]);
       };
     };
   };

Consider giving Nix/NixOS a try! <3