diff --git a/hmModules/emacs/default.nix b/hmModules/emacs/default.nix index 98463cc..fa8d312 100644 --- a/hmModules/emacs/default.nix +++ b/hmModules/emacs/default.nix @@ -1,10 +1,49 @@ { lib, - age, + fleetFlake, + pkgs, ... }: +let + emacs = fleetFlake.packages.${pkgs.system}.emacs; +in { - ccrEmacs.enable = true; - home.sessionVariables.EDITOR = lib.mkForce "emacsclient"; - systemd.user.services.emacs.Service.EnvironmentFile = age.secrets.chatgpt-token.path; + home.sessionVariables.EDITOR = lib.mkForce "emacsclient -c"; + programs.emacs = { + enable = true; + package = emacs; + }; + services.emacs = { + enable = true; + client.enable = true; + defaultEditor = true; + socketActivation.enable = false; + startWithUserSession = true; + package = emacs; + }; + home.packages = + with pkgs; + [ + binutils + delta + (ripgrep.override { withPCRE2 = true; }) + gnutls + fd + hunspell + python3 + imagemagick + ghostscript_headless + mupdf-headless + poppler_utils + ffmpegthumbnailer + mediainfo + unzipNLS + nodejs_20 + pkgs.qadwaitadecorations + pkgs.kdePackages.qtwayland + ] + ++ (with hunspellDicts; [ + en_US-large + it_IT + ]); } diff --git a/packages/emacs/default.nix b/packages/emacs/default.nix new file mode 100644 index 0000000..fe77b46 --- /dev/null +++ b/packages/emacs/default.nix @@ -0,0 +1,35 @@ +{ + lib, + inputs, + pkgs, + ... +}: +let + pkgs' = pkgs.extend ( + lib.composeManyExtensions [ + inputs.emacs-overlay.overlays.package + inputs.emacs-overlay.overlays.emacs + ] + ); + all-grammars = pkgs'.tree-sitter.withPlugins builtins.attrValues; + treesitGrammars = pkgs'.runCommand "treesit-grammars" { } '' + mkdir $out + for f in ${all-grammars}/* + do + cp $f $out/"libtree-sitter-$(basename $f)" + done + ''; + emacsWithoutPackages = pkgs'.emacs-git.override { + withSQLite3 = true; + withWebP = true; + withPgtk = true; + }; + emacs = (pkgs'.emacsPackagesFor emacsWithoutPackages).emacsWithPackages ( + import ./packages.nix pkgs' + ); +in +emacs.overrideAttrs { + passthru = { + inherit treesitGrammars; + }; +} diff --git a/packages/emacs/packages.nix b/packages/emacs/packages.nix new file mode 100644 index 0000000..7baa25f --- /dev/null +++ b/packages/emacs/packages.nix @@ -0,0 +1,108 @@ +pkgs: epkgs: +let + inherit (epkgs) melpaPackages nongnuPackages elpaPackages; + + # *Attrset* containig extra emacs packages from flake inputs + + # *List* containing emacs packages from (M)ELPA + mainPackages = + # builtins.filter + # if an extra package has the same name then give precedence to it + # (package: ! builtins.elem package.pname (builtins.attrNames extraPackages)) + (with melpaPackages; [ + meow + meow-tree-sitter + dracula-theme + nord-theme + catppuccin-theme + modus-themes + # solaire-mode + nerd-icons + nerd-icons-completion + nerd-icons-ibuffer + nerd-icons-dired + ligature + treemacs-nerd-icons + eshell-syntax-highlighting + fish-completion # fish completion for eshell + eshell-prompt-extras + eshell-atuin + eshell-command-not-found + clipetty + sideline + consult-eglot + # sideline-flymake + rainbow-delimiters + vertico + marginalia + consult + orderless + embark + embark-consult + magit + magit-delta + magit-todos + difftastic + with-editor + diff-hl + corfu + cape + which-key + nix-mode + nix-ts-mode + agenix + zig-mode + unisonlang-mode + purescript-mode + dhall-mode + envrc + inheritenv + popper + paredit + yaml-mode + hl-todo + markdown-mode + haskell-mode + terraform-mode + diredfl + org-modern + org-roam + org-roam-ql + visual-fill-column + consult-org-roam + pass + password-store-otp + eldoc-box + go-translate + notmuch + consult-notmuch + poly-org + casual-calc + gptel + agenix + solidity-mode + # org-re-reveal # FIXME very not nice hash mismatch when building + # gptel # TODO uncomment when there will be a new release including GPT-4o + ]) + ++ (with elpaPackages; [ + delight + kind-icon + ef-themes + indent-bars + ]) + ++ (with nongnuPackages; [ + eat + corfu-terminal + haskell-ts-mode + ]); +in +mainPackages +# ++ (builtins.attrValues extraPackages) +# Playing with EAF +++ [ + # Disabled because pymupdf was broken + # (pkgs.callPackage ./eaf.nix { + # inherit (epkgs) melpaBuild; + # inherit (melpaPackages) ctable deferred epc s; + # }) +]