├── config ├── nvim │ ├── init.lua │ ├── spell │ │ ├── en.utf-8.add │ │ └── en.utf-8.add.spl │ ├── lua │ │ ├── salmannotkhan │ │ │ ├── remap.lua │ │ │ ├── init.lua │ │ │ ├── set.lua │ │ │ └── lazy.lua │ │ └── plugins │ │ │ └── spec.lua │ └── lazy-lock.json ├── ghostty │ ├── config │ └── themes │ │ └── carbonfox └── tmux │ ├── themes │ ├── dayfox.conf │ ├── carbonfox.conf │ ├── tomorrow.conf │ └── tomorrow-night-bright.conf │ └── tmux.conf ├── .gitignore ├── .zshrc ├── .gitmodules └── setup.sh /config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("salmannotkhan") 2 | -------------------------------------------------------------------------------- /config/nvim/spell/en.utf-8.add: -------------------------------------------------------------------------------- 1 | formatted_messages 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | config/nvim/plugin/packer_compiled.lua 3 | -------------------------------------------------------------------------------- /config/nvim/lua/salmannotkhan/remap.lua: -------------------------------------------------------------------------------- 1 | vim.g.mapleader = " " 2 | -------------------------------------------------------------------------------- /config/nvim/spell/en.utf-8.add.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slmnsh/dotfiles/main/config/nvim/spell/en.utf-8.add.spl -------------------------------------------------------------------------------- /config/ghostty/config: -------------------------------------------------------------------------------- 1 | theme = dark:carbonfox,light:tomorrow 2 | font-family = CaskaydiaCove Nerd Font 3 | font-size = 18 4 | quick-terminal-position = bottom 5 | window-padding-color = extend 6 | -------------------------------------------------------------------------------- /config/nvim/lua/salmannotkhan/init.lua: -------------------------------------------------------------------------------- 1 | require("salmannotkhan.remap") 2 | require("salmannotkhan.set") 3 | require("salmannotkhan.lazy") 4 | 5 | vim.cmd[[ 6 | com! FormatXML :%!python3 -c "import xml.dom.minidom, sys; print(xml.dom.minidom.parse(sys.stdin).toprettyxml())" 7 | nnoremap = :FormatXML 8 | ]] 9 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | export ZSH="$HOME/.oh-my-zsh" 2 | export NVM_HOMEBREW=$(brew --prefix nvm) 3 | export EDITOR="nvim" 4 | 5 | ZSH_THEME="robbyrussell" 6 | 7 | plugins=( 8 | z 9 | git 10 | compleat 11 | nvm 12 | macos 13 | gitignore 14 | vi-mode 15 | zsh-autosuggestions 16 | zsh-syntax-highlighting 17 | evalcache 18 | ) 19 | 20 | zstyle ":omz:plugins:nvm" autoload yes 21 | zstyle ":omz:plugins:nvm" silent-autoload yes 22 | zstyle ":omz:plugins:nvm" lazy yes 23 | 24 | alias vim="nvim" 25 | alias vi="nvim" 26 | alias start="~/sessionizer.sh" 27 | 28 | source $ZSH/oh-my-zsh.sh 29 | 30 | . "$HOME/.cargo/env" 31 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "config/tmux/plugins/tpm"] 2 | path = config/tmux/plugins/tpm 3 | url = https://github.com/tmux-plugins/tpm.git 4 | [submodule "config/tmux/plugins/tmux-sensible"] 5 | path = config/tmux/plugins/tmux-sensible 6 | url = https://github.com/tmux-plugins/tmux-sensible.git 7 | [submodule "config/tmux/plugins/tmux-yank"] 8 | path = config/tmux/plugins/tmux-yank 9 | url = https://github.com/tmux-plugins/tmux-yank.git 10 | [submodule "config/tmux/plugins/vim-tmux-navigator"] 11 | path = config/tmux/plugins/vim-tmux-navigator 12 | url = https://github.com/christoomey/vim-tmux-navigator.git 13 | [submodule "config/tmux/plugins/tmux-dark-notify"] 14 | path = config/tmux/plugins/tmux-dark-notify 15 | url = https://github.com/erikw/tmux-dark-notify.git 16 | -------------------------------------------------------------------------------- /config/ghostty/themes/carbonfox: -------------------------------------------------------------------------------- 1 | # Nightfox colors for Ghostty 2 | ## name: carbonfox 3 | ## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/carbonfox/carbonfox.ghostty 4 | 5 | background = #161616 6 | foreground = #f2f4f8 7 | selection-background = #2a2a2a 8 | selection-foreground = #f2f4f8 9 | cursor-color = #f2f4f8 10 | 11 | # normal 12 | palette = 0=#282828 13 | palette = 1=#ee5396 14 | palette = 2=#25be6a 15 | palette = 3=#08bdba 16 | palette = 4=#78a9ff 17 | palette = 5=#be95ff 18 | palette = 6=#33b1ff 19 | palette = 7=#dfdfe0 20 | 21 | # bright 22 | palette = 8=#484848 23 | palette = 9=#f16da6 24 | palette = 10=#46c880 25 | palette = 11=#2dc7c4 26 | palette = 12=#8cb6ff 27 | palette = 13=#c8a5ff 28 | palette = 14=#52bdff 29 | palette = 15=#e4e4e5 30 | 31 | # extended colors 32 | palette = 16=#3ddbd9 33 | -------------------------------------------------------------------------------- /config/nvim/lua/salmannotkhan/set.lua: -------------------------------------------------------------------------------- 1 | vim.o.shiftwidth = 4 2 | vim.o.softtabstop = 4 3 | vim.o.expandtab = true 4 | 5 | vim.o.scrolloff = 10 6 | 7 | vim.o.number = true 8 | vim.o.relativenumber = true 9 | vim.o.cursorline = true 10 | 11 | vim.o.termguicolors = true 12 | vim.o.encoding = "utf-8" 13 | 14 | vim.o.autoindent = true 15 | vim.o.smartindent = true 16 | 17 | vim.o.hlsearch = false 18 | 19 | vim.o.updatetime = 50 20 | vim.wo.signcolumn = 'yes' 21 | vim.o.incsearch = true 22 | vim.o.splitbelow = true 23 | vim.o.splitright = true 24 | vim.g.mapleader = ' ' 25 | vim.o.guicursor = '' 26 | 27 | -- NetRW configs 28 | vim.g.netrw_banner = false 29 | 30 | -- Clipboard 31 | vim.o.clipboard = "unnamedplus" 32 | 33 | -- Spell Check 34 | vim.o.spell = true 35 | vim.o.spelllang = 'en_us' 36 | 37 | vim.g.python3_host_prog = "~/.pyenv/shims/python" 38 | 39 | vim.g.AutoPairsMultilineClose = 0 40 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [[ "$(uname)" == 'Darwin' ]]; then 4 | brew tap homebrew/cask-fonts 5 | echo "Brewing packages" 6 | brew install npm nodejs neovim fd ripgrep stow font-fira-code-nerd-font ghostty 7 | else 8 | echo "Installing packages" 9 | sudo pacman -S --noconfirm zsh npm nvm neovim fd ripgrep stow ttf-firacode-nerd ghostty 10 | chsh -s $(which zsh) 11 | fi 12 | 13 | echo "Creating symlinks" 14 | stow -d ~/dotfiles -t ~/.config/ config --ignore=.DS_Store 15 | exit 16 | 17 | echo "Installing oh-my-zsh" 18 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended 19 | 20 | ZSH_PLUGINS=("MichaelAquilina/zsh-autoswitch-virtualenv" "zsh-users/zsh-autosuggestions" "zsh-users/zsh-syntax-highlighting") 21 | 22 | echo "Installing zsh plugings" 23 | 24 | for PLUGIN in "${ZSH_PLUGINS[@]}"; 25 | do 26 | echo "${PLUGIN##*/}" 27 | git clone "https://github.com/${PLUGIN}.git" "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/${PLUGIN##*/}" 28 | done 29 | -------------------------------------------------------------------------------- /config/nvim/lua/salmannotkhan/lazy.lua: -------------------------------------------------------------------------------- 1 | -- Bootstrap lazy.nvim 2 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 3 | if not (vim.uv or vim.loop).fs_stat(lazypath) then 4 | local lazyrepo = "https://github.com/folke/lazy.nvim.git" 5 | local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) 6 | if vim.v.shell_error ~= 0 then 7 | vim.api.nvim_echo({ 8 | { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, 9 | { out, "WarningMsg" }, 10 | { "\nPress any key to exit..." }, 11 | }, true, {}) 12 | vim.fn.getchar() 13 | os.exit(1) 14 | end 15 | end 16 | vim.opt.rtp:prepend(lazypath) 17 | 18 | -- Make sure to setup `mapleader` and `maplocalleader` before 19 | -- loading lazy.nvim so that mappings are correct. 20 | -- This is also a good place to setup other settings (vim.opt) 21 | vim.g.mapleader = " " 22 | vim.g.maplocalleader = "\\" 23 | 24 | -- Setup lazy.nvim 25 | require("lazy").setup({ 26 | spec = { 27 | -- import your plugins 28 | { import = "plugins" }, 29 | }, 30 | -- Configure any other settings here. See the documentation for more details. 31 | -- colorscheme that will be used when installing plugins. 32 | install = { colorscheme = { "habamax" } }, 33 | -- automatically check for plugin updates 34 | checker = { enabled = true }, 35 | }) 36 | -------------------------------------------------------------------------------- /config/tmux/themes/dayfox.conf: -------------------------------------------------------------------------------- 1 | # Nightfox colors for Tmux 2 | # Style: dayfox 3 | # Upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/dayfox/dayfox.tmux 4 | set -g mode-style "fg=#e4dcd4,bg=#643f61" 5 | set -g message-style "fg=#e4dcd4,bg=#643f61" 6 | set -g message-command-style "fg=#e4dcd4,bg=#643f61" 7 | set -g pane-border-style "fg=#643f61" 8 | set -g pane-active-border-style "fg=#2848a9" 9 | set -g status "on" 10 | set -g status-justify "left" 11 | set -g status-style "fg=#643f61,bg=#e4dcd4" 12 | set -g status-left-length "100" 13 | set -g status-right-length "100" 14 | set -g status-left-style NONE 15 | set -g status-right-style NONE 16 | set -g status-left "#[fg=#e4dcd4,bg=#2848a9,bold] #S #[fg=#2848a9,bg=#e4dcd4,nobold,nounderscore,noitalics]" 17 | set -g status-right "#[fg=#e4dcd4,bg=#e4dcd4,nobold,nounderscore,noitalics]#[fg=#2848a9,bg=#e4dcd4] #{prefix_highlight} #[fg=#643f61,bg=#e4dcd4,nobold,nounderscore,noitalics]#[fg=#e4dcd4,bg=#643f61] %Y-%m-%d  %I:%M %p #[fg=#2848a9,bg=#643f61,nobold,nounderscore,noitalics]#[fg=#e4dcd4,bg=#2848a9,bold] #h " 18 | setw -g window-status-activity-style "underscore,fg=#824d5b,bg=#e4dcd4" 19 | setw -g window-status-separator "" 20 | setw -g window-status-style "NONE,fg=#824d5b,bg=#e4dcd4" 21 | setw -g window-status-format "#[fg=#e4dcd4,bg=#e4dcd4,nobold,nounderscore,noitalics]#[default] #I  #W #F #[fg=#e4dcd4,bg=#e4dcd4,nobold,nounderscore,noitalics]" 22 | setw -g window-status-current-format "#[fg=#e4dcd4,bg=#643f61,nobold,nounderscore,noitalics]#[fg=#e4dcd4,bg=#643f61,bold] #I  #W #F #[fg=#643f61,bg=#e4dcd4,nobold,nounderscore,noitalics]" 23 | -------------------------------------------------------------------------------- /config/tmux/themes/carbonfox.conf: -------------------------------------------------------------------------------- 1 | # Nightfox colors for Tmux 2 | # Style: carbonfox 3 | # Upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/carbonfox/carbonfox.tmux 4 | set -g mode-style "fg=#0c0c0c,bg=#b6b8bb" 5 | set -g message-style "fg=#0c0c0c,bg=#b6b8bb" 6 | set -g message-command-style "fg=#0c0c0c,bg=#b6b8bb" 7 | set -g pane-border-style "fg=#b6b8bb" 8 | set -g pane-active-border-style "fg=#78a9ff" 9 | set -g status "on" 10 | set -g status-justify "left" 11 | set -g status-style "fg=#b6b8bb,bg=#0c0c0c" 12 | set -g status-left-length "100" 13 | set -g status-right-length "100" 14 | set -g status-left-style NONE 15 | set -g status-right-style NONE 16 | set -g status-left "#[fg=#0c0c0c,bg=#78a9ff,bold] #S #[fg=#78a9ff,bg=#0c0c0c,nobold,nounderscore,noitalics]" 17 | set -g status-right "#[fg=#0c0c0c,bg=#0c0c0c,nobold,nounderscore,noitalics]#[fg=#78a9ff,bg=#0c0c0c] #{prefix_highlight} #[fg=#b6b8bb,bg=#0c0c0c,nobold,nounderscore,noitalics]#[fg=#0c0c0c,bg=#b6b8bb] %Y-%m-%d  %I:%M %p #[fg=#78a9ff,bg=#b6b8bb,nobold,nounderscore,noitalics]#[fg=#0c0c0c,bg=#78a9ff,bold] #h " 18 | setw -g window-status-activity-style "underscore,fg=#7b7c7e,bg=#0c0c0c" 19 | setw -g window-status-separator "" 20 | setw -g window-status-style "NONE,fg=#7b7c7e,bg=#0c0c0c" 21 | setw -g window-status-format "#[fg=#0c0c0c,bg=#0c0c0c,nobold,nounderscore,noitalics]#[default] #I  #W #F #[fg=#0c0c0c,bg=#0c0c0c,nobold,nounderscore,noitalics]" 22 | setw -g window-status-current-format "#[fg=#0c0c0c,bg=#b6b8bb,nobold,nounderscore,noitalics]#[fg=#0c0c0c,bg=#b6b8bb,bold] #I  #W #F #[fg=#b6b8bb,bg=#0c0c0c,nobold,nounderscore,noitalics]" 23 | -------------------------------------------------------------------------------- /config/tmux/tmux.conf: -------------------------------------------------------------------------------- 1 | set -g default-terminal 'xterm-ghostty' 2 | 3 | # Set true color 4 | set-option -sa terminal-overrides ",ghostty:Tc" 5 | set-option -sa terminal-features ',ghostty:RGB' 6 | 7 | # Undercurl Support 8 | set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' 9 | set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' 10 | 11 | # Mouse 12 | set -g mouse on 13 | 14 | # Set prefix 15 | unbind C-b 16 | set -g prefix C-Space 17 | bind C-Space send-prefix 18 | 19 | # Shift + Alt keybindings 20 | bind -n M-H previous-window 21 | bind -n M-L next-window 22 | 23 | # Start windows and panes at 1 24 | set -g base-index 1 25 | set -g pane-base-index 1 26 | set-window-option -g pane-base-index 1 27 | set-option -g renumber-windows 1 28 | 29 | # Set vi-mode 30 | set-window-option -g mode-keys vi 31 | 32 | # Set lower escape time (for vim) 33 | set-option -sg escape-time 10 34 | 35 | # Set focus-events (for vim autoread) 36 | set-option -g focus-events on 37 | 38 | # Keybindings 39 | bind-key -T copy-mode-vi v send-keys -X begin-selection 40 | bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle 41 | bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 42 | 43 | # Open split in cwd 44 | bind '"' split-window -v -c "#{pane_current_path}" 45 | bind % split-window -h -c "#{pane_current_path}" 46 | bind c new-window -c "#{pane_current_path}" 47 | 48 | # Theme 49 | set -g @dark-notify-theme-path-light "~/.config/tmux/themes/dayfox.conf" 50 | set -g @dark-notify-theme-path-dark "~/.config/tmux/themes/carbonfox.conf" 51 | 52 | set -g @plugin 'tmux-plugins/tpm' 53 | set -g @plugin 'tmux-plugins/tmux-yank' 54 | set -g @plugin 'tmux-plugins/tmux-sensible' 55 | set -g @plugin 'christoomey/vim-tmux-navigator' 56 | set -g @plugin 'erikw/tmux-dark-notify' 57 | set -g @plugin 'tmux-plugins/tmux-open' 58 | set -g @plugin 'tmux-plugins/tmux-urlview' 59 | 60 | run-shell '~/.config/tmux/plugins/tpm/tpm' 61 | 62 | if-shell "test -e ~/.local/state/tmux/tmux-dark-notify-theme.conf" \ 63 | "source-file ~/.local/state/tmux/tmux-dark-notify-theme.conf" 64 | -------------------------------------------------------------------------------- /config/tmux/themes/tomorrow.conf: -------------------------------------------------------------------------------- 1 | # Color key: 2 | # #ffffff Background 3 | # #efefef Current Line 4 | # #d6d6d6 Selection 5 | # #4d4d4c Foreground 6 | # #8e908c Comment 7 | # #c82829 Red 8 | # #f5871f Orange 9 | # #eab700 Yellow 10 | # #718c00 Green 11 | # #3e999f Aqua 12 | # #4271ae Blue 13 | # #8959a8 Purple 14 | 15 | 16 | ## set status bar 17 | set -g status-style bg=default 18 | setw -g window-status-current-style bg="#efefef" 19 | setw -g window-status-current-style fg="#4271ae" 20 | 21 | ## highlight active window 22 | setw -g window-style 'bg=#efefef' 23 | setw -g window-active-style 'bg=#ffffff' 24 | setw -g pane-active-border-style '' 25 | 26 | ## highlight activity in status bar 27 | setw -g window-status-activity-style fg="#3e999f" 28 | setw -g window-status-activity-style bg="#ffffff" 29 | 30 | ## pane border and colors 31 | set -g pane-active-border-style bg=default 32 | set -g pane-active-border-style fg="#d6d6d6" 33 | set -g pane-border-style bg=default 34 | set -g pane-border-style fg="#d6d6d6" 35 | 36 | set -g clock-mode-colour "#4271ae" 37 | set -g clock-mode-style 24 38 | 39 | set -g message-style bg="#3e999f" 40 | set -g message-style fg="#000000" 41 | 42 | set -g message-command-style bg="#3e999f" 43 | set -g message-command-style fg="#000000" 44 | 45 | # message bar or "prompt" 46 | set -g message-style bg="#2d2d2d" 47 | set -g message-style fg="#cc99cc" 48 | 49 | set -g mode-style bg="#ffffff" 50 | set -g mode-style fg="#f5871f" 51 | 52 | # right side of status bar holds "[host name] (date time)" 53 | set -g status-right-length 100 54 | set -g status-right-style fg=black 55 | set -g status-right-style bold 56 | set -g status-right '#[fg=#f99157,bg=#2d2d2d] %H:%M |#[fg=#6699cc] %y.%m.%d ' 57 | 58 | # make background window look like white tab 59 | set-window-option -g window-status-style bg=default 60 | set-window-option -g window-status-style fg=white 61 | set-window-option -g window-status-style none 62 | set-window-option -g window-status-format '#[fg=#6699cc,bg=colour235] #I #[fg=#999999,bg=#2d2d2d] #W #[default]' 63 | 64 | # make foreground window look like bold yellow foreground tab 65 | set-window-option -g window-status-current-style none 66 | set-window-option -g window-status-current-format '#[fg=#f99157,bg=#2d2d2d] #I #[fg=#cccccc,bg=#393939] #W #[default]' 67 | 68 | # active terminal yellow border, non-active white 69 | set -g pane-border-style bg=default 70 | set -g pane-border-style fg="#999999" 71 | set -g pane-active-border-style fg="#f99157" 72 | -------------------------------------------------------------------------------- /config/tmux/themes/tomorrow-night-bright.conf: -------------------------------------------------------------------------------- 1 | # Color key: 2 | # #000000 Background 3 | # #2a2a2a Current Line 4 | # #424242 Selection 5 | # #eaeaea Foreground 6 | # #969896 Comment 7 | # #d54e53 Red 8 | # #e78c45 Orange 9 | # #e7c547 Yellow 10 | # #b9ca4a Green 11 | # #70c0b1 Aqua 12 | # #7aa6da Blue 13 | # #c397d8 Purple 14 | 15 | 16 | ## set status bar 17 | set -g status-style bg=default 18 | setw -g window-status-current-style bg="#2a2a2a" 19 | setw -g window-status-current-style fg="#7aa6da" 20 | 21 | ## highlight active window 22 | setw -g window-style 'bg=#2a2a2a' 23 | setw -g window-active-style 'bg=#000000' 24 | setw -g pane-active-border-style '' 25 | 26 | ## highlight activity in status bar 27 | setw -g window-status-activity-style fg="#70c0b1" 28 | setw -g window-status-activity-style bg="#000000" 29 | 30 | ## pane border and colors 31 | set -g pane-active-border-style bg=default 32 | set -g pane-active-border-style fg="#424242" 33 | set -g pane-border-style bg=default 34 | set -g pane-border-style fg="#424242" 35 | 36 | set -g clock-mode-colour "#7aa6da" 37 | set -g clock-mode-style 24 38 | 39 | set -g message-style bg="#70c0b1" 40 | set -g message-style fg="#000000" 41 | 42 | set -g message-command-style bg="#70c0b1" 43 | set -g message-command-style fg="#000000" 44 | 45 | # message bar or "prompt" 46 | set -g message-style bg="#2d2d2d" 47 | set -g message-style fg="#cc99cc" 48 | 49 | set -g mode-style bg="#000000" 50 | set -g mode-style fg="#e78c45" 51 | 52 | # right side of status bar holds "[host name] (date time)" 53 | set -g status-right-length 100 54 | set -g status-right-style fg=black 55 | set -g status-right-style bold 56 | set -g status-right '#[fg=#f99157,bg=#2d2d2d] %H:%M |#[fg=#6699cc] %y.%m.%d ' 57 | 58 | # make background window look like white tab 59 | set-window-option -g window-status-style bg=default 60 | set-window-option -g window-status-style fg=white 61 | set-window-option -g window-status-style none 62 | set-window-option -g window-status-format '#[fg=#6699cc,bg=colour235] #I #[fg=#999999,bg=#2d2d2d] #W #[default]' 63 | 64 | # make foreground window look like bold yellow foreground tab 65 | set-window-option -g window-status-current-style none 66 | set-window-option -g window-status-current-format '#[fg=#f99157,bg=#2d2d2d] #I #[fg=#cccccc,bg=#393939] #W #[default]' 67 | 68 | # active terminal yellow border, non-active white 69 | set -g pane-border-style bg=default 70 | set -g pane-border-style fg="#999999" 71 | set -g pane-active-border-style fg="#f99157" 72 | -------------------------------------------------------------------------------- /config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, 3 | "LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" }, 4 | "auto-pairs": { "branch": "master", "commit": "39f06b873a8449af8ff6a3eee716d3da14d63a76" }, 5 | "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, 6 | "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, 7 | "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, 8 | "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" }, 9 | "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, 10 | "dark-notify": { "branch": "master", "commit": "891adc07dd7b367b840f1e9875b075fd8af4dc52" }, 11 | "friendly-snippets": { "branch": "main", "commit": "31f2a2657b6261724313281fe0d8ba6f43f4a4fa" }, 12 | "git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" }, 13 | "gitsigns.nvim": { "branch": "main", "commit": "d600d3922c1d001422689319a8f915136bb64e1e" }, 14 | "hererocks": { "branch": "master", "commit": "c9c5444dea1e07e005484014a8231aa667be30b6" }, 15 | "image.nvim": { "branch": "master", "commit": "2e2d28b7734b5efdfc1219f4da8a46c761587bc2" }, 16 | "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, 17 | "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, 18 | "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, 19 | "neo-tree.nvim": { "branch": "v3.x", "commit": "9b5d67119c46e3262ffe1508fe6d8540b79ad75d" }, 20 | "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" }, 21 | "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, 22 | "none-ls.nvim": { "branch": "main", "commit": "1280b7965b6ed17787ffab1d4e3d9795ecdd0f51" }, 23 | "nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" }, 24 | "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, 25 | "nvim-lspconfig": { "branch": "master", "commit": "cb5680882ed1f18e67429516e45b810de3d148b8" }, 26 | "nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" }, 27 | "nvim-treesitter": { "branch": "master", "commit": "684eeac91ed8e297685a97ef70031d19ac1de25a" }, 28 | "nvim-treesitter-context": { "branch": "master", "commit": "b8ec6e391020a3ee18547f3343b25fc7c9ada9cc" }, 29 | "nvim-web-devicons": { "branch": "master", "commit": "c90dee4e930ab9f49fa6d77f289bff335b49e972" }, 30 | "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, 31 | "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, 32 | "schemastore.nvim": { "branch": "main", "commit": "992285058ce208825eb1b9ac82fa6be7d76ffcc1" }, 33 | "telescope-media-files.nvim": { "branch": "master", "commit": "0826c7a730bc4d36068f7c85cf4c5b3fd9fb570a" }, 34 | "telescope.nvim": { "branch": "master", "commit": "7011eaae0ac1afe036e30c95cf80200b8dc3f21a" }, 35 | "twilight.nvim": { "branch": "main", "commit": "1584c0b0a979b71fd86b18d302ba84e9aba85b1b" }, 36 | "undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" }, 37 | "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, 38 | "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, 39 | "vim-tmux-navigator": { "branch": "master", "commit": "791dacfcfc8ccb7f6eb1c853050883b03e5a22fe" }, 40 | "zen-mode.nvim": { "branch": "main", "commit": "863f150ca321b3dd8aa1a2b69b5f411a220e144f" } 41 | } 42 | -------------------------------------------------------------------------------- /config/nvim/lua/plugins/spec.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "EdenEast/nightfox.nvim", 4 | lazy = false, 5 | priority = 1000, 6 | }, 7 | { 8 | "cormacrelf/dark-notify", 9 | lazy = false, 10 | priority = 1000, 11 | config = function() 12 | require("dark_notify").run({ 13 | schemes = { 14 | dark = "carbonfox", 15 | light = "dayfox" 16 | } 17 | }) 18 | end, 19 | }, 20 | { 21 | "nvim-telescope/telescope.nvim", 22 | version = "0.1.4", 23 | dependencies = { { "nvim-lua/plenary.nvim", 'nvim-telescope/telescope-media-files.nvim', 'nvim-lua/popup.nvim' } }, 24 | config = function() 25 | require('telescope').load_extension('media_files') 26 | end, 27 | keys = { 28 | { "ff", ":Telescope find_files", silent = true }, 29 | { "fg", ":Telescope live_grep", silent = true } 30 | } 31 | }, 32 | { 33 | "jiangmiao/auto-pairs" 34 | }, 35 | { 36 | "nvim-treesitter/nvim-treesitter-context", 37 | config = function() 38 | require("treesitter-context").setup({ 39 | mode = "topline" 40 | }) 41 | end 42 | }, 43 | { 44 | "nvim-treesitter/nvim-treesitter", 45 | build = ":TSUpdate", 46 | lazy = false, 47 | config = function() 48 | require("nvim-treesitter.configs").setup { 49 | sync_install = true, 50 | auto_install = false, 51 | 52 | highlight = { 53 | enable = true, 54 | additional_vim_regex_highlighting = true, 55 | }, 56 | } 57 | end 58 | }, 59 | { 60 | "mbbill/undotree", 61 | keys = { 62 | { "u", ":UndotreeToggle", silent = true } 63 | }, 64 | }, 65 | { 66 | { 67 | 'williamboman/mason.nvim', 68 | lazy = false, 69 | opts = {}, 70 | }, 71 | 72 | -- Autocompletion 73 | { 74 | 'hrsh7th/nvim-cmp', 75 | event = 'InsertEnter', 76 | dependencies = { 77 | { 78 | "L3MON4D3/LuaSnip", 79 | -- follow latest release. 80 | version = "v2.*", -- Replace by the latest released major (first number of latest release) 81 | -- install jsregexp (optional!). 82 | build = "make install_jsregexp" 83 | }, 84 | { 'hrsh7th/cmp-buffer' }, 85 | { 'hrsh7th/cmp-path' }, 86 | { 'hrsh7th/cmp-cmdline' }, 87 | { "rafamadriz/friendly-snippets" }, 88 | { "saadparwaiz1/cmp_luasnip" } 89 | }, 90 | config = function() 91 | local cmp = require('cmp') 92 | local luasnip = require("luasnip") 93 | require("luasnip.loaders.from_vscode").lazy_load() 94 | cmp.setup({ 95 | sources = { 96 | { name = 'nvim_lsp' }, 97 | { name = 'path' }, 98 | { name = 'buffer' }, 99 | { name = 'luasnip', option = { use_show_condition = false }, }, 100 | }, 101 | mapping = cmp.mapping.preset.insert({ 102 | [''] = cmp.mapping.complete(), 103 | [''] = cmp.mapping.scroll_docs(-4), 104 | [''] = cmp.mapping.scroll_docs(4), 105 | [''] = cmp.mapping.confirm({ select = true }), 106 | [""] = cmp.mapping(function(fallback) 107 | if luasnip.expand_or_jumpable() then 108 | luasnip.expand_or_jump() 109 | elseif cmp.visible() then 110 | cmp.select_next_item() 111 | else 112 | fallback() 113 | end 114 | end, 115 | { "i", "s" }), 116 | [''] = cmp.mapping(function(fallback) 117 | if cmp.visible() then 118 | cmp.select_prev_item() 119 | else 120 | fallback() 121 | end 122 | end, 123 | { "i", "s" }), 124 | }), 125 | snippet = { 126 | expand = function(args) 127 | require 'luasnip'.lsp_expand(args.body) 128 | end, 129 | }, 130 | }) 131 | cmp.setup.cmdline({ '/', '?' }, { 132 | mapping = cmp.mapping.preset.cmdline(), 133 | sources = { 134 | { name = 'buffer' } 135 | } 136 | }) 137 | end 138 | }, 139 | 140 | -- LSP 141 | { 142 | 'neovim/nvim-lspconfig', 143 | cmd = { 'LspInfo', 'LspInstall', 'LspStart' }, 144 | event = { 'BufReadPre', 'BufNewFile' }, 145 | dependencies = { 146 | { 'hrsh7th/cmp-nvim-lsp' }, 147 | { 'williamboman/mason.nvim' }, 148 | { 'williamboman/mason-lspconfig.nvim' }, 149 | }, 150 | init = function() 151 | -- Reserve a space in the gutter 152 | -- This will avoid an annoying layout shift in the screen 153 | vim.opt.signcolumn = 'yes' 154 | end, 155 | config = function() 156 | local lsp_defaults = require('lspconfig').util.default_config 157 | 158 | -- Add cmp_nvim_lsp capabilities settings to lspconfig 159 | -- This should be executed before you configure any language server 160 | lsp_defaults.capabilities = vim.tbl_deep_extend( 161 | 'force', 162 | lsp_defaults.capabilities, 163 | require('cmp_nvim_lsp').default_capabilities() 164 | ) 165 | 166 | -- LspAttach is where you enable features that only work 167 | -- if there is a language server active in the file 168 | vim.api.nvim_create_autocmd('LspAttach', { 169 | desc = 'LSP actions', 170 | callback = function(event) 171 | local opts = { buffer = event.buf } 172 | 173 | vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) 174 | vim.keymap.set('n', 'gl', 'lua vim.diagnostic.open_float()', opts) 175 | vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) 176 | vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) 177 | vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) 178 | vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) 179 | vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) 180 | vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) 181 | vim.keymap.set('n', 'r', 'lua vim.lsp.buf.rename()', opts) 182 | vim.keymap.set('n', 'r', 'lua vim.lsp.buf.rename()', opts) 183 | vim.keymap.set({ 'n', 'x' }, 'p', 'lua vim.lsp.buf.format({async = true})', opts) 184 | vim.keymap.set('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) 185 | end, 186 | }) 187 | 188 | require('mason-lspconfig').setup({ 189 | ensure_installed = {}, 190 | handlers = { 191 | -- this first function is the "default handler" 192 | -- it applies to every language server without a "custom handler" 193 | function(server_name) 194 | require('lspconfig')[server_name].setup({}) 195 | end, 196 | } 197 | }) 198 | end 199 | } 200 | }, 201 | { 202 | "numToStr/Comment.nvim", 203 | config = function() require("Comment").setup() end 204 | }, 205 | { 206 | "nvim-neo-tree/neo-tree.nvim", 207 | branch = "v3.x", 208 | dependencies = { 209 | "nvim-lua/plenary.nvim", 210 | "nvim-tree/nvim-web-devicons", 211 | "MunifTanjim/nui.nvim", 212 | "3rd/image.nvim", 213 | }, 214 | keys = { 215 | { "fm", ":Neotree", silent = true } 216 | }, 217 | config = function() 218 | require("neo-tree").setup({ 219 | window = { 220 | mappings = { 221 | ["l"] = "open", 222 | ["h"] = "close_node" 223 | }, 224 | }, 225 | }) 226 | end 227 | }, 228 | { 229 | "nvimtools/none-ls.nvim", 230 | config = function() 231 | local builtins = require("null-ls.builtins") 232 | 233 | require("null-ls").setup({ 234 | sources = { 235 | builtins.formatting.prettier.with({ 236 | extra_filetypes = { "astro" }, 237 | }), 238 | builtins.formatting.sql_formatter, 239 | builtins.diagnostics.gitlint.with({ 240 | extra_args = { "--contrib=contrib-title-conventional-commits" } 241 | }), 242 | builtins.formatting.djlint, 243 | builtins.diagnostics.djlint, 244 | builtins.formatting.black, 245 | builtins.diagnostics.mypy 246 | }, 247 | }) 248 | end 249 | }, 250 | { "tpope/vim-sleuth" }, 251 | { "tpope/vim-surround" }, 252 | { 253 | "lewis6991/gitsigns.nvim", 254 | lazy = false, 255 | config = function() 256 | require("gitsigns").setup({ 257 | signcolumn = false, 258 | numhl = true, 259 | current_line_blame = true, 260 | current_line_blame_opts = { 261 | delay = 300 262 | }, 263 | }) 264 | end 265 | }, 266 | { "b0o/schemastore.nvim" }, 267 | { 268 | "christoomey/vim-tmux-navigator", 269 | keys = { 270 | { "", ":TmuxNavigateLeft", silent = true }, 271 | { "", ":TmuxNavigateRight", silent = true }, 272 | { "", ":TmuxNavigateDown", silent = true }, 273 | { "", ":TmuxNavigateUp", silent = true }, 274 | }, 275 | enabled = true 276 | }, 277 | { 278 | "folke/noice.nvim", 279 | event = "VeryLazy", 280 | opts = { 281 | -- add any options here 282 | }, 283 | dependencies = { 284 | -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries 285 | "MunifTanjim/nui.nvim", 286 | -- OPTIONAL: 287 | -- `nvim-notify` is only needed, if you want to use the notification view. 288 | -- If not available, we use `mini` as the fallback 289 | "rcarriga/nvim-notify", 290 | }, 291 | config = function() 292 | require("notify").setup({ 293 | top_down = false 294 | }) 295 | require("noice").setup({ 296 | lsp = { 297 | -- override markdown rendering so that **cmp** and other plugins use **Treesitter** 298 | override = { 299 | ["vim.lsp.util.convert_input_to_markdown_lines"] = true, 300 | ["vim.lsp.util.stylize_markdown"] = true, 301 | ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp 302 | }, 303 | hover = { 304 | silent = true 305 | } 306 | }, 307 | views = { 308 | notify = { 309 | replace = true 310 | } 311 | }, 312 | -- you can enable a preset for easier configuration 313 | presets = { 314 | bottom_search = true, -- use a classic bottom cmdline for search 315 | command_palette = true, -- position the cmdline and popupmenu together 316 | long_message_to_split = true, -- long messages will be sent to a split 317 | inc_rename = true, -- enables an input dialog for inc-rename.nvim 318 | lsp_doc_border = true, -- add a border to hover docs and signature help 319 | }, 320 | }) 321 | end 322 | }, 323 | { 324 | "folke/zen-mode.nvim", 325 | lazy = false, 326 | dependencies = { 327 | "folke/twilight.nvim" 328 | }, 329 | keys = { 330 | { "z", ":ZenMode", silent = true }, 331 | }, 332 | opts = { 333 | plugins = { 334 | tmux = { enabled = true } 335 | } 336 | } 337 | }, 338 | { 'akinsho/git-conflict.nvim', version = "*", config = true } 339 | } 340 | --------------------------------------------------------------------------------