diff --git a/hosts/satori/hardware.nix b/hosts/satori/hardware.nix index 301fc11..c99435a 100644 --- a/hosts/satori/hardware.nix +++ b/hosts/satori/hardware.nix @@ -30,7 +30,11 @@ options = [ "compress-force=zstd:3" ]; }; - swapDevices = [ ]; + swapDevices = [ + { + device = "/dev/disk/by-uuid/d4cef4cd-19b0-4d1b-8569-9985ff42270c"; + } + ]; zramSwap = { enable = true; algorithm = "lz4"; diff --git a/hosts/satori/pkgs.nix b/hosts/satori/pkgs.nix index 109696f..5bd5662 100644 --- a/hosts/satori/pkgs.nix +++ b/hosts/satori/pkgs.nix @@ -50,6 +50,9 @@ }; zsh = { enable = true; + shellAliases = { + "ec" = "emacsclient"; + }; promptInit = '' RPROMPT='%B%F{cyan}%n%f@%F{red}%m%b' function preexec() { diff --git a/hosts/satori/stuff.nix b/hosts/satori/stuff.nix index 7a4ec70..c21d235 100644 --- a/hosts/satori/stuff.nix +++ b/hosts/satori/stuff.nix @@ -37,6 +37,7 @@ nerdfonts font-awesome monoid + office-code-pro ]; users.users.natto = { isNormalUser = true; diff --git a/modules/emacs/#init.el# b/modules/emacs/#init.el# deleted file mode 100644 index a40ed3a..0000000 --- a/modules/emacs/#init.el# +++ /dev/null @@ -1,221 +0,0 @@ -;; -*- lexical-binding:t -*- - -;;colors -(setq -c-bg "#1d2021" -c-fg "#d5c4a1" -c-red "#cc241d" -c-green "#98971a" -c-yellow "#d79921" -c-blue "#458588" -c-magenta "#b16286" -c-cyan "#689d6a" -c-white "#a89984" -c-black "#928374" -c-red-2 "#fb4934" -c-green-2 "#b8bb26" -c-yellow-2 "#fabd2f" -c-blue-2 "#83a598" -c-magenta-2 "#d3869b" -c-cyan-2 "#8ec07c" -c-white-2 "#ebdbb2") -;;settings -(setq display-line-numbers-type 'relative) -(setq inhibit-startup-screen t) -(set-face-attribute 'default nil :font "Monoid" :height 120) -(global-hl-line-mode 1) -(scroll-bar-mode 0) -(tool-bar-mode 0) -(menu-bar-mode 0) -(tab-bar-mode t) -(fringe-mode 0) -(global-display-line-numbers-mode 1) -(setq initial-major-mode 'emacs-lisp-mode) -(setq frame-resize-pixelwise t) -(setq auto-window-vscroll nil) -(setq scroll-step 1) - -;;add packages and shit -(require 'package) -(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) -(package-initialize) -(require 'use-package) - - -;;package config and modes -(use-package gruvbox-theme - :init (load-theme 'gruvbox-dark-hard t)) - -(use-package ivy - :config - (define-key ivy-minibuffer-map (kbd "C-n") 'ivy-next-line) - (define-key ivy-minibuffer-map (kbd "C-e") 'ivy-previous-line) - (define-key ivy-minibuffer-map (kbd "C-i") 'ivy-done) - (ivy-mode 1)) - -(use-package elcord - :config - (elcord-mode 1)) - -(use-package undo-tree - :config - (global-undo-tree-mode 1)) - -(use-package evil - :config - (evil-set-undo-system 'undo-tree) - (evil-mode 1)) - -(use-package evil-colemak-basics - :init - (setq evil-colemak-basics-layout-mod 'mod-dh) - :config - (global-evil-colemak-basics-mode 1)) - -(use-package treemacs - :config - (treemacs-filewatch-mode 1) -; (treemacs-display-current-project-exclusively) - (treemacs-git-mode 'deferred)) - -(use-package treemacs-evil - :config - (define-key evil-treemacs-state-map (kbd "n") #'treemacs-next-line) - (define-key evil-treemacs-state-map (kbd "e") #'treemacs-previous-line) - (define-key evil-treemacs-state-map (kbd "M-n") #'treemacs-next-neighbour) - (define-key evil-treemacs-state-map (kbd "M-e") #'treemacs-previous-neighbour) - (define-key evil-treemacs-state-map (kbd "M-N") #'treemacs-next-line-other-window) - (define-key evil-treemacs-state-map (kbd "M-E") #'treemacs-previous-line-other-window) - (define-key evil-treemacs-state-map (kbd "M") #'treemacs-collapse-parent-node) - (evil-define-key 'treemacs treemacs-mode-map (kbd "m") #'treemacs-COLLAPSE-action) - (evil-define-key 'treemacs treemacs-mode-map (kbd "i") #'treemacs-RET-action) - ) - -(use-package lsp-mode - :init - (setq ) - :config - (lsp-mode 1)) - -(use-package lsp-treemacs - :config - (lsp-treemacs-sync-mode 1)) - -(use-package lsp-ui - :init - (setq lsp-ui-doc-show-with-cursor t) - :config - (lsp-ui-peek-enable 1) - (lsp-ui-doc-enable 1)) - -(use-package company - :after lsp-mode - :config - (define-key company-active-map (kbd "C-n") 'company-select-next) - (define-key company-active-map (kbd "C-e") 'company-select-previous) - (define-key company-search-map (kbd "C-n") 'company-select-next) - (define-key company-search-map (kbd "C-e") 'company-select-previous)) - -(use-package tree-sitter-langs) - -(use-package tree-sitter - :config - (global-tree-sitter-mode) - :init - (add-to-list 'tree-sitter-major-mode-language-alist '(fundamental-mode . bash)) - (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode)) - -(use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) - -(use-package flex-autopair - :config - (flex-autopair-mode 1)) - -(use-package rainbow-mode - :config - (rainbow-mode 1)) - -(use-package rustic) - -(use-package magit) - -(use-package nix-mode - :mode "\\.nix\\'") - -(defface bufname - `((t :foreground ,c-fg - :background ,c-bg - :weight bold - )) - "Custom face for buffer name" - :group 'mode-line-faces ) - -(defface majmode - `((t :foreground ,c-fg - :background ,c-bg - )) - "Custom face for major mode" - :group 'mode-line-faces ) - -(defface gitmode - `((t :foreground ,c-fg - :background ,c-red-2 - :weight bold - )) - "Custom face for VC" - :group 'mode-line-faces ) -(defface infomode - `((t :foreground ,c-bg - :background ,c-green - :weight bold - )) - "For showing line and column number" - :group 'mode-line-faces ) - - -(setq-default mode-line-format - '((:propertize " %b " face bufname) - (vc-mode (:propertize (" " vc-mode " " ) face gitmode)) - (:propertize (" " mode-name " ") face majmode) - (:propertize ("[[ %l | %c || %p . %+%@ ]]") face infomode) - ("%-"))) - -(setq exclude-ln '(term-mode-hook eshell-mode-hook shell-mode-hook)) -(while exclude-ln - (add-hook (car exclude-ln) (lambda () (display-line-numbers-mode 0))) - (setq exclude-ln (cdr exclude-ln))) -(let ((default-color (cons (face-background 'mode-line) - (face-foreground 'mode-line)))) - (add-hook 'post-command-hook - (lambda () - (let ((color (cond ((minibufferp) default-color) - ((evil-insert-state-p) (cons c-magenta c-fg)) - ((evil-visual-state-p) (cons c-cyan c-fg)) - ((evil-normal-state-p) (cons c-fg c-bg)) - ((buffer-modified-p) (cons c-blue c-fg)) - (t default-color)))) - (set-face-background 'bufname (car color)) - (set-face-foreground 'bufname (cdr color)) - )))) - -;;keybinds - -(add-hook 'emacs-startup-hook (lambda () - (when (get-buffer "*scratch*") - (kill-buffer "*scratch*")))) - -(global-set-key (kbd "M-o") 'treemacs) -(global-set-key (kbd "M-v") 'split-window-vertically) -(global-set-key (kbd "M-h") 'split-window-horizontally) -(global-set-key (kbd "M-C-m") 'shrink-window-horizontally) -(global-set-key (kbd "M-C-i") 'enlarge-window-horizontally) -(global-set-key (kbd "M-C-e") 'shrink-window) -(global-set-key (kbd "M-C-n") 'enlarge-window) -(global-set-key (kbd "C-S-m") 'windmove-left) -(global-set-key (kbd "C-S-i") 'windmove-right) -(global-set-key (kbd "C-S-e") 'windmove-up) -(global-set-key (kbd "C-S-n") 'windmove-down) -(global-set-key (kbd "M-S-,") 'previous-buffer) -(global-set-key (kbd "M-S-.") 'next-buffer) -(global-set-key (kbd "M-C-S-q") '(kill-buffer)) diff --git a/modules/emacs/init.el b/modules/emacs/init.el index 1751834..c51d33f 100644 --- a/modules/emacs/init.el +++ b/modules/emacs/init.el @@ -1,4 +1,4 @@ -;; -*- lexical-binding:t -*- +; -*- lexical-binding: t; -*- ;;colors (setq c-bg "#1d2021" @@ -19,19 +19,20 @@ c-magenta-2 "#d3869b" c-cyan-2 "#8ec07c" c-white-2 "#ebdbb2") ;;settings -(setq display-line-numbers-type 'relative) -(setq inhibit-startup-screen t) (set-face-attribute 'default nil :font "Monoid" :height 120) (global-hl-line-mode 1) (scroll-bar-mode 0) (tool-bar-mode 0) (menu-bar-mode 0) (fringe-mode 0) +(cua-mode 1) (global-display-line-numbers-mode 1) -(setq initial-major-mode 'emacs-lisp-mode) -(setq frame-resize-pixelwise t) -(setq auto-window-vscroll nil) -(setq scroll-step 1) +(setq initial-major-mode 'emacs-lisp-mode + frame-resize-pixelwise t + auto-window-vscroll nil + scroll-step 1 + display-line-numbers-type 'relative + inhibit-startup-screen t) ;;add packages and shit (require 'package) @@ -39,10 +40,20 @@ c-white-2 "#ebdbb2") (package-initialize) (require 'use-package) - ;;package config and modes -(use-package gruvbox-theme - :init (load-theme 'gruvbox-dark-hard t)) +;(use-package gruvbox-theme +; :init (load-theme 'gruvbox-dark-hard t)) + +(use-package doom-themes + :config + (setq doom-themes-enable-bold t + doom-themes-enable-italic t + doom-themes-treemacs-theme "doom-colors" + doom-gruvbox-dark-variant "hard") + (load-theme 'doom-gruvbox t) + (doom-themes-visual-bell-config) + (doom-themes-treemacs-config) + (doom-themes-org-config)) (use-package ivy :config @@ -73,7 +84,7 @@ c-white-2 "#ebdbb2") (use-package treemacs :config (treemacs-filewatch-mode 1) -; (treemacs-display-current-project-exclusively) + (treemacs-display-current-project-exclusively) (treemacs-git-mode 'deferred)) (use-package treemacs-evil :config @@ -83,7 +94,7 @@ c-white-2 "#ebdbb2") (define-key evil-treemacs-state-map (kbd "M-e") #'treemacs-previous-neighbour) (define-key evil-treemacs-state-map (kbd "M-N") #'treemacs-next-line-other-window) (define-key evil-treemacs-state-map (kbd "M-E") #'treemacs-previous-line-other-window) - (define-key evil-treemacs-state-map (kbd "M") #'treemacs-collapse-parent-node) +; (define-key evil-treemacs-state-map (kbd "M") #'treemacs-collapse-parent-node) (evil-define-key 'treemacs treemacs-mode-map (kbd "m") #'treemacs-COLLAPSE-action) (evil-define-key 'treemacs treemacs-mode-map (kbd "i") #'treemacs-RET-action) ) @@ -142,20 +153,40 @@ c-white-2 "#ebdbb2") (use-package projectile) -(use-package vterm) - -(use-package vterm-toggle +(use-package vterm :config - (setq vterm-toggle-fullscreen-p nil) - (add-to-list 'display-buffer-alist - '((lambda(bufname _) (with-current-buffer bufname (equal major-mode 'vterm-mode))) - (display-buffer-reuse-window display-buffer-at-bottom) - (reusable-frames . visible) - (window-height . 0.4))) - (global-set-key [f1] 'vterm-toggle) - (global-set-key [C-f1] 'vterm-toggle-cd) - (define-key vterm-mode-map (kbd "C-N") 'vterm-toggle-forward) - (define-key vterm-mode-map (kbd "C-E") 'vterm-toggle-backward)) + (setq vterm-timer-delay 0.005) + ) + +(use-package all-the-icons) + +(use-package centaur-tabs + :config + (setq centaur-tabs-style "bar" + centaur-tabs-set-bar 'left + centaur-tabs-height 18 + centaur-tabs-set-icons t) + (centaur-tabs-group-buffer-groups) + (centaur-tabs-mode 1) + (centaur-tabs-headline-match) + (set-face-attribute 'tab-line nil :background c-bg :foreground c-fg) + (set-face-attribute 'centaur-tabs-active-bar-face nil :background c-red-2) + (set-face-attribute 'centaur-tabs-selected nil :background c-fg :foreground c-bg) + (set-face-attribute 'centaur-tabs-unselected nil :background c-bg :foreground c-fg)) + +(use-package general) + + (use-package vterm-toggle + :config + (setq vterm-toggle-fullscreen-p nil) + (add-to-list 'display-buffer-alist + '((lambda(bufname _) (with-current-buffer bufname (equal major-mode 'vterm-mode))) + (display-buffer-reuse-window display-buffer-at-bottom) + (reusable-frames . visible) + (window-height . 0.4))) + (define-key vterm-mode-map (kbd "") 'vterm-toggle-forward) + (define-key vterm-mode-map (kbd "") 'vterm-toggle-backward)) + (defface bufname `((t :foreground ,c-fg @@ -213,17 +244,89 @@ c-white-2 "#ebdbb2") )))) ;;keybinds -(global-set-key (kbd "M-o") 'treemacs) -(global-set-key (kbd "M-v") 'split-window-vertically) -(global-set-key (kbd "M-h") 'split-window-horizontally) -(global-set-key (kbd "M-C-m") 'shrink-window-horizontally) -(global-set-key (kbd "M-C-i") 'enlarge-window-horizontally) -(global-set-key (kbd "M-C-e") 'shrink-window) -(global-set-key (kbd "M-C-n") 'enlarge-window) -(global-set-key (kbd "C-S-m") 'windmove-left) -(global-set-key (kbd "C-S-i") 'windmove-right) -(global-set-key (kbd "C-S-e") 'windmove-up) -(global-set-key (kbd "C-S-n") 'windmove-down) -(global-set-key (kbd "M->") 'previous-buffer) -(global-set-key (kbd "M-<") 'next-buffer) -(global-set-key (kbd "M-C-S-q") 'kill-buffer) +;(global-set-key (kbd "M-o") 'treemacs) +;(global-set-key (kbd "M-v") 'split-window-vertically) +;(global-set-key (kbd "M-h") 'split-window-horizontally) +;(global-set-key (kbd "M-C-m") 'shrink-window-horizontally) +;(global-set-key (kbd "M-C-i") 'enlarge-window-horizontally) +;(global-set-key (kbd "M-C-e") 'shrink-window) +;(global-set-key (kbd "M-C-n") 'enlarge-window) +;(global-set-key (kbd "C-S-m") 'windmove-left) +;(global-set-key (kbd "C-S-i") 'windmove-right) +;(global-set-key (kbd "C-S-e") 'windmove-up) +;(global-set-key (kbd "C-S-n") 'windmove-down) +;(global-set-key (kbd "M->") 'previous-buffer) +;(global-set-key (kbd "M-<") 'next-buffer) +;(global-set-key (kbd "M-C-S-q") 'kill-buffer) + + +;; stolen from https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_in_new_vterm/ +(defun run-in-vterm-kill (process event) + "A process sentinel. Kills PROCESS's buffer if it is live." + (let ((b (process-buffer process))) + (and (buffer-live-p b) + (kill-buffer b)))) + +(defun run-in-vterm (command) + "Execute string COMMAND in a new vterm. + +Interactively, prompt for COMMAND with the current buffer's file +name supplied. When called from Dired, supply the name of the +file at point. + +Like `async-shell-command`, but run in a vterm for full terminal features. + +The new vterm buffer is named in the form `*foo bar.baz*`, the +command and its arguments in earmuffs. + +When the command terminates, the shell remains open, but when the +shell exits, the buffer is killed." + (interactive + (list + (let* ((f (cond (buffer-file-name) + ((eq major-mode 'dired-mode) + (dired-get-filename nil t)))) + (filename (concat " " (shell-quote-argument (and f (file-relative-name f)))))) + (read-shell-command "Terminal command: " + (cons filename 0) + (cons 'shell-command-history 1) + (list filename))))) + (with-current-buffer (vterm (concat "*" command "*")) + (set-process-sentinel vterm--process #'run-in-vterm-kill) + (vterm-send-string (concat command)) + (vterm-send-return))) + + +(general-define-key + :states '(normal emacs visual motion treemacs Eshell) + :keymaps '(normal emacs override Eshell) + "M-o" 'treemacs + "M-v" 'split-window-vertically + "M-h" 'split-window-horizontally + "M-C-m" 'shrink-window-horizontally + "M-C-i" 'enlarge-window-horizontally + "M-C-e" 'shrink-window + "M-C-n" 'enlarge-window + "C-m" 'windmove-left + "C-i" 'windmove-right + "C-n" 'windmove-down + "C-e" 'windmove-up + "M-," 'previous-buffer + "M-." 'next-buffer + "M-C-S-q" 'kill-buffer-and-window + "M-w" 'centaur-tabs--kill-this-buffer-dont-ask + "M-S-w" 'kill-window + "M-S-," 'centaur-tabs-backward + "M-S-." 'centaur-tabs-forward + "" (lambda () (interactive) (vterm t)) + "C-" 'vterm-toggle-cd + "" 'vterm-toggle + "f5" (lambda () (interactive) (run-in-vterm (concat "gcc " buffer-file-name " -o " (file-name-sans-extension buffer-file-name) " && " (file-name-sans-extension buffer-file-name))))) + +(general-define-key + :states '(normal insert) + :keymaps 'VTerm + "C-S-v" 'vterm-yank + ) + +