diff --git a/dot_config/doom/config.el b/dot_config/doom/config.el deleted file mode 100644 index 07aa500..0000000 --- a/dot_config/doom/config.el +++ /dev/null @@ -1,258 +0,0 @@ -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- - -;; Place your private configuration here! Remember, you do not need to run 'doom -;; sync' after modifying this file! - - -;; Some functionality uses this to identify you, e.g. GPG configuration, email -;; clients, file templates and snippets. It is optional. -;; (setq user-full-name "John Doe" -;; user-mail-address "john@doe.com") - -;; Doom exposes five (optional) variables for controlling fonts in Doom: -;; -;; - `doom-font' -- the primary font to use -;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable) -;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for -;; presentations or streaming. -;; - `doom-unicode-font' -- for unicode glyphs -;; - `doom-serif-font' -- for the `fixed-pitch-serif' face -;; -;; See 'C-h v doom-font' for documentation and more examples of what they -;; accept. For example: -;; -;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light) -;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13)) -(setq doom-font (font-spec :family "JetBrainsMono Nerd Font" :size 13 :weight 'regular) - doom-variable-pitch-font (font-spec :family "JetBrainsMono Nerd Font" :size 13)) -;; -;; If you or Emacs can't find your font, use 'M-x describe-font' to look them -;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to -;; refresh your font settings. If Emacs still can't find your font, it likely -;; wasn't installed correctly. Font issues are rarely Doom issues! - -;; There are two ways to load a theme. Both assume the theme is installed and -;; available. You can either set `doom-theme' or manually load a theme with the -;; `load-theme' function. This is the default: -(setq doom-theme 'doom-one) - -;; This determines the style of line numbers in effect. If set to `nil', line -;; numbers are disabled. For relative line numbers, set this to `relative'. -(setq display-line-numbers-type t) - -;; If you use `org' and don't want your org files in the default location below, -;; change `org-directory'. It must be set before org loads! -(setq org-directory "~/org/") - - -;; Whenever you reconfigure a package, make sure to wrap your config in an -;; `after!' block, otherwise Doom's defaults may override your settings. E.g. -;; -;; (after! PACKAGE -;; (setq x y)) -;; -;; The exceptions to this rule: -;; -;; - Setting file/directory variables (like `org-directory') -;; - Setting variables which explicitly tell you to set them before their -;; package is loaded (see 'C-h v VARIABLE' to look up their documentation). -;; - Setting doom variables (which start with 'doom-' or '+'). -;; -;; Here are some additional functions/macros that will help you configure Doom. -;; -;; - `load!' for loading external *.el files relative to this one -;; - `use-package!' for configuring packages -;; - `after!' for running code after a package has loaded -;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. -;; - `map!' for binding new keys -;; -;; To get information about any of these functions/macros, move the cursor over -;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). -;; This will open documentation for it, including demos of how they are used. -;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces, -;; etc). -;; -;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how -;; they are implemented. - -(use-package! lispyville - :hook ((common-lisp-mode . lispyville-mode) - (emacs-lisp-mode . lispyville-mode) - (scheme-mode . lispyville-mode) - (racket-mode . lispyville-mode) - (hy-mode . lispyville-mode) - (lfe-mode . lispyville-mode) - (clojure-mode . lispyville-mode)) - :config - (lispyville-set-key-theme - '(additional - additional-insert - (additional-movement normal visual motion) - (atom-movement normal visual) - c-w - c-u - (commentary normal visual) - escape - (operators normal) - (prettify insert) - slurp/barf))) - -(use-package! kubernetes-overview - :commands (kubernetes-overview) - :config - (setq kubernetes-poll-frequency 3600 - kubernetes-redraw-frequency 3600)) - -(use-package! kubernetes-evil - :after kubernetes-overview) - -(use-package! ledger-mode - :mode "\\.ledger\\'") - -(use-package! evil-ledger - :after ledger-mode - :config - (add-hook 'ledger-mode-hook #'evil-ledger-mode)) - - - ; (use-package! org-transclusion - ; :after org) - -(setq lsp-java-jdt-download-url "https://www.eclipse.org/downloads/download.php?file=/jdtls/milestones/1.42.0/jdt-language-server-1.42.0-202411281516.tar.gz") - -(setq sql-connection-alist - '((local - (sql-product 'mysql) - (sql-server "127.0.0.1") - (sql-user "root") - (sql-password "test") - (sql-database "ebdb") - (sql-port 3306)) - (dev - (sql-product 'mysql) - (sql-server "kube-db.dev.internal.shibumi.com") - (sql-user "joe.frikker") - (sql-password "psStCkHDMJ2DyR6x") - (sql-database "mothership") - (sql-port 3306) - (sql-default-directory "/ssh:bastion.dev.internal.shibumi.com:")))) - -(after! projectile - (setq projectile-indexing-method 'alien)) - -(after! magit - (setq magit-list-refs-sortby "-committerdate")) - -(setq lsp-java-configuration-maven-user-settings "/Users/jfrikker/.m2/settings.xml") - -(after! org - (setq org-todo-keywords - '((sequence - "TODO(o)" ; A task that needs doing - "IN_PROGRESS(p!)" ; Task is in progress - "HOLD(h@)" ; Task is being held up or paused - "|" - "DONE(d!)" - "CANCELLED(c@)")) - org-todo-keyword-faces - '(("IN_PROGRESS" . +org-todo-active) - ("HOLD" . +org-todo-onhold) - ("CANCELLED" . +org-todo-cancel))) - - (setq org-capture-templates - '(("t" "Personal todo" entry - (file+headline +org-capture-todo-file "Inbox") - "* TODO %?\n%i\n%a" :prepend t) - ("d" "Decision" entry - (file+headline "decisions.org" "Unfiled") - "* %?\n:properties:\n%^{ORG-LEVEL|Sprint Team}p:end:\n#What\n\n#Why\n\n#When\n\n%u")))) - -(defun org-columns-dblock-write-default (ipos table params) - "Write out a columnview table at position IPOS in the current buffer. -TABLE is a table with data as produced by `org-columns--capture-view'. -PARAMS is the parameter property list obtained from the dynamic block -definition." - (let ((link (plist-get params :link)) - (width-specs - (mapcar (lambda (spec) (nth 2 spec)) - org-columns-current-fmt-compiled))) - (when table - ;; Prune level information from the table. Also normalize - ;; headings: remove stars, add indentation entities, if - ;; required, and possibly precede some of them with a horizontal - ;; rule. - (let ((item-index - (let ((p (assoc "ITEM" org-columns-current-fmt-compiled))) - (and p (cl-position p - org-columns-current-fmt-compiled - :test #'equal)))) - (hlines (plist-get params :hlines)) - (indent (plist-get params :indent)) - new-table) - ;; Copy header and first rule. - (push (pop table) new-table) - (push (pop table) new-table) - (dolist (row table (setq table (nreverse new-table))) - (let ((level (car row))) - (when (and (not (eq (car new-table) 'hline)) - (or (eq hlines t) - (and (numberp hlines) (<= level hlines)))) - (push 'hline new-table)) - (when item-index - (let* ((raw (nth item-index (cdr row))) - (cleaned (org-columns--clean-item raw)) - (item (if (not link) cleaned - (let ((search (org-link-heading-search-string raw))) - (org-link-make-string - search - cleaned))))) - (setf (nth item-index (cdr row)) - (if (and indent (> level 1)) - (concat "\\_" (make-string (* 2 (1- level)) ?\s) item) - item)))) - (push (cdr row) new-table)))) - (when (plist-get params :vlines) - (setq table - (let ((size (length org-columns-current-fmt-compiled))) - (append (mapcar (lambda (x) (if (eq 'hline x) x (cons "" x))) - table) - (list (cons "/" (make-list size "<>"))))))) - (when (seq-find #'identity width-specs) - ;; There are width specifiers in column format. Pass them - ;; to the resulting table, adding alignment field as the first - ;; row. - (push (mapcar (lambda (width) (when width (format "<%d>" width))) width-specs) table)) - ;; now insert the table into the buffer - (goto-char ipos) - (let ((content-lines (org-split-string (plist-get params :content) "\n")) - recalc) - ;; Insert affiliated keywords before the table. - (when content-lines - (while (string-match-p "\\`[ \t]*#\\+" (car content-lines)) - (insert (string-trim-left (pop content-lines)) "\n"))) - (save-excursion - ;; Insert table at point. - (insert - (mapconcat (lambda (row) - (if (eq row 'hline) "|-|" - (format "|%s|" (mapconcat #'identity row "|")))) - table - "\n")) - ;; Insert TBLFM lines following table. - (let ((case-fold-search t)) - (dolist (line content-lines) - (when (string-match-p "\\`[ \t]*#\\+TBLFM:" line) - (insert "\n" (string-trim-left line)) - (unless recalc (setq recalc t)))))) - (when recalc (org-table-recalculate 'all t)) - (org-table-align) - (when (seq-find #'identity width-specs) - (org-table-shrink)))))) -(map! - :nv "g w" #'avy-goto-word-1 - :nv "g r" #'+lookup/references - :nv "SPC D" #'+default/diagnostics - :nv "] e" #'flycheck-next-error - :nv "[ e" #'flycheck-previous-error) diff --git a/dot_config/doom/custom.el b/dot_config/doom/custom.el deleted file mode 100644 index e6197ec..0000000 --- a/dot_config/doom/custom.el +++ /dev/null @@ -1,26 +0,0 @@ -(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. - '(ignored-local-variable-values - '((Syntax . ANSI-Common-Lisp) - (package . cl-mock) - (syntax . common-lisp) - (Base . 10) - (Package . FIVEAM) - (Syntax . Ansi-Common-Lisp))) - '(safe-local-variable-values - '((org-tags-exclude-from-inheritance "why" "tbd") - (org-tags-exclude-from-inheritance quote - ("why" "tbd")) - (org-tags-exclude-from-inheritance quote - ("why" - (\, "tbd"))) - (sly-load-failed-fasl . ask)))) -(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. - ) diff --git a/dot_config/doom/init.el b/dot_config/doom/init.el deleted file mode 100644 index db9681c..0000000 --- a/dot_config/doom/init.el +++ /dev/null @@ -1,195 +0,0 @@ -;;; init.el -*- lexical-binding: t; -*- - -;; This file controls what Doom modules are enabled and what order they load -;; in. Remember to run 'doom sync' after modifying it! - -;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find a link to Doom's Module Index where all -;; of our modules are listed, including what flags they support. - -;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or -;; 'C-c c k' for non-vim users) to view its documentation. This works on -;; flags as well (those symbols that start with a plus). -;; -;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its -;; directory (for easy access to its source code). - -(doom! :input - ;;bidi ; (tfel ot) thgir etirw uoy gnipleh - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - ;; company ; the ultimate code completion backend - (corfu +orderless) - ;;helm ; the *other* search engine for love and life - ;;ido ; the other *other* search engine... - ;;ivy ; a search engine for love and life - vertico - ; the search engine of the future - - :ui - ;;deft ; notational velocity for Emacs - doom ; what makes DOOM look the way it does - doom-dashboard ; a nifty splash screen for Emacs - ;;doom-quit ; DOOM quit-message prompts when you quit Emacs - ;;(emoji +unicode) ; πŸ™‚ - hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW - ;;indent-guides ; highlighted indent columns - ;;ligatures ; ligatures and symbols to make your code pretty again - ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API - ;;nav-flash ; blink cursor line after big motions - neotree ; a project drawer, like NERDTree for vim - ophints ; highlight the region an operation acts on - (popup +defaults) ; tame sudden yet inevitable temporary windows - ;;tabs ; a tab bar for Emacs - ;;(treemacs +lsp) ; a project drawer, like neotree but cooler - ;;unicode ; extended unicode support for various languages - (vc-gutter +pretty) ; vcs diff in the fringe - vi-tilde-fringe ; fringe tildes to mark beyond EOB - ;;window-select ; visually switch windows - workspaces ; tab emulation, persistence & separate workspaces - ;;zen ; distraction-free coding or writing - - :editor - (evil +everywhere); come to the dark side, we have cookies - file-templates ; auto-snippets for empty files - fold ; (nigh) universal code folding - ;;(format +onsave) ; automated prettiness - ;;god ; run Emacs commands without modifier keys - lispy ; vim for lisp, for people who don't like vim - ;;multiple-cursors ; editing in many places at once - ;;objed ; text object editing for the innocent - ;;parinfer ; turn lisp into python, sort of - ;;rotate-text ; cycle region at point between text candidates - snippets ; my elves. They type so I don't have to - ;;word-wrap ; soft wrapping with language-aware indent - - :emacs - dired ; making dired pretty [functional] - electric ; smarter, keyword-based electric-indent - ;;ibuffer ; interactive buffer management - undo ; persistent, smarter undo for your inevitable mistakes - vc ; version-control and Emacs, sitting in a tree - - :term - eshell ; the elisp shell that works everywhere - ;;shell ; simple shell REPL for Emacs - ;;term ; basic terminal emulator for Emacs - ;;vterm ; the best terminal emulation in Emacs - - :checkers - syntax ; tasing you for every semicolon you forget - ;;(spell +flyspell) ; tasing you for misspelling mispelling - ;;grammar ; tasing grammar mistake every you make - - :tools - ;;ansible - ;;biblio ; Writes a PhD for you (citation needed) - ;;collab ; buffers with friends - (debugger +lsp) ; FIXME stepping through code, to help you add bugs - direnv - docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs - (eval +overlay) ; run code, run (also, repls) - lookup ; navigate your code and its documentation - lsp ; M-x vscode - (magit +forge) ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs - ;;pass ; password manager for nerds - ;;pdf ; pdf enhancements - ;;prodigy ; FIXME managing external services & code builders - ;;rgb ; creating color strings - ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code - ;;tmux ; an API for interacting with tmux - tree-sitter ; syntax and parsing, sitting in a tree... - ;;upload ; map local to remote projects via ssh/ftp - - :os - (:if (featurep :system 'macos) macos) ; improve compatibility with macOS - tty ; improve the terminal Emacs experience - - :lang - ;;agda ; types of types of types of types... - ;;beancount ; mind the GAAP - ;;(cc +lsp) ; C > C++ == 1 - ;;clojure ; java with a lisp - common-lisp ; if you've seen one lisp, you've seen them all - ;;coq ; proofs-as-programs - ;;crystal ; ruby at the speed of c - ;;csharp ; unity, .NET, and mono shenanigans - ;;data ; config/data formats - ;;(dart +flutter) ; paint ui and not much else - ;;dhall - ;;elixir ; erlang done right - ;;elm ; care for a cup of TEA? - emacs-lisp ; drown in parentheses - ;;erlang ; an elegant language for a more civilized age - ;;ess ; emacs speaks statistics - ;;factor - ;;faust ; dsp, but you get to keep your soul - ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) - ;;fsharp ; ML stands for Microsoft's Language - ;;fstar ; (dependent) types and (monadic) effects and Z3 - ;;gdscript ; the language you waited for - ;;(go +lsp) ; the hipster dialect - ;;(graphql +lsp) ; Give queries a REST - ;;(haskell +lsp) ; a language that's lazier than I am - ;;hy ; readability of scheme w/ speed of python - ;;idris ; a language you can depend on - (json +tree-sitter) ; At least it ain't XML - (java +lsp +tree-sitter) ; the poster child for carpal tunnel syndrome - (javascript +lsp +treesitter) ; all(hope(abandon(ye(who(enter(here)))))) - ;;julia ; a better, faster MATLAB - ;;kotlin ; a better, slicker Java(Script) - ;;latex ; writing papers in Emacs has never been so fun - ;;lean ; for folks with too much to prove - ;;ledger ; be audit you can be - ;;lua ; one-based indices? one-based indices - ;;markdown ; writing docs for people to ignore - ;;nim ; python + lisp at the speed of c - ;;nix ; I hereby declare "nix geht mehr!" - ;;ocaml ; an objective camel - (org) ; organize your plain life in plain text - ;;php ; perl's insecure younger brother - ;;plantuml ; diagrams for confusing people more - ;;purescript ; javascript, but functional - ;;(python +lsp +pyright +pyenv) ; beautiful is better than ugly - ;;qt ; the 'cutest' gui framework ever - ;;racket ; a DSL for DSLs - ;;raku ; the artist formerly known as perl6 - rest ; Emacs as a REST client - ;;rst ; ReST in peace - ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() - ;;scala ; java, but good - ;;(scheme +guile) ; a fully conniving family of lisps - sh ; she sells {ba,z,fi}sh shells on the C xor - ;;sml - ;;solidity ; do you need a blockchain? No. - ;;swift ; who asked for emoji variables? - ;;terra ; Earth and Moon in alignment for performance. - web ; the tubes - yaml ; JSON, but readable - ;;zig ; C, but simpler - - :email - ;;(mu4e +org +gmail) - ;;notmuch - ;;(wanderlust +gmail) - - :app - ;;calendar - ;;emms - ;;everywhere ; *leave* Emacs!? You must be joking - ;;irc ; how neckbeards socialize - ;;(rss +org) ; emacs as an RSS reader - ;;twitter ; twitter client https://twitter.com/vnought - - :config - ;;literate - (default +bindings +smartparens)) diff --git a/dot_config/doom/packages.el b/dot_config/doom/packages.el deleted file mode 100644 index d198e41..0000000 --- a/dot_config/doom/packages.el +++ /dev/null @@ -1,57 +0,0 @@ -;; -*- no-byte-compile: t; -*- -;;; $DOOMDIR/packages.el - -;; To install a package with Doom you must declare them here and run 'doom sync' -;; on the command line, then restart Emacs for the changes to take effect -- or -;; use 'M-x doom/reload'. - - -;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: -;(package! some-package) - -;; To install a package directly from a remote git repo, you must specify a -;; `:recipe'. You'll find documentation on what `:recipe' accepts here: -;; https://github.com/radian-software/straight.el#the-recipe-format -;(package! another-package -; :recipe (:host github :repo "username/repo")) - -;; If the package you are trying to install does not contain a PACKAGENAME.el -;; file, or is located in a subdirectory of the repo, you'll need to specify -;; `:files' in the `:recipe': -;(package! this-package -; :recipe (:host github :repo "username/repo" -; :files ("some-file.el" "src/lisp/*.el"))) - -;; If you'd like to disable a package included with Doom, you can do so here -;; with the `:disable' property: -;(package! builtin-package :disable t) -(package! sly-quicklisp :disable t) -;(package! org-transclusion) - -(package! kubernetes) -(package! kubernetes-evil) -(package! ledger-mode) -(package! evil-ledger) - -;; You can override the recipe of a built in package without having to specify -;; all the properties for `:recipe'. These will inherit the rest of its recipe -;; from Doom or MELPA/ELPA/Emacsmirror: - ;(package! builtin-package :recipe (:nonrecursive t)) - ;(package! builtin-package-2 :recipe (:repo "myfork/package")) - -;; Specify a `:branch' to install a package from a particular branch or tag. -;; This is required for some packages whose default branch isn't 'master' (which -;; our package manager can't deal with; see radian-software/straight.el#279) - ;(package! builtin-package :recipe (:branch "develop")) - -;; Use `:pin' to specify a particular commit to install. - ;(package! builtin-package :pin "1a2b3c4d5e") - - -;; Doom's packages are pinned to a specific commit and updated from release to -;; release. The `unpin!' macro allows you to unpin single packages... - ;(unpin! pinned-package) -;; ...or multiple packages - ;(unpin! pinned-package another-pinned-package) -;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) - ;(unpin! t) diff --git a/dot_config/home-manager/home-bat.nix b/dot_config/home-manager/home-bat.nix deleted file mode 100644 index 084a96c..0000000 --- a/dot_config/home-manager/home-bat.nix +++ /dev/null @@ -1,20 +0,0 @@ -pkgs: - { - enable = true; - extraPackages = with pkgs.bat-extras; [ batdiff batman batgrep batwatch ]; - config = { - style = "numbers"; - theme = "catppuccin-frappe"; - }; - themes = { - catppuccin-frappe = { - src = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "sublime-text"; # Bat uses sublime syntax for its themes - rev = "3d8625d937d89869476e94bc100192aa220ce44a"; - sha256 = "3ABUsfJpb6RO6AiuuSL5gwDofJIwC5tlEMzBrlY9/s0="; - }; - file = "Frappe.tmTheme"; - }; - }; - } diff --git a/dot_config/home-manager/home-emacs.nix b/dot_config/home-manager/home-emacs.nix deleted file mode 100644 index 5a9d018..0000000 --- a/dot_config/home-manager/home-emacs.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ - enable = true; - extraPackages = epkgs: [ - epkgs.catppuccin-theme - epkgs.evil - epkgs.evil-collection - epkgs.general - epkgs.projectile - epkgs.sly - epkgs.sly-macrostep - epkgs.vertico - epkgs.which-key - ]; - extraConfig = '' -(use-package catppuccin-theme - :config - (setq catppuccin-flavor 'frappe) - (load-theme 'catppuccin :no-confirm)) - -(use-package evil - :init - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - :config - (evil-mode 1) - (evil-set-leader 'normal (kbd "SPC"))) - -(use-package evil-collection - :after evil - :config - (evil-collection-init)) - -(use-package general - :after evil - :config - (general-evil-setup) - - (general-define-key - :states 'normal - :prefix "SPC" - "h" '(:ignore t :which-key "Help") - ":" '(execute-extended-command :which-key "Execute Command") - ";" '(eval-expression :which-key "Evaluate Expression")) - - (general-define-key - :states 'normal - :prefix "SPC h" - "v" '(describe-variable :which-key "Describe Variable"))) - -(use-package projectile - :config (projectile-mode 1)) - -(use-package sly - :config - (setq inferior-lisp-program "sbcl")) - -(use-package sly-macrostep) - -(use-package vertico - :config - (vertico-mode)) - -(use-package which-key - :config - (which-key-mode)) - -(set-face-attribute 'default nil :font "JetBrainsMono Nerd Font" :height 130) -(set-face-attribute 'fixed-pitch nil :font "JetBrainsMono Nerd Font" :height 130) - -(setq inhibit-startup-message t) - -(scroll-bar-mode -1) -(tool-bar-mode -1) -(menu-bar-mode -1) -(setf indent-tabs-mode nil) -''; -} diff --git a/dot_config/home-manager/home-exa.nix b/dot_config/home-manager/home-exa.nix deleted file mode 100644 index d71b6f3..0000000 --- a/dot_config/home-manager/home-exa.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - enable = true; - enableBashIntegration = true; - enableZshIntegration = true; - icons = "auto"; -} diff --git a/dot_config/home-manager/home-fish.nix b/dot_config/home-manager/home-fish.nix deleted file mode 100644 index 1ca1065..0000000 --- a/dot_config/home-manager/home-fish.nix +++ /dev/null @@ -1,127 +0,0 @@ -pkgs: - { - enable = true; - shellAliases = { - du = "dust"; - http = "xh"; - https = "xh"; - mux = "tmuxinator"; - nsh = "nix-shell --command fish"; - }; - -# interactiveShellInit = '' -# function fish_prompt -# set -l last_status $status -# if not set -q __fish_git_prompt_show_informative_status -# set -g __fish_git_prompt_show_informative_status 1 -# end -# if not set -q __fish_git_prompt_hide_untrackedfiles -# set -g __fish_git_prompt_hide_untrackedfiles 1 -# end -# -# if not set -q __fish_git_prompt_color_branch -# set -g __fish_git_prompt_color_branch magenta --bold -# end -# if not set -q __fish_git_prompt_showupstream -# set -g __fish_git_prompt_showupstream "informative" -# end -# if not set -q __fish_git_prompt_char_upstream_ahead -# set -g __fish_git_prompt_char_upstream_ahead "↑" -# end -# if not set -q __fish_git_prompt_char_upstream_behind -# set -g __fish_git_prompt_char_upstream_behind "↓" -# end -# if not set -q __fish_git_prompt_char_upstream_prefix -# set -g __fish_git_prompt_char_upstream_prefix "" -# end -# -# if not set -q __fish_git_prompt_char_stagedstate -# set -g __fish_git_prompt_char_stagedstate "●" -# end -# if not set -q __fish_git_prompt_char_dirtystate -# set -g __fish_git_prompt_char_dirtystate "✚" -# end -# if not set -q __fish_git_prompt_char_untrackedfiles -# set -g __fish_git_prompt_char_untrackedfiles "…" -# end -# if not set -q __fish_git_prompt_char_invalidstate -# set -g __fish_git_prompt_char_invalidstate "βœ–" -# end -# if not set -q __fish_git_prompt_char_cleanstate -# set -g __fish_git_prompt_char_cleanstate "βœ”" -# end -# -# if not set -q __fish_git_prompt_color_dirtystate -# set -g __fish_git_prompt_color_dirtystate blue -# end -# if not set -q __fish_git_prompt_color_stagedstate -# set -g __fish_git_prompt_color_stagedstate yellow -# end -# if not set -q __fish_git_prompt_color_invalidstate -# set -g __fish_git_prompt_color_invalidstate red -# end -# if not set -q __fish_git_prompt_color_untrackedfiles -# set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal -# end -# if not set -q __fish_git_prompt_color_cleanstate -# set -g __fish_git_prompt_color_cleanstate green --bold -# end -# -# if not set -q __fish_prompt_normal -# set -g __fish_prompt_normal (set_color normal) -# end -# -# set -l color_cwd -# set -l prefix -# set -l suffix -# switch "$USER" -# case root toor -# if set -q fish_color_cwd_root -# set color_cwd $fish_color_cwd_root -# else -# set color_cwd $fish_color_cwd -# end -# set suffix '#' -# case '*' -# set color_cwd $fish_color_cwd -# set suffix '$' -# end -# -# # PWD -# set_color $color_cwd -# echo -n (prompt_pwd) -# set_color normal -# -# printf '%s ' (fish_git_prompt) -# -# if not test $last_status -eq 0 -# set_color $fish_color_error -# echo -n "[$last_status] " -# set_color normal -# end -# -# echo -n "$suffix " -# end -# ''; - plugins = [ - { - name = "nix-env"; - src = pkgs.fetchFromGitHub { - owner = "lilyball"; - repo = "nix-env.fish"; - rev = "7b65bd228429e852c8fdfa07601159130a818cfa"; - sha256 = "RG/0rfhgq6aEKNZ0XwIqOaZ6K5S4+/Y5EEMnIdtfPhk="; - }; - } - # { - # name = "fzf"; - # src = pkgs.fetchFromGitHub { - # owner = "PatrickF1"; - # repo = "fzf.fish"; - # rev = "63c8f8e65761295da51029c5b6c9e601571837a1"; - # sha256 = "036n50zr9kyg6ad408zn7wq2vpfwhmnfwab465km4dk60ywmrlcb"; - - # }; - # } - ]; - } diff --git a/dot_config/home-manager/home-fzf.nix b/dot_config/home-manager/home-fzf.nix deleted file mode 100644 index b715a84..0000000 --- a/dot_config/home-manager/home-fzf.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - enable = true; - defaultCommand = "fd --type f"; - fileWidgetCommand = "fd --type f"; - fileWidgetOptions = ["--preview" "'bat --color=always --style=numbers --line-range=:500 {}'"]; - changeDirWidgetCommand = "fd --type d"; - tmux.enableShellIntegration = true; -} diff --git a/dot_config/home-manager/home-hx.nix b/dot_config/home-manager/home-hx.nix deleted file mode 100644 index e0550de..0000000 --- a/dot_config/home-manager/home-hx.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - enable = true; - defaultEditor = true; - settings.theme = "catppuccin_frappe"; - - settings.editor.auto-format = false; - settings.editor.auto-pairs = false; - settings.editor.auto-save = true; - # settings.editor.completion-replace = true; - settings.editor.cursorline = true; - settings.editor.idle-timeout = 0; - settings.editor.rulers = [100]; - settings.editor.text-width = 100; - - settings.editor.lsp.goto-reference-include-declaration = false; - - settings.editor.cursor-shape.insert = "bar"; - - settings.editor.smart-tab.supersede-menu = true; - - settings.keys.normal.space.space = "file_picker"; - settings.keys.normal.space."," = "buffer_picker"; - - settings.editor.whitespace.render.newline = "all"; - - languages.language-server.eslint.args = ["--stdio"]; - languages.language-server.eslint.command = "vscode-eslint-language-server"; - - languages.language-server.eslint.config.nodePath = ""; - languages.language-server.eslint.config.quiet = false; - languages.language-server.eslint.config.rulesCustomizations = []; - languages.language-server.eslint.config.run = "onType"; - languages.language-server.eslint.config.validate = "on"; - languages.language-server.eslint.config.codeAction.disableRuleComment.enable = true; - languages.language-server.eslint.config.codeAction.disableRuleComment.location = "separateLine"; - languages.language-server.eslint.config.codeAction.showDocumentation.enable = true; - languages.language-server.eslint.config.problems.shortenToSingleLine = false; - - languages.language-server.jdtls.config.java.autobuild.enabled = true; - - languages.language-server.jdtls.config.java.completion.maxResults = 1000; - - languages.language-server.jdtls.config.java.format.settings.url = "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml"; - - languages.language = [ - { - name = "typescript"; - language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ]; - indent.tab-width = 4; - indent.unit = " "; - } - { - name = "tsx"; - language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ]; - indent.tab-width = 4; - indent.unit = " "; - } - { - name = "java"; - indent.tab-width = 4; - indent.unit = " "; - } - ]; -} diff --git a/dot_config/home-manager/home-k9s.nix b/dot_config/home-manager/home-k9s.nix deleted file mode 100644 index 0398cf9..0000000 --- a/dot_config/home-manager/home-k9s.nix +++ /dev/null @@ -1,3 +0,0 @@ -pkgs: { - enable = true; -} diff --git a/dot_config/home-manager/home-neovim.nix b/dot_config/home-manager/home-neovim.nix deleted file mode 100644 index 4cf8ee7..0000000 --- a/dot_config/home-manager/home-neovim.nix +++ /dev/null @@ -1,62 +0,0 @@ -pkgs: - { - enable = true; - viAlias = true; - extraConfig = '' - set et - set nofixeol - set number - set ts=2 - set sts=-1 - set sw=2 - ''; - plugins = with pkgs.vimPlugins; [ - vim-gitgutter - { - plugin = nvim-lspconfig; - type = "lua"; - config = '' - -- Mappings. - -- See `:help vim.diagnostic.*` for documentation on any of the below functions - local opts = { noremap=true, silent=true } - vim.keymap.set('n', 'e', vim.diagnostic.open_float, opts) - vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) - vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) - vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) - - -- Use an on_attach function to only map the following keys - -- after the language server attaches to the current buffer - local on_attach = function(client, bufnr) - -- Enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local bufopts = { noremap=true, silent=true, buffer=bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', vim.lsp.buf.formatting, bufopts) - end - - require('lspconfig')['hls'].setup{ - on_attach = on_attach, - } - require('lspconfig')['rust_analyzer'].setup{ - on_attach = on_attach, - } - ''; - } - ]; - } diff --git a/dot_config/home-manager/home-starship.nix b/dot_config/home-manager/home-starship.nix deleted file mode 100644 index c9c6f83..0000000 --- a/dot_config/home-manager/home-starship.nix +++ /dev/null @@ -1,30 +0,0 @@ -pkgs: { - enable = true; - settings = { - add_newline = false; - container.disabled = true; - git_branch.symbol = " "; - git_status.ahead = "⇑\${count}"; - git_status.behind = "⇣\${count}"; - git_status.diverged = "⇕⇑\${ahead_count}⇣\${behind_count}"; - git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )"; - java.symbol = "ξ‰– "; - line_break.disabled = true; - nix_shell.symbol = "οŒ“ "; - nodejs.symbol = " "; - package.disabled = true; - palette = "catppuccin_frappe"; - python.symbol = " "; - package.symbol = "ο£– "; - rust.symbol = " "; - docker_context.disabled = true; - shell.disabled = false; - } // builtins.fromTOML (builtins.readFile - (pkgs.fetchFromGitHub - { - owner = "catppuccin"; - repo = "starship"; - rev = "3e3e54410c3189053f4da7a7043261361a1ed1bc"; # Replace with the latest commit hash - sha256 = "soEBVlq3ULeiZFAdQYMRFuswIIhI9bclIU8WXjxd7oY="; - } + /palettes/frappe.toml)); -} diff --git a/dot_config/home-manager/home-tmux.nix b/dot_config/home-manager/home-tmux.nix deleted file mode 100644 index 989bfda..0000000 --- a/dot_config/home-manager/home-tmux.nix +++ /dev/null @@ -1,36 +0,0 @@ -pkgs: { - baseIndex = 1; - clock24 = true; - customPaneNavigationAndResize = true; - historyLimit = 50000; - enable = true; - escapeTime = 0; - keyMode = "vi"; - mouse = true; - plugins = [ - { - plugin = pkgs.tmuxPlugins.catppuccin; - extraConfig = ''set -g @catppuccin_window_tabs_enabled on -set -g @catppuccin_window_default_text "#W" -set -g @catppuccin_window_current_text "#W"''; - } -# { -# plugin = pkgs.tmuxPlugins.tmux-thumbs; -# extraConfig = '' -# set -g @thumbs-unique enabled -# ''; -# } - ]; - shell = pkgs.zsh + "/bin/zsh"; - shortcut = "Space"; - tmuxinator.enable = true; - terminal = "xterm-256color"; - extraConfig = '' -bind-key -T copy-mode-vi 'v' send -X begin-selection -bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel - -bind-key -T launcher g popup -h 100% -w 100% -E lazygit -bind-key g switch-client -Tlauncher -set -g default-command "" - ''; -} diff --git a/dot_config/home-manager/home-wezterm.nix b/dot_config/home-manager/home-wezterm.nix deleted file mode 100644 index 040275f..0000000 --- a/dot_config/home-manager/home-wezterm.nix +++ /dev/null @@ -1,161 +0,0 @@ -{ - enable = true; - extraConfig = '' - local config = {} - local workspace_switcher = wezterm.plugin.require("https://github.com/MLFlexer/smart_workspace_switcher.wezterm") - workspace_switcher.zoxide_path='~/.nix-profile/bin/zoxide' - - config.color_scheme = 'Catppuccin Frappe' - config.default_prog = { '/Users/jfrikker/.nix-profile/bin/zsh', '-l' } - config.font_size = 13.0 - -- config.font = wezterm.font("JetBrains Mono") - config.inactive_pane_hsb = { - saturation = 0.5, - brightness = 0.5, - } - config.pane_focus_follows_mouse = true - config.switch_to_last_active_tab_when_closing_tab = true - config.tab_bar_at_bottom = true - config.use_fancy_tab_bar = false - config.window_decorations = "RESIZE" - - wezterm.on('smart_workspace_switcher.workspace_switcher.created', function(window, path, workspace) - local editor = window:active_tab() - editor:set_title("edit") - editor:panes()[1]:send_text("hx\n") - local run = window:spawn_tab {} - run:set_title "run" - local term = window:spawn_tab {} - term:set_title "term" - editor:activate() - end) - - -- From https://alexplescan.com/posts/2024/08/10/wezterm/ - local function segments_for_right_status(window) - return { - window:active_workspace(), - } - end - - wezterm.on('update-status', function(window, _) - local SOLID_LEFT_ARROW = utf8.char(0xe0b2) - local segments = segments_for_right_status(window) - - local color_scheme = window:effective_config().resolved_palette - -- Note the use of wezterm.color.parse here, this returns - -- a Color object, which comes with functionality for lightening - -- or darkening the colour (amongst other things). - local bg = wezterm.color.parse(color_scheme.background) - local fg = color_scheme.foreground - - -- Each powerline segment is going to be coloured progressively - -- darker/lighter depending on whether we're on a dark/light colour - -- scheme. Let's establish the "from" and "to" bounds of our gradient. - local gradient_to, gradient_from = bg - gradient_from = gradient_to:lighten(0.2) - - -- Yes, WezTerm supports creating gradients, because why not?! Although - -- they'd usually be used for setting high fidelity gradients on your terminal's - -- background, we'll use them here to give us a sample of the powerline segment - -- colours we need. - local gradient = wezterm.color.gradient( - { - orientation = 'Horizontal', - colors = { gradient_from, gradient_to }, - }, - #segments -- only gives us as many colours as we have segments. - ) - - -- We'll build up the elements to send to wezterm.format in this table. - local elements = {} - - for i, seg in ipairs(segments) do - local is_first = i == 1 - - if is_first then - table.insert(elements, { Background = { Color = 'none' } }) - end - table.insert(elements, { Foreground = { Color = gradient[i] } }) - table.insert(elements, { Text = SOLID_LEFT_ARROW }) - - table.insert(elements, { Foreground = { Color = fg } }) - table.insert(elements, { Background = { Color = gradient[i] } }) - table.insert(elements, { Text = ' ' .. seg .. ' ' }) - end - - window:set_right_status(wezterm.format(elements)) - end) - - config.leader = { key = ' ', mods = 'CTRL', timeout_milliseconds = 10000 } - config.keys = { - { - key = "s", - mods = "CMD", - action = workspace_switcher.switch_workspace(), - }, - { - key = "-", - mods = "CMD", - action = wezterm.action.SplitVertical {}, - }, - { - key = "\\", - mods = "CMD", - action = wezterm.action.SplitHorizontal {}, - }, - { - key = "h", - mods = "CMD", - action = wezterm.action.ActivatePaneDirection "Left", - }, - { - key = "j", - mods = "CMD", - action = wezterm.action.ActivatePaneDirection "Down", - }, - { - key = "k", - mods = "CMD", - action = wezterm.action.ActivatePaneDirection "Up", - }, - { - key = "l", - mods = "CMD", - action = wezterm.action.ActivatePaneDirection "Right", - }, - { - key = "g", - mods = "CMD", - action = wezterm.action.SpawnCommandInNewTab { - args = { wezterm.home_dir .. "/.nix-profile/bin/zsh", "-l", "-c", "lazygit" } - } - }, - { - key = "t", - mods = "CMD", - action = wezterm.action.SpawnCommandInNewTab {} - }, - { - key = 'z', - mods = 'CMD', - action = wezterm.action.TogglePaneZoomState, - }, - { - key = 'd', - mods = 'CMD', - action = wezterm.action.CloseCurrentTab { confirm = true }, - }, - } - - for i = 1, 9 do - -- CTRL+ALT + number to activate that tab - table.insert(config.keys, { - key = tostring(i), - mods = 'LEADER', - action = wezterm.action.ActivateTab(i - 1), - }) - end - - return config - ''; -} diff --git a/dot_config/home-manager/home-zsh.nix b/dot_config/home-manager/home-zsh.nix deleted file mode 100644 index 57848a3..0000000 --- a/dot_config/home-manager/home-zsh.nix +++ /dev/null @@ -1,23 +0,0 @@ -pkgs: { - enable = true; - oh-my-zsh = { - enable = true; - }; - syntaxHighlighting.enable = true; - autosuggestion.enable = true; - historySubstringSearch.enable = true; - history.share = false; - cdpath = ["~/source"]; - plugins = [ - { - name = "zsh-nix-shell"; - file = "nix-shell.plugin.zsh"; - src = pkgs.fetchFromGitHub { - owner = "chisui"; - repo = "zsh-nix-shell"; - rev = "v0.7.0"; - sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1"; - }; - } - ]; -} diff --git a/dot_config/home-manager/home.nix.tmpl b/dot_config/home-manager/home.nix.tmpl deleted file mode 100644 index 2e5f20b..0000000 --- a/dot_config/home-manager/home.nix.tmpl +++ /dev/null @@ -1,208 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Home Manager needs a bit of information about you and the - # paths it should manage. - home.username = {{ .chezmoi.username | quote }}; - home.homeDirectory = {{ .chezmoi.homeDir | quote }}; - - # home.sessionVariables.BAT_THEME = "catppuccin-frappe"; - # home.sessionVariables.RUST_SRC_PATH = "${pkgs.rust-bin.stable."1.68.0".rust-src}/lib/rustlib/src/rust/library"; - - # home.shellAliases = { - # jdtls = "jdt-language-server"; - # }; - - home.sessionPath=[ - "$HOME/.cargo/bin" - ]; - - xdg.enable = true; - # xdg.configFile."k9s/skin.yml" = { - # enable = true; - # source = pkgs.fetchFromGitHub { - # owner = "catppuccin"; - # repo = "k9s"; - # rev = "322598e19a4270298b08dc2765f74795e23a1615"; # Replace with the latest commit hash - # sha256 = "GrRCOwCgM8BFhY8TzO3/WDTUnGtqkhvlDWE//ox2GxI="; - # } + /dist/frappe.yml; - # }; - - xdg.configFile."lazygit/config.yml" = { - enable = true; - source = pkgs.fetchFromGitHub - { - owner = "catppuccin"; - repo = "lazygit"; - rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash - sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw="; - } + /themes/frappe.yml; - }; - - # xdg.configFile."fish/themes/Catppuccin Frappe.theme" = { - # enable = true; - # source = pkgs.fetchFromGitHub { - # owner = "catppuccin"; - # repo = "fish"; - # rev = "91e6d6721362be05a5c62e235ed8517d90c567c9"; - # sha256 = "l9V7YMfJWhKDL65dNbxaddhaM6GJ0CFZ6z+4R6MJwBA="; - # } + "/themes/Catppuccin Frappe.theme"; - # }; - - home.packages = [ - # pkgs.apacheKafka - # pkgs.aria - pkgs.asdf_3_3 - pkgs.aws-iam-authenticator - pkgs.awscli - pkgs.bashInteractive - # pkgs.cargo - pkgs.chezmoi - pkgs.du-dust - pkgs.emacs - pkgs.fd - pkgs.fend - # pkgs.gcc - # pkgs.ghc - # pkgs.go - # pkgs.graphviz - # pkgs.haskellPackages.cabal-install - # pkgs.haskellPackages.haskell-language-server - # pkgs.helix - # pkgs.httpie - # pkgs.inconsolata-nerdfont - # pkgs.jdt-language-server - # pkgs.just - # pkgs.jsonnet - pkgs.kubectl - pkgs.ledger - pkgs.lorri - # pkgs.maven - pkgs.mysql-client - # pkgs.neovide - pkgs.neovim - # pkgs.nodejs-16_x - # pkgs.nodePackages.typescript-language-server - pkgs.openssh - # pkgs.postgresql - # (pkgs.python3.withPackages (p: [p.ipython p.pyyaml p.boto3])) - pkgs.ripgrep - pkgs.rlwrap - pkgs.roswell - # pkgs.rust-analyzer - # pkgs.rust-script - # pkgs.rust-bin.stable."1.68.0".default - # pkgs.rust-bin.stable."1.68.0".rust-analyzer - # pkgs.rustup - (pkgs.sbcl.withPackages (ps: with ps; [ - _3bmd - _3bmd-ext-code-blocks - agnostic-lizard - alexandria - anypool - arrows - async-process - binding-arrows - bt-semaphore - chanl - cl-annot - cl-charms - cl-markup - cl-migratum - cl-migratum_dot_provider_dot_local-path - cl-migratum_dot_driver_dot_dbi - cl-mock - cl-punch - cl-rdkafka - cl-readline - cl-setlocale - clack - clack-handler-hunchentoot - clack-handler-woo - dbd-mysql - dbi - deploy - dexador - fare-csv - fiveam - group-by - inquisitor - lack-request - lack-response - lisp-preprocessor - local-time - log4cl - mito - mockingbird - myway - prove - prove-asdf - queues - queues_dot_priority-cqueue - queues_dot_simple-cqueue - replic - serapeum - shasht - slynk - smug - split-sequence - str - sxql-composer - trivial-ws - trivial-open-browser - trivial-timeout - uuid - yason ])) - # pkgs.source-code-pro - # pkgs.stack - pkgs.tokei - pkgs.xh - # pkgs.xonsh - pkgs.yubikey-manager - # pkgs.yarn - # pkgs.zellij - ]; - - # This value determines the Home Manager release that your - # configuration is compatible with. This helps avoid breakage - # when a new Home Manager release introduces backwards - # incompatible changes. - # - # You can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - home.stateVersion = "22.05"; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - - - programs.bash.enable = true; - programs.bat = import ./home-bat.nix pkgs; - # programs.btop.enable = true; - programs.direnv.enable = true; - programs.eza = import ./home-exa.nix; - # programs.fish = import ./home-fish.nix pkgs; - programs.fzf = import ./home-fzf.nix; - programs.gh.enable = true; - programs.git.enable = true; - programs.git.userName = "Joe Frikker"; - programs.git.userEmail = {{ .email | quote }}; - programs.git.delta.enable = true; - programs.helix = import ./home-hx.nix; - # programs.ion.enable = true; - # programs.java.enable = true; - # programs.java.package = pkgs.jdk17; - programs.jq.enable = true; - # programs.k9s.enable = true; - programs.lazygit.enable = true; - programs.starship = import ./home-starship.nix pkgs; - programs.tmux = import ./home-tmux.nix pkgs; - programs.wezterm = import ./home-wezterm.nix; - programs.zoxide.enable = true; - programs.zsh = import ./home-zsh.nix pkgs; - - # programs.neovim = import ./home-neovim.nix pkgs; - - # programs.emacs = import ./home-emacs.nix; -} diff --git a/dot_config/nixpkgs/config.nix b/dot_config/nixpkgs/config.nix deleted file mode 100644 index 2660286..0000000 --- a/dot_config/nixpkgs/config.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - permittedInsecurePackages = [ - "nodejs-16.20.2" - ]; -} diff --git a/dot_config/nixpkgs/overlays.nix b/dot_config/nixpkgs/overlays.nix deleted file mode 100644 index f8a57d4..0000000 --- a/dot_config/nixpkgs/overlays.nix +++ /dev/null @@ -1,93 +0,0 @@ -[ (import ) -( - final: prev: - { - # vscode-langservers-extracted = - # prev.buildNpmPackage rec { - # pname = "vscode-langservers-extracted"; - # version = "4.8.0"; - - # src = prev.fetchFromGitHub { - # owner = "hrsh7th"; - # repo = pname; - # rev = "v${version}"; - # hash = "sha256-sGnxmEQ0J74zNbhRpsgF/cYoXwn4jh9yBVjk6UiUdK0="; - # }; - - # npmDepsHash = "sha256-LFWC87Ahvjf2moijayFze1Jk0TmTc7rOUd/s489PHro="; - - # buildPhase = - # let - # extensions = - # if prev.stdenv.isDarwin - # then "${prev.vscodium}/Applications/VSCodium.app/Contents/Resources/app/extensions" - # else "${prev.vscodium}/lib/vscode/resources/app/extensions"; - # in - # '' - # npx babel ${extensions}/css-language-features/server/dist/node \ - # --out-dir lib/css-language-server/node/ - # npx babel ${extensions}/html-language-features/server/dist/node \ - # --out-dir lib/html-language-server/node/ - # npx babel ${extensions}/json-language-features/server/dist/node \ - # --out-dir lib/json-language-server/node/ - # npx babel ${extensions}/markdown-language-features/server/dist/node \ - # --out-dir lib/markdown-language-server/node/ - # cp -r ${prev.vscode-extensions.dbaeumer.vscode-eslint}/share/vscode/extensions/dbaeumer.vscode-eslint/server/out \ - # lib/eslint-language-server - # mv lib/markdown-language-server/node/workerMain.js lib/markdown-language-server/node/main.js - # ''; - # meta = with prev.lib; { - # description = "HTML/CSS/JSON/ESLint language servers extracted from vscode"; - # homepage = "https://github.com/hrsh7th/vscode-langservers-extracted"; - # license = licenses.mit; - # maintainers = with maintainers; [ lord-valen ]; - # }; - # }; - } -) -# ( -# final: prev: -# { -# helix = prev.rustPlatform.buildRustPackage rec { -# pname = "helix"; -# version = "master"; - -# # This release tarball includes source code for the tree-sitter grammars, -# # which is not ordinarily part of the repository. -# src = prev.fetchzip { -# # url = "https://github.com/helix-editor/helix/releases/download/${version}/helix-${version}-source.tar.xz"; -# url = "https://github.com/helix-editor/helix/archive/109f53fb60f1b126c4c9afd97dd75972725d04ac.zip"; -# hash = "sha256-WzxaZ+X5HGen81EWVi0dirMzH4xSh4hV1flXSLl0P1k="; -# stripRoot = false; -# }; - -# cargoHash = "sha256-THzPUVcmboVJHu3rJ6rev3GrkNilZRMlitCx7M1+HBE="; - -# nativeBuildInputs = [ prev.git prev.installShellFiles prev.makeWrapper ]; - -# postInstall = '' -# # not needed at runtime -# rm -r runtime/grammars/sources - -# mkdir -p $out/lib -# cp -r runtime $out/lib -# installShellCompletion contrib/completion/hx.{bash,fish,zsh} -# mkdir -p $out/share/{applications,icons/hicolor/256x256/apps} -# cp contrib/Helix.desktop $out/share/applications -# cp contrib/helix.png $out/share/icons/hicolor/256x256/apps -# ''; -# postFixup = '' -# wrapProgram $out/bin/hx --set HELIX_RUNTIME $out/lib/runtime -# ''; - -# meta = with prev.lib; { -# description = "A post-modern modal text editor"; -# homepage = "https://helix-editor.com"; -# license = licenses.mpl20; -# mainProgram = "hx"; -# maintainers = with prev.maintainers; [ danth yusdacra zowoq ]; -# }; -# }; -# } -# ) - ] diff --git a/dot_config/nvim/.gitignore b/dot_config/nvim/.gitignore deleted file mode 100644 index ed1d552..0000000 --- a/dot_config/nvim/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -tt.* -.tests -doc/tags -debug -.repro -foo.* -*.log -data -lazy-lock.json diff --git a/dot_config/nvim/.neoconf.json b/dot_config/nvim/.neoconf.json deleted file mode 100644 index 7c48087..0000000 --- a/dot_config/nvim/.neoconf.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "lua_ls": { - "enabled": true - } - } - } -} diff --git a/dot_config/nvim/LICENSE b/dot_config/nvim/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/dot_config/nvim/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/dot_config/nvim/README.md b/dot_config/nvim/README.md deleted file mode 100644 index 185280b..0000000 --- a/dot_config/nvim/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# πŸ’€ LazyVim - -A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). -Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua deleted file mode 100644 index 2514f9e..0000000 --- a/dot_config/nvim/init.lua +++ /dev/null @@ -1,2 +0,0 @@ --- bootstrap lazy.nvim, LazyVim and your plugins -require("config.lazy") diff --git a/dot_config/nvim/lua/config/autocmds.lua b/dot_config/nvim/lua/config/autocmds.lua deleted file mode 100644 index 27e9e06..0000000 --- a/dot_config/nvim/lua/config/autocmds.lua +++ /dev/null @@ -1,3 +0,0 @@ --- Autocmds are automatically loaded on the VeryLazy event --- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua --- Add any additional autocmds here diff --git a/dot_config/nvim/lua/config/keymaps.lua b/dot_config/nvim/lua/config/keymaps.lua deleted file mode 100644 index e6b5242..0000000 --- a/dot_config/nvim/lua/config/keymaps.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Keymaps are automatically loaded on the VeryLazy event --- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua --- Add any additional keymaps here --- vim.keymap.set("n", "w", "w", { desc = "Write file"}) diff --git a/dot_config/nvim/lua/config/lazy.lua b/dot_config/nvim/lua/config/lazy.lua deleted file mode 100644 index 2e82a64..0000000 --- a/dot_config/nvim/lua/config/lazy.lua +++ /dev/null @@ -1,52 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then - -- bootstrap lazy.nvim - -- stylua: ignore - vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) -end -vim.opt.rtp:prepend(vim.env.LAZY or lazypath) - -require("lazy").setup({ - spec = { - -- add LazyVim and import its plugins - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - -- import any extras modules here - { import = "lazyvim.plugins.extras.lang.typescript" }, - { import = "lazyvim.plugins.extras.lang.java" }, - { import = "lazyvim.plugins.extras.lang.json" }, - { import = "lazyvim.plugins.extras.lang.python" }, - { import = "lazyvim.plugins.extras.lang.rust" }, - -- { import = "lazyvim.plugins.extras.ui.mini-animate" }, - { import = "lazyvim.plugins.extras.dap.core" }, - { import = "lazyvim.plugins.extras.linting.eslint" }, - -- { import = "lazyvim.plugins.extras.editor.flash" }, - -- import/override with your plugins - { import = "plugins" }, - }, - defaults = { - -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. - -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. - lazy = false, - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = false, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - }, - install = { colorscheme = { "catppuccin" } }, - checker = { enabled = false }, -- automatically check for plugin updates - performance = { - rtp = { - -- disable some rtp plugins - disabled_plugins = { - "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - }, - }, -}) diff --git a/dot_config/nvim/lua/config/options.lua b/dot_config/nvim/lua/config/options.lua deleted file mode 100644 index 520e838..0000000 --- a/dot_config/nvim/lua/config/options.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Options are automatically loaded before lazy.nvim startup --- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua --- Add any additional options here - -local opt = vim.opt -opt.autowriteall = true -opt.colorcolumn = "100" --- opt.hidden = false -opt.tabstop = 4 -opt.sidescrolloff = 0 -opt.shiftwidth = 4 -opt.relativenumber = false - -vim.g.autoformat = false diff --git a/dot_config/nvim/lua/plugins/colors.lua b/dot_config/nvim/lua/plugins/colors.lua deleted file mode 100644 index 9236e36..0000000 --- a/dot_config/nvim/lua/plugins/colors.lua +++ /dev/null @@ -1,45 +0,0 @@ -return { - { - "LazyVim/LazyVim", - opts = { - colorscheme = "catppuccin", - }, - }, - { "catppuccin/nvim", - name = "catppuccin", - opts = { - flavour = "frappe", - -- custom_highlights = function(colors) - -- return { - -- ["@type.qualifier"] = { link = "StorageClass" }, - -- ["@lsp.typemod.annotation"] = { link = "@attribute" }, - -- ["@lsp.type.interface"] = { link = "Structure" }, - -- ["@lsp.type.method"] = {}, - -- ["StorageClass"] = { fg = colors.mauve }, - -- ["@parameter"] = { fg = colors.text }, - -- ["@property"] = { fg = colors.maroon }, - -- ["@field"] = { fg = colors.maroon }, - -- ["Function"] = { fg = colors.text }, - -- ["Type"] = { fg = colors.text }, - -- ["Structure"] = { fg = colors.text }, - -- ["@method"] = { fg = colors.yellow }, - -- } - -- end, - custom_highlights = function(colors) - return { - ["@type.qualifier"] = { link = "StorageClass" }, - ["@parameter"] = { fg = colors.text }, - ["@field"] = { fg = colors.maroon }, - ["@lsp.type.interface"] = { link = "Structure" }, - ["StorageClass"] = { fg = colors.mauve }, - } - end, - }, - }, - -- { "ellisonleao/gruvbox.nvim" }, - -- {"rktjmp/lush.nvim" }, - -- {"briones-gabriel/darcula-solid.nvim", - -- depends = {"rktjmp/lush.nvim" }, - -- }, - -- { "doums/darcula" }, -} diff --git a/dot_config/nvim/lua/plugins/lsp.lua b/dot_config/nvim/lua/plugins/lsp.lua deleted file mode 100644 index 4c89f43..0000000 --- a/dot_config/nvim/lua/plugins/lsp.lua +++ /dev/null @@ -1,106 +0,0 @@ -return { - { "jay-babu/mason-nvim-dap.nvim", tag = "v2.0.1" }, - { - "neovim/nvim-lspconfig", - -- dependencies = { - -- { "mfussenegger/nvim-jdtls" }, - -- }, - opts = { - servers = { - eslint = { - mason = false, - }, - hls = { - mason = false, - }, - jdtls = { - mason = false, - }, - tsserver = { - mason = false, - } - } - -- autoformat = false, - -- servers = { - -- jdtls = {}, - -- }, - -- setup = { - -- jdtls = function(_, opts) - -- vim.api.nvim_create_autocmd("Filetype", { - -- pattern = "java", -- autocmd to start jdtls - -- callback = function() - -- -- use this function notation to build some variables - -- local root_markers = { ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" } - -- local root_dir = require("jdtls.setup").find_root(root_markers) - -- - -- -- calculate workspace dir - -- local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t") - -- local workspace_dir = vim.fn.stdpath("data") .. "/site/java/workspace-root/" .. project_name - -- -- os.execute("mkdir " .. workspace_dir) - -- - -- -- get the mason install path - -- local install_path = require("mason-registry").get_package("jdtls"):get_install_path() - -- local debug_install_path = require("mason-registry").get_package("java-debug-adapter"):get_install_path() - -- local test_install_path = require("mason-registry").get_package("java-test"):get_install_path() - -- - -- -- get the current OS - -- local os - -- if vim.fn.has("macunix") then - -- os = "mac" - -- elseif vim.fn.has("win32") then - -- os = "win" - -- else - -- os = "linux" - -- end - -- - -- -- return the server config - -- local config = { - -- cmd = { - -- "java", - -- "-Declipse.application=org.eclipse.jdt.ls.core.id1", - -- "-Dosgi.bundles.defaultStartLevel=4", - -- "-Declipse.product=org.eclipse.jdt.ls.core.product", - -- "-Dlog.protocol=true", - -- "-Dlog.level=ALL", - -- -- "-javaagent:" .. install_path .. "/lombok.jar", - -- "-Xms1g", - -- "--add-modules=ALL-SYSTEM", - -- "--add-opens", - -- "java.base/java.util=ALL-UNNAMED", - -- "--add-opens", - -- "java.base/java.lang=ALL-UNNAMED", - -- "-jar", - -- vim.fn.glob(install_path .. "/plugins/org.eclipse.equinox.launcher_*.jar"), - -- "-configuration", - -- install_path .. "/config_" .. os, - -- "-data", - -- workspace_dir, - -- }, - -- root_dir = root_dir, - -- settings = { - -- java = { - -- referencesCodeLens = { - -- enabled = false, - -- }, - -- }, - -- }, - -- init_options = { - -- bundles = vim.list_extend({ - -- vim.fn.glob(debug_install_path .. "/extension/server/com.microsoft.java.debug.plugin-*.jar", true), - -- }, vim.split(vim.fn.glob(test_install_path .. "/extension/server/*.jar", true), "\n")), - -- }, - -- ["on_attach"] = function(client, bufnr) - -- require("jdtls").setup_dap() - -- require("jdtls.setup").add_commands() - -- vim.keymap.set("n", "cc", function() require('jdtls').compile() end, {buffer = bufnr, desc = "Java Errors"}) - -- end, - -- } - -- require("jdtls").start_or_attach(config) - -- end, - -- }) - -- return true - -- end, - -- }, - }, - }, -} diff --git a/dot_config/nvim/lua/plugins/plugins.lua b/dot_config/nvim/lua/plugins/plugins.lua deleted file mode 100644 index 0806a91..0000000 --- a/dot_config/nvim/lua/plugins/plugins.lua +++ /dev/null @@ -1,166 +0,0 @@ -return { - { - "nvimdev/dashboard-nvim", - enabled = false, - }, - { - "stevearc/dressing.nvim", - enabled = false, - }, - { - "akinsho/bufferline.nvim", - enabled = false, - }, - { - "SmiteshP/nvim-navic", - enabled = false, - }, - { - "folke/trouble.nvim", - keys = { - { - "cS", - "Trouble lsp toggle focus=false win.position=right win.size=103", - desc = "LSP references/definitions/... (Trouble)", - }, - }, - }, - -- { - -- "folke/todo-comments.nvim", - -- enabled = false, - -- }, - { - "nvim-pack/nvim-spectre", - enabled = false, - }, - { - "persistence.nvim", - enabled = false, - }, - -- { - -- "L3MON4D3/LuaSnip", - -- enabled = false, - -- }, - -- { - -- "rafamadriz/friendly-snippets", - -- enabled = false, - -- }, - -- { - -- "ggandor/leap-spooky.nvim", - -- enabled = true, - -- opts = { - -- paste_on_remote_yank = true, - -- }, - -- }, - -- { - -- "ggandor/flit.nvim", - -- enabled = false, - -- }, - { - "folke/noice.nvim", - enabled = false, - opts = { - cmdline = { - view = "cmdline", - }, - }, - }, - { - "folke/flash.nvim", - opts = { - modes = { - search = { - enabled = false, - }, - char = { - enabled = false, - }, - }, - }, - }, - { - "echasnovski/mini.pairs", - enabled = false, - }, - -- { - -- "echasnovski/mini.indentscope", - -- opts = { - -- draw = { - -- animation = require("mini.indentscope").gen_animation.none(), - -- }, - -- }, - -- }, - { - "hrsh7th/nvim-cmp", - opts = function(_, opts) - local cmp = require("cmp") - opts.sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, - }) - return opts - end, - }, - { - "nvim-telescope/telescope.nvim", - opts = function(opts) - local actions = require("telescope.actions") - opts.defaults = { - mappings = { - i = { - [""] = actions.close, - }, - }, - path_display = { "shorten" }, - pickers = { - buffers = { - mappings = { - i = { - [""] = actions.delete_buffer, - }, - }, - }, - }, - } - return opts - end, - }, - { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - opts.ensure_installed = opts.ensure_installed or {} - vim.list_extend(opts.ensure_installed, { "sql" }) - end, - }, - { - "catppuccin/nvim", - name = "catppuccin", - opts = { - integrations = { - alpha = false, - navic = false, - -- lsp_trouble = false, - -- trouble = false, - }, - }, - }, - -- { - -- "jackMort/ChatGPT.nvim", - -- event = "VeryLazy", - -- config = function() - -- require("chatgpt").setup({ - -- show_quickfixes_cmd = "cope", - -- edit_with_instructions = { - -- keymaps = { - -- use_output_as_input = "", - -- }, - -- }, - -- }) - -- end, - -- dependencies = { - -- "MunifTanjim/nui.nvim", - -- "nvim-lua/plenary.nvim", - -- "nvim-telescope/telescope.nvim" - -- }, - -- }, -} diff --git a/dot_config/nvim/stylua.toml b/dot_config/nvim/stylua.toml deleted file mode 100644 index 5d6c50d..0000000 --- a/dot_config/nvim/stylua.toml +++ /dev/null @@ -1,3 +0,0 @@ -indent_type = "Spaces" -indent_width = 2 -column_width = 120 \ No newline at end of file diff --git a/home.org b/home.org new file mode 100644 index 0000000..c897e98 --- /dev/null +++ b/home.org @@ -0,0 +1,1437 @@ +* Overall Structure + +This is the basic structure of the home.nix file. Individual sections are defined later. + +#+BEGIN_SRC nix :noweb no-export :tangle home.nix + { config, pkgs, ... }: + + { + home.stateVersion = "22.05"; + + <> + + home.packages = with pkgs; [ + <> + ]; + + <> + + programs = { + <> + }; + + xdg = { + enable = true; + <> + }; + } +#+END_SRC + +* Personal Info + +Home manager requires this stuff. Just my name and where my home directory is. At some point, I need to make this more dynamic (perhaps using chezmoi), but for now it's hard-coded. + +#+NAME: personal +#+BEGIN_SRC nix + home.username = "jfrikker"; + home.homeDirectory = "/Users/jfrikker"; +#+END_SRC + +* Packages +:PROPERTIES: +:header-args: :noweb-ref packages +:END: + +~SBCL~ is the current leading open-source common lisp compiler. It requires any libraries you want to be availble to be installed using withPackages. I really should install this per-project using direnv, rather than globally. I think it may work today, but I think I want to start using ~SBCL~ for scripting / exploratory development. So for now, it stays global. + +#+BEGIN_SRC nix + asdf_3_3 + rlwrap + roswell + (sbcl.withPackages (ps: with ps; [ + _3bmd + _3bmd-ext-code-blocks + agnostic-lizard + alexandria + anypool + arrows + async-process + binding-arrows + bt-semaphore + chanl + cl-annot + cl-charms + cl-markup + cl-migratum + cl-migratum_dot_provider_dot_local-path + cl-migratum_dot_driver_dot_dbi + cl-mock + cl-punch + cl-rdkafka + cl-readline + cl-setlocale + clack + clack-handler-hunchentoot + clack-handler-woo + dbd-mysql + dbi + deploy + dexador + fare-csv + fiveam + group-by + inquisitor + lack-request + lack-response + lisp-preprocessor + local-time + log4cl + mito + mockingbird + myway + prove + prove-asdf + queues + queues_dot_priority-cqueue + queues_dot_simple-cqueue + replic + serapeum + shasht + slynk + smug + split-sequence + str + sxql-composer + trivial-ws + trivial-open-browser + trivial-timeout + uuid + yason ])) +#+END_SRC + +These are the other programs I have installed globally. A few (like ~awscli~, ~mysql-client~, etc.) are still Shibumi specific; ideally I'd find another way to install them. + +Chezmoi is what I use to manage this file; it can pull it from GitHub, and handle a few configuration variations. I may be able to replace it with org mode? + +#+BEGIN_SRC nix + aws-iam-authenticator + awscli + bashInteractive + chezmoi + dust + fd + fend + kubectl + ledger + magic-wormhole + neovim + nil + openssh + ripgrep + tokei + xh + yubikey-manager +#+END_SRC + +* Program Configurations +:PROPERTIES: +:header-args: :noweb-ref programs :noweb no-export +:END: + +This section contains applications whose config files will be generated by Home Manager. Home Manager calls these "programs" (as opposed to "packages", which are just binaries to put on the path). + +** Simple Programs + +Although Home-Manager generates config files for these programs, they don't need their own dedicated configuration. I'm not sure what benefit there is to enabling ~jq~ as a Home Manager program, rather than just as an available package, but there doesn't seem to be a downside. + +#+BEGIN_SRC nix + bash.enable = true; + gh.enable = true; + home-manager.enable = true; + jq.enable = true; + lazygit.enable = true; + zoxide.enable = true; +#+END_SRC + +** Bat + +~bat~ is a less alternative that performs syntax highlighting for a variety of languages. It also provides syntax-highlighting versions of a few other commands. It's honestly not incredibly useful, but still nice to have. + +#+BEGIN_SRC nix + bat.enable = true; + bat.config.style = "numbers"; +#+END_SRC + +** Direnv + +~direnv~ allows loading per-project paths as I navigate to their directories on the command line. I leverage this with the emacs ~envrc~ package. + +#+BEGIN_SRC nix + direnv.enable = true; + direnv.nix-direnv.enable = true; +#+END_SRC + +** Eza + +~eza~ is an ~ls~ replacement that offers icons, colors, and some easier command-line options. + +#+BEGIN_SRC nix + eza.enable = true; + eza.enableBashIntegration = true; + eza.enableZshIntegration = true; + eza.icons = "auto"; +#+END_SRC + +** Fzf + +~fzf~ offers a variety of fuzzy finders right from the shell. I haven't been using this, so I'll turn it off for now. + +#+BEGIN_SRC nix + fzf.defaultCommand = "fd --type f"; + fzf.fileWidgetCommand = "fd --type f"; + fzf.fileWidgetOptions = ["--preview" "'bat --color=always --style=numbers --line-range=:500 {}'"]; + fzf.changeDirWidgetCommand = "fd --type d"; + fzf.tmux.enableShellIntegration = true; +#+END_SRC + +** Git + +We all know what ~git~ does. + +#+BEGIN_SRC nix + git.enable = true; + git.settings.user.name = "Joe Frikker"; + git.settings.user.email = "joe.frikker@shibumi.com"; + delta.enable = true; + delta.enableGitIntegration = true; +#+END_SRC + +** Helix + +The best text editor ever? Heresy! + +#+BEGIN_SRC nix + helix.enable = true; + helix.defaultEditor = true; + + helix.settings.editor = { + auto-format = false; + auto-pairs = false; + auto-save.after-delay.enable = true; + auto-save.after-delay.timeout = 1000; + cursorline = true; + idle-timeout = 0; + rulers = [100]; + text-width = 100; + lsp.goto-reference-include-declaration = false; + cursor-shape.insert = "bar"; + smart-tab.supersede-menu = true; + whitespace.render.newline = "all"; + }; + + helix.settings.keys.normal.space = { + space = "file_picker"; + "," = "buffer_picker"; + # b = "@:sh wezterm cli spawn --cwd . -- tig blame %"; + }; + + + helix.languages.language-server.eslint = { + args = ["--stdio"]; + command = "vscode-eslint-language-server"; + config.nodePath = ""; + config.quiet = false; + config.rulesCustomizations = []; + config.run = "onType"; + config.validate = "on"; + config.codeAction.disableRuleComment.enable = true; + config.codeAction.disableRuleComment.location = "separateLine"; + config.codeAction.showDocumentation.enable = true; + config.problems.shortenToSingleLine = false; + }; + + helix.languages.language-server.jdtls.config.java = { + autobuild.enabled = true; + completion.maxResults = 1000; + format.settings.url = "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml"; + }; + + helix.languages.language-server.rust-analyzer.config.files.watcher = "client"; + + helix.languages.language = [ + { + name = "typescript"; + language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ]; + indent.tab-width = 4; + indent.unit = " "; + } + { + name = "tsx"; + language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ]; + indent.tab-width = 4; + indent.unit = " "; + } + { + name = "java"; + indent.tab-width = 4; + indent.unit = " "; + } + ]; +#+END_SRC + +** Starship + +~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have installed. It's shell-agnostic, so it works with both bash and zsh. + +#+BEGIN_SRC nix :noweb no-export + starship.enable = true; + starship.settings = { + add_newline = false; + container.disabled = true; + git_branch.symbol = " "; + git_status.ahead = "⇑\${count}"; + git_status.behind = "⇣\${count}"; + git_status.diverged = "⇕⇑\${ahead_count}⇣\${behind_count}"; + git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )"; + java.symbol = "ξ‰– "; + line_break.disabled = true; + nix_shell.symbol = "οŒ“ "; + nodejs.symbol = " "; + package.disabled = true; + palette = "catppuccin_frappe"; + python.symbol = " "; + package.symbol = "ο£– "; + rust.symbol = " "; + docker_context.disabled = true; + shell.disabled = false; + } // + <> + ; +#+END_SRC + +** Tmux + +I'm using ~wezterm~ instead of ~tmux~ for now, so this is disabled, but I'm keeping the config here in case I need it later. + +#+BEGIN_SRC nix + tmux.baseIndex = 1; + tmux.clock24 = true; + tmux.customPaneNavigationAndResize = true; + tmux.historyLimit = 50000; + tmux.enable = true; + tmux.escapeTime = 0; + tmux.keyMode = "vi"; + tmux.mouse = true; + tmux.shell = pkgs.zsh + "/bin/zsh"; + tmux.shortcut = "Space"; + tmux.tmuxinator.enable = true; + tmux.terminal = "xterm-256color"; + tmux.extraConfig = '' +bind-key -T copy-mode-vi 'v' send -X begin-selection +bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel + +bind-key -T launcher g popup -h 100% -w 100% -E lazygit +bind-key g switch-client -Tlauncher +set -g default-command "" + ''; +#+END_SRC +** Wezterm + +~wezterm~ is a fast terminal emulator and multiplexer. It is configured using lua. We'll define its config in two blocks, so we can get lua syntax highlighting in org. First, the nix configuration: + +#+BEGIN_SRC nix :noweb no-export + wezterm.enable = true; + wezterm.extraConfig = '' + local config = {} + <> + <> + ''; +#+END_SRC + +Then the real lua config: + +#+BEGIN_SRC lua :noweb-ref wezterm + config.default_prog = { '/Users/jfrikker/.nix-profile/bin/zsh', '-l' } + config.font_size = 13.0 + -- config.font = wezterm.font("JetBrains Mono") + config.inactive_pane_hsb = { + saturation = 0.5, + brightness = 0.5, + } + config.pane_focus_follows_mouse = true + config.switch_to_last_active_tab_when_closing_tab = true + config.tab_bar_at_bottom = true + config.use_fancy_tab_bar = false + config.window_decorations = "RESIZE" +#+END_SRC + +I use a workspace switcher plugin, bouned to ~cmd-s~, that lets me quickly switch between per-project workspaces using a single OS window. + +#+BEGIN_SRC lua :noweb-ref wezterm + local workspace_switcher = wezterm.plugin.require("https://github.com/MLFlexer/smart_workspace_switcher.wezterm") + workspace_switcher.zoxide_path='~/.nix-profile/bin/zoxide' +#+END_SRC + +Set up a default window layout when switching to a workspace that hasn't been opened in this session yet. This will create three tabs, caled "edit", "run", and "term", and open helix in the first one. I use "edit" for running the editor (obviously), "run" for building / running the application, and "term" for miscellaneous other tasks. I sometimes split the "run" window into multiple panes if the project requires multiple things to run simultaneously. + +#+BEGIN_SRC lua :noweb-ref wezterm + wezterm.on('smart_workspace_switcher.workspace_switcher.created', function(window, path, workspace) + local editor = window:active_tab() + editor:set_title("edit") + editor:panes()[1]:send_text("hx\n") + local run = window:spawn_tab {} + run:set_title "run" + local term = window:spawn_tab {} + term:set_title "term" + editor:activate() + end) + +#+END_SRC + +Put the current workspace name in the lower-right corner of the window. Taken from [https://alexplescan.com/posts/2024/08/10/wezterm/]. + +#+BEGIN_SRC lua :noweb-ref wezterm + local function segments_for_right_status(window) + return { + window:active_workspace(), + } + end + + wezterm.on('update-status', + function(window, _) + local SOLID_LEFT_ARROW = utf8.char(0xe0b2) + local segments = segments_for_right_status(window) + + local color_scheme = window:effective_config().resolved_palette + -- Note the use of wezterm.color.parse here, this returns + -- a Color object, which comes with functionality for lightening + -- or darkening the colour (amongst other things). + local bg = wezterm.color.parse(color_scheme.background) + local fg = color_scheme.foreground + + -- Each powerline segment is going to be coloured progressively + -- darker/lighter depending on whether we're on a dark/light colour + -- scheme. Let's establish the "from" and "to" bounds of our gradient. + local gradient_to, gradient_from = bg + gradient_from = gradient_to:lighten(0.2) + + -- Yes, WezTerm supports creating gradients, because why not?! Although + -- they'd usually be used for setting high fidelity gradients on your terminal's + -- background, we'll use them here to give us a sample of the powerline segment + -- colours we need. + local gradient = wezterm.color.gradient( + { + orientation = 'Horizontal', + colors = { gradient_from, gradient_to }, + }, + #segments -- only gives us as many colours as we have segments. + ) + + -- We'll build up the elements to send to wezterm.format in this table. + local elements = {} + + for i, seg in ipairs(segments) do + local is_first = i == 1 + + if is_first then + table.insert(elements, { Background = { Color = 'none' } }) + end + table.insert(elements, { Foreground = { Color = gradient[i] } }) + table.insert(elements, { Text = SOLID_LEFT_ARROW }) + + table.insert(elements, { Foreground = { Color = fg } }) + table.insert(elements, { Background = { Color = gradient[i] } }) + table.insert(elements, { Text = ' ' .. seg .. ' ' }) + end + + window:set_right_status(wezterm.format(elements)) + end) +#+END_SRC + +Now we'll set up some keybindings: + +| Key | Action | +| s-s | Switch Workspace | +| s-- | Vertical Split | +| s-\ | Horizontal split | +| s-hjkl | Switch to the pane in that direction | +| s-g | Launch ~lazygit~ in a new tab. The tab closes when ~lazygit~ exits. | +| s-z | Toggle full-screen zoom for the active pane. | +| s-t | Launch a terminal in a new tab. | +| s-d | Close the current tab (with confirmation). | +| s-123456789 | Switch to the tab with the corresponding number. | + +#+BEGIN_SRC lua :noweb-ref wezterm + config.leader = { key = ' ', mods = 'CTRL', timeout_milliseconds = 10000 } + config.keys = { + { + key = "s", + mods = "CMD", + action = workspace_switcher.switch_workspace(), + }, + { + key = "-", + mods = "CMD", + action = wezterm.action.SplitVertical {}, + }, + { + key = "\\", + mods = "CMD", + action = wezterm.action.SplitHorizontal {}, + }, + { + key = "h", + mods = "CMD", + action = wezterm.action.ActivatePaneDirection "Left", + }, + { + key = "j", + mods = "CMD", + action = wezterm.action.ActivatePaneDirection "Down", + }, + { + key = "k", + mods = "CMD", + action = wezterm.action.ActivatePaneDirection "Up", + }, + { + key = "l", + mods = "CMD", + action = wezterm.action.ActivatePaneDirection "Right", + }, + { + key = "g", + mods = "CMD", + action = wezterm.action.SpawnCommandInNewTab { + args = { wezterm.home_dir .. "/.nix-profile/bin/zsh", "-l", "-c", "lazygit" } + } + }, + { + key = "t", + mods = "CMD", + action = wezterm.action.SpawnCommandInNewTab {} + }, + { + key = 'z', + mods = 'CMD', + action = wezterm.action.TogglePaneZoomState, + }, + { + key = 'd', + mods = 'CMD', + action = wezterm.action.CloseCurrentTab { confirm = true }, + }, + } + + for i = 1, 9 do + -- CTRL+ALT + number to activate that tab + table.insert(config.keys, { + key = tostring(i), + mods = 'LEADER', + action = wezterm.action.ActivateTab(i - 1), + }) + end + + return config +#+END_SRC + +** Zsh + +This is my default shell for now. Unfortunately, nix requires a posix-compliant shell, so bash or zsh it is. + +#+BEGIN_SRC nix + zsh.enable = true; + zsh.oh-my-zsh.enable = true; + zsh.syntaxHighlighting.enable = true; + zsh.autosuggestion.enable = true; + zsh.historySubstringSearch.enable = true; + zsh.history.share = false; + zsh.cdpath = ["~/source"]; +#+END_SRC + +Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh from nix-shell. + +#+BEGIN_SRC nix + zsh.plugins = [ + { + name = "zsh-nix-shell"; + file = "nix-shell.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "chisui"; + repo = "zsh-nix-shell"; + rev = "v0.7.0"; + sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1"; + }; + } + ]; +#+END_SRC + +* Emacs + +Emacs is a huge portion of this configuration, so although it's a home-manager "program", I'm breaking it out into its own top-level section. Many of the sections here have two code blocks: a nix code block listing the emacs packages to include, and an elisp code block to configure them in emacs. + +#+BEGIN_SRC nix :noweb no-export :noweb-ref programs + emacs.enable = true; + emacs.extraPackages = epkgs: with epkgs; [ + <> + ]; + emacs.extraConfig = '' + <> + <> + ''; +#+END_SRC + +** Global Settings + +These are just some general settings that apply everywhere. First, a few packages: + +#+BEGIN_SRC nix :noweb-ref emacs_packages + doom-modeline + ligature + mixed-pitch + ace-window +#+END_SRC + +Turn off some default settings that I don't find useful. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (setq inhibit-startup-screen t) + (setq initial-scratch-message nil) + (menu-bar-mode -1) + (scroll-bar-mode -1) + (tool-bar-mode -1) + (setq make-backup-files nil) + (setq split-window-threshold 200) + (setq split-height-threshold 200) + (setq view-read-only t) +#+END_SRC + +Make sure which-key mode is always on. The on-the-fly keymap help it gives is indespensable. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (which-key-mode) +#+END_SRC + +Automatically refresh ~dired~ buffers when switching to them, instead of requiring an explicit refresh. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (setq dired-auto-revert-buffer t) +#+END_SRC + +Similarly, highlighting the line the cursor is on is really useful for figuring out where you are, especially on monitors with a lot of vertical space. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (global-hl-line-mode) +#+END_SRC + +From the docs: "If β€˜complete’, TAB first tries to indent the current line, and if the line was already indented, then try to complete the thing at point." Recommended by [[https://github.com/minad/corfu][the ~corfu~ readme]]. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (setq tab-always-indent 'complete) +#+END_SRC + +Set the cursor to be a bar. I'm not sure what the benefit would be of a block cursor, since the current character isn't really "selected" like it would be in Helix. When I had God mode set up, I switched to a block cursor during normal mode, just because I was so used to it from Helix and Vim. Now, I don't think there's really a need to ever switch. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (setq-default cursor-type 'bar) +#+END_SRC + +Emacs is supposed to be all about automation (maybe?). There's basically never a case where I don't want changes I've made to be immediately saved to disk. So let's have Emacs do that. There's still a fairly long (~5 sec) delay before changes are saved, which is kind of annoying. Maybe I'll look into that at some point? + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (auto-save-visited-mode) +#+END_SRC + +Repeat-mode takes care of eliminating some annoying duplicate keypresses. I mostly use repeat-mode for two-character commands that need to be repeated; ~devil~ also has some single-key-with-modifier repeats set up that only apply in that mode. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (repeat-mode) +#+END_SRC + +Save the minibuffer history to disk, so recently-used options show up at the top of the picker across restarts. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (savehist-mode) +#+END_SRC + +The doom modeline looks nice. I'm turning off irc notifications, because it was slow to update (and it would update after every command, slowing down everything). I don't need the workspace name when I have the tab bar at the top of the window. The other settings just clear up some space, and make things look at little nicer. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (setq doom-modeline-irc nil) + (setq doom-modeline-workspace-name nil) + (setq doom-modeline-buffer-encoding nil) + (setq doom-modeline-vcs-max-length 30) + (doom-modeline-mode) +#+END_SRC + +Ligature mode combines character sequences like <= into a single on-screen glyph. It looks kind of cool, so I'm turning it on in prog mode. The enabled ligatures are font-specific, taken from [[https://github.com/mickeynp/ligature.el/wiki#jetbrains-mono][the ligature wiki]]. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package ligature + :after prog-mode + :config + (ligature-set-ligatures 'prog-mode '("--" "---" "==" "===" "!=" "!==" "=!=" + "=:=" "=/=" "<=" ">=" "&&" "&&&" "&=" "++" "+++" "***" ";;" "!!" + "??" "???" "?:" "?." "?=" "<:" ":<" ":>" ">:" "<:<" "<>" "<<<" ">>>" + "<<" ">>" "||" "-|" "_|_" "|-" "||-" "|=" "||=" "##" "###" "####" + "#{" "#[" "]#" "#(" "#?" "#_" "#_(" "#:" "#!" "#=" "^=" "<$>" "<$" + "$>" "<+>" "<+" "+>" "<*>" "<*" "*>" "" "/>" "" "->" "->>" "<<-" "<-" "<=<" "=<<" "<<=" "<==" "<=>" "<==>" + "==>" "=>" "=>>" ">=>" ">>=" ">>-" ">-" "-<" "-<<" ">->" "<-<" "<-|" + "<=|" "|=>" "|->" "<->" "<~~" "<~" "<~>" "~~" "~~>" "~>" "~-" "-~" + "~@" "[||]" "|]" "[|" "|}" "{|" "[<" ">]" "|>" "<|" "||>" "<||" + "|||>" "<|||" "<|>" "..." ".." ".=" "..<" ".?" "::" ":::" ":=" "::=" + ":?" ":?>" "//" "///" "/*" "*/" "/=" "//=" "/==" "@_" "__" "???" + "<:<" ";;;")) + (global-ligature-mode t)) +#+END_SRC + +Use variable-width fonts in text buffers. ~mixed-pitch-mode~ keeps most code blocks as monospace. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (add-hook 'text-mode-hook 'mixed-pitch-mode) + + (defun no-mixed-pitch () + (mixed-pitch-mode -1)) + + (add-hook 'yaml-ts-mode-hook 'no-mixed-pitch) + (add-hook 'mhtml-mode 'no-mixed-pitch) +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package ace-window + :bind (("M-o" . ace-window) + ("s-o" . ace-window)) + :config + (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) + (setq aw-dispatch-always t)) +#+END_SRC + + Set up a few project- / workspace-related key bindings. + + | Key | Action | + | s-f | Open file in current project (C-x p f) | + | s-F | Switch project (C-x p p) | + | S-s | Switch tab (C-x t RET) | + + ,#+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config + (bind-keys ("s-f" . project-find-file) + ("s-F" . project-switch-project)) + (bind-keys :map tab-bar-mode-map + ("s-s" . tab-bar-switch-to-tab)) +#+END_SRC + +Don't run a server. I'm not using this, I can always turn it back on if I need to. + +#+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config + (server-mode -1) +#+END_SRC + +All the beeping is annoying. This flashes a huge icon over the screen, which is still annoying, but less so? + +#+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config + (setq visible-bell t) +#+END_SRC + +I'm trying this out. This disables visual selections. It's bold, which is why I like it :) + +#+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config + (transient-mark-mode -1) +#+END_SRC + +** Editing + +This configuration affects general text editing, across all modes. First, some packages: + +#+BEGIN_SRC nix :noweb-ref emacs_packages + avy + devil + edit-indirect + god-mode + string-inflection +#+END_SRC + +I find Emacs to be almost unusable on a normal keyboard unless there's some way to avoid all the modifier keys. I tried Evil mode first. But although I love Vim, it just seemed to be hiding too much of the Emacs native functionality. The keybindings were also much harder to configure. I tried God mode, which has the benefit of re-using the normal Emacs keybindings and commands. It was annoying, though, because some read-only buffers (like magit buffers) have their own "normal-mode" commands that don't use modifiers. It felt jarring to switch to "insert mode" to use those keys. It's also hard to repeat sequences of M-f, M-b, etc. I could have made a ton of repeat maps, but I'm worried that having too many repeat maps will also be annoying (I'll have to explicitly cancel them more frequently). In the end, I opted for Devil mode. It avoids modifier keys, and has its own devil-mode-only repeat maps that don't interfere when using normal modifier key sequences. + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package devil + :disable t + :config + (global-devil-mode) + (setq devil-repeatable-keys + '(("%k /") + ("%k d") + ("%k k") + ("%k m ^") + ("%k m b" "%k m f" "%k m a" "% k m e") + ("%k m @" "%k m h") + ("%k m y") + ("%k p" "%k n" "%k b" "%k f" "%k a" "%k e") + ("%k s") + ("%k m d" "%k m ")))) + + (use-package god-mode + :config + (bind-keys :map god-local-mode-map + ("i" . (lambda () (interactive) (god-mode-all -1))) + ("z" . repeat)) + (bind-keys ("" . (lambda () (interactive) (god-mode-all 1)))) + (defun my-god-mode-update-cursor-type () + (setq cursor-type (if (or god-local-mode buffer-read-only) 'box 'bar))) + + (add-hook 'post-command-hook #'my-god-mode-update-cursor-type) + (which-key-enable-god-mode-support)) +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package avy + :bind ("M-j" . avy-goto-char-timer)) + + (defun avy-goto-char-timer-embark () + (interactive) + (require 'avy) + (require 'embark) + (let ((avy-action-oneshot + (lambda (pt) + (unwind-protect + (save-excursion + (goto-char pt) + (embark-act)) + (select-window + (cdr (ring-ref avy-ring 0))))))) + (avy-goto-char-timer))) + + (bind-keys + ("M-J" . avy-goto-char-timer-embark)) + + (use-package isearch + :custom + (isearch-wrap-pause 'no-ding)) + + (use-package string-inflection + :commands + string-inflection-java-style-cycle + string-inflection-rust-style-cycle + :config + (defun string-inflection-rust-style-cycle-function (str) + (cond + ((string-inflection-snake-case-p str) + (string-inflection-upcase-function str)) + ((string-inflection-upcase-p str) + (string-inflection-pascal-case-function str)) + (t + (string-inflection-snake-case-function str)))) + (defun string-inflection-rust-style-cycle () + (interactive) + (string-inflection--symbol-or-region #'string-inflection-rust-style-cycle-function)) + (defvar-keymap string-inflection-java-map + :repeat t + "u" #'string-inflection-java-style-cycle) + (defvar-keymap string-inflection-rust-map + :repeat t + "u" #'string-inflection-rust-style-cycle)) + + (use-package edit-indirect + :bind ("C-x 4 n" . edit-indirect-region)) +#+END_SRC + +** Language Support + +#+BEGIN_SRC nix :noweb-ref emacs_packages + consult-eglot + haskell-ts-mode + jenkinsfile-mode + lispy + lua-mode + nix-mode + rust-mode + smartparens + sly + sly-macrostep + sql-indent + tree-sitter + treesit-grammars.with-all-grammars + yaml-pro +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package nix-mode + :mode "\\.nix\\'") + + (use-package nix-flake + :bind ("C-x p n" . project-nix-flake) + :config + (defun project-nix-flake () + (interactive) + (nix-flake (project-root (project-current t))))) + + (use-package lua-mode + :mode "\\.lua\\'") + + (use-package jenkinsfile-mode + :mode "\\.jenkinsfile\\'") + + (setq major-mode-remap-alist '((rust-mode . rust-mode))) + + (use-package rust-mode + :init (setq rust-mode-treesitter-derive t)) + + (defun yaml-validate () + (interactive) + (compile (concat "yamllint -d '{extends: default, rules: {indentation: {indent-sequences: false}, braces: {max-spaces-inside: 1}}}' " (buffer-file-name)) t)) + + (use-package yaml-ts-mode + :mode "\\.yaml\\'") + + (use-package yaml-pro + :hook (yaml-ts-mode . yaml-pro-ts-mode)) + + (use-package sly + :hook lisp-mode-hook + :custom + (inferior-lisp-program "sbcl")) + + (use-package sly-macrostep + :defer t + :after sly + :init + (add-to-list 'sly-contribs 'sly-macrostep)) + + (use-package consult-eglot + :commands + consult-eglot-symbols) + + (use-package typescript-ts-mode + :mode "\\.ts\\'" ("\\.tsx\\'" . tsx-ts-mode) + :custom + (typescript-ts-mode-indent-offset 4) + (defun tsx-ts-mode--indent-compatibility-b893426 () + "Indent rules helper, to handle different releases of tree-sitter-tsx. + Check if a node type is available, then return the right indent rules." + ;; handle https://github.com/tree-sitter/tree-sitter-typescript/commit/b893426b82492e59388a326b824a346d829487e8 + (condition-case nil + (progn (treesit-query-capture 'tsx '((jsx_fragment) @capture)) + `(((match "<" "jsx_fragment") parent 0) + ((parent-is "jsx_fragment") parent typescript-ts-mode-indent-offset))) + (treesit-query-error + `(((match "<" "jsx_text") parent 0) + ((parent-is "jsx_text") grand-parent typescript-ts-mode-indent-offset)))))) + + (use-package rust-ts-mode + :mode "\\.rs\\'" + :config + (bind-keys :map rust-ts-mode-map + ("C-c u" . string-inflection-rust-style-cycle))) + + (use-package java-ts-mode + :mode "\\.java\\'" + :config + (bind-keys :map java-ts-mode-map + ("C-c u" . string-inflection-java-style-cycle))) + + (use-package sql-indent + :hook (sql-mode-hook . sqlind-minor-mode)) + + (use-package haskell-ts-mode + :mode "\\.hs\\'" + :custom (haskell-ts-use-indent tc)) + + (use-package flymake + :bind + (:map prog-mode-map + ("C-c D" . flymake-show-project-diagnostics) + ("M-n" . flymake-goto-next-error) + ("M-p" . flymake-goto-prev-error))) + + (use-package eglot + :commands eglot + :custom + (eglot-ignored-server-capabilities '(:inlayHintProvider)) + :config + (bind-keys :map eglot-mode-map + ("C-c A" . eglot-code-actions) + ("C-c R" . eglot-rename) + ("C-c I" . eglot-find-implementation)) + + (add-hook 'eglot-managed-mode-hook (lambda () (eglot-inlay-hints-mode -1)) nil t)) + + (use-package lispy + :hook (emacs-lisp-mode lisp-mode) + :init (setq lispy-compat '(god-mode edebug)) + :config + (bind-keys :map lispy-mode-map + ("i" . (lambda () + (interactive) + (if god-global-mode + (god-mode-all -1) + (special-lispy-tab)))))) + + (use-package smartparens + :hook + emacs-lisp-mode + common-lisp-mode + :config + (add-to-list 'sp-lisp-modes 'sly-mrepl-mode) + (require 'smartparens-config) + (setq sp-highlight-pair-overlay nil + sp-highlight-wrap-overlay nil + sp-highlight-wrap-tag-overlay nil)) + + (setq-default indent-tabs-mode nil) + (setq-default tab-width 4) + (global-tree-sitter-mode 1) + (setq-default fill-column 100) + (defun jf-init-fill-column () + (display-fill-column-indicator-mode 1)) + + (defvar jf/class-name-to-file-search-path (list "src/main/java" "src/test/java")) + + (defun jf/class-name-to-file (class-name) + (let ((root (project-root (project-current t))) + (fragment (format "%s.java" (replace-regexp-in-string "\\." "/" class-name))) + (result)) + (dolist (p jf/class-name-to-file-search-path result) + (unless result + (let ((path (format "%s/%s" p fragment))) + (when (file-exists-p (concat root path)) + (setq result path))))))) + + (defun jf/compile-class-to-file () + (jf/class-name-to-file (concat (match-string 1) (match-string 2)))) + + ;(add-to-list 'compilation-error-regexp-alist-alist + ; '(java-stack-trace . + ; ("^[[:space:]]*at \\(\\(?:[[:lower:]]+\\.\\)+\\)[^(]+(\\([[:alnum:]]+\\)\\.java:\\([[:digit:]]+\\))" + ; jf/compile-class-to-file 3))) + ;(add-to-list 'compilation-error-regexp-alist 'java-stack-trace) + + (add-hook 'prog-mode-hook 'jf-init-fill-column) + (add-hook 'java-mode-hook (lambda () (c-set-offset 'arglist-intro '+))) + + (dolist (hook + (list 'grep-mode-hook + 'flymake-project-diagnostics-mode-hook + 'xref--xref-buffer-mode-hook + 'embark-collect-mode-hook + 'compilation-mode-hook + 'sly-mrepl-mode-hook + 'eglot-list-connections-mode-hook)) + (add-hook hook 'tab-line-mode)) + + (let ((bottom-window-params '((side . bottom) + (slot . 1) + (window-height . 0.33) + (window-parameters (no-delete-other-windows . t)))) + (right-window-params '((side . right) + (window-width . 0.5) + (window-parameters (no-delete-other-windows . t))))) + (setopt display-buffer-alist + (mapcar (lambda (buffer) `(,buffer + (display-buffer-reuse-window display-buffer-in-side-window) + ,@bottom-window-params)) + (list + "\\*Flymake diagnostics *" + "\\*Embark Export *" + "\\*Embark Collect *" + "\\*xref*" + "\\*compilation\\*" + "\\*sly-mrepl *" + "\\*Messages\\*" + "\\*EGLOT connections\\*")))) + + (setq ediff-split-window-function 'split-window-horizontally) +#+END_SRC + +** Envrc + +#+BEGIN_SRC nix :noweb-ref emacs_packages + envrc +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package envrc + :hook (after-init . envrc-global-mode) + :custom + (envrc-show-summary-in-minibuffer nil)) +#+END_SRC + +** Magit + +#+BEGIN_SRC nix :noweb-ref emacs_packages + consult-gh + diff-hl + forge + magit +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package magit + :bind (("C-x g" . magit-status) + ("s-g" . magit-status) + ("C-x M-g" . magit-dispatch) + ("C-c M-g" . magit-file-dispatch)) + :custom + (magit-save-repository-buffers 'dontask) + :config + (set-face-attribute 'git-commit-summary nil :inherit nil) + (defun magit-fetch-all-on-load () + (magit-run-git-async "fetch" "--all")) + (add-hook 'magit-status-mode-hook 'magit-fetch-all-on-load) + (remove-hook 'magit-status-headers-hook 'magit-insert-tags-header)) + + (use-package forge + :after magit) + + (use-package diff-hl + :after magit + :config + (global-diff-hl-mode) + (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)) +#+END_SRC + +** Vertico + +#+BEGIN_SRC nix :noweb-ref emacs_packages + cape + consult + corfu + embark + embark-consult + marginalia + orderless + vertico +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package consult + :bind ( + ("C-c M-x" . consult-mode-command) + ("C-c h" . consult-history) + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ([remap Info-search] . consult-info) + + ("C-x M-:" . consult-complex-command) + ("C-x b" . consult-buffer) + ("s-b" . consult-buffer) + ("C-x 4 b" . consult-buffer-other-window) + ("C-x 5 b" . consult-buffer-other-frame) + ("C-x t b" . consult-buffer-other-tab) + ("C-x r b" . consult-bookmark) + ("C-x p b" . consult-project-buffer) + + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) + ("C-M-#" . consult-register) + ("M-y" . consult-yank-pop) + ("M-g e" . consult-compile-error) + ("M-g f" . consult-flymake) + ("M-g g" . consult-goto-line) + ("M-g M-g" . consult-goto-line) + ("M-g o" . consult-outline) + ("M-g m" . consult-mark) + ("M-g k" . consult-global-mark) + ("M-g i" . consult-imenu) + ("M-g I" . consult-imenu-multi) + ("M-s r" . consult-ripgrep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) + ("M-s e" . consult-isearch-history) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + :map minibuffer-local-map + ("M-s" . consult-history) + ("M-r" . consult-history)) + :hook (completion-list-mode . consult-preview-at-point-mode) + :init + (advice-add #'register-preview :override #'consult-register-window) + (setq register-preview-delay 0.5) + + ;; (setq xref-show-xrefs-function #'consult-xref + ;; xref-show-definitions-function #'consult-xref) + + :config + + (consult-customize + consult-theme :preview-key '(:debounce 0.2 any) + consult-ripgrep consult-git-grep consult-grep consult-man + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file + ;; :preview-key "M-." + :preview-key '(:debounce 0.4 any)) + + (setq consult-narrow-key "<") ;; "C-+" + + ) + + (use-package vertico + :custom + (vertico-count 25) + :config + (vertico-mode)) + + ;; (use-package vertico-buffer + ;; :after vertico + ;; :config + ;; (vertico-buffer-mode)) + + (use-package orderless + :custom + (completion-styles '(orderless)) + (orderless-matching-styles '(orderless-literal orderless-flex))) + + (use-package marginalia + :config + (marginalia-mode)) + + (use-package embark + :bind + (("C-." . embark-act) ;; pick some comfortable binding + )) + + (use-package corfu + :custom + (corfu-cycle t) + (corfu-popupinfo-mode) + (corfu-quit-at-boundary nil) + (corfu-on-exact-match 'show) + :config + (global-corfu-mode)) + + ;; Consult users will also want the embark-consult package. + (use-package embark-consult + :hook (embark-collect-mode . consult-preview-at-point-mode)) + + (use-package cape + :config + (add-hook 'completion-at-point-functions #'cape-file)) +#+END_SRC + +** Org + +#+BEGIN_SRC nix :noweb-ref emacs_packages + org-bullets + verb +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package org + :mode ("\\.org\\'" . org-mode) + :bind (("C-c a" . org-agenda) + ("C-c c" . org-capture) + ("C-c l" . org-store-link)) + :config + (add-hook 'org-mode-hook 'visual-line-mode) + (setq org-todo-keywords + '((sequence + "TODO(o)" + "IN_PROGRESS(p!)" + "WAITING(w@)" + "|" + "DONE(d!)" + "CANCELLED(c@)")) + org-capture-templates + '(("i" "Inbox entry" entry + (file+headline "~/org/todo.org" "Inbox") + "** %?\n- Filed %U\n" + :prepend t) + ("t" "Todo" entry + (here) + "** TODO %?\n- State \"TODO\" %U\n") + ("w" "Work stuff") + ("wp" "Work Project" entry + (file+headline "~/org/todo.org" "Work Projects") + "*** %?\n" + :jump-to-captured t) + ("wa" "Work Next Action" entry + (file+headline "~/org/todo.org" "Work Next Actions") + "*** TODO %?\n- State \"TODO\" %U\n") + ("p" "Personal stuff") + ("pp" "Personal Project" entry + (file+headline "~/org/todo.org" "Personal Projects") + "*** %?\n" + :jump-to-captured t) + ("pa" "Personal Next Action" entry + (file+headline "~/org/todo.org" "Personal Next Actions") + "*** TODO %?\n- State \"TODO\" %U\n")) + org-agenda-files '("~/org/todo.org") + org-agenda-todo-ignore-scheduled 'future + org-agenda-todo-ignore-with-date t + org-agenda-tags-todo-honor-ignore-options t)) + + (use-package org-bullets + :hook org-mode-hook) + + (use-package verb + :after org + :bind-keymap + (:map org-mode-map + ("C-c C-r" . verb-command-map))) +#+END_SRC + +** Terminal + +#+BEGIN_SRC nix :noweb-ref emacs_packages + eshell-vterm + vterm +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package em-term + :config + (push "hx" eshell-visual-commands)) + + (use-package vterm + :commands vterm) + + (use-package eshell-vterm + :after eshell + :config + (eshell-vterm-mode)) +#+END_SRC + +** Slack + +#+BEGIN_SRC nix :noweb-ref emacs_packages + slack +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package lui + :defer t + :custom + (lui-time-stamp-format "[%Y-%m-%d %H:%M]")) + + (use-package slack + :commands + slack-start + :custom + (slack-render-profile-images-p nil) + (slack-buffer-function #'switch-to-buffer())) +#+END_SRC + +** Kubernetes + +#+BEGIN_SRC nix :noweb-ref emacs_packages + kubed +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref emacs_config + (use-package kubed + :bind-keymap + ("s-k" . kubed-prefix-map)) +#+END_SRC + +** Ledger + +#+BEGIN_SRC nix :noweb-ref emacs_packages + ledger-mode +#+END_SRC + +* Theme + +I like Catppuccin Frappe as my theme. Let's use it in as many places as we can. + +** Bat + +#+BEGIN_SRC nix :noweb-ref programs + bat.config.theme = "catppuccin-frappe"; + bat.themes = { + catppuccin-frappe = { + src = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "sublime-text"; # Bat uses sublime syntax for its themes + rev = "3d8625d937d89869476e94bc100192aa220ce44a"; + sha256 = "3ABUsfJpb6RO6AiuuSL5gwDofJIwC5tlEMzBrlY9/s0="; + }; + file = "Frappe.tmTheme"; + }; + }; +#+END_SRC + +** Helix + +#+BEGIN_SRC nix :noweb-ref programs + helix.settings.theme = "catppuccin_frappe"; +#+END_SRC + +** Tmux + +#+BEGIN_SRC nix :noweb-ref programs + tmux.plugins = [ + { + plugin = pkgs.tmuxPlugins.catppuccin; + extraConfig = ''set -g @catppuccin_window_tabs_enabled on + set -g @catppuccin_window_default_text "#W" + set -g @catppuccin_window_current_text "#W"''; + } + ]; +#+END_SRC + +** Lazygit + +#+BEGIN_SRC nix :noweb-ref extra_xdg + configFile."lazygit/config.yml" = { + enable = true; + source = pkgs.fetchFromGitHub + { + owner = "catppuccin"; + repo = "lazygit"; + rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash + sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw="; + } + /themes/frappe.yml; + }; +#+END_SRC + +** Starship + +#+NAME: starship_colors +#+BEGIN_SRC nix + builtins.fromTOML (builtins.readFile + (pkgs.fetchFromGitHub + { + owner = "catppuccin"; + repo = "starship"; + rev = "3e3e54410c3189053f4da7a7043261361a1ed1bc"; # Replace with the latest commit hash + sha256 = "soEBVlq3ULeiZFAdQYMRFuswIIhI9bclIU8WXjxd7oY="; + } + /palettes/frappe.toml)) +#+END_SRC + +** Wezterm + +#+NAME: wezterm_colors +#+BEGIN_SRC lua + config.color_scheme = 'Catppuccin Frappe' +#+END_SRC + +** Emacs + +#+BEGIN_SRC nix :noweb-ref "emacs_packages" + catppuccin-theme +#+END_SRC + +#+BEGIN_SRC elisp :noweb-ref "emacs_config" + (use-package catppuccin-theme + :custom + (catppuccin-flavor 'frappe) + :config + (load-theme 'catppuccin :no-confirm)) + + (set-face-attribute 'default nil :font "JetBrainsMono Nerd Font" :height 130) + (set-face-attribute 'fixed-pitch nil :font "JetBrainsMono Nerd Font" :height 130) +#+END_SRC + +* Extra Paths + +I use cargo install to add personal rust tools to the path, so we need this: + +#+NAME: path +#+BEGIN_SRC nix + home.sessionPath = [ + "$HOME/.cargo/bin" + ]; +#+END_SRC diff --git a/run_after_home-manager.sh b/run_after_home-manager.sh deleted file mode 100644 index 59f8a2b..0000000 --- a/run_after_home-manager.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -home-manager switch