{
programs.zoxide.enable = true;
}
home-manager
{
_.persist.allUsers.directories = [ ".local/share/zoxide" ];
}
nixos
(defun vl/zoxide-record (dir)
(call-process "zoxide" nil nil nil "add" dir))
(advice-add 'eshell-add-to-dir-ring :after #'vl/zoxide-record)
(add-hook 'dired-mode-hook (lambda () (vl/zoxide-record dired-directory)))
(defun vl/zoxide-query ()
(let ((candidates (with-temp-buffer
(call-process "zoxide" nil t nil "query" "-l")
(split-string (buffer-string) "\n" t))))
(consult--read
candidates
:prompt "Zoxide: "
:sort nil)))
(defun vl/dired-zoxide ()
(interactive)
(dired (vl/zoxide-query)))
(setup eshell
(:when-loaded
(defun eshell/zi ()
(eshell/cd (vl/zoxide-query)))
(defun eshell/z (target)
(let ((res (with-temp-buffer
(call-process "zoxide" nil t nil "query" target)
(s-trim (buffer-string)))))
(eshell/cd res)))))
Emacs integration