1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
(define-module (epistemia packages emacs)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system emacs)
#:use-module ((guix licenses) :prefix license:)
#:use-module (gnu packages emacs-build)
#:use-module (gnu packages emacs-xyz))
(define-public emacs-kaolin-themes
(package
(name "emacs-kaolin-themes")
(version "1.7.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ogdenwebb/emacs-kaolin-themes")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1lbqvs2jqvs6x8gj7bali24mw2fl6gk184zln6avy6wmam7n8dqi"))))
(build-system emacs-build-system)
(propagated-inputs (list emacs-autothemer))
(arguments
'(#:include '("^[^/]*.el$" "^[^/]*.el.in$"
"^dir$"
"^[^/]*.info$"
"^[^/]*.texi$"
"^[^/]*.texinfo$"
"^doc/dir$"
"^doc/[^/]*.info$"
"^doc/[^/]*.texi$"
"^doc/[^/]*.texinfo$"
"^themes/[^/]*.el$")
#:exclude '("^.dir-locals.el$" "^test.el$" "^tests.el$"
"^[^/]*-test.el$" "^[^/]*-tests.el$")))
(home-page "https://github.com/ogdenwebb/emacs-kaolin-themes")
(synopsis "A set of eye pleasing themes")
(description
"Kaolin is a set of eye pleasing themes for GNU Emacs With support a large number
of modes and external packages. Kaolin themes are based on the pallete that was
originally inspired by Sierra.vim with adding some extra colors. ------- This
package includes the following themes ------- * kaolin-dark - a dark jade
variant inspired by Sierra.vim. * kaolin-light - light variant of the original
kaolin-dark. * kaolin-aurora - Kaolin meets polar lights. * kaolin-bubblegum -
Kaolin colorful theme with dark blue background. * kaolin-eclipse - a dark
purple variant. * kaolin-galaxy - bright theme based on one of the Sebastian
Andaur arts. * kaolin-mono-dark - almost monochrome dark green Kaolin theme. *
kaolin-mono-light - light variant of monochrome theme. * kaolin-ocean - dark
blue variant. * kaolin-shiva - theme with autumn colors and melanzane
background. * kaolin-temple - dark brown background with syntax highlighting
based on orange and cyan shades. * kaolin-valley-dark - colorful Kaolin theme
with brown background. * kaolin-valley-light - light version of
kaolin-valley-dark theme. ------- Configuration example ------- (require
kaolin-themes) (load-theme kaolin-dark t) ;; Apply treemacs customization for
Kaolin themes, requires the all-the-icons package. (kaolin-treemacs-theme) ;; Or
if you have use-package installed (use-package kaolin-themes :config (load-theme
kaolin-dark t) (kaolin-treemacs-theme)) ;; Custom theme settings ;; The
following set to t by default (setq kaolin-themes-bold t ; If nil, disable the
bold style. kaolin-themes-italic t ; If nil, disable the italic style.
kaolin-themes-underline t) ; If nil, disable the underline style. ------- Some
extra theme features, disabled by default ------- ;; If t, use the wave
underline style instead of regular underline. (setq kaolin-themes-underline-wave
t) ;; When t, will display colored hl-line style (setq
kaolin-themes-hl-line-colored t).")
(license license:gpl3)))
(define-public emacs-gptel-new
(package
(name "emacs-gptel-new")
(version "20260410.711")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/karthink/gptel")
(commit "8d6411b5f89d796c817ff79324973b8910e164fe")))
(file-name (git-file-name name version))
(sha256
(base32 "0zl5qdp9qqh8chadsp2m3jpbpsxlywdlfkax8p97y73q1yias0q6"))))
(build-system emacs-build-system)
(propagated-inputs (list emacs-transient emacs-compat))
(home-page "https://github.com/karthink/gptel")
(synopsis "Interact with ChatGPT or other LLMs")
(description
"gptel is a simple Large Language Model chat client, with support for multiple
models and backends. It works in the spirit of Emacs, available at any time and
in any buffer. gptel supports: - The services @code{ChatGPT}, Azure, Gemini,
Anthropic AI, Together.ai, Perplexity, AI/ML API, Anyscale, @code{OpenRouter},
Groq, @code{PrivateGPT}, @code{DeepSeek}, Cerebras, Github Models, @code{GitHub}
Copilot chat, AWS Bedrock, Novita AI, @code{xAI}, Sambanova, Mistral Le Chat and
Kagi (@code{FastGPT} & Summarizer). - Local models via Ollama, Llama.cpp,
Llamafiles or GPT4All Additionally, any LLM service (local or remote) that
provides an @code{OpenAI-compatible} API is supported. Features: - Interact
with LLMs from anywhere in Emacs (any buffer, shell, minibuffer, wherever). -
LLM responses are in Markdown or Org markup. - Supports conversations and
multiple independent sessions. - Supports tool-use to equip LLMs with agentic
capabilities. - Supports Model Context Protocol (MCP) integration using the
mcp.el package. - Supports multi-modal models (send images, documents). -
Supports \"reasoning\" content in LLM responses. - Save chats as regular
Markdown/Org/Text files and resume them later. - You can go back and edit your
previous prompts or LLM responses when continuing a conversation. These will be
fed back to the model. - Redirect prompts and responses easily - Rewrite,
refactor or fill in regions in buffers. - Write your own commands for custom
tasks with a simple API. Requirements for @code{ChatGPT}, Azure, Gemini or Kagi:
- You need an appropriate API key. Set the variable `gptel-api-key to the key
or to a function of no arguments that returns the key. (It tries to use
`auth-source by default) @code{ChatGPT} is configured out of the box. For the
other sources: - For Azure: define a gptel-backend with `gptel-make-azure'. -
For Gemini: define a gptel-backend with `gptel-make-gemini'. - For Anthropic
(Claude): define a gptel-backend with `gptel-make-anthropic'. - For AI/ML API,
Together.ai, Anyscale, Groq, @code{OpenRouter}, @code{DeepSeek}, Cerebras or
Github Models: define a gptel-backend with `gptel-make-openai'. - For
@code{PrivateGPT}: define a backend with `gptel-make-privategpt'. - For
Perplexity: define a backend with `gptel-make-perplexity'. - For Deepseek:
define a backend with `gptel-make-deepseek'. - For Kagi: define a gptel-backend
with `gptel-make-kagi'. For local models using Ollama, Llama.cpp or GPT4All: -
The model has to be running on an accessible address (or localhost) - Define a
gptel-backend with `gptel-make-ollama or `gptel-make-gpt4all'. - Llama.cpp or
Llamafiles: Define a gptel-backend with `gptel-make-openai'. Consult the
package README for examples and more help with configuring backends. Usage:
gptel can be used in any buffer or in a dedicated chat buffer. The interaction
model is simple: Type in a query and the response will be inserted below. You
can continue the conversation by typing below the response. To use this in any
buffer: - Call `gptel-send to send the buffer's text up to the cursor. Select a
region to send only the region. - You can select previous prompts and responses
to continue the conversation. - Call `gptel-send with a prefix argument to
access a menu where you can set your backend, model and other parameters, or to
redirect the prompt/response. To use this in a dedicated buffer: - M-x gptel:
Start a chat session. - In the chat session: Press `C-c RET (`gptel-send') to
send your prompt. Use a prefix argument (`C-u C-c RET') to access a menu. In
this menu you can set chat parameters like the system directives, active backend
or model, or choose to redirect the input or output elsewhere (such as to the
kill ring or the echo area). - You can save this buffer to a file. When opening
this file, turn on `gptel-mode before editing it to restore the conversation
state and continue chatting. - To include media files with your request, you can
add them to the context (described next), or include them as links in Org or
Markdown mode chat buffers. Sending media is disabled by default, you can turn
it on globally via `gptel-track-media', or locally in a chat buffer via the
header line. Include more context with requests: If you want to provide the LLM
with more context, you can add arbitrary regions, buffers, files or directories
to the query with `gptel-add'. To add text or media files, call `gptel-add in
Dired or use the dedicated `gptel-add-file'. You can also add context from
gptel's menu instead (`gptel-send with a prefix arg), as well as examine or
modify context. When context is available, gptel will include it with each LLM
query. LLM Tool use: gptel supports \"tool calling\" behavior, where LLMs can
specify arguments with which to call provided \"tools\" (elisp functions). The
results of running the tools are fed back to the LLM, giving it capabilities and
knowledge beyond what is available out of the box. For example, tools can
perform web searches or API lookups, modify files and directories, and so on.
Tools can be specified via `gptel-make-tool', or obtained from other
repositories, or from Model Context Protocol (MCP) servers using the mcp.el
package. See the README for details. Tools can be included with LLM queries
using gptel's menu, or from `gptel-tools'. Rewrite interface In any buffer:
with a region selected, you can rewrite prose, refactor code or fill in the
region. This is accessible via `gptel-rewrite', and also from the `gptel-send
menu. Presets Define a bundle of configuration (model, backend, system message,
tools etc) as a \"preset\" that can be applied together, making it easy to switch
between tasks in gptel. Presets can be saved and applied from gptel's transient
menu. You can also include a cookie of the form \"@@preset-name\" in the prompt
to send a request with a preset applied. This feature works everywhere, but
preset cookies are also fontified in chat buffers. gptel in Org mode: gptel
offers a few extra conveniences in Org mode: - You can limit the conversation
context to an Org heading with `gptel-org-set-topic'. - You can have branching
conversations in Org mode, where each hierarchical outline path through the
document is a separate conversation branch. See the variable
`gptel-org-branching-context'. - You can declare the gptel model, backend,
temperature, system message and other parameters as Org properties with the
command `gptel-org-set-properties'. gptel queries under the corresponding
heading will always use these settings, allowing you to create mostly
reproducible LLM chat notebooks. Finally, gptel offers a general purpose API
for writing LLM ineractions that suit your workflow. See `gptel-request', and
`gptel-fsm for more advanced usage.")
(license license:gpl3)))
(define-public emacs-gptel-agent
(package
(name "emacs-gptel-agent")
(version "20260412.716")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/karthink/gptel-agent")
(commit "bef06bccdbf847e0c4a94d1b57dd96d979437430")))
(file-name (git-file-name name version))
(sha256
(base32 "1g33w8db2g33l3qf4f9vnafkdpilaxh4s9cy76yv79rphg92ipaw"))))
(build-system emacs-build-system)
(propagated-inputs (list emacs-compat emacs-gptel-new emacs-yaml
emacs-orderless))
(arguments
'(#:include '("^[^/]*.el$" "^[^/]*.el.in$"
"^dir$"
"^[^/]*.info$"
"^[^/]*.texi$"
"^[^/]*.texinfo$"
"^doc/dir$"
"^doc/[^/]*.info$"
"^doc/[^/]*.texi$"
"^doc/[^/]*.texinfo$"
"^agents$")
#:exclude '("^.dir-locals.el$" "^test.el$" "^tests.el$"
"^[^/]*-test.el$" "^[^/]*-tests.el$")))
(home-page "https://github.com/karthink/gptel-agent")
(synopsis "Agentic LLM use for gptel")
(description
"This is a collection of tools and prompts to use gptel \"agentically\" with any
LLM, to autonomously perform tasks. It has access to - the web (via basic web
search, URL fetching and @code{YouTube} video metadata), - local files
(read/write/edit), - the state of Emacs (documentation and Elisp evaluation), -
and Bash, if you are in a POSIX-y environment. To use gptel-agent in a
dedicated buffer: - Set `gptel-model and `gptel-backend to use your preferred
LLM. - Run M-x `gptel-agent'. This will open a buffer with the agent preset
loaded. - Use gptel as usual, calling `gptel-send etc. - If you change the
system prompt, tools or other settings in this buffer, you can reset the agent
state by (re)applying the \"gptel-agent\" preset from gptel's menu. To use
gptel-agent anywhere in Emacs: - As with gptel, you can use gptel-agent in any
buffer. Just apply the \"gptel-agent\" preset in the buffer, or include
\"@@gptel-agent\" in a prompt. gptel-agent can delegate tasks to \"sub-agents\".
Sub-agents can be specified in Markdown or Org files in a directory. To see how
to specify agents, examine the \"agents\" directory in this package. You can add
your directory of agents to `gptel-agent-dirs', which see. Please note:
gptel-agent uses significantly more tokens than the average gptel LLM
interaction.")
(license license:gpl3)))
|