{ pkgs, lib, config, ... }:

with lib;
{
  services.emacs = {
    enable = true;
    package = with pkgs; ((emacsPackagesFor emacsGit).emacsWithPackages 
      (epkgs: with epkgs; [
        vterm
        magit
        pdf-tools
        consult-eglot
        org
        org-roam
        denote
        denote-refs
        command-log-mode
        all-the-icons
        doom-modeline
        doom-themes
        rainbow-delimiters
        smartparens
        aggressive-indent
        adaptive-wrap
        which-key
        exec-path-from-shell
        no-littering
        # tree-sitter
        # tree-sitter-langs
        rustic
        evil
        evil-collection
        general
        evil-escape
        evil-surround
        evil-org
        org-super-agenda
        websocket
        org-roam-ui
        org-present
        org-modern
        org-re-reveal
        org-re-reveal-ref
        org-re-reveal-citeproc
        ox-reveal
        oer-reveal
        ox-spectacle
        unicode-fonts
        emojify
        undo-tree
        visual-fill-column
        toc-org
        pulsar
        vertico
        consult
        marginalia
        all-the-icons-completion
        embark
        embark-consult
        corfu
        orderless
        cape
        devdocs
        yasnippet
        wgrep
        tempel
        projectile
        simple-httpd
        avy
        evil-avy
        ace-link
        ace-window
        helpful
        format-all
        web-mode
        lua-mode
        nix-mode
        cmake-mode
        fennel-mode
        yaml-mode
        docker
        docker-tramp
        fish-mode
        markdown-mode
        qml-mode
        csv-mode
        restclient
        ob-restclient
        dart-mode
        flutter
        hover
        direnv
        all-the-icons-dired
        dired-single
        dired-rainbow
        diredfl
        dired-rsync
        fd-dired
        ledger-mode
        org-msg
        calfw
        calfw-org
        calfw-ical
        org-caldav
        org-wild-notifier
        magit
        sly
        nov
        elfeed
        elfeed-org
        bongo
        emms
        transmission
        hass
        pass
        password-store
        password-store-otp
        plz
        elpaPackages.ement
        mastodon
        qrencode
        gcmh
        use-package
        esh-autosuggest
        pkgs.mu
      ]));
    defaultEditor = true;
  };
}