(require 'borg)
(borg-initialize)
+(require 'borg-nix-shell)
+(setq borg-build-shell-command 'borg-nix-shell-build-command)
+
(with-eval-after-load 'bind-key
(bind-keys
:package borg
(defalias 'locate #'counsel-locate))
#+end_src
+*** eshell
+
+#+begin_src emacs-lisp
+(use-package eshell
+ :commands eshell
+ :config
+ (eval-when-compile (defvar eshell-prompt-regexp))
+ (defun amin/eshell-quit-or-delete-char (arg)
+ (interactive "p")
+ (if (and (eolp) (looking-back eshell-prompt-regexp nil))
+ (eshell-life-is-too-much)
+ (delete-char arg)))
+
+ (defun amin/eshell-clear ()
+ (interactive)
+ (let ((inhibit-read-only t))
+ (erase-buffer))
+ (eshell-send-input))
+
+ (defun amin|eshell-setup ()
+ (bind-keys :map eshell-mode-map
+ ("C-d" . amin/eshell-quit-or-delete-char)
+ ("C-l" . amin/eshell-clear)))
+
+ :hook (eshell-mode . amin|eshell-setup))
+#+end_src
+
* Borg's =layer/essentials=
TODO: break this giant source block down into individual org sections.
:after #'my-projectile-invalidate-cache))))
#+end_src
+** [[https://github.com/wasamasa/shackle][shackle]]
+
+#+begin_src emacs-lisp
+(use-package shackle
+ :demand t
+ :commands shackle-mode
+ :config
+ (shackle-mode 1)
+ (setq shackle-rules
+ '(("*Help*" :align right :select t :size 0.5)
+ ("\\`\\*helm.*?\\*\\'" :regexp t :align t)
+ ((compilation-mode "\\`\\*magit-diff: .*?\\'") :regexp t :noselect t)
+ ("*magit-dispatch-popup*" :align bottom)
+ ((inferior-scheme-mode "*shell*" "*eshell*") :popup t))
+ shackle-default-rule '(:select t)
+ shackle-default-size 0.4
+ shackle-inhibit-window-quit-on-same-windows t))
+#+end_src
+
+** [[https://github.com/Wilfred/helpful][helpful]]
+
+#+begin_src emacs-lisp
+(use-package helpful
+ :bind
+ (("C-h f" . helpful-callable)
+ ("C-h v" . helpful-variable)
+ ("C-h k" . helpful-key)
+ ("C-c C-d" . helpful-at-point)
+ ("C-h F" . helpful-function)
+ ("C-h C" . helpful-command)))
+#+end_src
+
+** [[https://github.com/kyagi/shell-pop-el][shell-pop]]
+
+#+begin_src emacs-lisp
+(use-package shell-pop
+ :config
+ (add-to-list 'shackle-rules '("\\*eshell\\*" :regexp t :same t))
+ :custom
+ (shell-pop-universal-key "C-c e")
+ (shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell)))))
+#+end_src
+
* Email
** [[https://notmuchmail.org][notmuch]]
;; (advice-add #'notmuch-bury-or-kill-this-buffer
;; :override #'kill-this-buffer)
:bind
- (:map notmuch-common-keymap
- ("g" . notmuch-poll-and-refresh-this-buffer))
(:map notmuch-hello-mode-map
("u" . (lambda ()
"Search for `unread'-tagged messages"