Compare commits

...

9 commits

5 changed files with 128 additions and 32 deletions

View file

@ -11,7 +11,7 @@ Volume=%h/.local/share/ollama:/root/.ollama:ro,z
# keep-sorted end
[Install]
WantedBy=multi-user.target
WantedBy=default.target
[Service]
# keep-sorted start

View file

@ -32,7 +32,7 @@
)
load-path))
:config
; keep-sorted start
;; keep-sorted start
(defalias 'yes-or-no-p 'y-or-n-p)
(display-battery-mode)
(display-time-mode)
@ -42,9 +42,9 @@
(put 'dired-find-alternate-file 'disabled nil)
(set-default-file-modes #o750)
(windmove-default-keybindings 'super)
; keep-sorted end
;; keep-sorted end
:custom
; keep-sorted start
;; keep-sorted start
(auto-save-interval 20)
(auto-save-visited-mode t)
(auto-save-visited-predicate #'should-auto-save-current-buffer)
@ -57,7 +57,7 @@
(inhibit-startup-screen t)
(show-paren-context-when-offscreen 'overlay)
(xref-search-program 'ripgrep)
; keep-sorted end
;; keep-sorted end
)
(use-package diminish)
@ -75,10 +75,10 @@
("<C-tab>" . dired-subtree-cycle)
("<S-iso-lefttab>" . dired-subtree-remove))
:config
; keep-sorted start
;; keep-sorted start
(defadvice dired-subtree-cycle (after add-icons activate) (revert-buffer))
(defadvice dired-subtree-toggle (after add-icons activate) (revert-buffer))
; keep-sorted end
;; keep-sorted end
:custom
(dired-subtree-use-backgrounds nil))
@ -157,7 +157,7 @@
("M-." . org-open-at-point)
("M-," . org-mark-ring-goto))
:custom
; keep-sorted start block=yes
;; keep-sorted start block=yes
(org-agenda-start-on-weekday 0)
(org-agenda-weekend-days '(5 6))
(org-default-notes-file "~/Documents/notes.org")
@ -172,7 +172,7 @@
"** TODO %?\n %U")
))
(org-clock-sound "~/Music/single-ding.wav")
; keep-sorted end
;; keep-sorted end
)
(use-package org-contrib)
@ -217,7 +217,6 @@
(use-package apheleia
:config
(apheleia-global-mode)
(setf (alist-get 'emacs-lisp-mode apheleia-mode-alist nil 'remove) nil)
(setf (alist-get 'ruff-isort apheleia-formatters)
'("ruff" "check"
"-n"
@ -244,10 +243,10 @@
(flymake-show-diagnostics-at-end-of-line t)
)
; Note: debugging Python in a virtualenv requires debugpy to be installed inside the venv
;; Note: debugging Python in a virtualenv requires debugpy to be installed inside the venv
(use-package dape)
; Requires poetry to be installed
;; Requires poetry to be installed
(use-package poetry)
(defun load-python-env ()
@ -278,10 +277,10 @@
:config
(require 'ein-notebook)
:custom
; keep-sorted start
;; keep-sorted start
(ein:jupyter-default-notebook-directory "~/Projects/notebooks")
(ein:output-area-inlined-images t)
; keep-sorted end
;; keep-sorted end
)
(use-package direnv
@ -306,29 +305,46 @@
auto-mode-alist))
)
(defun list-ollama-models ()
"Query the local Ollama server for the list of installed models."
(condition-case error-var
(mapcar #'intern (mapcar #'car (mapcar #'split-string (cdr (process-lines "podllama" "list")))))
(error
(message "Failed to list local models: %s" error-var)
())))
(defun enrich-ollama-models (available library)
"Enrich the available models with metadata from the library of known models."
(mapcar
(lambda (model)
(seq-find (lambda (x) (eq (car x) model)) library model))
available))
(use-package gptel
:hook
; keep-sorted start
;; keep-sorted start
(gptel-mode . gptel-highlight-mode)
(gptel-mode . visual-line-mode)
(gptel-post-response . gptel-end-of-response)
(gptel-post-stream . gptel-auto-scroll)
; keep-sorted end
;; keep-sorted end
:custom
; keep-sorted start
;; keep-sorted start
(gptel-backend (gptel-get-backend "Ollama"))
(gptel-default-mode 'org-mode)
(gptel-expert-commands t)
(gptel-highlight-methods '(face margin))
(gptel-model 'llama3.2:latest)
; keep-sorted end
;; keep-sorted end
:preface
(load "local-models.el")
(gptel-make-anthropic "Claude"
:stream t
:key 'gptel-api-key-from-auth-source
)
(gptel-make-ollama "Ollama"
:stream t
:models '(llama3.2:latest)
:models (enrich-ollama-models (list-ollama-models) gptel--local-models)
)
)
@ -339,10 +355,10 @@
(require 'emms-setup)
(emms-all)
:custom
; keep-sorted start
;; keep-sorted start
(emms-info-functions '(emms-info-native))
(emms-player-list '(emms-player-mpv))
; keep-sorted end
;; keep-sorted end
)
(defun my-qr-selection ()

View file

@ -0,0 +1,37 @@
(defconst gptel--local-models
'(
;; keep-sorted start
(
hf.co/Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2-GGUF:latest
:description "Uncensored model based on Llama-3.1-8b-Instruct"
:context-window 128
:cutoff-date "2023-12"
)
(
hf.co/TheBloke/MythoMax-L2-13B-GGUF:latest
:description "Proficient at both roleplaying and storywriting"
:context-window 32
)
(
hf.co/bartowski/cognitivecomputations_Dolphin-Mistral-24B-Venice-Edition-GGUF:latest
:description "Uncensored version of Mistral 24B"
:context-window 32
:cutoff-date "2023-10"
)
(
llama3.2:latest
:description "Instruction-tuned model optimized for multilingual dialogue"
:context-window 128
:cutoff-date "2023-12"
)
(
mollysama/rwkv-7-g0a3:13.3b
:description "Pure RNN reasoning model, suitable for post-training and fine-tuning"
:context-window 1000
:cutoff-date "2023-10"
)
;; keep-sorted end
)
"List of known local models and associated properties.
Refer to https://gptel.org/manual.html#models for a description of supported properties"
)

View file

@ -3,7 +3,53 @@
set -euo pipefail
IFS=$'\n\t'
if ! PARSED_OPTIONS=$(getopt -o "" --long "offline,volatile" --name "$0" -- "$@"); then
echo "Error parsing options." >&2
exit 1
fi
eval set -- "$PARSED_OPTIONS"
offline=false
volatile=false
while true; do
case "$1" in
--offline)
offline=true
shift
;;
--volatile)
volatile=true
shift
;;
--)
shift
break
;;
*)
echo "Internal error!" >&2
exit 1
;;
esac
done
mkdir --parents ~/.local/share/ollama/
pod_id=$(podman run --detach --rm --volume ~/.local/share/ollama/:/root/.ollama ollama:latest)
podman exec --interactive --tty "${pod_id}" ollama "$@"
podman kill "${pod_id}" > /dev/null
if [[ "true" == "${volatile}" ]]; then
PODMAN=(podman --transient-store)
MOUNTS=()
else
PODMAN=(podman)
MOUNTS=(--volume ~/.local/share/ollama/:/root/.ollama)
fi
if [[ "true" == "${offline}" ]]; then
NETWORK=(--network none)
else
NETWORK=()
fi
pod_id=$("${PODMAN[@]}" run --detach --rm "${MOUNTS[@]}" "${NETWORK[@]}" ollama:latest)
"${PODMAN[@]}" exec --interactive --tty "${pod_id}" ollama "$@"
"${PODMAN[@]}" kill "${pod_id}" > /dev/null

View file

@ -17,10 +17,7 @@ cargo_update() {
}
pipx_update() {
for venv in $(pipx list --json | jq --raw-output ".venvs | keys[]")
do
pipx upgrade "${venv}"
done
pipx upgrade-all
}
git_sync_update() {