about summary refs log tree commit diff
path: root/modules/common/emacs/default.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-04-21 02:15:42 +0300
committerAzat Bahawi <azat@bahawi.net>2024-04-21 02:15:42 +0300
commite6ed60548397627bf10f561f9438201dbba0a36e (patch)
treef9a84c5957d2cc4fcd148065ee9365a0c851ae1c /modules/common/emacs/default.nix
parent2024-04-18 (diff)
2024-04-21
Diffstat (limited to '')
-rw-r--r--modules/emacs/default.nix (renamed from modules/common/emacs/default.nix)204
1 files changed, 98 insertions, 106 deletions
diff --git a/modules/common/emacs/default.nix b/modules/emacs/default.nix
index 4c43fd5..2230ee0 100644
--- a/modules/common/emacs/default.nix
+++ b/modules/emacs/default.nix
@@ -2,9 +2,7 @@
   config,
   inputs,
   lib,
-  localUsername ? lib.my.username,
   pkgs,
-  this,
   ...
 }:
 with lib;
@@ -17,10 +15,20 @@ in
   config = mkIf cfg.enable {
     secrets.authinfo = {
       file = "${inputs.self}/secrets/authinfo";
-      owner = localUsername;
+      owner = my.username;
     };
 
     nixfiles.modules = {
+      common.xdg.defaultApplications.emacsclient = [
+        "application/atom+xml"
+        "application/json"
+        "application/rss+xml"
+        "application/schema+json"
+        "application/xhtml+xml"
+        "application/xml"
+        "text/csv"
+        "text/plain"
+      ];
       git.client.enable = true;
       gnupg.enable = true;
       password-store.enable = true;
@@ -69,108 +77,92 @@ in
               text = concatLines [
                 (
                   let
-                    extraBins =
-                      with pkgs;
-                      [
-                        (aspellWithDicts (
-                          p: with p; [
-                            en
-                            ru
-                          ]
-                        )) # :checkers (spell +aspell)
-                        asmfmt # :editor format
-                        cargo # :lang rust
-                        clang-tools # :lang (cc +lsp) :editor format
-                        cmake-format # :lang cc :editor format
-                        cmigemo # :lang japanese
-                        config.hm.programs.emacs.package # !doom
-                        config.nix.package # !doom
-                        delve # :lang go :tools debugger
-                        dockerfile-language-server-nodejs # :tools (docker +lsp)
-                        dockfmt # :tools docker :editor format
-                        editorconfig-core-c # :tools editorconfig
-                        fd # doom!
-                        gcc # :lang cc
-                        ghc # :lang haskell
-                        gnuplot # :lang (org +gnuplot)
-                        gnutar # :tools tree-sitter
-                        gnutls # doom! :app irc
-                        go # :lang go
-                        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
-                        gzip # :tools tree-sitter
-                        haskellPackages.cabal-fmt # :lang haskell :editor format
-                        haskellPackages.cabal-install # :lang haskell
-                        haskellPackages.haskell-language-server # :lang (haskell +lsp)
-                        haskellPackages.hoogle # :lang haskell
-                        haskellPackages.ormolu # :lang haskell :editor format
-                        html-tidy # :lang web :editor format
-                        jdk # :lang java :lang plantuml :checkers grammar
-                        languagetool # :checkers grammar
-                        libxml2 # :lang data :editor format
-                        markdownlint-cli # :lang markdown
-                        nil # :lang (nix +lsp)
-                        nixfmt # :lang nix :editor format
-                        nls # :lang (nickel +lsp)
-                        nodePackages.bash-language-server # :lang (sh +lsp)
-                        nodePackages.eslint # :lang (json +lsp)
-                        nodePackages.js-beautify # :lang web
-                        nodePackages.prettier # :editor format
-                        nodePackages.stylelint # :lang web
-                        nodePackages.vscode-css-languageserver-bin # lang (web +lsp)
-                        nodePackages.vscode-html-languageserver-bin # lang (web +lsp)
-                        nodePackages.vscode-json-languageserver-bin # lang (json +lsp)
-                        nodejs # :tools debugger
-                        pandoc # :lang org markdown latex
-                        pinentry-emacs # doom!
-                        pipenv # :lang python
-                        poetry # :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
-                        ripgrep # doom!
-                        rust-analyzer # :lang (rust +lsp)
-                        rustc # :lang rust
-                        rustfmt # :lang rust
-                        shellcheck # :lang sh
-                        shfmt # :lang sh :editor format
-                        sops
-                        sqlite # :lang (org +roam2) :tools lookup
-                        terraform-ls # :tools (terraform +lsp)
-                        texlab # lang (tex +lsp)
-                        texlive.combined.scheme-full # :lang org tex
-                        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
-                      ]
-                      ++ (
-                        # GDB doesn't support[1] Apple Silicon.
-                        #
-                        # [1]: https://inbox.sourceware.org/gdb/6b48224b-9e2e-518d-793b-df4fc5514884@arm.com/
-                        if (this.system != "aarch64-darwin") then
-                          [ gdb ] # :tools debugger
-                        else
-                          [ lldb ] # :tools debugger
-                      );
-
-                    parinferRustLibrary =
-                      if (hasSuffix "linux" this.system) then
-                        "${pkgs.parinfer-rust}/lib/libparinfer_rust.so"
-                      else
-                        "${pkgs.parinfer-rust}/lib/libparinfer_rust.dylib";
+                    extraBins = with pkgs; [
+                      (aspellWithDicts (
+                        p: with p; [
+                          en
+                          ru
+                        ]
+                      )) # :checkers (spell +aspell)
+                      asmfmt # :editor format
+                      cargo # :lang rust
+                      clang-tools # :lang (cc +lsp) :editor format
+                      cmake-format # :lang cc :editor format
+                      cmigemo # :lang japanese
+                      config.hm.programs.emacs.package # !doom
+                      config.nix.package # !doom
+                      delve # :lang go :tools debugger
+                      dockerfile-language-server-nodejs # :tools (docker +lsp)
+                      dockfmt # :tools docker :editor format
+                      editorconfig-core-c # :tools editorconfig
+                      fd # doom!
+                      gcc # :lang cc
+                      ghc # :lang haskell
+                      gnuplot # :lang (org +gnuplot)
+                      gnutar # :tools tree-sitter
+                      gnutls # doom! :app irc
+                      go # :lang go
+                      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
+                      gzip # :tools tree-sitter
+                      haskellPackages.cabal-fmt # :lang haskell :editor format
+                      haskellPackages.cabal-install # :lang haskell
+                      haskellPackages.haskell-language-server # :lang (haskell +lsp)
+                      haskellPackages.hoogle # :lang haskell
+                      haskellPackages.ormolu # :lang haskell :editor format
+                      html-tidy # :lang web :editor format
+                      jdk # :lang java :lang plantuml :checkers grammar
+                      languagetool # :checkers grammar
+                      libxml2 # :lang data :editor format
+                      markdownlint-cli # :lang markdown
+                      nil # :lang (nix +lsp)
+                      nixfmt # :lang nix :editor format
+                      nls # :lang (nickel +lsp)
+                      nodePackages.bash-language-server # :lang (sh +lsp)
+                      nodePackages.eslint # :lang (json +lsp)
+                      nodePackages.js-beautify # :lang web
+                      nodePackages.prettier # :editor format
+                      nodePackages.stylelint # :lang web
+                      nodePackages.vscode-css-languageserver-bin # lang (web +lsp)
+                      nodePackages.vscode-html-languageserver-bin # lang (web +lsp)
+                      nodePackages.vscode-json-languageserver-bin # lang (json +lsp)
+                      nodejs # :tools debugger
+                      pandoc # :lang org markdown latex
+                      pinentry-emacs # doom!
+                      pipenv # :lang python
+                      poetry # :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
+                      ripgrep # doom!
+                      rust-analyzer # :lang (rust +lsp)
+                      rustc # :lang rust
+                      rustfmt # :lang rust
+                      shellcheck # :lang sh
+                      shfmt # :lang sh :editor format
+                      sops
+                      sqlite # :lang (org +roam2) :tools lookup
+                      terraform-ls # :tools (terraform +lsp)
+                      texlab # lang (tex +lsp)
+                      texlive.combined.scheme-full # :lang org tex
+                      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
+                      gdb # :tools debugger
+                    ];
                   in
                   ''
                     ;; Integrate packages which are required by various modules
@@ -194,7 +186,7 @@ in
 
                     ;; :editor parinfer
                     (setq parinfer-rust-auto-download nil
-                          parinfer-rust-library "${parinferRustLibrary}")
+                          parinfer-rust-library "${pkgs.parinfer-rust}/lib/libparinfer_rust.so")
 
                     ;; :lang (org +roam2) :email mu4e
                     (setq emacsql-sqlite-executable "${getExe pkgs.emacsql-sqlite}")

Consider giving Nix/NixOS a try! <3