nixos-config/DELL/nixpkgs/configs/init.el

283 lines
10 KiB
EmacsLisp

;;(scroll-bar-mode -1)
;;(tool-bar-mode -1)
;;(tooltip-mode -1)
;;(menu-bar-mode -1)
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired. See `package-archive-priorities`
;; and `package-pinned-packages`. Most users will not need or want to do this.
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
(column-number-mode 't) ; show current column in status bar
(set-fringe-mode 10)
;; Indent 4 spaces by default. Use the "BSD" style for C-like languages.
(setq c-default-style
(quote ((java-mode . "java")
(awk-mode . "awk")
(other . "bsd")))
c-basic-offset 4)
;; Use 4 spaces for one tab visually.
(setq tab-width 4)
(show-paren-mode t) ; highlight matching open and close parentheses
(global-hl-line-mode) ; highlight current line
(global-visual-line-mode t) ; wrap long lines
(setq split-window-preferred-function
'visual-fill-column-split-window-sensibly) ; wrap at window boundary
(global-whitespace-mode) ; enable whitespace handling by default
(setq
whitespace-style ; see (apropos 'whitespace-style)
'(face ; viz via faces
trailing ; trailing blanks visualized
lines-tail ; lines beyond whitespace-line-column visualized
space-before-tab
space-after-tab
newline ; lines with only blanks visualized
indentation ; spaces used for indent when config wants tabs
empty ; empty lines at beginning or end or buffer
)
whitespace-line-column 100) ; column at which whitespace-mode says the line is too long
;;(set-face-attribute 'default nil :font "JetBrains Mono" :height 150)
(global-set-key (kbd "C-c c") 'org-capture)
(global-set-key (kbd "C-c a") 'org-agenda)
(setq disabled-command-function nil)
(setq inhibit-startup-screen t)
(setq visible-bell t)
; Advanced per-language checks.
(require 'flycheck)
(global-flycheck-mode 1)
(setq flycheck-checker-error-threshold 1000) ; for large go files and the escape checker
(setq flycheck-check-syntax-automatically '(mode-enabled save))
;; Backup
(setq version-control t ;; Use version numbers for backups.
kept-new-versions 10 ;; Number of newest versions to keep.
kept-old-versions 0 ;; Number of oldest versions to keep.
delete-old-versions t ;; Don't ask to delete excess backup versions.
backup-by-copying t) ;; Copy all files, don't rename them.
(setq vc-make-backup-files t)
(setq backup-directory-alist '(("" . "~/.emacs.d/backup")))
(setq calendar-week-start-day 1)
(setq user-full-name "Alexandre LUCAZEAU")
(setq user-mail-address "alexandre@dri.fr")
(setq mail-user-agent 'gnus-user-agent)
;;(setq gnus-select-method
;; '(nnimap "dri"
;; (nnimap-address "dri.fr")
;; (nnimap-server-port 143)
;; (nnimap-stream starttls)
;; (nnimap-authinfo-file "~/.authinfo.gpg")))
;;
;;(setq gnus-message-archive-group "nnimap+dri:Sent")
;;(setq gnus-gcc-mark-as-read t)
;;(setq nnmail-expiry-target "nnimap+dri:Trash")
;;(setq nnmail-expiry-wait 'immediate)
;;(setq send-mail-function 'smtpmail-send-it)
;;(setq message-send-mail-function 'smtpmail-send-it)
;;(setq smtpmail-smtp-server "dri.fr")
;;(setq smtpmail-smtp-service 587)
;;(setq message-citation-line-function 'message-insert-formatted-citation-line)
;;(setq message-citation-line-format "On %d/%m/%Y %H:%M, %N wrote:")
(defun default-web-indent-mode ()
(setq indent-tabs-mode nil)
(setq tab-width 2)
(setq web-mode-markup-indent-offset 2)
(setq web-mode-css-indent-offset 2)
(setq web-mode-code-indent-offset 2))
(use-package doom-themes
:init (load-theme 'doom-nord t)
:init (doom-themes-org-config))
(use-package direnv
:config (direnv-mode))
(use-package lsp-mode
:config (setq lsp-keymap-prefix "C-c l")
:config (setq lsp-signature-auto-activate t)
:config (setq lsp-enable-on-type-formatting nil)
:config (lsp-enable-which-key-integration t)
:hook (lsp-mode . electric-pair-mode))
(use-package web-mode
:mode ("\\.json\\'" . web-mode)
:mode ("\\.html?\\'" . web-mode)
:mode ("\\.s?css\\'" . web-mode)
:mode ("\\.[jt]sx?\\'" . web-mode)
:hook (web-mode . lsp-deferred)
:hook (web-mode . default-web-indent-mode))
(use-package nix-mode
:mode ("\\.nix\\'" . nix-mode)
:hook (nix-mode . lsp-deferred))
(use-package rust-mode
:hook (rust-mode . lsp-deferred)
:config (setq rust-format-on-save t))
(use-package company
:config (setq company-idle-delay 0.25)
:config (setq company-minimum-prefix-length 1)
:bind (:map company-active-map ("<tab>" . company-select-next))
:bind (:map company-active-map ("<backtab>" . company-select-previous)))
(use-package yasnippet
:hook (lsp-mode . yas-minor-mode)
:hook (yas-minor-mode . yas-reload-all)
:config (setq yas-snippet-dirs '("/etc/nixos/programs/emacs/snippets")))
(use-package prettier-js
:after (web-mode)
:hook (web-mode . prettier-js-mode))
(use-package smartparens
:bind ("C-c s s" . sp-splice-sexp)
:bind ("C-c s r" . sp-rewrap-sexp))
(use-package bbdb
:init (bbdb-initialize 'gnus 'message)
:init (bbdb-mua-auto-update-init 'gnus 'message)
:config (setq bbdb-file "~/Nextcloud/PRIVE/13_Org/contacts/bbdb")
:config (setq bbdb-mua-auto-update-p 'create))
(use-package org
:config
(setq org-startup-folded t)
(setq org-agenda-files
"~/Nextcloud/PRIVE/13_Org/agenda.org")
(setq org-refile-use-outline-path 'file)
(setq org-refile-targets
'(("~/Nextcloud/PRIVE/13_Org/DRI.org" :maxlevel . 3)
("~/Nextcloud/PRIVE/13_Org/perso.org" :level . 1)
("~/Nextcloud/PRIVE/13_Org/pizajoffre.org" :level . 1)))
(setq org-todo-keywords
'((sequence "TODO(t)" "PENDING(p)" "|" "CANCELLED(c)" "DONE(d)")))
(setq org-todo-keyword-faces
'(("TODO" . (:foreground "#c678dd" :weight bold))
("PENDING" . (:background "#3f444a" :foreground "#ff6c6b" :weight bold))))
(setq org-capture-templates
'(("i" "Inbox" entry (file "~/Nextcloud/PRIVE/13_Org/DRI.org") "* TODO %i%?")
("a" "Agenda" entry (file "~/Nextcloud/PRIVE/13_Org/agenda.org") "* TODO %i%?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))")))
(setq org-agenda-custom-commands
'(("t" "Today" tags-todo "+LEVEL=1+CATEGORY=\"tasks\"|+SCHEDULED<=\"<today>\"|+DEADLINE<=\"<today>\""))))
(use-package magit)
(setq magit-fetch-modules-jobs 16); fetch 16 modules in parallel
(use-package ledger-mode)
(use-package projectile
:init (projectile-global-mode)
:config (setq projectile-enable-caching nil)
:config (setq projectile-project-search-path (cddr (directory-files "~/code" t)))
:custom (projectile-completion-system 'ivy)
:bind-keymap ("C-c p" . projectile-command-map))
(use-package counsel-projectile
:after (counsel projectile)
:init (counsel-projectile-mode))
(require 'yasnippet)
(yas-global-mode 1)
(use-package which-key
:init (which-key-mode)
:config (setq which-key-idle-delay 0.5))
(setq TeX-PDF-mode t)
(require 'mu4e)
;;store org-mode links to messages
(require 'org-mu4e)
;;store link to message if in header view, not to header query
(setq org-mu4e-link-query-in-headers-mode nil)
(setq org-capture-templates
'(("t" "todo" entry (file+headline "~/todo.org" "Tasks")
"* TODO [#A] %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n%a\n")))
(setq mail-user-agent 'mu4e-user-agent)
(setq org-mu4e-link-query-in-headers-mode t)
(setq mu4e-maildir (expand-file-name "~/Maildir/dri/INBOX"))
(setq mu4e-get-mail-command "mbsync -a")
(setq mu4e-sent-folder "/Sent")
(setq mu4e-drafts-folder "/Drafts")
(setq mu4e-trash-folder "/Junk")
(setq mu4e-refile-folder "/INBOX/archives")
(setq mu4e-context-policy 'pick-first)
(setq mu4e-change-filenames-when-moving t)
(setq starttls-use-gnutls t)
(setq message-send-mail-function 'smtpmail-send-it)
(setq mu4e-update-interval 300)
(setq mu4e-use-fancy-chars t)
(setq mu4e-view-show-addresses t)
(setq mu4e-headers-show-threads t)
(setq mu4e-headers-skip-duplicates t)
(setq mail-user-agent 'mu4e-user-agent)
(defvaralias 'mu4e-compose-signature 'message-signature)
(setq-default mu4e-save-multiple-attachments-without-asking t)
(setq-default mu4e-view-show-addresses t)
(setq-default mu4e-confirm-quit nil)
(setq-default mu4e-hide-index-messages t)
(setq-default mu4e-index-update-in-background t)
(setq mu4e-compose-in-new-frame nil)
;;rename files when moving
;;NEEDED FOR MBSYNC
(setq mu4e-change-filenames-when-moving t)
(setq mu4e-html2text-command "iconv -c -t utf-8 | ${pkgs.pandoc}/bin/pandoc -f html -t plain")
(setq mu4e-view-show-images t)
(when (fboundp 'imagemagick-register-types)
(imagemagick-register-types))
(setq message-kill-buffer-on-exit t)
(require 'org-msg)
(setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil \\n:t"
org-msg-startup "hidestars indent inlineimages"
org-msg-greeting-fmt "\nHi%s,\n\n"
org-msg-recipient-names '(("alexandre@dri.fr" . "Alexandre"))
org-msg-greeting-name-limit 3
org-msg-default-alternatives '((new . (text html))
(reply-to-html . (text html))
(reply-to-text . (text)))
org-msg-convert-citation t
org-msg-signature "
Regards,
#+begin_signature
--
*Alexandre
/One Emacs to rule them all/
#+end_signature")
(org-msg-mode)
;; Org-Roam basic configuration
(setq org-directory (concat (getenv "HOME") "/Nextcloud/PRIVE/notes"))
(use-package org-roam
:after org
:init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade
:custom
(org-roam-directory (file-truename org-directory))
:config
(org-roam-setup)
:bind (("C-c n f" . org-roam-node-find)
("C-c n r" . org-roam-node-random)
(:map org-mode-map
(("C-c n i" . org-roam-node-insert)
("C-c n o" . org-id-get-create)
("C-c n t" . org-roam-tag-add)
("C-c n a" . org-roam-alias-add)
("C-c n l" . org-roam-buffer-toggle)))))