diff options
| author | spl3g <spleefer6@yandex.ru> | 2023-10-26 14:44:22 +0300 |
|---|---|---|
| committer | spl3g <spleefer6@yandex.ru> | 2023-10-26 14:44:22 +0300 |
| commit | ddd3490dfb592417163e801994a60854dac135fe (patch) | |
| tree | ff25c2df4bd89fc837ed585dfac38594b5f23b72 /home-manager/programs | |
| parent | 429bf12cd70405d6ea18d14fe9d384a6458ae99d (diff) | |
configs for my laptop
Diffstat (limited to 'home-manager/programs')
| -rw-r--r-- | home-manager/programs/default.nix | 13 | ||||
| -rw-r--r-- | home-manager/programs/emacs/config.org | 528 | ||||
| -rw-r--r-- | home-manager/programs/emacs/default.nix | 44 | ||||
| -rw-r--r-- | home-manager/programs/emacs/default.nix~ | 14 | ||||
| -rw-r--r-- | home-manager/programs/emacs/init.el | 342 | ||||
| -rw-r--r-- | home-manager/programs/firefox/default.nix | 20 | ||||
| -rw-r--r-- | home-manager/programs/firefox/user.js | 3 | ||||
| -rw-r--r-- | home-manager/programs/firefox/userChrome.css | 95 | ||||
| -rw-r--r-- | home-manager/programs/fish/default.nix | 26 | ||||
| -rw-r--r-- | home-manager/programs/kitty/default.nix | 11 | ||||
| -rw-r--r-- | home-manager/programs/kitty/default.nix~ | 10 | ||||
| -rw-r--r-- | home-manager/programs/ranger/default.nix | 2 | ||||
| -rw-r--r-- | home-manager/programs/rofi/default.nix | 1 | ||||
| -rw-r--r-- | home-manager/programs/waybar/config.jsonc | 94 | ||||
| -rw-r--r-- | home-manager/programs/waybar/default.nix | 19 | ||||
| -rw-r--r-- | home-manager/programs/waybar/style.css | 26 |
16 files changed, 987 insertions, 261 deletions
diff --git a/home-manager/programs/default.nix b/home-manager/programs/default.nix index f819054..4725825 100644 --- a/home-manager/programs/default.nix +++ b/home-manager/programs/default.nix @@ -1,15 +1,5 @@ let more = { pkgs, ... }: { - programs = { - kitty = { - enable = true; - font.name = "Source Code Pro"; - font.size = 11.3; - theme = "Rosé Pine Moon"; - shellIntegration.enableFishIntegration = true; - extraConfig = "cursor_shape underline"; - }; - }; }; in [ @@ -18,5 +8,6 @@ in ./rofi ./emacs ./ranger - more + ./waybar + ./kitty ] diff --git a/home-manager/programs/emacs/config.org b/home-manager/programs/emacs/config.org index f9938ce..a21da11 100644 --- a/home-manager/programs/emacs/config.org +++ b/home-manager/programs/emacs/config.org @@ -1,4 +1,4 @@ -#+TITLE: spl3g's Emacs config +#+Title: spl3g's Emacs config #+AUTHOR: spl3g #+STARTUP: showeverything #+PROPERTY: header-args :tangle init.el @@ -11,6 +11,7 @@ - [[#meow-mode][Meow mode]] - [[#general-keybindings][General keybindings]] - [[#gui-tweaks][GUI tweaks]] + - [[#disable-gui-shit][Disable gui shit]] - [[#fonts][Fonts]] - [[#display-line-numbers][Display line numbers]] - [[#theme][Theme]] @@ -18,28 +19,46 @@ - [[#modeline][Modeline]] - [[#smooth-scroll][Smooth scroll]] - [[#dashboard][Dashboard]] - - [[#popper][Popper]] + - [[#disable-ring-bell][Disable ring-bell]] + - [[#indent-guide][Indent guide]] + - [[#misc][Misc]] - [[#org-mode][Org mode]] - [[#enabling-toc][Enabling toc]] - [[#org-bullets][Org bullets]] - [[#auto-tangle][Auto-tangle]] + - [[#org-download][Org-download]] + - [[#direnv][Direnv]] - [[#better-ux][Better UX]] - [[#vertico][Vertico]] - [[#consult][Consult]] - [[#treemacs][Treemacs]] + - [[#pairs][Pairs]] + - [[#debugging][Debugging]] + - [[#move-lines][Move lines]] + - [[#truncate-lines][Truncate lines]] +- [[#eat-terminal][EAT terminal]] + - [[#eat][Eat]] - [[#lsp][LSP]] - [[#languages][Languages]] - - [[#corfu--cape][Corfu + cape]] + - [[#corfu][Corfu]] - [[#flycheck][Flycheck]] + - [[#tree-sitter][Tree-sitter]] + - [[#snippets][Snippets]] +- [[#additional-apps][Additional apps]] + - [[#telegram-lol][Telegram lol]] + - [[#magit][Magit]] + - [[#exwm][EXWM]] +- [[#dired][Dired]] + - [[#bindings][Bindings]] + - [[#icons-1][Icons]] * Progs to load first ** use-package -every package is installed by nix and configured by use-package #+begin_src emacs-lisp (require 'use-package) (eval-and-compile (setq use-package-always-ensure t - use-package-expand-minimally t)) + use-package-expand-minimally t)) #+end_src ** Meow mode #+begin_src emacs-lisp @@ -131,8 +150,7 @@ every package is installed by nix and configured by use-package '("z" . meow-pop-selection) '("'" . repeat) '("<escape>" . ignore))) - (setq meow-use-cursor-position-hack t - meow-use-enhanced-selection-effect t) + (setq meow-use-enhanced-selection-effect t) (meow-setup) (meow-global-mode 1)) #+end_src @@ -155,40 +173,52 @@ every package is installed by nix and configured by use-package "," '(consult-buffer :wk "Switch to buffer") "." '(find-file :wk "Find file") ;; Splits - "w" '(:ignore t :wk "Evil splits") + "w" '(:ignore t :wk "Splits") "wv" '(split-window-right :wk "Split vertical") "ws" '(split-window-below :wk "Split") "ww" '(other-window :wk "Cycle throug windows") "wc" '(delete-window :wk "Close window") "wd" '(delete-window :wk "Close window") + "wl" '(evil-window-right :wk "") + "wj" '(evil-window-down :wk "") + "wk" '(evil-window-up :wk "") + "wh" '(evil-window-left :wk "") + "wo" '(delete-other-windows :wk "") ;; Files "f" '(:ignore t :wk "Files") "fr" '(consult-recent-file :wk "Resent files") - "fc" '((lambda () (interactive) (find-file "~/.config/emacs/init.el")) :wk "Edit emacs config") + "fc" '((lambda () (interactive) (find-file "~/.nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config") "fu" '(sudo-edit-find-file :wk "Sudo find file") "fU" '(sudo-edit :wk "Sudo edit file") - ;; Quiting - "q" '(:ignore t :wk "Quiting") - "qq" '(:ignore t :wk "Quit TBD") - "qr" '(:ignore t :wk "Restart TBD") - "qe" '(eval-buffer :wk "Eval buffer") - "r" '(reload-init-file :wk "Reload config") - "l" '(lsp-keymap-prefix :wk "LSP"))) + "l" '(lsp-keymap-prefix :wk "LSP") + ;; Opening.. things + "o" '(:ignore t) + "ot" '(eat-toggle :wk "Eat terminal"))) #+end_src + * GUI tweaks +** Disable gui shit +#+begin_src emacs-lisp + (defun spl3g/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) + (add-hook 'after-make-frame-functions 'spl3g/disable-scroll-bars) +#+end_src ** Fonts #+begin_src emacs-lisp + (setq default-frame-alist '((font . "Source Code Pro"))) (set-face-attribute 'default nil :font "Source Code Pro" - :height 113 + :height 110 :weight 'medium) (set-face-attribute 'fixed-pitch nil :font "Source Code Pro" - :height 113 + :height 110 :weight 'medium) (set-face-attribute 'variable-pitch nil :font "Rubik" - :height 113 + :height 110 :weight 'medium) (set-face-attribute 'font-lock-comment-face nil :slant 'italic) @@ -197,8 +227,8 @@ every package is installed by nix and configured by use-package #+end_src ** Display line numbers #+begin_src emacs-lisp -(global-display-line-numbers-mode 1) -(global-visual-line-mode t) +(add-hook 'prog-mode-hook 'display-line-numbers-mode) +(add-hook 'prog-mode-hook 'visual-line-mode) #+end_src ** Theme @@ -221,11 +251,13 @@ every package is installed by nix and configured by use-package ** Modeline #+begin_src emacs-lisp - (use-package mood-line - :init - (mood-line-mode) + (use-package doom-modeline + :init (doom-modeline-mode 1) :config - (setq mood-line-glyph-alist mood-line-glyphs-unicode)) + (setq doom-modeline-height 35 ;; sets modeline height + doom-modeline-bar-width 5 ;; sets right bar width + doom-modeline-persp-name t ;; adds perspective name to modeline + doom-modeline-persp-icon t)) ;; adds folder icon next to persp name #+end_src ** Smooth scroll @@ -243,27 +275,27 @@ every package is installed by nix and configured by use-package (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") (setq dashboard-startup-banner 'logo) - (setq dashboard-center-content t)) + (setq dashboard-center-content t) + (add-to-list 'dashboard-item-generators '(config . dashboard-open-config)) + (setq dashboard-items '((recents . 5) + (agenda . 5)))) #+end_src -** Popper +** Disable ring-bell #+begin_src emacs-lisp - (use-package popper - :ensure t ; or :straight t - :bind (("C-`" . popper-toggle-latest) - ("M-`" . popper-cycle) - ("C-M-`" . popper-toggle-type)) - :init - (setq popper-reference-buffers - '("\\*Messages\\*" - "Output\\*$" - "\\*Async Shell Command\\*" - help-mode - "^\\*vterm.*\\*$" vterm-mode - compilation-mode)) - (popper-mode +1) - (popper-echo-mode +1)) + (setq ring-bell-function 'ignore) +#+end_src +** Indent guide +#+begin_src emacs-lisp + (use-package indent-guide + :hook (prog-mode . indent-guide-mode)) +#+end_src +** Misc +#+begin_src emacs-lisp + (setq window-resize-pixelwise t) + (setq frame-resize-pixelwise t) + (save-place-mode t) + (defalias 'yes-or-no #'y-or-n-p) #+end_src - * Org mode #+begin_src emacs-lisp (add-hook 'org-mode-hook 'org-indent-mode) @@ -272,61 +304,75 @@ every package is installed by nix and configured by use-package ** Enabling toc #+begin_src emacs-lisp - (use-package toc-org) - (add-hook 'org-mode-hook 'toc-org-mode) + (use-package toc-org + :init (add-hook 'org-mode-hook 'toc-org-enable)) #+end_src ** Org bullets #+begin_src emacs-lisp - (use-package org-bullets) - (add-hook 'org-mode-hook 'org-bullets-mode) + (use-package org-bullets + :init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) #+end_src ** Auto-tangle #+begin_src emacs-lisp - (use-package org-auto-tangle) - (add-hook 'org-mode-hook 'org-auto-tangle-mode) + (use-package org-auto-tangle + :init (add-hook 'org-mode-hook 'org-auto-tangle-mode)) +#+end_src +** Org-download +#+begin_src emacs-lisp + (use-package org-download + :hook (dired-mode-hook . org-download-enable)) +#+end_src +** Direnv +#+begin_src emacs-lisp + (use-package direnv + :config + (direnv-mode)) #+end_src * Better UX ** Vertico #+begin_src emacs-lisp - (use-package vertico + (use-package vertico + :init + (vertico-mode) + :bind (:map vertico-map + ("M-j" . vertico-next) + ("M-k" . vertico-previous)) + :config + (savehist-mode 1)) + (use-package emacs :init - (vertico-mode) - :config - (savehist-mode 1)) - (use-package emacs - :init - ;; Add prompt indicator to `completing-read-multiple'. - ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. - (defun crm-indicator (args) - (cons (format "[CRM%s] %s" - (replace-regexp-in-string - "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" - crm-separator) - (car args)) - (cdr args))) - (advice-add #'completing-read-multiple :filter-args #'crm-indicator) - - ;; Do not allow the cursor in the minibuffer prompt - (setq minibuffer-prompt-properties - '(read-only t cursor-intangible t face minibuffer-prompt)) - (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) - - ;; Emacs 28: Hide commands in M-x which do not work in the current mode. - ;; Vertico commands are hidden in normal buffers. - ;; (setq read-extended-command-predicate - ;; #'command-completion-default-include-p) - - ;; Enable recursive minibuffers - (setq enable-recursive-minibuffers t)) + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Emacs 28: Hide commands in M-x which do not work in the current mode. + ;; Vertico commands are hidden in normal buffers. + ;; (setq read-extended-command-predicate + ;; #'command-completion-default-include-p) + + ;; Enable recursive minibuffers + (setq enable-recursive-minibuffers t)) #+end_src *** Ordeless #+begin_src emacs-lisp (use-package orderless :init (setq completion-styles '(orderless basic) - completion-category-defaults nil - completion-category-overrides '((file (styles partial-completion))))) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) #+end_src *** Marginalia #+begin_src emacs-lisp @@ -468,57 +514,156 @@ every package is installed by nix and configured by use-package #+begin_src emacs-lisp (use-package treemacs-all-the-icons) #+end_src +** Pairs +#+begin_src emacs-lisp + (use-package smartparens + :init (smartparens-global-mode) + :hook (prog-mode-hook . turn-on-smartparens-strict-mode) + :config + ;; Snitched from doom + (let ((unless-list '(sp-point-before-word-p + sp-point-after-word-p + sp-point-before-same-p))) + (sp-pair "'" nil :unless unless-list) + (sp-pair "\"" nil :unless unless-list)) + (dolist (brace '("(" "{" "[")) + (sp-pair brace nil + :post-handlers '(("||\n[i]" "RET") ("| " "SPC")) + :unless '(sp-point-before-word-p sp-point-before-same-p))) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + + ;; Major-mode specific fixes + (sp-local-pair 'ruby-mode "{" "}" + :pre-handlers '(:rem sp-ruby-pre-handler) + :post-handlers '(:rem sp-ruby-post-handler)) + + ;; Don't eagerly escape Swift style string interpolation + (sp-local-pair 'swift-mode "\\(" ")" :when '(sp-in-string-p)) + + ;; Don't do square-bracket space-expansion where it doesn't make sense to + (sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode) + "[" nil :post-handlers '(:rem ("| " "SPC"))) + + ;; Reasonable default pairs for HTML-style comments + (sp-local-pair (append sp--html-modes '(markdown-mode gfm-mode)) + "<!--" "-->" + :unless '(sp-point-before-word-p sp-point-before-same-p) + :actions '(insert) :post-handlers '(("| " "SPC"))) + ;; Expand C-style comment blocks. + (defun +default-open-doc-comments-block (&rest _ignored) + (save-excursion + (newline) + (indent-according-to-mode))) + (sp-local-pair + '(js2-mode typescript-mode rjsx-mode rust-mode c-mode c++-mode objc-mode + csharp-mode java-mode php-mode css-mode scss-mode less-css-mode + stylus-mode scala-mode) + "/*" "*/" + :actions '(insert) + :post-handlers '(("| " "SPC") + (" | " "*") + ("|[i]\n[i]" "RET")))) + ;; (use-package parinfer-rust-mode + ;; :hook (lisp-mode-hook . parinfer-rust-mode)) + ;; (electric-pair-mode 1) +#+end_src +** Debugging +#+begin_src emacs-lisp + (use-package dap-mode + :config + (require 'dap-python) + (setq dap-python-debugger 'debugpy)) +#+end_src +** Move lines +#+begin_src emacs-lisp + (use-package move-text + :bind (("C-M-k" . move-text-up) + ("C-M-j" . move-text-down))) +#+end_src +** Truncate lines +#+begin_src emacs-lisp + (set-default 'truncate-lines t) +#+end_src +* EAT terminal +** Eat +#+begin_src emacs-lisp + (use-package eat + :custom + (eat-semi-char-non-bound-keys + '(seq-difference eat-semi-char-non-bound-keys '([C-left] [C-right])))) +#+end_src +*** Eat-toggle +#+begin_src emacs-lisp + (defun eat-toggle() + "Open eat terminal as a popup." + (interactive) + (if (eq major-mode 'eat-mode) + (delete-window) + (let ((buff (get-buffer-create eat-buffer-name))) + (cl-assert (and buff (buffer-live-p buff))) + (funcall #'pop-to-buffer buff) + (with-current-buffer buff + (setq-local split-width-threshold nil) + (setq-local window-min-height 2) + (unless (derived-mode-p 'eat-mode) + (eat)))))) +#+end_src * LSP #+begin_src emacs-lisp (use-package lsp-mode + :custom + (lsp-completion-provider :none) + + :init + (defun my/orderless-dispatch-flex-first (_pattern index _total) + (and (eq index 0) 'orderless-flex)) + + (defun my/lsp-mode-setup-completion () + (setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults)) + '(orderless))) + + (add-hook 'orderless-style-dispatchers #'my/orderless-dispatch-flex-first nil 'local) + (add-to-list 'completion-at-point-functions (cape-capf-buster #'lsp-completion-at-point)) + :hook - (python-mode . lsp) - (rust-mode . lsp) - (lsp-mode . lsp-enable-which-key-integration) - (sh-mode . lsp) - :commands lsp) + (lsp-completion-mode . my/lsp-mode-setup-completion)) #+end_src ** Languages *** Python #+begin_src emacs-lisp (use-package lsp-pyright - :ensure t) + :hook (python-mode . (lambda () + (require 'lsp-pyright) + (lsp)))) + (use-package py-autopep8 + :hook (python-mode . py-autopep8-mode)) #+end_src *** Rust #+begin_src emacs-lisp - (use-package rustic - :ensure - :bind (:map rustic-mode-map - ("M-j" . lsp-ui-imenu) - ("M-?" . lsp-find-references) - ("C-c C-c l" . flycheck-list-errors) - ("C-c C-c a" . lsp-execute-code-action) - ("C-c C-c r" . lsp-rename) - ("C-c C-c q" . lsp-workspace-restart) - ("C-c C-c Q" . lsp-workspace-shutdown) - ("C-c C-c s" . lsp-rust-analyzer-status)) - :config - ;; uncomment for less flashiness - ;; (setq lsp-eldoc-hook nil) - ;; (setq lsp-enable-symbol-highlighting nil) - ;; (setq lsp-signature-auto-activate nil) - - ;; comment to disable rustfmt on save - (setq rustic-format-on-save t) - (add-hook 'rustic-mode-hook 'rk/rustic-mode-hook)) - (use-package flycheck-rust - :config - (with eval-after-load 'rust-mode - (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) - - (defun rk/rustic-mode-hook () - ;; so that run C-c C-c C-r works without having to confirm, but don't try to - ;; save rust buffers that are not file visiting. Once - ;; https://github.com/brotzeit/rustic/issues/253 has been resolved this should - ;; no longer be necessary. - (when buffer-file-name - (setq-local buffer-save-without-query t)) - (add-hook 'before-save-hook 'lsp-format-buffer nil t)) + (use-package rustic + :ensure + :bind (:map rustic-mode-map + ("M-j" . lsp-ui-imenu) + ("M-?" . lsp-find-references) + ("C-c C-c l" . flycheck-list-errors) + ("C-c C-c a" . lsp-execute-code-action) + ("C-c C-c r" . lsp-rename) + ("C-c C-c q" . lsp-workspace-restart) + ("C-c C-c Q" . lsp-workspace-shutdown) + ("C-c C-c s" . lsp-rust-analyzer-status)) + :config + ;; uncomment for less flashiness + ;; (setq lsp-eldoc-hook nil) + ;; (setq lsp-enable-symbol-highlighting nil) + ;; (setq lsp-signature-auto-activate nil) + + ;; comment to disable rustfmt on save + (setq rustic-format-on-save t)) + (use-package flycheck-rust + :config + (with-eval-after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) #+end_src *** Fish #+begin_src emacs-lisp @@ -528,44 +673,139 @@ every package is installed by nix and configured by use-package *** Nix #+begin_src emacs-lisp (use-package nix-mode - :mode "(.nix)$") + :mode ("\\.nix\\'" "\\.nix.in\\'")) + (use-package nix-drv-mode + :ensure nix-mode + :mode "\\.drv\\'") + (use-package nix-shell + :ensure nix-mode + :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) + (use-package nix-repl + :ensure nix-mode + :commands (nix-repl)) #+end_src -** Corfu + cape +*** Yuck #+begin_src emacs-lisp - (use-package corfu - :custom - (corfu-cycle t) - (corfu-auto t) - (corfu-preselect 'prompt) - :bind - (:map corfu-map - ("TAB" . corfu-next) - ([tab] . corfu-next) - ("S-TAB" . corfu-previous) - ([backtab] . corfu-previous)) - :init - (global-corfu-mode)) + (use-package yuck-mode) #+end_src +*** Web #+begin_src emacs-lisp - (use-package cape - :init - (add-to-list 'completion-at-point-functions #'cape-file)) + (use-package web-mode + :config + (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))) #+end_src +*** JavaScript #+begin_src emacs-lisp + (use-package js2-mode) +#+end_src +** Corfu +#+begin_src emacs-lisp + (use-package corfu + :custom + (corfu-cycle t) + (corfu-preselect 'prompt) + (corfu-auto t) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) + + :init + (global-corfu-mode)) (use-package emacs :init (setq completion-cycle-threshold 3) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + (setq tab-always-indent 'complete)) #+end_src +*** Cape +#+begin_src emacs-lisp + (use-package cape + ;; Bind dedicated completion commands + :bind (("C-c p p" . completion-at-point) ;; capf + ("C-c p t" . complete-tag) ;; etags + ("C-c p d" . cape-dabbrev) ;; or dabbrev-completion + ("C-c p h" . cape-history) + ("C-c p f" . cape-file) + ("C-c p k" . cape-keyword) + ("C-c p s" . cape-elisp-symbol) + ("C-c p e" . cape-elisp-block) + ("C-c p a" . cape-abbrev) + ("C-c p l" . cape-line) + ("C-c p w" . cape-dict) + ("C-c p :" . cape-emoji)) + :init + (add-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + ) +#+end_src + ** Flycheck #+begin_src emacs-lisp - (use-package flycheck - :init (global-flycheck-mode)) + (use-package flycheck + :init (global-flycheck-mode)) #+end_src -*** Flycheck inline errors +** Tree-sitter #+begin_src emacs-lisp - (use-package flycheck-inline - :config - (with-eval-after-load 'flycheck - (add-hook 'flycheck-mode-hook #'flycheck-inline-mode))) + (use-package tree-sitter + :init + (global-tree-sitter-mode) + :config + (add-hook 'tree-sitter-mode-hook 'tree-sitter-hl-mode)) +#+end_src +*** Additional langs +#+begin_src emacs-lisp + (use-package tree-sitter-langs) #+end_src +** Snippets +#+begin_src emacs-lisp + (use-package yasnippet + :init (yas-global-mode)) + (use-package yasnippet-snippets) +#+end_src +* Additional apps +** Telegram lol +#+begin_src emacs-lisp + ;; (add-to-list 'load-path "~/telega.el") + ;; (require 'telega) +#+end_src +** Magit +#+begin_src emacs-lisp + (use-package magit) +#+end_src +** EXWM +#+begin_src emacs-lisp + ;; (use-package exwm) + ;; (require 'exwm) + ;; (require 'exwm-config) + ;; (exwm-config-example) +#+end_src +* Dired +** Bindings +#+begin_src emacs-lisp + (use-package dired + :ensure nil + :custom ((dired-listing-switches "-agho --group-directories-first")) + :bind (:map dired-mode-map + ("h" . 'dired-up-directory) + ("l" . 'dired-find-file) + ("v" . 'meow-visit))) +#+end_src +** Icons +#+begin_src emacs-lisp + (use-package all-the-icons-dired + :init (add-hook 'dired-mode-hook 'all-the-icons-dired-mode)) +#+end_src + diff --git a/home-manager/programs/emacs/default.nix b/home-manager/programs/emacs/default.nix index 829c2c6..f094a28 100644 --- a/home-manager/programs/emacs/default.nix +++ b/home-manager/programs/emacs/default.nix @@ -4,23 +4,61 @@ let tree-sitter gcc cmake + nodePackages_latest.bash-language-server gnumake + tdlib + emacs-all-the-icons-fonts + libappindicator + libwebp + tgs2png + pkg-config + ffmpeg_6-full + rustc + cargo + rust-analyzer + nodejs_20 ]; + pythonPkgs = with pkgs.python311Packages; [ + flake8 + python-lsp-server + autopep8 + matplotlib + ]; + pkgsUsePackage = with pkgs; [ (pkgs.emacsWithPackagesFromUsePackage { - inherit (service) package; + package = pkgs.emacs29; config = ./init.el; alwaysEnsure = true; extraEmacsPackages = epkgs: [ epkgs.use-package + (epkgs.melpaBuild rec { + pname = "codeium"; + version = "1.2.102"; + + src = fetchFromGitHub { + owner = "Exafunction"; + repo = "codeium.el"; + rev = "1.2.102"; + sha256 = "0slc13d9nxkn12fw640n1l721qvhnjp7yy3yc7av4c58nl9yv40z"; + }; + + commit = "915837df0f41397028f4ad34f43722c61efd298d"; + + recipe = writeText "recipe" '' + (codeium + :repo "${src.owner}/${src.repo}" + :fetcher github) + ''; + }) ]; }) ]; in { - home.packages = pkgsForEmacs ++ pkgsUsePackage; + home.packages = pkgsForEmacs ++ pkgsUsePackage ++ pythonPkgs; xdg.configFile = { - "emacs/init.el".text = builtins.readFile ./init.el; + # "emacs/init.el".text = builtins.readFile ./init.el; "emacs/early-init.el".text = builtins.readFile ./early-init.el; }; } diff --git a/home-manager/programs/emacs/default.nix~ b/home-manager/programs/emacs/default.nix~ deleted file mode 100644 index fe1f7bc..0000000 --- a/home-manager/programs/emacs/default.nix~ +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs, ... }: -let - settings = { - client.enable = true; - package = pkgs.emacs-gtk; - extraConfig = builtins.readFile ./init.el; - }; -in -{ - services.emacs = { - enable = true; - inherit (settings) client package extraConfig; - }; -} diff --git a/home-manager/programs/emacs/init.el b/home-manager/programs/emacs/init.el index 12f43a2..0e376e2 100644 --- a/home-manager/programs/emacs/init.el +++ b/home-manager/programs/emacs/init.el @@ -1,7 +1,7 @@ (require 'use-package) (eval-and-compile (setq use-package-always-ensure t - use-package-expand-minimally t)) + use-package-expand-minimally t)) (use-package meow :config @@ -91,8 +91,7 @@ '("z" . meow-pop-selection) '("'" . repeat) '("<escape>" . ignore))) - (setq meow-use-cursor-position-hack t - meow-use-enhanced-selection-effect t) + (setq meow-use-enhanced-selection-effect t) (meow-setup) (meow-global-mode 1)) @@ -113,45 +112,54 @@ "," '(consult-buffer :wk "Switch to buffer") "." '(find-file :wk "Find file") ;; Splits - "w" '(:ignore t :wk "Evil splits") + "w" '(:ignore t :wk "Splits") "wv" '(split-window-right :wk "Split vertical") "ws" '(split-window-below :wk "Split") "ww" '(other-window :wk "Cycle throug windows") "wc" '(delete-window :wk "Close window") "wd" '(delete-window :wk "Close window") + "wl" '(evil-window-right :wk "") + "wj" '(evil-window-down :wk "") + "wk" '(evil-window-up :wk "") + "wh" '(evil-window-left :wk "") + "wo" '(delete-other-windows :wk "") ;; Files "f" '(:ignore t :wk "Files") "fr" '(consult-recent-file :wk "Resent files") - "fc" '((lambda () (interactive) (find-file "~/.config/emacs/init.el")) :wk "Edit emacs config") + "fc" '((lambda () (interactive) (find-file "~/.nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config") "fu" '(sudo-edit-find-file :wk "Sudo find file") "fU" '(sudo-edit :wk "Sudo edit file") - ;; Quiting - "q" '(:ignore t :wk "Quiting") - "qq" '(:ignore t :wk "Quit TBD") - "qr" '(:ignore t :wk "Restart TBD") - "qe" '(eval-buffer :wk "Eval buffer") - "r" '(reload-init-file :wk "Reload config") - "l" '(lsp-keymap-prefix :wk "LSP"))) - + "l" '(lsp-keymap-prefix :wk "LSP") + ;; Opening.. things + "o" '(:ignore t) + "ot" '(eat-toggle :wk "Eat terminal"))) + +(defun spl3g/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) +(add-hook 'after-make-frame-functions 'spl3g/disable-scroll-bars) + +(setq default-frame-alist '((font . "Source Code Pro"))) (set-face-attribute 'default nil :font "Source Code Pro" - :height 113 + :height 110 :weight 'medium) (set-face-attribute 'fixed-pitch nil :font "Source Code Pro" - :height 113 + :height 110 :weight 'medium) (set-face-attribute 'variable-pitch nil :font "Rubik" - :height 113 + :height 110 :weight 'medium) (set-face-attribute 'font-lock-comment-face nil :slant 'italic) (set-face-attribute 'font-lock-keyword-face nil :weight 'bold) -(global-display-line-numbers-mode 1) -(global-visual-line-mode t) +(add-hook 'prog-mode-hook 'display-line-numbers-mode) +(add-hook 'prog-mode-hook 'visual-line-mode) (use-package autothemer) (use-package catppuccin-theme @@ -165,11 +173,13 @@ :ensure t :if (display-graphic-p)) -(use-package mood-line - :init - (mood-line-mode) +(use-package doom-modeline + :init (doom-modeline-mode 1) :config - (setq mood-line-glyph-alist mood-line-glyphs-unicode)) + (setq doom-modeline-height 35 ;; sets modeline height + doom-modeline-bar-width 5 ;; sets right bar width + doom-modeline-persp-name t ;; adds perspective name to modeline + doom-modeline-persp-icon t)) ;; adds folder icon next to persp name (use-package good-scroll :init (good-scroll-mode)) @@ -181,42 +191,49 @@ (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") (setq dashboard-startup-banner 'logo) - (setq dashboard-center-content t)) + (setq dashboard-center-content t) + (add-to-list 'dashboard-item-generators '(config . dashboard-open-config)) + (setq dashboard-items '((recents . 5) + (agenda . 5)))) -(use-package popper - :ensure t ; or :straight t - :bind (("C-`" . popper-toggle-latest) - ("M-`" . popper-cycle) - ("C-M-`" . popper-toggle-type)) - :init - (setq popper-reference-buffers - '("\\*Messages\\*" - "Output\\*$" - "\\*Async Shell Command\\*" - help-mode - "^\\*vterm.*\\*$" vterm-mode - compilation-mode)) - (popper-mode +1) - (popper-echo-mode +1)) +(setq ring-bell-function 'ignore) + +(use-package indent-guide + :hook (prog-mode . indent-guide-mode)) + +(setq window-resize-pixelwise t) +(setq frame-resize-pixelwise t) +(save-place-mode t) +(defalias 'yes-or-no #'y-or-n-p) (add-hook 'org-mode-hook 'org-indent-mode) (require 'org-tempo) -(use-package toc-org) -(add-hook 'org-mode-hook 'toc-org-mode) +(use-package toc-org + :init (add-hook 'org-mode-hook 'toc-org-enable)) -(use-package org-bullets) -(add-hook 'org-mode-hook 'org-bullets-mode) +(use-package org-bullets + :init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) -(use-package org-auto-tangle) -(add-hook 'org-mode-hook 'org-auto-tangle-mode) +(use-package org-auto-tangle + :init (add-hook 'org-mode-hook 'org-auto-tangle-mode)) + +(use-package org-download + :hook (dired-mode-hook . org-download-enable)) + +(use-package direnv + :config + (direnv-mode)) (use-package vertico :init (vertico-mode) + :bind (:map vertico-map + ("M-j" . vertico-next) + ("M-k" . vertico-previous)) :config (savehist-mode 1)) -(use-package emacs +(use-package emacs :init ;; Add prompt indicator to `completing-read-multiple'. ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. @@ -245,8 +262,8 @@ (use-package orderless :init (setq completion-styles '(orderless basic) - completion-category-defaults nil - completion-category-overrides '((file (styles partial-completion))))) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) (use-package marginalia :bind (:map minibuffer-local-map @@ -378,16 +395,112 @@ (use-package treemacs-all-the-icons) +(use-package smartparens + :init (smartparens-global-mode) + :hook (prog-mode-hook . turn-on-smartparens-strict-mode) + :config + ;; Snitched from doom + (let ((unless-list '(sp-point-before-word-p + sp-point-after-word-p + sp-point-before-same-p))) + (sp-pair "'" nil :unless unless-list) + (sp-pair "\"" nil :unless unless-list)) + (dolist (brace '("(" "{" "[")) + (sp-pair brace nil + :post-handlers '(("||\n[i]" "RET") ("| " "SPC")) + :unless '(sp-point-before-word-p sp-point-before-same-p))) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + + ;; Major-mode specific fixes + (sp-local-pair 'ruby-mode "{" "}" + :pre-handlers '(:rem sp-ruby-pre-handler) + :post-handlers '(:rem sp-ruby-post-handler)) + + ;; Don't eagerly escape Swift style string interpolation + (sp-local-pair 'swift-mode "\\(" ")" :when '(sp-in-string-p)) + + ;; Don't do square-bracket space-expansion where it doesn't make sense to + (sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode) + "[" nil :post-handlers '(:rem ("| " "SPC"))) + + ;; Reasonable default pairs for HTML-style comments + (sp-local-pair (append sp--html-modes '(markdown-mode gfm-mode)) + "<!--" "-->" + :unless '(sp-point-before-word-p sp-point-before-same-p) + :actions '(insert) :post-handlers '(("| " "SPC"))) + ;; Expand C-style comment blocks. + (defun +default-open-doc-comments-block (&rest _ignored) + (save-excursion + (newline) + (indent-according-to-mode))) + (sp-local-pair + '(js2-mode typescript-mode rjsx-mode rust-mode c-mode c++-mode objc-mode + csharp-mode java-mode php-mode css-mode scss-mode less-css-mode + stylus-mode scala-mode) + "/*" "*/" + :actions '(insert) + :post-handlers '(("| " "SPC") + (" | " "*") + ("|[i]\n[i]" "RET")))) +;; (use-package parinfer-rust-mode +;; :hook (lisp-mode-hook . parinfer-rust-mode)) +;; (electric-pair-mode 1) + +(use-package dap-mode + :config + (require 'dap-python) + (setq dap-python-debugger 'debugpy)) + +(use-package move-text + :bind (("C-M-k" . move-text-up) + ("C-M-j" . move-text-down))) + +(set-default 'truncate-lines t) + +(use-package eat + :custom + (eat-semi-char-non-bound-keys + '(seq-difference eat-semi-char-non-bound-keys '([C-left] [C-right])))) + +(defun eat-toggle() + "Open eat terminal as a popup." + (interactive) + (if (eq major-mode 'eat-mode) + (delete-window) + (let ((buff (get-buffer-create eat-buffer-name))) + (cl-assert (and buff (buffer-live-p buff))) + (funcall #'pop-to-buffer buff) + (with-current-buffer buff + (setq-local split-width-threshold nil) + (setq-local window-min-height 2) + (unless (derived-mode-p 'eat-mode) + (eat)))))) + (use-package lsp-mode + :custom + (lsp-completion-provider :none) + + :init + (defun my/orderless-dispatch-flex-first (_pattern index _total) + (and (eq index 0) 'orderless-flex)) + + (defun my/lsp-mode-setup-completion () + (setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults)) + '(orderless))) + + (add-hook 'orderless-style-dispatchers #'my/orderless-dispatch-flex-first nil 'local) + (add-to-list 'completion-at-point-functions (cape-capf-buster #'lsp-completion-at-point)) + :hook - (python-mode . lsp) - (rust-mode . lsp) - (lsp-mode . lsp-enable-which-key-integration) - (sh-mode . lsp) - :commands lsp) + (lsp-completion-mode . my/lsp-mode-setup-completion)) (use-package lsp-pyright -:ensure t) + :hook (python-mode . (lambda () + (require 'lsp-pyright) + (lsp)))) +(use-package py-autopep8 + :hook (python-mode . py-autopep8-mode)) (use-package rustic :ensure @@ -407,55 +520,116 @@ ;; (setq lsp-signature-auto-activate nil) ;; comment to disable rustfmt on save - (setq rustic-format-on-save t) - (add-hook 'rustic-mode-hook 'rk/rustic-mode-hook)) + (setq rustic-format-on-save t)) (use-package flycheck-rust :config - (with eval-after-load 'rust-mode + (with-eval-after-load 'rust-mode (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) -(defun rk/rustic-mode-hook () - ;; so that run C-c C-c C-r works without having to confirm, but don't try to - ;; save rust buffers that are not file visiting. Once - ;; https://github.com/brotzeit/rustic/issues/253 has been resolved this should - ;; no longer be necessary. - (when buffer-file-name - (setq-local buffer-save-without-query t)) - (add-hook 'before-save-hook 'lsp-format-buffer nil t)) - (use-package fish-mode :mode "(.fish)$") (use-package nix-mode - :mode "(.nix)$") + :mode ("\\.nix\\'" "\\.nix.in\\'")) +(use-package nix-drv-mode + :ensure nix-mode + :mode "\\.drv\\'") +(use-package nix-shell + :ensure nix-mode + :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) +(use-package nix-repl + :ensure nix-mode + :commands (nix-repl)) + +(use-package yuck-mode) + +(use-package web-mode + :config + (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode)) + (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))) + +(use-package js2-mode) (use-package corfu -:custom -(corfu-cycle t) -(corfu-auto t) -(corfu-preselect 'prompt) -:bind -(:map corfu-map - ("TAB" . corfu-next) - ([tab] . corfu-next) - ("S-TAB" . corfu-previous) - ([backtab] . corfu-previous)) -:init -(global-corfu-mode)) + :custom + (corfu-cycle t) + (corfu-preselect 'prompt) + (corfu-auto t) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) -(use-package cape :init - (add-to-list 'completion-at-point-functions #'cape-file)) - + (global-corfu-mode)) (use-package emacs :init (setq completion-cycle-threshold 3) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + (setq tab-always-indent 'complete)) +(use-package cape + ;; Bind dedicated completion commands + :bind (("C-c p p" . completion-at-point) ;; capf + ("C-c p t" . complete-tag) ;; etags + ("C-c p d" . cape-dabbrev) ;; or dabbrev-completion + ("C-c p h" . cape-history) + ("C-c p f" . cape-file) + ("C-c p k" . cape-keyword) + ("C-c p s" . cape-elisp-symbol) + ("C-c p e" . cape-elisp-block) + ("C-c p a" . cape-abbrev) + ("C-c p l" . cape-line) + ("C-c p w" . cape-dict) + ("C-c p :" . cape-emoji)) + :init + (add-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + ) + (use-package flycheck :init (global-flycheck-mode)) -(use-package flycheck-inline +(use-package tree-sitter + :init + (global-tree-sitter-mode) :config - (with-eval-after-load 'flycheck - (add-hook 'flycheck-mode-hook #'flycheck-inline-mode))) + (add-hook 'tree-sitter-mode-hook 'tree-sitter-hl-mode)) + +(use-package tree-sitter-langs) + +(use-package yasnippet + :init (yas-global-mode)) +(use-package yasnippet-snippets) + +;; (add-to-list 'load-path "~/telega.el") +;; (require 'telega) + +(use-package magit) + +;; (use-package exwm) +;; (require 'exwm) +;; (require 'exwm-config) +;; (exwm-config-example) + +(use-package dired + :ensure nil + :custom ((dired-listing-switches "-agho --group-directories-first")) + :bind (:map dired-mode-map + ("h" . 'dired-up-directory) + ("l" . 'dired-find-file) + ("v" . 'meow-visit))) + +(use-package all-the-icons-dired + :init (add-hook 'dired-mode-hook 'all-the-icons-dired-mode)) diff --git a/home-manager/programs/firefox/default.nix b/home-manager/programs/firefox/default.nix index 92d8e29..1414d2b 100644 --- a/home-manager/programs/firefox/default.nix +++ b/home-manager/programs/firefox/default.nix @@ -10,10 +10,17 @@ let switchyomega sponsorblock return-youtube-dislikes + firefox-color + tampermonkey + duckduckgo-privacy-essentials ]; userConfig = builtins.readFile ./user.js; configOverrides = '' - + user_pref("browser.search.suggest.enabled", true); + user_pref("mousewheel.default.delta_multiplier_y", 75); + user_pref("network.captive-portal-service.enabled", true); + user_pref("captivedetect.canonicalURL", "http://detectportal.firefox.com/canonical.html"); + user_pref("network.connectivity-service.enabled", true); ''; extraConfig = userConfig + configOverrides; engines = { @@ -76,17 +83,26 @@ let definedAliases = [ "!as" ]; }; }; + force = true; in { programs.firefox = { enable = true; + profiles.nothing = { + isDefault = false; + id = 1; + }; profiles.Betterfox = { isDefault = true; inherit extensions extraConfig; search = { - inherit engines; + inherit engines force; default = "Brave"; }; }; }; + home.file."chrome" = { + source = ./userChrome.css; + target = ".mozilla/firefox/Betterfox/chrome/userChrome.css"; + }; } diff --git a/home-manager/programs/firefox/user.js b/home-manager/programs/firefox/user.js index dac2158..cbf15bb 100644 --- a/home-manager/programs/firefox/user.js +++ b/home-manager/programs/firefox/user.js @@ -248,6 +248,9 @@ user_pref("cookiebanners.service.mode.privateBrowsing", 2); ****************************************************************************/ // visit https://github.com/yokoffing/Betterfox/blob/master/Smoothfox.js // Enter your scrolling prefs below this line: +user_pref("apz.overscroll.enabled", true); +user_pref("general.smoothScroll", true); +user_pref("mousewheel.default.delta_multiplier_y", 275); /**************************************************************************** * START: MY OVERRIDES * diff --git a/home-manager/programs/firefox/userChrome.css b/home-manager/programs/firefox/userChrome.css new file mode 100644 index 0000000..0229657 --- /dev/null +++ b/home-manager/programs/firefox/userChrome.css @@ -0,0 +1,95 @@ +:root[tabsintitlebar]{ --uc-toolbar-height: 40px; } +:root[tabsintitlebar][uidensity="compact"]{ --uc-toolbar-height: 32px } + +#TabsToolbar{ visibility: collapse !important } + +:root[sizemode="fullscreen"] #TabsToolbar > :is(#window-controls,.titlebar-buttonbox-container){ + visibility: visible !important; + z-index: 2; +} + +:root:not([inFullscreen]) #nav-bar{ + margin-top: calc(0px - var(--uc-toolbar-height,0px)); +} + +:root[tabsintitlebar] #toolbar-menubar[autohide="true"]{ + min-height: unset !important; + height: var(--uc-toolbar-height,0px) !important; + position: relative; +} + +#toolbar-menubar[autohide="false"]{ + margin-bottom: var(--uc-toolbar-height,0px) +} + +:root[tabsintitlebar] #toolbar-menubar[autohide="true"] #main-menubar{ + flex-grow: 1; + align-items: stretch; + background-color: var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor); + background-clip: padding-box; + border-right: 30px solid transparent; + border-image: linear-gradient(to left, transparent, var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor) 30px) 20 / 30px +} + +hbox.titlebar-buttonbox-container:nth-child(3) > hbox:nth-child(1) > toolbarbutton:nth-child(4) { + display: none; +} + +hbox.titlebar-buttonbox-container:nth-child(6) > hbox:nth-child(1) > toolbarbutton:nth-child(4) { + display: none; +} + +#toolbar-menubar:not([inactive]){ z-index: 2 } +#toolbar-menubar[autohide="true"][inactive] > #menubar-items { + opacity: 0; + pointer-events: none; + margin-left: var(--uc-window-drag-space-pre,0px) +} + +#appcontent +> #tabbrowser-tabbox +> #tabbrowser-tabpanels +> .deck-selected +> .browserContainer +> .browserStack +> browser { + border-radius: 10px; + margin: 10px; +} + +.browserStack { + background: var(-lwt-accent-color); +} + +.browserContainer { + background-color: var(--lwt-accent-color); + background-position: right top, var(--lwt-background-alignment); +} + +#sidebar-button { + margin-left: 10px; +} + +#sidebar-box { + min-width: 250px; + max-width: 250px; + min-height: unset; + max-height: unset; + border-right: none; +} + +#sidebar-splitter { + display: none; +} + +#PersonalToolbar { + display: none; +} + +#navigator-toolbox { + border-bottom: none !important; +} + +#sidebar-header { + display: none; +} diff --git a/home-manager/programs/fish/default.nix b/home-manager/programs/fish/default.nix index f63fbc4..5a495e9 100644 --- a/home-manager/programs/fish/default.nix +++ b/home-manager/programs/fish/default.nix @@ -11,12 +11,34 @@ let plugins = nixPlugins ++ customPlugins; interactiveShellInit = '' set fish_greeting - pokemon-colorscripts -r | awk "NR>1 {print}" + pokemon-colorscripts -r --no-title ''; + loginShellInit = '' + Hyprland + ''; + functions = { + ranger_func = '' + ranger $argv + set -l quit_cd_wd_file "$HOME/.ranger_quit_cd_wd" + if test -s "$quit_cd_wd_file" + cd "$(cat $quit_cd_wd_file)" + true > "$quit_cd_wd_file" + end + ''; + }; + shellAliases = { + rn = "ranger_func"; + ls = "ls --hyperlink=auto --color=auto"; + }; + in { + programs.direnv = { + enable = true; + }; + programs.fish = { enable = true; - inherit plugins interactiveShellInit; + inherit plugins interactiveShellInit loginShellInit functions shellAliases; }; } diff --git a/home-manager/programs/kitty/default.nix b/home-manager/programs/kitty/default.nix new file mode 100644 index 0000000..07bc2e8 --- /dev/null +++ b/home-manager/programs/kitty/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + programs.kitty = { + enable = true; + font.name = "Source Code Pro"; + font.size = 11.3; + theme = "Catppuccin-Mocha"; + shellIntegration.enableFishIntegration = true; + extraConfig = "cursor_shape underline"; + }; +} diff --git a/home-manager/programs/kitty/default.nix~ b/home-manager/programs/kitty/default.nix~ new file mode 100644 index 0000000..e4e62ca --- /dev/null +++ b/home-manager/programs/kitty/default.nix~ @@ -0,0 +1,10 @@ + programs = { + kitty = { + enable = true; + font.name = "Source Code Pro"; + font.size = 11.3; + theme = "Catppuccin-Mocha"; + shellIntegration.enableFishIntegration = true; + extraConfig = "cursor_shape underline"; + }; + }; diff --git a/home-manager/programs/ranger/default.nix b/home-manager/programs/ranger/default.nix index b77b924..4dbced5 100644 --- a/home-manager/programs/ranger/default.nix +++ b/home-manager/programs/ranger/default.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { - home.packages = [ pkgs.ranger ]; + home.packages = with pkgs; [ ranger wl-clipboard ]; xdg.configFile = { "ranger/rc.conf".text = builtins.readFile ./rc.conf; "ranger/rifle.conf".text = builtins.readFile ./rifle.conf; diff --git a/home-manager/programs/rofi/default.nix b/home-manager/programs/rofi/default.nix index 8d417ba..45e734d 100644 --- a/home-manager/programs/rofi/default.nix +++ b/home-manager/programs/rofi/default.nix @@ -9,6 +9,7 @@ let ]; in { + home.packages = with pkgs; [ rbw rofi-rbw pinentry ]; programs.rofi = { enable = true; inherit theme cycle plugins; diff --git a/home-manager/programs/waybar/config.jsonc b/home-manager/programs/waybar/config.jsonc new file mode 100644 index 0000000..84aeafd --- /dev/null +++ b/home-manager/programs/waybar/config.jsonc @@ -0,0 +1,94 @@ +{ + "layer": "top", // Waybar at top layer + "height": 40, // Waybar height (to be removed for auto height) + "spacing": 8, // Gaps between modules (4px) + "margin-top": 20, + "margin-left": 20, + "margin-right": 20, + "margin-down": 5, + "modules-left": ["hyprland/workspaces"], + "modules-center": ["clock"], + "modules-right": ["network", "memory", "backlight", "pulseaudio", "hyprland/language", "tray", "battery"], + + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "all-outputs": false, + "format-icons": { + "1": "α", + "2": "β", + "3": "γ", + "4": "δ", + "5": "ε", + "urgent": "λ", + "focused": "σ", + "default": "ω"} + }, + "hyprland/language": { + "format": "{} <span font-family='Material Design Icons' rise='-1000' size='medium'></span>", + "format-ru": "ru", + "format-en": "en" + }, + "tray": { + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "format": "{:%H:%M }", + "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", + "format-alt": "{:%d %h %Y }", + "on-click": "killall calcure || alacritty -t calcure -e calcure;sudo ydotool click 0xc1" + }, + "memory": { + "format": "{}% ", + "on-click": "killall btop || alacritty -t btop -e btop;sudo ydotool click 0xc1" + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", "", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", "", "", "", "", "", ""], + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "", + "on-click": "killall connman-gtk || connman-gtk;sudo ydotool click 0xc1" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% <span font-family='Material Design Icons' rise='-2000' font-size='x-large'></span> {format_source}", + "format-bluetooth-muted": " {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "muted-icon": "", + "default": ["", "", ""] + }, + "on-click": "killall bluetuith || alacritty -t blue -e bluetuith; sudo ydotool click 0xc1" + }, +} diff --git a/home-manager/programs/waybar/default.nix b/home-manager/programs/waybar/default.nix new file mode 100644 index 0000000..8618718 --- /dev/null +++ b/home-manager/programs/waybar/default.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: +let + systemd.enable = true; + package = pkgs.waybar.override { + swaySupport = false; + mpdSupport = false; + }; + +in +{ + programs.waybar = { + enable = true; + inherit systemd package; + }; + xdg.configFile = { + "waybar/config".text = builtins.readFile ./config.jsonc; + "waybar/style.css".text = builtins.readFile ./style.css; + }; +} diff --git a/home-manager/programs/waybar/style.css b/home-manager/programs/waybar/style.css new file mode 100644 index 0000000..02aba83 --- /dev/null +++ b/home-manager/programs/waybar/style.css @@ -0,0 +1,26 @@ +* { + font-family: Material Design Icons, Rubik Medium; + font-size: 14px; + color: #6e6a86; +} + +window#waybar { + border-radius: 10px; + background: #1f1d2e; + border: 3px solid #363a4f; +} + +#battery { + margin-right: 6px; +} + +#workspaces button label { + font-size: 15px; + transition: all 100ms ease-out; +} + +#workspaces button.active label { + font-weight: bolder; + color: #908caa; + transition: all 100ms ease-out; +} |
