diff options
Diffstat (limited to 'config/doom/config.org')
-rw-r--r-- | config/doom/config.org | 271 |
1 files changed, 211 insertions, 60 deletions
diff --git a/config/doom/config.org b/config/doom/config.org index 3d203aa..577f1f9 100644 --- a/config/doom/config.org +++ b/config/doom/config.org @@ -11,6 +11,22 @@ #+begin_src emacs-lisp (setq doom-font (font-spec :family "DejaVu Sans Mono" :size 18 :weight 'semi-light)) (setq doom-theme 'doom-gruvbox) +(add-hook 'prog-mode-hook 'prettify-symbols-mode) + +(defun on/prettify-symbols () + "Common added symbols." + (mapc (lambda (p) + (cl-pushnew p prettify-symbols-alist :test #'equal)) + '(("<=" . ?≤) + (">=" . ?≥) + ("->" . ?→) + ("->>" . ?↠) + ("=>" . ?⇒) + ("/=" . ?≠) ("!=" . ?≠) + ("::" . ?∷) + ("lambda" . ?λ)))) + +(add-hook 'prog-mode-hook 'on/prettify-symbols) #+end_src This determines the style of line numbers in effect. If set to `nil', line numbers are disabled. For relative line numbers, set this to `relative'. @@ -88,6 +104,9 @@ Because I always need help and it should come up quickly (emacs-lisp-mode) (display-buffer (current-buffer)))) #+end_src +#+begin_src emacs-lisp + (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) +#+end_src * Dictionary #+begin_src emacs-lisp :tangle "packages.el" (package! lexic) @@ -110,6 +129,7 @@ Shamelessly copied from https://tecosaur.github.io/emacs-config/#dictionary * Orgmode #+begin_src emacs-lisp (after! org + (setq org-tags-column (- fill-column)) (setcdr (assoc "j" org-capture-templates) '("Journal" entry (file+olp+datetree +org-capture-journal-file) "* %(format-time-string \"%H:%M\") %?\n%a\n%i" @@ -119,20 +139,19 @@ Shamelessly copied from https://tecosaur.github.io/emacs-config/#dictionary `("e" "Event" entry (file ,(expand-file-name "caldav.org" org-directory)) "* %?\n%^T\n%i\n%a")) - (add-to-list 'org-capture-templates - `("i" "Isar-Speak Contact" - entry (file ,(expand-file-name "Isar-Speak.org" org-directory)) - "* INTRS [[notmuch-search:%:fromaddress][%:fromname]] -:PROPERTIES: -:EMAIL: %:fromaddress -:END: -Invited: %^t -")) + (setq org-roam-capture-templates '(("d" "default" plain "%i\n%?" :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}") :unnarrowed t)) org-roam-capture-ref-templates org-roam-capture-templates)) + +(use-package! semantic-search + :after org + :load-path "~/dev/dotfiles/scratch/semgrep" + :commands (semantic-search) + :config + (setq semantic-server-url "http://localhost:8080")) #+end_src ** Alerts This is to set the reminders of calendar events. @@ -155,13 +174,18 @@ this new window. #+begin_src emacs-lisp (use-package! cal-sync :load-path "~/dev/org-caldav" - :commands (cal-sync-push cal-sync-import-file cal-sync-delete) + :commands (cal-sync-push cal-sync-import-file cal-sync-delete on/calendar-fetch) :init (map! :leader (:prefix-map "mc" "p" #'cal-sync-push "f" #'cal-sync-import-file)) :config - (setq cal-sync-url "https://cloud.oscarnajera.com/remote.php/dav/calendars/oscar" + (defun on/calendar-fetch () + (interactive) + (call-process "org_agenda_sync" + nil (list :file (expand-file-name "~/org/caldav.org")) nil + "--format" "org")) + (setq cal-sync-url "https://oscar@cloud.oscarnajera.com/remote.php/dav/calendars/oscar" cal-sync-calendar-id "personal-1" org-icalendar-date-time-format ":%Y%m%dT%H%M%SZ")) #+end_src @@ -219,23 +243,37 @@ this new window. #+begin_src emacs-lisp (after! elfeed (setq elfeed-feeds - '("https://sachachua.com/blog/feed" + '("http://feeds.feedburner.com/MeltingAsphalt" + "http://feeds.feedburner.com/TroyHunt" + "http://kitchingroup.cheme.cmu.edu/blog/feed/index.xml" "http://www.howardism.org/index.xml" - "https://reyify.com/api/rss" - "https://guix.gnu.org/feeds/blog.atom" "https://ag91.github.io/rss.xml" + "https://architectelevator.com/feed.xml" + "https://bitcoinops.org/feed.xml" + "https://cyberwardog.blogspot.com/feeds/posts/default" "https://daryl.wakatara.com/rss.xml" + "https://guix.gnu.org/feeds/blog.atom" + "https://hboeck.de/rss.xml" + "https://jackrusher.com/feed.xml" "https://nullprogram.com/feed/" + "https://oscarnajera.com/post/index.xml" + "https://paulstamatiou.com/posts.xml" + "https://planet.archlinux.org/atom.xml" + "https://reyify.com/api/rss" + "https://sachachua.com/blog/feed" + "https://serokell.io/blog.rss.xml" + "https://stevelosh.com/rss.xml" + "https://www.archlinux.org/feeds/news/" + "https://www.n16f.net/blog/index.xml" "https://www.schneier.com/feed/atom" - "https://stevelosh.com/rss.xml"))) - + "https://www.tweag.io/rss.xml"))) #+end_src * Email ** Notmuch #+begin_src emacs-lisp :tangle "packages.el" -(package! notmuch :pin "7b5921877e748338359a25dae578771f768183af") -(package! org-mime :pin "a7bf07316f93015e4f853ea0fc5b8d05b4a7695d") -(package! ol-notmuch :pin "126fb446d8fa9e54cf21103afaf506fd81273c02") +(package! notmuch :pin "c769658360e10a6d01a4134e680e2f498741bc5c") +(package! org-mime :pin "cc00afcf0291633324364c1c83bfe2833cfdc1bf") +(package! ol-notmuch :pin "781c3518a537da2a8b5e8a4424f9441df463a147") #+end_src #+BEGIN_SRC emacs-lisp (use-package! notmuch @@ -367,18 +405,14 @@ this new window. (defun on/registered-mail-accounts () "Read mbsync config to extract IMAPAccounts." - (let ((buffer (find-file-noselect - (expand-file-name - "~/dev/dotfiles/mail/dot-mbsyncrc.personal")))) - (with-current-buffer buffer - (goto-char (point-min)) - (let ((pick (prog1 (->> - (cl-loop while (search-forward-regexp (rx bol "IMAPAccount " (group (+ any)) eol) nil t) - collect (match-string 1)) - (cons "all") - (completing-read "Which mailbox"))))) - (kill-buffer buffer) - (if (string= pick "all") nil (list pick)))))) + (with-temp-buffer + (insert-file-contents (expand-file-name "~/.mbsyncrc")) + (let ((pick (thread-last + (cl-loop while (search-forward-regexp (rx bol "IMAPAccount " (group (+ any)) eol) nil t) + collect (match-string 1)) + (cons "all") + (completing-read "Which mailbox")))) + (if (string= pick "all") nil (list pick))))) (define-derived-mode mail-sync-log-mode comint-mode "mail-sync-log" "Major mode for reading mail sync." @@ -407,21 +441,27 @@ this new window. smtpmail-local-domain "oscarnajera.com") (defun set-smtp-server () - (let* ((default-smtp-conf '("mail.oscarnajera.com" 587 starttls "hi")) - (smtp-from-server-alist - '(("Oscar Najera <najera.oscar@gmail.com>" - "smtp.googlemail.com" 587 starttls "najera.oscar"))) - (smtp-conf (alist-get (save-restriction - (message-narrow-to-headers) - (message-fetch-field "from")) - smtp-from-server-alist default-smtp-conf - nil #'string=))) - (-let [(server port protocol user) smtp-conf] - (setq smtpmail-smtp-server server - smtpmail-smtp-service port - smtpmail-stream-type protocol - smtpmail-smtp-user user) - (message "SMTP server changed to %s in port %s by %s" server port protocol)))) + (-let* (((user host) + (thread-first + (message-field-value "from" ) + (mail-extract-address-components) + (cadr) + (string-split "@"))) + (smtp-servers '("oscarnajera.com" "mail.oscarnajera.com" + "gmail.com" "smtp.googlemail.com" + "byteplant.com" "smtp.byteplant.com")) + ((&plist :host :user :port :secret) + (car + (auth-source-search :host + (or (plist-get smtp-servers host #'string=) + "mail.oscarnajera.com") + :user user + :max 1)))) + (setq smtpmail-smtp-server host + smtpmail-smtp-service (string-to-number port) + smtpmail-stream-type 'starttls + smtpmail-smtp-user user) + (message "SMTP server changed to %s %s %s" host port user))) (add-hook 'message-send-mail-hook 'set-smtp-server)) #+end_src @@ -433,6 +473,19 @@ this new window. #+begin_src emacs-lisp (use-package! khardel) #+end_src +* IRC +#+begin_src emacs-lisp +(set-irc-server! "irc.libera.chat" + `(:tls t + :port 6697 + :nick "titan-c" + :sasl-username ,(+pass-get-user "Social/freenode/titan-c") + :sasl-password (lambda (&rest _) (+pass-get-secret "Social/freenode/titan-c")) + :channels ("#emacs" "#guix"))) +#+end_src + +#+RESULTS: + * Ledger Emacs mode for managing ledger text files #+BEGIN_SRC emacs-lisp @@ -442,20 +495,21 @@ Emacs mode for managing ledger text files (defun on/ledger-link-invoice () "Attach an invoice file to this posting." (interactive) + (ledger-navigate-beginning-of-xact) + (end-of-line) (when-let* ((date (ledger-xact-date)) - (payee (replace-regexp-in-string " " "_" (string-trim-right (ledger-xact-payee)))) - (src-file (read-file-name "Attach: " "~/dev/journal/Empresa_DE/")) + (payee (thread-last + (ledger-xact-payee) + (string-trim) + (replace-regexp-in-string (rx (+ (or space punctuation))) "_"))) + (src-file (read-file-name "Attach: ")) (file-name (concat "Empresa_DE/" date "_" payee "." (file-name-extension src-file)))) - (ledger-navigate-beginning-of-xact) - (end-of-line) - (rename-file src-file (expand-file-name file-name "/home/titan/dev/journal/")) - (newline) - (insert " ; Invoice: " file-name)))) + (insert "\n ; Invoice: " file-name) + (rename-file src-file (expand-file-name file-name))))) #+end_src ** CSV #+begin_src emacs-lisp :tangle "packages.el" (package! parse-csv) -(package! emacsql-sqlite3) #+end_src ** Crypto #+begin_src emacs-lisp @@ -465,8 +519,8 @@ Emacs mode for managing ledger text files :init (defun on/cardano-set-network () (interactive) - (let* ((networks '((:mainnet "/tmp/nina-mn.socket" "http://localhost:8090" "--mainnet") - (:preview "/tmp/nina-pr.socket" "http://localhost:8091" "--testnet-magic" "2"))) + (let* ((networks '((:mainnet "/run/cardano-node-mainnet/socket" "http://localhost:8090" "--mainnet") + (:preview "/run/cardano-node-preview/socket" "http://localhost:8091" "--testnet-magic" "2"))) (pick (alist-get (completing-read "Pick network" networks) @@ -485,7 +539,7 @@ Emacs mode for managing ledger text files cardano-wallet-tx-log-mode))))) (setq cardano-tx-log-level 'debug) ;; (setq cardano-cli-command (expand-file-name "~/dev/cardano/cardano-node/cli")) - (setq cardano-tx-cli-command "/home/titan/dev/cardano/cardano-node/dist-newstyle/build/x86_64-linux/ghc-8.10.7/cardano-cli-1.35.3/x/cardano-cli/build/cardano-cli/cardano-cli") + (setq cardano-tx-cli-command "/usr/bin/cardano-cli") (setq cardano-tx-db-keyring-dir "~/dev/cardano/emacs-wallet/keys/demo")) (use-package! cardano-wallet @@ -526,10 +580,33 @@ Emacs mode for managing ledger text files #+begin_src emacs-lisp :tangle "packages.el" (package! emacsql-psql) #+end_src + +#+begin_src emacs-lisp +(after! format-all + (define-format-all-formatter sqlformat + (:executable "pg_format") + (:install) + (:modes sql-mode) + (:format + (format-all--buffer-easy + executable + "-s2" "-g" "-U2" + "-")))) +#+end_src ** WEB +#+begin_src emacs-lisp :tangle "packages.el" +(package! impatient-mode) +#+end_src #+begin_src emacs-lisp -(after! web-mode - (setq-hook! 'web-mode-hook +format-with :none)) +(after! skewer-mode + (setq httpd-port 8095)) + +(use-package! impatient-mode + :commands impatient-mode) + +(use-package! trident-mode + :commands trident-mode + :load-path "~/dev/emacs-lisp/trident-mode.el/") #+end_src ** Haskell #+begin_src emacs-lisp @@ -542,6 +619,36 @@ Emacs mode for managing ledger text files #+begin_src emacs-lisp (setq-hook! 'clojure-mode-hook +format-with :none) #+end_src +** Common Lisp +#+begin_src emacs-lisp +(after! sly + (setq sly-lisp-implementations + '((sbcl-large ("sbcl" "--dynamic-space-size" "2048")) + (sbcl ("sbcl"))))) +#+end_src +** C +#+begin_src emacs-lisp +(after! lsp-clangd + (setq lsp-clients-clangd-args + '("-j=3" + "--background-index" + "--clang-tidy" + "--completion-style=detailed" + "--header-insertion=never" + "--header-insertion-decorators=0")) + (set-lsp-priority! 'clangd 2)) +#+end_src + +* Video Editing +#+begin_src emacs-lisp :tangle "packages.el" +(package! subed + :recipe (:host github :repo "sachac/subed" :files ("subed/*.el"))) +#+end_src + +#+begin_src emacs-lisp +(use-package! subed) +#+end_src + * Admin #+begin_src emacs-lisp :tangle "packages.el" (package! guix) @@ -553,8 +660,43 @@ Emacs mode for managing ledger text files (package! json-rpc) #+end_src #+begin_src emacs-lisp -(use-package! json-rpc) +(use-package! btc-explorer + :load-path "~/dev/emacs-lisp/btc-explorer/" + :commands (on/bitcoin-rpc-connect) + :config + (use-package json-rpc) + (defun on/bitcoin-rpc-connect () + (interactive) + (let* ((networks '(:mainnet 8332 + :mainnet-r 8335 + :testnet 18332 + :testnet-r 18335 + :regtest 18443)) + (host "localhost") + (user "crazy") + (port (plist-get networks + (intern (completing-read "Pick network: " networks)))) + (secret (-some-> + (auth-source-search :host host) + (car) + (plist-get :secret)))) + (when (and btc-explorer-bitcoind + (json-rpc-live-p btc-explorer-bitcoind)) + (json-rpc-close btc-explorer-bitcoind)) + (setq btc-explorer-bitcoind + (json-rpc-connect host port user (funcall secret)))))) + +(use-package! lnd + :load-path "~/dev/emacs-lisp/btc-explorer/" + :commands (lnd-pick-node) + :config + (setq lnd-nodes '(("local" "https://localhost:8480/v1/" + "/run/media/titan/ext_backup/personal/bitcoin/lnd/data/chain/bitcoin/testnet/admin.macaroon") + ("remote" "https://localhost:8481/v1/" + "~/dev/emacs-lisp/btc-explorer/admin.macaroon")))) + #+end_src + #+begin_src emacs-lisp (use-package! shepherd :load-path "~/dev/dotfiles/elisp/" @@ -564,3 +706,12 @@ Emacs mode for managing ledger text files #+begin_src emacs-lisp (use-package! mpc) #+end_src + +#+begin_src emacs-lisp +(use-package! journalctl + :load-path "~/dev/dotfiles/elisp" + :commands (journalctl)) +#+end_src +#+begin_src emacs-lisp +(setq netstat-program-options '("-aptu")) +#+end_src |