From e24f418e3499afd1e9e529b8656a35376e69f52a Mon Sep 17 00:00:00 2001 From: Marc Coquand Date: Tue, 22 Oct 2024 11:07:59 +0300 Subject: initial commit --- home/dots/.emacs | 863 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 863 insertions(+) create mode 100644 home/dots/.emacs (limited to 'home/dots/.emacs') diff --git a/home/dots/.emacs b/home/dots/.emacs new file mode 100644 index 0000000..9a931a1 --- /dev/null +++ b/home/dots/.emacs @@ -0,0 +1,863 @@ +;; -*- lexical-binding: t; -*- +(add-to-list 'load-path "~/.emacs.d/elisp") +(fset 'yes-or-no-p 'y-or-n-p) +(setq + inhibit-startup-screen t + default-frame-alist '((font . "Iosevka SS13 Extended") + (height . 170) + (line-spacing . 0.5)) + ;; undo + undo-limit 10000000 + undo-outer-limit 20000000 + + ;; Package list + package-list '( + magit + nix-mode + go-mode + devdocs + rec-mode + almost-mono-themes + eldoc-box + markdown-mode + nov + yasnippet + yasnippet-snippets + pinentry + geiser + geiser-guile + guix + avy + tldr + elfeed + elfeed-protocol + exwm + emms + mastodon + pass + lem + expand-region) + + package-archives '(("elpa" . "https://elpa.gnu.org") + ("gnu" . "http://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("non-gnu" . "https://elpa.nongnu.org/nongnu/") + ("melpa-stable" . "https://stable.melpa.org/packages/"))) + + +;; UI +(menu-bar-mode -1) +(tool-bar-mode -1) + +(setq-default fill-column 80 + frame-title-format '("%b")) + +(package-initialize) + + +(unless package-archive-contents + (package-refresh-contents)) + +;; install the missing packages +(dolist (package package-list) + (unless (package-installed-p package) + (package-install package))) + +(use-package tab-bar + :init + (tab-bar-mode)) + +(use-package project + :ensure t + :init + (add-to-list 'project-switch-commands '(project-shell "Shell"))) + +(use-package exwm + :init + (setq exwm-workspace-number 1 + exwm-input-global-keys + `(([?\s-r] . exwm-reset) ;; s-r: Reset (to line-mode). + ;; s-N: Switch to certain workspace. + ,@(mapcar (lambda (i) + `(,(kbd (format "s-%d" i)) . + (lambda () + (interactive) + (tab-bar-select-tab ,i)))) + (number-sequence 0 9)))) + (exwm-input-set-key (kbd "s-f") + (lambda () (interactive) + (shell-command "firefox"))) + (exwm-input-set-key (kbd "") + (lambda () (interactive) + (shell-command "scrot -F '/home/mccd/screenshots/%Y-%m-%d_$wx$h.png'"))) + (exwm-input-set-key (kbd "C-") + (lambda () (interactive) + (shell-command "scrot -s -F '/home/mccd/screenshots/%Y-%m-%d_$wx$h.png'"))) + (exwm-input-set-key (kbd "s-") + (lambda (cmd) ;; s-&: Launch application. + (interactive (list (read-shell-command "$ "))) + (start-process-shell-command cmd nil cmd))) + (exwm-enable) + (exwm-xim-mode) + (push ?\C-\\ exwm-input-prefix-keys) + :config + (setq + ring-bell-function 'ignore + default-directory "/home/mccd/" + focus-follows-mouse t + mouse-autoselect-window t) + :hook + (;; Make sure titles match X window + (server-after-make-frame . (lambda () + (set-window-margins (selected-window) 2 2))) + (exwm-update-title . (lambda () + (exwm-workspace-rename-buffer + (concat exwm-class-name ":" + (if (<= (length exwm-title) 50) exwm-title + (concat (substring exwm-title 0 49) "...")))))) + (exwm-update-class . (lambda () + (exwm-workspace-rename-buffer + (concat exwm-class-name ":" + (if (<= (length exwm-title) 50) exwm-title + (concat (substring exwm-title 0 49) "...")))))))) + +(use-package time + :init + (display-time-mode) + :config + (setq display-time-format "%a, %d/%m/%Y %H:%M")) + +(use-package geiser + :ensure t) + +(use-package pixel-scroll + :init + (pixel-scroll-precision-mode)) + +(use-package scroll-bar + :init + (scroll-bar-mode -1)) + +(use-package frame + :init + (window-divider-mode)) + +(use-package delsel + :init + (delete-selection-mode)) + +(use-package files + :config + (setq delete-old-versions t + kept-new-versions 6 + kept-old-versions 2 + version-control t + auto-save-default nil)) + +(use-package minibuffer + :defer t + :config + (setq completion-cycle-threshold 5 + completion-ignore-case t)) + +(use-package pass + :defer t + :ensure t) + +(use-package select + :config + (setq x-select-enable-clipboard t + x-select-enable-primary t)) + +(use-package imenu + :defer t + :config + (setq imenu-auto-rescan t)) + +(defun sudo-shell-command (command) + (interactive "MShell command (root): ") + (with-temp-buffer + (cd "/sudo::/") + (async-shell-command command))) + + +(use-package guix + :ensure t + :bind + (("C-c C-g g" . guix) + ("C-c C-g o" . (lambda () + (interactive) + (sudo-shell-command "guix system reconfigure /home/mccd/system/os/config.scm"))) + ("C-c C-g h" . (lambda () + (interactive) + (async-shell-command "guix home reconfigure ~/system/home/config.scm"))))) + + +(use-package nov + :defer t + :ensure t + :init + (add-to-list 'auto-mode-alist '("\\.epub'" . nov-mode))) + +(use-package battery + :init + (display-battery-mode t)) + +(use-package comint + :bind + ((:repeat-map + repeat-hist-line-map + ("n" . comint-next-input) + ("p" . comint-previous-input)))) + +(use-package repeat + :demand t + :bind + ((:repeat-map + repeat-normal-movement-map + ("n" . next-line) + ("b" . backward-char) + ("f" . forward-char) + ("e" . move-end-of-line) + ("F" . forward-word) + ("B" . backward-word) + ("v" . scroll-up-command) + ("V" . scroll-down-command) + ("o" . avy-goto-char-timer) + ("g" . goto-line) + ("a" . move-beginning-of-line) + ("k" . kill-line) + ("d" . delete-char) + ("D" . kill-word) + ("." . er/expand-region) + ("-" . er/contract-region) + ("p" . previous-line)) + (:repeat-map + repeat-movement-map + ("e" . end-of-defun) + ("f" . forward-sexp) + ("n" . forward-list) + ("p" . backward-list) + ("d" . down-list) + ("u" . up-list) + ("b" . backward-sexp) + ("a" . beginning-of-defun))) + :config + (setq repeat-on-final-keystroke t + set-mark-command-repeat-pop t + repeat-exit-key (kbd "")) + (repeat-mode 1)) + +(use-package org-crypt + :ensure nil + :init + (setenv "GPG_AGENT_INFO" nil) + (setq auth-source-debug t + epg-gpg-program "gpg2") + (org-crypt-use-before-save-magic)) + +(use-package grep + :config + (setq-default + grep-template (string-join + '("ugrep" + "--color=never" + "--ignore-binary" + "--ignore-case" + "--include=" + "--line-number" + "--null" + "--recursive" + "--regexp=") + " "))) + +(use-package pinentry + :ensure t + :init + (pinentry-start)) + + +(use-package epa-file + :init + (epa-file-enable) + (setq + epa-pinentry-mode 'loopback)) + +(use-package exwm-mff + :demand t + :load-path "elisp" + :hook + ((server-after-make-frame . exwm-mff-mode))) + +(use-package avy + :ensure t + :config + (setq + avy-timeout-seconds 0.2) + (global-set-key (kbd "M-o") 'avy-goto-char-timer) + (set-face-attribute 'avy-lead-face nil :inherit 'fixed-pitch) + (set-face-attribute 'avy-lead-face-0 nil :inherit 'fixed-pitch) + (set-face-attribute 'avy-lead-face-1 nil :inherit 'fixed-pitch) + (set-face-attribute 'avy-lead-face-2 nil :inherit 'fixed-pitch) + (setf (alist-get ? avy-dispatch-alist) 'avy-action-mark-to-char) + (define-key isearch-mode-map (kbd "M-o") 'avy-isearch) + (defun avy-action-kill-whole-line (pt) + (save-excursion + (goto-char pt) + (kill-whole-line)) + (select-window + (cdr + (ring-ref avy-ring 0))) + t) + (setf (alist-get ?k avy-dispatch-alist) 'avy-action-kill-stay + (alist-get ?K avy-dispatch-alist) 'avy-action-kill-whole-line) + (defun avy-action-copy-whole-line (pt) + (save-excursion + (goto-char pt) + (cl-destructuring-bind (start . end) + (bounds-of-thing-at-point 'line) + (copy-region-as-kill start end))) + (select-window + (cdr + (ring-ref avy-ring 0))) + t) + (defun avy-action-yank-whole-line (pt) + (avy-action-copy-whole-line pt) + (save-excursion (yank)) + t) + + (setf (alist-get ?y avy-dispatch-alist) 'avy-action-yank + (alist-get ?w avy-dispatch-alist) 'avy-action-copy + (alist-get ?W avy-dispatch-alist) 'avy-action-copy-whole-line + (alist-get ?Y avy-dispatch-alist) 'avy-action-yank-whole-line) + (defun avy-action-copy-whole-line (pt) + (save-excursion + (goto-char pt) + (cl-destructuring-bind (start . end) + (bounds-of-thing-at-point 'line) + (copy-region-as-kill start end))) + (select-window + (cdr + (ring-ref avy-ring 0))) + t) + + (defun avy-action-yank-whole-line (pt) + (avy-action-copy-whole-line pt) + (save-excursion (yank)) + t) + + (setf (alist-get ?y avy-dispatch-alist) 'avy-action-yank + (alist-get ?w avy-dispatch-alist) 'avy-action-copy + (alist-get ?W avy-dispatch-alist) 'avy-action-copy-whole-line + (alist-get ?Y avy-dispatch-alist) 'avy-action-yank-whole-line) + + (defun avy-action-teleport-whole-line (pt) + (avy-action-kill-whole-line pt) + (save-excursion (yank)) t) + + (setf (alist-get ?t avy-dispatch-alist) 'avy-action-teleport + (alist-get ?T avy-dispatch-alist) 'avy-action-teleport-whole-line) + + (defun avy-action-mark-to-char (pt) + (activate-mark) + (goto-char pt)) + + (setf (alist-get ? avy-dispatch-alist) 'avy-action-mark-to-char)) + +(use-package flymake + :defer t + :bind + (:repeat-map flymake-repeat-map + ("]" . flymake-goto-next-error) + ("[" . flymake-goto-prev-error)) + :hook + ((flymake-mode . + (lambda () + (define-key flymake-mode-map (kbd "C-c ]") 'flymake-goto-next-error) + (define-key flymake-mode-map (kbd "C-c [") 'flymake-goto-prev-error))))) + +(use-package expand-region + :ensure t + :init + (global-set-key (kbd "C-c .") 'er/expand-region)) + +(use-package devdocs + :ensure t + :init + (global-set-key (kbd "C-h D") 'devdocs-lookup)) + +(use-package sgml-mode + :init + (add-to-list 'auto-mode-alist '("\\.njk\\'" . html-mode)) + (add-to-list 'auto-mode-alist '("\\.tmpl\\'" . html-mode)) + :hook + ;; TODO fix + ((html-mode . (lambda () + (keymap-local-set (kbd "M-o") 'avy-goto-char-timer))) + (html-mode . (lambda () + (setq sgml-basic-offset 8 + indent-tabs-mode t))))) + +(use-package eldoc + :ensure t + :demand t + :diminish "" + :config + (setq eldoc-print-after-edit t + echo-area-display-truncation-message nil + eldoc-echo-area-prefer-doc-buffer 'maybe + eldoc-echo-area-use-multiline-p nil) + :hook (prog-mode . eldoc-mode)) + +(use-package eldoc-box + :ensure t + :demand t + :hook + (eglot-managed-mode . #'eldoc-box-hover-mode) + :config + (global-set-key (kbd "C-h .") #'eldoc-box-help-at-point)) + +(use-package markdown-mode + :ensure t + :config + (set-face-attribute 'markdown-code-face nil :inherit 'fixed-pitch) + :hook + ((markdown-mode . variable-pitch-mode) + (markdown-mode . markdown-toggle-url-hiding) + (markdown-mode . markdown-toggle-markup-hiding) + (markdown-mode . visual-line-mode))) + +(use-package elec-pair + :init + (electric-pair-mode 1) + :config + (global-set-key (kbd "M-{") 'insert-pair) + (global-set-key (kbd "M-\"") 'insert-pair) + (global-set-key (kbd "M-\'") 'insert-pair) + (global-set-key (kbd "M-<") 'insert-pair) + (global-set-key (kbd "M-[") 'insert-pair)) + +(use-package ido + :init + (ido-mode t)) + +(use-package org-link-minor-mode + :load-path "elisp" + :defer t) + +(use-package calendar + :defer t + :init + (add-to-list 'auto-mode-alist '("~/personal-db/log" . diary-mode)) + :hook + ((diary-mode . variable-pitch-mode) + ; (diary-mode . org-link-minor-mode) + ; (diary-fancy-display-mode . org-link-minor-mode) + (diary-fancy-display-mode . variable-pitch-mode) + (diary-mode . (lambda () + (add-hook 'after-save-hook 'sync-org nil t))) + (diary-mode . flyspell-mode)) + :config + (global-set-key (kbd "C-c d") 'calendar) + (calendar-set-date-style 'european) + (set-face-attribute 'diary nil :inherit 'fixed-pitch) + (setq diary-file "~/personal-db/log" + calendar-mark-diary-entries-flag t + calendar-week-start-day 1)) + +(use-package nix-mode + :ensure t + :defer t + :hook + ((nix-mode . (lambda () + (add-hook 'before-save-hook #'nix-format-buffer nil t))) + (nix-mode . nix-prettify-mode))) + +(use-package eglot + :config + ;; Ensure `nil` is in your PATH. + (add-to-list 'eglot-server-programs '(nix-mode . ("nil"))) + (define-key eglot-mode-map (kbd "C-c r") 'eglot-rename) + (define-key eglot-mode-map (kbd "C-c o") 'eglot-code-actions) + :hook + (nix-mode . eglot-ensure) + (go-mode . eglot-ensure)) + +(use-package go-mode + :ensure t + :defer t + :hook + ((go-mode . (lambda () + (add-hook + 'before-save-hook 'eglot-format-buffer nil t))) + (go-mode . (lambda () + (setq-local compile-command "go build ."))))) + +(use-package rec-mode + :ensure nil + :defer t + :mode "\\.rec\\'" + :hook + ((rec-mode . flymake-mode) + (rec-mode . eldoc-mode))) + +(use-package erc + :ensure t + :config + (setq erc-autojoin-channels-alist + '(("Libera.Chat" + "#emacs" + "#permacomputing" + "#oldcomputerchallenge" + "#go-nuts" + "#netbsd" + "#nonguix" + "#guix"))) + :init + (global-set-key + "\C-cef" + (lambda () + (interactive) + (erc + :server "irc.libera.chat" + :port "6667" + :nick "mccd" + :password (shell-command-to-string "pass show libera.chat"))))) + +(use-package ob-rec + :ensure nil) + +(defun sync-org () + (interactive) + (async-shell-command "org-sync")) + +(add-to-list 'display-buffer-alist '("*Async Shell Command*" display-buffer-no-window (nil))) + +;; Org +(use-package org + :ensure t + :init + (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode)) + (org-babel-do-load-languages + 'org-babel-load-languages + '((shell . t) + (rec .t))) + + :config + (setq org-refile-targets + '((nil :maxlevel . 4) + (org-agenda-files :maxlevel . 4)) + org-default-notes-file "~/personal-db/notes/todo.org" + org-hide-emphasis-markers t + org-agenda-include-diary t + org-agenda-remove-tags t + org-startup-folded 'content + org-agenda-inhibit-startup nil + ;; Add /New Heading at the end for use + org-refile-allow-creating-parent-nodes 'confirm + org-outline-path-complete-in-steps nil + org-refile-use-outline-path 'file + ;; Otherwise looks weird in variable-pitch-mode + org-log-done 'time + org-capture-templates + '(("t" "Todo" + entry (file "~/personal-db/notes/todo.org") + "* TODO %?\n%i\n%a\n " + :empty-lines 0) + ("l" "Log" plain (file "~/personal-db/log") + "%<%d %b %Y %H:%M> %?" + :prepend t) + ("n" "Inbox" + entry (file "~/personal-db/notes/inbox.org") + "** %?\n%T" + :empty-lines 0))) + (set-face-attribute 'org-block nil :inherit 'fixed-pitch) + (set-face-attribute 'org-code nil :inherit 'fixed-pitch) + (set-face-attribute 'org-table nil :inherit 'fixed-pitch) + (set-face-attribute 'org-date nil :inherit 'fixed-pitch) + (set-face-attribute 'org-tag nil :inherit 'fixed-pitch) + (global-set-key (kbd "C-c l") #'org-store-link) + (global-set-key (kbd "C-c a") #'org-agenda) + (global-set-key (kbd "C-c c") #'org-capture) + (global-set-key (kbd "C-c j") #'org-goto) + (global-set-key (kbd "C-c s") #'project-find-regexp) + (global-set-key (kbd "C-c C-o") #'org-open-at-point-global) + (global-set-key (kbd "C-c C-s") #'sync-org) + ;; Something errors out with capture logs and non-org files + (add-to-list 'warning-suppress-log-types '(org-element)) + (add-to-list 'warning-suppress-types '(org-element)) + :hook + ((org-mode . auto-save-visited-mode) + (org-mode . org-indent-mode) + (org-mode . flyspell-mode) + (org-mode . visual-line-mode) + (org-mode . (lambda () + (add-hook 'after-save-hook 'sync-org nil t))) + (org-mode . variable-pitch-mode))) + +(use-package rec-mode + :ensure t) + +(use-package magit + :ensure t + :demand t) + +(use-package magit-extras + :ensure nil) + +(use-package yasnippet + :diminish t + :ensure t + :init + (yas-global-mode 1)) + +(use-package register + :bind + (("C-z" . 'point-to-register))) + +(defun marc/set-msmtp-account () + (if (message-mail-p) + (save-excursion + (let* + ((from (save-restriction + (message-narrow-to-headers) + (message-fetch-field "from"))) + (account + (cond + ((string-match "marcc@fastmail.fr" from) "home") + ((string-match "marc.coquand@sustainably.app" from) "work") + ((string-match "marc@mccd.space" from) "home")))) + (setq message-sendmail-extra-arguments (list '"-a" account)))))) + +;(use-package message +; :defer t +; :hook +; ((message-send-mail . marc/set-msmtp-account) +; (message-mode-hook flyspell-mode))) + +(add-hook 'message-send-mail-hook #'marc/set-msmtp-account) +(add-hook 'message-mode-hook #'flyspell-mode) + +(use-package flyspell + :defer t) + +(use-package mu4e + :ensure nil + :config + ;; This is set to 't' to avoid mail syncing issues when using mbsync + (setq mu4e-change-filenames-when-moving t) + + ;; don't keep message compose buffers around after sending: + (setq message-kill-buffer-on-exit t) + + ;; send function: + (setq send-mail-function 'sendmail-send-it + message-send-mail-function 'sendmail-send-it) + + ;; send program: + ;; this is exeranal. remember we installed it before. + (setq sendmail-program (executable-find "msmtp")) + + ;; select the right sender email from the context. + (setq message-sendmail-envelope-from 'header) + + ;; Refresh mail using isync every 10 minutes + (setq mu4e-update-interval (* 10 60) + mu4e-get-mail-command "mbsync -a" + mu4e-view-show-images t + mu4e-view-show-addresses t + mu4e-attachment-dir "~/Downloads" + mu4e-view-prefer-html t + mu4e-maildir "~/mail") + + (setq mu4e-contexts + (list + ;; Home + (make-mu4e-context + :name "home" + :enter-func (lambda () (mu4e-message "Entering personal context")) + :leave-func (lambda () (mu4e-message "Leaving personal context")) + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/home" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "marc@mccd.space") + (user-full-name . "Marc Coquand") + (mu4e-drafts-folder . "/home/Drafts") + (mu4e-sent-folder . "/home/Sent") + (mu4e-refile-folder . "/home/Archive") + (mu4e-trash-folder . "/home/Trash") + (mu4e-sent-messages-behavior . sent) + + (mu4e-maildir-shortcuts . + (("/home/INBOX" . ?i) + ("/home/Archive/Done" . ?d) + ("/home/Archive" . ?a) + ("/home/Archive/Todo" . ?t))))) + ;; Work account + (make-mu4e-context + :name "work" + :enter-func (lambda () (mu4e-message "Entering work context")) + :leave-func (lambda () (mu4e-message "Leaving work context")) + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/work" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "marc.coquand@sustainably.app") + (user-full-name . "Marc Coquand") + (mu4e-drafts-folder . "/work/[Gmail]/Drafts") + (mu4e-sent-folder . "/work/[Gmail]/Sent Mail") + (mu4e-refile-folder . "/work/[Gmail]/All Mail") + (mu4e-sent-messages-behavior . delete) + (mu4e-trash-folder . "/work/[Gmail]/Trash") + (mu4e-maildir-shortcuts . + (("/work/[Gmail]/All Mail" . ?a) + ("/work/INBOX" . ?i)))))))) + + +(use-package lem + :ensure t + :config + (setq lem-instance-url "https://lemmy.sdf.org")) + +(use-package elfeed-protocol + :ensure t + :init + (elfeed-protocol-enable)) + +(use-package elfeed + :ensure t + :config + (setq elfeed-use-curl t + ;; setup feeds + elfeed-protocol-fever-update-unread-only t + elfeed-protocol-fever-fetch-category-as-tag t + elfeed-protocol-feeds '(("fever+https://freshrss@rss.mccd.space" + :api-url "https://rss.mccd.space/api/fever.php" + :password (shell-command-to-string "pass show mccd/freshrss"))) + ;; enable elfeed-protocol + elfeed-protocol-enabled-protocols '(fever) + elfeed-curl-extra-arguments '("--insecure")) ;necessary for https without a trust certificate + (elfeed-set-timeout 36000) + (global-set-key (kbd "C-x w") 'elfeed)) + +(use-package mastodon + :defer t + :config + (setq + mastodon-active-user "marcc" + mastodon-instance-url "https://fosstodon.org")) + +(use-package eww + :config + (setq + browse-url-browser-function 'eww-browse-url ; Use eww as the default browser + eww-search-prefix "https://lite.duckduckgo.com/lite/?q=" + shr-max-image-proportion 0.3 + shr-width 70)) + +;; Can play youtube urls and music. +;; Requires mpv +(use-package emms + :ensure t + :init + (add-hook 'emms-player-started-hook 'emms-show) + :config + (setq emms-shop-format "on: %s") + (emms-all) + (emms-default-players)) + +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(default ((t (:inherit nil :extend nil :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight regular :height 150 :width expanded :foundry "UKWN" :family "Iosevka SS13 Extended")))) + '(avy-lead-face ((t (:inherit fixed-pitch :background "dark red" :foreground "white")))) + '(calendar-weekend-header ((t (:inherit nil)))) + '(custom-group-subtitle ((t (:weight bold :family "Iosevka Aile")))) + '(diary ((t (:inherit fixed-pitch :foreground "red1")))) + '(eglot-highlight-symbol-face ((t (:weight bold)))) + '(eglot-mode-line ((t (:weight regular)))) + '(erc-timestamp-face ((t (:foreground "blue" :weight bold)))) + '(eshell-prompt ((t (:weight bold)))) + '(eww-valid-certificate ((t (:foreground "black" :weight bold)))) + '(fixed-pitch ((t (:family "Iosevka SS13 Extended")))) + '(font-lock-builtin-face ((t (:weight regular)))) + '(font-lock-comment-face ((t (:foreground "royalblue" :slant normal)))) + '(font-lock-constant-face ((t (:slant italic :weight regular)))) + '(font-lock-function-name-face ((t (:weight regular)))) + '(font-lock-keyword-face ((t (:weight regular)))) + '(font-lock-string-face ((t (:foreground "black" :slant italic)))) + '(font-lock-type-face ((t (:foreground "black")))) + '(font-lock-variable-name-face ((t (:foreground "black")))) + '(fringe ((t (:background "white")))) + '(header-line ((t (:inherit default :foreground "grey20" :box (:line-width (8 . 8) :color "#FFFFFF") :underline (:color "#e0e0e0" :style line :position 0) :family "Iosevka Aile")))) + '(highlight ((t (:background "azure2")))) + '(info-header-xref ((t (:inherit info-xref :underline (:color "RoyalBlue3" :style line :position t))))) + '(info-node ((t (:foreground "brown" :box (:line-width (4 . 4) :color "white") :slant italic :weight bold)))) + '(link ((t (:foreground "royalblue" :underline t)))) + '(magit-branch-remote ((t (:foreground "royalblue")))) + '(markdown-inline-code-face ((t (:inherit markdown-code-face)))) + '(markdown-pre-face ((t (:inherit markdown-code-face)))) + '(mastodon-display-name-face ((t (:inherit nil :weight bold)))) + '(mode-line ((t (:background "gray95" :foreground "black" :box (:line-width (8 . 8) :style flat-button) :overline "#e0e0e0" :underline (:color "#e0e0e0" :style line :position t) :family "Iosevka Aile")))) + '(mode-line-emphasis ((t (:weight regular)))) + '(mode-line-inactive ((t (:inherit mode-line :background "#fbfbfb" :foreground "grey60" :overline "#f9f9f9" :underline (:color "#f9f9f9" :style line :position 0) :weight light)))) + '(mu4e-header-highlight-face ((t (:inherit hl-line :extend t :weight bold)))) + '(mu4e-highlight-face ((t (:inherit highlight)))) + '(org-date ((t (:inherit fixed-pitch :foreground "gray40" :underline t)))) + '(org-headline-done ((t (:foreground "gray40")))) + '(org-level-1 ((t (:inherit outline-1 :extend nil :weight regular)))) + '(org-tag ((t (:inherit fixed-pitch :foreground "gray40" :weight regular)))) + '(org-time-grid ((t (:foreground "gray")))) + '(outline-4 ((t (:inherit outline-2)))) + '(tab-bar ((t (:box (:line-width (12 . 24) :style flat-button) :weight semi-light :family "Iosevka Aile")))) + '(tab-bar-tab ((t (:inherit tab-bar :foreground "black" :box (:line-width (20 . 1) :color "white") :weight semi-bold)))) + '(tab-bar-tab-inactive ((t (:inherit tab-bar-tab :background "white" :foreground "#999999" :weight semi-light)))) + '(tldr-code-block ((t (:background "cornsilk" :foreground "black")))) + '(tldr-command-argument ((t (:background "cornsilk" :foreground "black")))) + '(tldr-command-itself ((t (:background "khaki" :foreground "black" :weight bold)))) + '(tldr-introduction ((t (:foreground "black" :slant italic)))) + '(tldr-title ((t (:inherit variable-pitch :foreground "black" :weight bold :height 1.2)))) + '(variable-pitch ((t (:family "Iosevka Aile")))) + '(window-divider ((t (:foreground "gray90"))))) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(custom-safe-themes + '("cbd85ab34afb47003fa7f814a462c24affb1de81ebf172b78cb4e65186ba59d2" default)) + '(erc-mode-line-format "") + '(erc-modules + '(autojoin button completion fill irccontrols list match menu move-to-prompt netsplit networks noncommands notifications readonly ring services stamp spelling)) + '(magit-section-visibility-indicator '("..." . t)) + '(markdown-list-item-bullets '("-")) + '(mastodon-tl--enable-proportional-fonts t) + '(mastodon-use-emojify t) + '(mode-line-compact 'long) + '(mode-line-format + '("%e" mode-line-front-space + (:propertize + ("" mode-line-modified " ")) + mode-line-buffer-identification " " mode-line-modes)) + '(mode-line-percent-position nil) + '(mode-line-position-line-format '(" ")) + '(mu4e-bookmarks + '((:name "Last 7 days" :query "date:7d..now" :hide-unread t :key 119) + (:name "Messages with images" :query "mime:image/*" :key 112))) + '(org-agenda-files + '("~/personal-db/notes/sustainable-software.org" "/home/mccd/personal-db/notes/thoughts.org" "/home/mccd/personal-db/notes/cal-ios.org" "/home/mccd/personal-db/notes/ethics-and-software.org" "/home/mccd/personal-db/notes/reminders.org" "/home/mccd/builds/sustainably/piva.org" "/home/mccd/personal-db/notes/programming.org" "/home/mccd/personal-db/notes/unix.org" "/home/mccd/personal-db/notes/agency-and-tech.org" "/home/mccd/personal-db/notes/emacs-teaches.org" "/home/mccd/personal-db/notes/emacs.org" "/home/mccd/personal-db/notes/inbox.org" "/home/mccd/personal-db/notes/todo.org")) + '(org-fold-core-style 'overlays) + '(package-selected-packages + '(nov eldoc-box hide-mode-line exwm-mff eat pinentry exwm emms company orglink web-mode flycheck nix-mode nix-ts-mode avy pdf-tools elfeed-protocol lem yasnippet-snippets elfeed yasnippet smartparens markdown-mode mastodon tldr almost-mono-themes rec-mode magit go-mode expand-region devdocs)) + '(tab-bar-auto-width t) + '(tab-bar-close-button-show nil) + '(tab-bar-format + '(tab-bar-format-tabs tab-bar-format-align-right tab-bar-format-global)) + '(tab-bar-position nil) + '(tab-bar-tab-hints t) + '(window-divider-default-right-width 2) + '(yank-from-kill-ring-rotate t)) +(put 'secrets-mode 'disabled nil) -- cgit v1.2.3