(scroll-bar-mode -1) (tool-bar-mode -1) (tooltip-mode -1) (set-fringe-mode 10) (menu-bar-mode -1) (setq inhibit-startup-message t) (setq visible-bell nil) (setq ring-bell-function 'ignore) (setq auto-save-timeout '5) (setq auto-save-interval '20) (setq global-auto-revert-non-file-buffers t) (setq custom-file (locate-user-emacs-file "custom-vars.el")) (load custom-file 'noerror 'nomessage) (setq use-dialog-box nil) (global-auto-revert-mode 1) (setq global-auto-rever-non-file-buffers t) (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) (require 'package) (setq package-archives '(("melpa" . "https://melpa.org/packages/") ("org" . "https://orgmode.org/elpa/") ("elpa" . "https://elpa.gnu.org/packages/"))) (package-initialize) (package-refresh-contents) ;; Initialize use-package on non-linux platforms (unless (package-installed-p 'use-package) (package-install 'use-package)) (require 'use-package) (setq use-package-always-ensure t) (use-package catppuccin-theme) (use-package doom-modeline :ensure t :init (doom-modeline-mode 1) :custom (doom-modeline-height 35) (nerd-icons-scale-factor 1.35) (doom-modeline-minor-modes-icon nil) (doom-modeline-major-modes-icon nil) (doom-modeline-icon t) (doom-modeline-time-live-icon t)) (use-package command-log-mode) (global-set-key (kbd "") 'keyboard-escape-quit) (setq modus-themes-mode-line '(accented borderless padded)) (setq modus-themes-completions 'opinionated) (load-theme 'modus-vivendi t) (column-number-mode) (global-display-line-numbers-mode t) (dolist (mode '(term-mode-hook vterm-mode-hook)) (add-hook mode (lambda () (display-line-numbers-mode 0)))) (use-package multi-vterm :ensure t) (use-package multi-vterm :ensure t :config (add-hook 'vterm-mode-hook (lambda () (setq-local evil-insert-state-cursor 'box) (evil-insert-state))) (define-key vterm-mode-map [return] #'vterm-send-return) (setq vterm-keymap-exceptions nil) (evil-define-key 'insert vterm-mode-map (kbd "C-e") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-f") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-a") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-v") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-b") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-w") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-u") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-d") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-n") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-m") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-p") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-j") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-k") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-r") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-t") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-g") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-c") #'vterm--self-insert) (evil-define-key 'insert vterm-mode-map (kbd "C-SPC") #'vterm--self-insert) (evil-define-key 'normal vterm-mode-map (kbd "C-d") #'vterm--self-insert) (evil-define-key 'normal vterm-mode-map (kbd ",c") #'multi-vterm) (evil-define-key 'normal vterm-mode-map (kbd ",n") #'multi-vterm-next) (evil-define-key 'normal vterm-mode-map (kbd ",p") #'multi-vterm-prev) (evil-define-key 'normal vterm-mode-map (kbd "i") #'evil-insert-resume) (evil-define-key 'normal vterm-mode-map (kbd "o") #'evil-insert-resume) (evil-define-key 'normal vterm-mode-map (kbd "") #'evil-insert-resume)) (use-package which-key :init (which-key-mode) :diminish which-key-mode :config (setq which-key-idle-delay 0)) (set-face-attribute 'default nil :font "FiraCode Nerd Font" :height 125) (use-package kagi :ensure t :custom ;; Univernal Summarizer settings (kagi-summarizer-engine "cecil") (kagi-summarizer-default-language "EN") (kagi-summarizer-cache t)) (use-package vterm :commands vterm :config (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *") (setq vterm-max-scrollback 10000)) (setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "BLOCKED" "DONE"))) (setq org-tag-alist '(("work") ("garage"))) (setq wl-copy-process nil) (defun wl-copy (text) (setq wl-copy-process (make-process :name "wl-copy" :buffer nil :command '("wl-copy" "-f" "-n") :connection-type 'pipe :noquery t)) (process-send-string wl-copy-process text) (process-send-eof wl-copy-process)) (defun wl-paste () (if (and wl-copy-process (process-live-p wl-copy-process)) nil ; should return nil if we're the current paste owner (shell-command-to-string "wl-paste -n | tr -d \r"))) (setq interprogram-cut-function 'wl-copy) (setq interprogram-paste-function 'wl-paste) ;; Enable Evil (use-package evil :ensure t :init (setq evil-want-integration t) (setq evil-want-keybinding nil) :config (evil-mode 1)) (use-package evil-collection :after evil :ensure t :config (evil-collection-init)) ;; org (use-package org-roam :ensure t :custom (org-roam-directory (file-truename "~/Documents/notes")) (org-roam-dailies-directory (file-truename "~/Documents/notes/daily")) (org-roam-completion-everywhere t) (org-roam-dailies-capture-templates '(("d" "default" entry "* %<%I:%M %p>: %?" :if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n")))) :bind (("C-c n l" . org-roam-buffer-toggle) ("C-c n f" . org-roam-node-find) ("C-c n i" . org-roam-node-insert) :map org-mode-map ("C-M-i" . completion-at-point) :map org-roam-dailies-map ("Y" . org-roam-dailies-capture-yesterday) ("T" . org-roam-dailies-capture-tomorrow)) :bind-keymap ("C-c n d" . org-roam-dailies-map) :config (require 'org-roam-dailies) ;; Ensure the keymap is available (org-roam-db-autosync-mode)) (org-roam-db-autosync-mode) ;; Bind this to C-c n I (defun org-roam-node-insert-immediate (arg &rest args) (interactive "P") (let ((args (cons arg args)) (org-roam-capture-templates (list (append (car org-roam-capture-templates) '(:immediate-finish t))))) (apply #'org-roam-node-insert args))) (setq org-agenda-files '("~/Documents/notes/daily/")) (save-place-mode 1) ;; vertico (unless (package-installed-p 'vertico) (package-install 'vertico)) (use-package vertico :ensure t :bind (:map vertico-map ("C-j" . vertico-next) ("C-k" . vertico-previous) ("C-f" . vertico-exit) :map minibuffer-local-map ("M-h" . backward-kill-word)) :custom (vertico-cycle t) :init (vertico-mode)) (use-package savehist :init (savehist-mode)) (use-package marginalia :after vertico :ensure t :custom (marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) :init (marginalia-mode)) ;; lsp (use-package lsp-mode :ensure t) (use-package lsp-nix :ensure lsp-mode :after (lsp-mode) :demand t :custom (lsp-nix-nil-formatter ["nixpkgs-fmt"])) (use-package nix-mode :hook (nix-mode . lsp-deferred) :ensure t) ;; optionally (use-package lsp-ui :commands lsp-ui-mode :config (setq lsp-ui-doc-enable t) (setq lsp-ui-doc-header t) (setq lsp-ui-doc-include-signature t) (setq lsp-ui-doc-border (face-foreground 'default)) (setq lsp-ui-sideline-show-code-actions t) (setq lsp-ui-sideline-delay 0.05)) ;; optionally if you want to use debugger (use-package dap-mode) ;; optional if you want which-key integration (use-package which-key :config (which-key-mode)) (use-package magit :bind ("C-M-;" . magit-status) :commands (magit-status magit-get-current-branch) :custom (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) (use-package magit-todos :defer t) (defun dw/switch-project-action () "Switch to a workspace with the project name and start `magit-status'." (persp-switch (projectile-project-name)) (magit-status)) (use-package fzf :bind (("C-c f g" . fzf-git-files) ("C-c f f" . fzf-find-file) ("C-c d" . fzf-directory) ("C-c f r" . fzf-grep) ("C-c b" . fzf-switch-buffer)) :config (setq fzf/args "-x --print-query --margin=1,0 --no-hscroll" fzf/executable "fzf" fzf/git-grep-args "-i --line-number %s" fzf/grep-command "rg --no-heading -nH" fzf/position-bottom t fzf/window-height 15)) (use-package projectile :diminish projectile-mode :config (projectile-mode) :demand t :bind ("C-M-p" . projectile-find-file) :bind-keymap ("C-c p" . projectile-command-map) :init (when (file-directory-p "~/Code") (setq projectile-project-search-path '("~/Code"))) (setq projectile-switch-project-action #'projectile-dired)) (use-package kubernetes-evil :ensure t :after kubernetes)