diff options
Diffstat (limited to '')
-rw-r--r-- | modules/common/emacs/default.nix | 86 |
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 + # ]); }; }; }; |