Compare commits
6 commits
ed44c92fc9
...
157a03687d
| Author | SHA1 | Date | |
|---|---|---|---|
| 157a03687d | |||
| 9c4d290062 | |||
| 77f3b175ef | |||
| 23c8d41cbd | |||
| 8de98519ec | |||
| 73463a241f |
3 changed files with 82 additions and 28 deletions
|
|
@ -11,7 +11,7 @@ Volume=%h/.local/share/ollama:/root/.ollama:ro,z
|
||||||
# keep-sorted end
|
# keep-sorted end
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=default.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
# keep-sorted start
|
# keep-sorted start
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
)
|
)
|
||||||
load-path))
|
load-path))
|
||||||
:config
|
:config
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||||
(display-battery-mode)
|
(display-battery-mode)
|
||||||
(display-time-mode)
|
(display-time-mode)
|
||||||
|
|
@ -42,9 +42,9 @@
|
||||||
(put 'dired-find-alternate-file 'disabled nil)
|
(put 'dired-find-alternate-file 'disabled nil)
|
||||||
(set-default-file-modes #o750)
|
(set-default-file-modes #o750)
|
||||||
(windmove-default-keybindings 'super)
|
(windmove-default-keybindings 'super)
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
:custom
|
:custom
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(auto-save-interval 20)
|
(auto-save-interval 20)
|
||||||
(auto-save-visited-mode t)
|
(auto-save-visited-mode t)
|
||||||
(auto-save-visited-predicate #'should-auto-save-current-buffer)
|
(auto-save-visited-predicate #'should-auto-save-current-buffer)
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
(inhibit-startup-screen t)
|
(inhibit-startup-screen t)
|
||||||
(show-paren-context-when-offscreen 'overlay)
|
(show-paren-context-when-offscreen 'overlay)
|
||||||
(xref-search-program 'ripgrep)
|
(xref-search-program 'ripgrep)
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package diminish)
|
(use-package diminish)
|
||||||
|
|
@ -75,10 +75,10 @@
|
||||||
("<C-tab>" . dired-subtree-cycle)
|
("<C-tab>" . dired-subtree-cycle)
|
||||||
("<S-iso-lefttab>" . dired-subtree-remove))
|
("<S-iso-lefttab>" . dired-subtree-remove))
|
||||||
:config
|
:config
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(defadvice dired-subtree-cycle (after add-icons activate) (revert-buffer))
|
(defadvice dired-subtree-cycle (after add-icons activate) (revert-buffer))
|
||||||
(defadvice dired-subtree-toggle (after add-icons activate) (revert-buffer))
|
(defadvice dired-subtree-toggle (after add-icons activate) (revert-buffer))
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
:custom
|
:custom
|
||||||
(dired-subtree-use-backgrounds nil))
|
(dired-subtree-use-backgrounds nil))
|
||||||
|
|
||||||
|
|
@ -157,7 +157,7 @@
|
||||||
("M-." . org-open-at-point)
|
("M-." . org-open-at-point)
|
||||||
("M-," . org-mark-ring-goto))
|
("M-," . org-mark-ring-goto))
|
||||||
:custom
|
:custom
|
||||||
; keep-sorted start block=yes
|
;; keep-sorted start block=yes
|
||||||
(org-agenda-start-on-weekday 0)
|
(org-agenda-start-on-weekday 0)
|
||||||
(org-agenda-weekend-days '(5 6))
|
(org-agenda-weekend-days '(5 6))
|
||||||
(org-default-notes-file "~/Documents/notes.org")
|
(org-default-notes-file "~/Documents/notes.org")
|
||||||
|
|
@ -172,7 +172,7 @@
|
||||||
"** TODO %?\n %U")
|
"** TODO %?\n %U")
|
||||||
))
|
))
|
||||||
(org-clock-sound "~/Music/single-ding.wav")
|
(org-clock-sound "~/Music/single-ding.wav")
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package org-contrib)
|
(use-package org-contrib)
|
||||||
|
|
@ -217,7 +217,6 @@
|
||||||
(use-package apheleia
|
(use-package apheleia
|
||||||
:config
|
:config
|
||||||
(apheleia-global-mode)
|
(apheleia-global-mode)
|
||||||
(setf (alist-get 'emacs-lisp-mode apheleia-mode-alist nil 'remove) nil)
|
|
||||||
(setf (alist-get 'ruff-isort apheleia-formatters)
|
(setf (alist-get 'ruff-isort apheleia-formatters)
|
||||||
'("ruff" "check"
|
'("ruff" "check"
|
||||||
"-n"
|
"-n"
|
||||||
|
|
@ -236,18 +235,18 @@
|
||||||
(use-package flymake
|
(use-package flymake
|
||||||
:ensure nil
|
:ensure nil
|
||||||
:bind (:map flymake-mode-map
|
:bind (:map flymake-mode-map
|
||||||
("C-c C-l" . flymake-show-buffer-diagnostics)
|
("C-c C-l" . flymake-show-buffer-diagnostics)
|
||||||
("C-x C-l" . flymake-show-project-diagnostics)
|
("C-x C-l" . flymake-show-project-diagnostics)
|
||||||
("C-c C-n" . flymake-goto-next-error)
|
("C-c C-n" . flymake-goto-next-error)
|
||||||
("C-c C-p" . flymake-goto-prev-error))
|
("C-c C-p" . flymake-goto-prev-error))
|
||||||
:custom
|
:custom
|
||||||
(flymake-show-diagnostics-at-end-of-line t)
|
(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)
|
(use-package dape)
|
||||||
|
|
||||||
; Requires poetry to be installed
|
;; Requires poetry to be installed
|
||||||
(use-package poetry)
|
(use-package poetry)
|
||||||
|
|
||||||
(defun load-python-env ()
|
(defun load-python-env ()
|
||||||
|
|
@ -278,10 +277,10 @@
|
||||||
:config
|
:config
|
||||||
(require 'ein-notebook)
|
(require 'ein-notebook)
|
||||||
:custom
|
:custom
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(ein:jupyter-default-notebook-directory "~/Projects/notebooks")
|
(ein:jupyter-default-notebook-directory "~/Projects/notebooks")
|
||||||
(ein:output-area-inlined-images t)
|
(ein:output-area-inlined-images t)
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package direnv
|
(use-package direnv
|
||||||
|
|
@ -306,21 +305,30 @@
|
||||||
auto-mode-alist))
|
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)
|
||||||
|
())))
|
||||||
|
|
||||||
(use-package gptel
|
(use-package gptel
|
||||||
:hook
|
:hook
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(gptel-mode . gptel-highlight-mode)
|
(gptel-mode . gptel-highlight-mode)
|
||||||
(gptel-mode . visual-line-mode)
|
(gptel-mode . visual-line-mode)
|
||||||
(gptel-post-response . gptel-end-of-response)
|
(gptel-post-response . gptel-end-of-response)
|
||||||
(gptel-post-stream . gptel-auto-scroll)
|
(gptel-post-stream . gptel-auto-scroll)
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
:custom
|
:custom
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(gptel-backend (gptel-get-backend "Ollama"))
|
(gptel-backend (gptel-get-backend "Ollama"))
|
||||||
(gptel-default-mode 'org-mode)
|
(gptel-default-mode 'org-mode)
|
||||||
|
(gptel-expert-commands t)
|
||||||
(gptel-highlight-methods '(face margin))
|
(gptel-highlight-methods '(face margin))
|
||||||
(gptel-model 'llama3.2:latest)
|
(gptel-model 'llama3.2:latest)
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
:preface
|
:preface
|
||||||
(gptel-make-anthropic "Claude"
|
(gptel-make-anthropic "Claude"
|
||||||
:stream t
|
:stream t
|
||||||
|
|
@ -328,7 +336,7 @@
|
||||||
)
|
)
|
||||||
(gptel-make-ollama "Ollama"
|
(gptel-make-ollama "Ollama"
|
||||||
:stream t
|
:stream t
|
||||||
:models '(llama3.2:latest)
|
:models (list-ollama-models)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -339,10 +347,10 @@
|
||||||
(require 'emms-setup)
|
(require 'emms-setup)
|
||||||
(emms-all)
|
(emms-all)
|
||||||
:custom
|
:custom
|
||||||
; keep-sorted start
|
;; keep-sorted start
|
||||||
(emms-info-functions '(emms-info-native))
|
(emms-info-functions '(emms-info-native))
|
||||||
(emms-player-list '(emms-player-mpv))
|
(emms-player-list '(emms-player-mpv))
|
||||||
; keep-sorted end
|
;; keep-sorted end
|
||||||
)
|
)
|
||||||
|
|
||||||
(defun my-qr-selection ()
|
(defun my-qr-selection ()
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,53 @@
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
IFS=$'\n\t'
|
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/
|
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 "$@"
|
if [[ "true" == "${volatile}" ]]; then
|
||||||
podman kill "${pod_id}" > /dev/null
|
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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue