diff --git a/.xonshrc b/.xonshrc new file mode 100644 index 0000000..c9a1d8c --- /dev/null +++ b/.xonshrc @@ -0,0 +1,9 @@ +# XONSH WEBCONFIG START +$PROMPT = '{INTENSE_RED}{user}{RESET} at {INTENSE_PURPLE}{hostname}{RESET} in {BOLD_GREEN}{cwd}{RESET}\r\nβ†ͺ ' + +$PL_PROMPT='cwd>branch' +$PL_RPROMPT = '!' # for no toolbar +$PL_TOOLBAR = 'who>virtualenv>branch>cwd>full_proc' +xontrib load powerline2 +# XONSH WEBCONFIG END + diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..4ef71a0 --- /dev/null +++ b/.zshrc @@ -0,0 +1,385 @@ +# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. +# Initialization code that may require console input (password prompts, [y/n] +# confirmations, etc.) must go above this block; everything else may go below. +# if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then +# source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +# fi + +# Set name of the theme to load. +# Look in ~/.oh-my-zsh/themes/ +# Optionally, if you set this to "random", it'll load a random theme each +# time that oh-my-zsh is loaded. + + +# setopt AUTO_NAME_DIRS +# setopt CDABLE_VARS +# TWBlog=/Volumes/Working\ Drive/Git_Repositories/TWBlog +# checkyoself=/Volumes/Working\ Drive/Git_Repositories/checkyoself +# checkyoself-docs=/Volumes/Working\ Drive/Git_Repositories/checkyoselfDocs +# dev-research=/Volumes/Working\ Drive/Git_Repositories/devResearch +# book-finder=/Volumes/Working\ Drive/Git_Repositories/bookFinder +# portfolio-v6=/Volumes/Working\ Drive/Git_Repositories/portfoliov6 +# tiffany.blog=/Volumes/Working\ Drive/Git_Repositories/tiffanyBlog + +# resume=/Volumes/Working\ Drive/Git_Repositories/resume + +# Apps + + +# Kill Chrome because it gets stuck sometimes + +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +# Set to this to use case-sensitive completion +# CASE_SENSITIVE="true" + +# Comment this out to disable weekly auto-update checks + +# Uncomment following line if you want to disable colors in ls + # DISABLE_LS_COLORS="true" + +# Uncomment following line if you want to disable autosetting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment following line if you want red dots to be displayed while waiting for completion +#COMPLETION_WAITING_DOTS="true" + +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +plugins=(git dirhistory brew dircycle gitfast git-extras jsontools node npm macos repo sudo urltools web-search dirpersist history-substring-search last-working-dir safe-paste yarn zsh-completions) + + + +ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor) + +# Declare the variable +typeset -A ZSH_HIGHLIGHT_STYLES + +# To differentiate aliases from other command types +ZSH_HIGHLIGHT_STYLES[alias]='fg=cyan,bold' + +# To have paths colored instead of underlined +ZSH_HIGHLIGHT_STYLES[path]='fg=magenta' + +ZSH_HIGHLIGHT_STYLES[cursor]='bg=pink' + +# To define styles for nested brackets up to level 4 +ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold' + +ZSH_HIGHLIGHT_STYLES[root]='bg=red' + +# ------------------------------------------------------------------ +# Go Paths +# ------------------------------------------------------------------ +# export PATH=$PATH:$(go env GOPATH)/bin +# export GOPATH=$(go env GOPATH) +# export $PATH=$PATH:$GOBIN +# export GOROOT=/usr/local/go + + +#-------------------------------------------------------------------- +# Ruby Path fixes +#-------------------------------------------------------------------- + +# ------------------------------------------------------------------- +# Git aliases +# ------------------------------------------------------------------- + +alias gaa='git add -A' +alias gp='git push' +alias gl='git log' +alias gs='git status' +alias gd='git diff' +alias gmsg='git commit -m' +alias gmsga='git commit -am' +alias gb='git branch' +alias gc='git checkout' +alias gra='git remote add' +alias grr='git remote rm' +alias gdown='git pull' +alias gcl='git clone' +alias gta='git tag -a -m' +alias gf='git reflog' +alias gfa='git fetch --all' +alias pushor="git push -u origin main" +alias addup='git remote add upstream' +alias gitup='git fetch upstream' +alias chmain='git checkout main' +alias merup='git merge upstream/main' +alias gst='git stash' +alias gitsta='git stash apply' +alias ohshit='git revert --no commit' + +# ------------------------------------------------------------------- +# OTHER aliases +# ------------------------------------------------------------------- +# alias python=/usr/local/bin/python3 +alias cl='clear' +alias bi= 'bundle install' +alias npming='npm install -g' +alias h='history' +alias help='man' +alias pyide='open -a /Applications/PyCharm.app' +alias pych="PyCharm ." +alias gol="GoLand ." +alias rus="open -a /Applications/RustRover.app" +alias lion="open -a /Applications/CLion.app" +alias rubyide='open -a /Applications/RubyMine.app' +alias goide='open -a /Applications/GoLand.app' +alias code='open -a Visual\ Studio\ Code.app' +alias gitk='open -a /Applications/GitKraken.app' +alias brewi='brew install' +alias brupg='brew upgrade' +alias brupd='brew update' +alias szsh='source ~/.zshrc' +alias jopt='jpeg-recompress --accurate --quality medium --min 40' +alias popt='pngcrush -brute' +alias jeksthx='bundle exec jekyll serve --livereload --open-url --port 4001 --future --host 0.0.0.0 ' +alias jeksth='bundle exec jekyll serve --livereload --open-url --drafts --future' +alias jeksd='bundle exec jekyll serve --livereload --open-url --drafts --future' +alias jeksttt='bundle exec jekyll serve --livereload --open-url --port 4002 --drafts --future --host 0.0.0.0' +alias jeksg='bundle exec jekyll serve --livereload --open-url --port 4003 --drafts --future --host 0.0.0.0' +alias jeksp='bundle exec jekyll serve --livereload --open-url --port 4004 --drafts --future --host 0.0.0.0' +alias jeksfit='bundle exec jekyll serve --livereload --open-url --port 3040 --drafts --future --host 0.0.0.0' +alias jeksb='bundle exec jekyll serve --livereload --open-url --port 3030 --drafts --future --host 0.0.0.0' +alias gitor='git remote add origin' +alias pushit='git push -u origin master' +alias free='git pull --rebase upstream master' +alias bug='git pull upstream master' +alias start='torus run bin/rails server' +alias console='torus run bin/rails console' +alias killpry='lsof -wni tcp:3000' +alias git=hub +alias pullup='git pull upstream master' +alias lint='./node_modules/.bin/eslint --init' +alias gac="ga . && gcmsg" +alias gpo="gp && go" +alias gundo="git undo" +alias yo="yo" +alias dewebpng='find . -name "*.webp" | xargs -I {} dwebp {} -o {}.png' +alias dewebpgif='find . -name "*.webp" | xargs -I {} dwebp {} -o {}.gif' +alias dewebpjpg='find . -name "*.webp" | xargs -I {} dwebp {} -o {}.jpg' +alias mp3="youtube-dl -i --extract-audio --audio-format mp3 --audio-quality 0" +alias mkv="youtube-dl --merge-output-format mkv" +alias mp4="youtube-dl --merge-output-format mp4" +alias mp3play="youtube-dl -ict --yes-playlist --extract-audio --audio-format mp3 --audio-quality 0 " +alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale" +alias ls='colorls --dark --sort-dirs --report -A --gs' +alias lc='colorls --dark --sort-dirs --report -A --gs --tree' +alias jeksdoc="docker-compose up" + +# exa file list +alias la="exa --git --color=automatic -x" +# `cat` with beautiful colors. requires: pip install -U Pygments +alias c='pygmentize -O style=borland -f console256 -g' + +alias wmyip='curl ip.appspot.com' +# memHogsTop, memHogsPs: Find memory hogs +# ----------------------------------------------------- +#alias memHogsTop='top -l 1 -o rsize | head -20' +#alias memHogsPs='ps wwaxm -o pid,stat,vsize,rss,time,command | head -10' + +# cpuHogs: Find CPU hogs +# ----------------------------------------------------- +# Useful Aliases + +alias l="exa -l" +#alias copyssh="pbcopy < $HOME/.ssh/id_rsa.pub" +alias alz="alias | fzf" + +# alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale" + +######################## +# Terminalizer Aliases # +######################## + +#alias trex='terminalizer record' +#alias tconfig='terminalizer config' +#alias tren='terminalizer render' +#alias tplay='terminalizer play' +#alias tgen='terminalizer generate' +#alias tshare='terminalizer share' + +#fpath=(/usr/local/share/zsh-completions $fpath) + +######################## +# Useful Functions # +######################## + +# Git sometimes goes into a detached head state. git_prompt_info doesn't +# return anything in this case. So wrap it in another function and check +# for an empty string. +function check_git_prompt_info() { + if git rev-parse --git-dir > /dev/null 2>&1; then + if [[ -z $(git_prompt_info) ]]; then + echo "%{$fg[magenta]%}detached-head%{$reset_color%})" + else + echo "$(git_prompt_info)" + fi + fi +} + +######################## +# Location Path Setter # +######################## + +function get_pwd(){ + git_root=$PWD + while [[ $git_root != / && ! -e $git_root/.git ]]; do + git_root=$git_root:h + done + if [[ $git_root = / ]]; then + unset git_root + prompt_short_dir=%~ + else + parent=${git_root%\/*} + prompt_short_dir=${PWD#$parent/} + fi + echo $prompt_short_dir +} + +function acp() { + git add . + git commit -m "Update something" + git push +} + +# Function taken from Jeff Geerling https://github.com/geerlingguy/dotfiles +# that syncs and pushes your branches +function gsync() { + if [[ ! "$1" ]] ; then + echo "You must supply a branch." + return 0 + fi + + BRANCHES=$(git branch --list $1) + if [ ! "$BRANCHES" ] ; then + echo "Branch $1 does not exist." + return 0 + fi + + git checkout "$1" && \ + git pull upstream "$1" && \ + git push origin "$1" +} + +# extract: Extract most know archives with one command +# --------------------------------------------------------- + extract () { + if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.xz) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bkz2) bunzip2 $1 ;; + *.rar) unrar e $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1 ;; + *.7z) 7z x $1 ;; + *) echo "'$1' cannot be extracted via extract()" ;; + esac + else + echo "'$1' is not a valid file" + fi + } + + +export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +source /Users/tiffanywhite/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + +BROWSER="Vivaldi.app"; export BROWSER +EDITOR=nvim; export EDITOR +VISUAL=wezterm; export VISUAL + +eval "$(hub alias -s)" +export GITHUB_TOKEN=$token + +. $HOME/.asdf/asdf.sh + +. $HOME/.asdf/completions/asdf.bash + +. "$HOME/.cargo/env" + +############## +# Yarn Paths # +############## + + +# Set Spaceship ZSH as a prompt +# autoload -U promptinit; promptinit +# prompt spaceship + +######################## +# Ruby/Jekyll Fix # +######################## + + +######################################## +# Flags for Ruby Homebrew macOS errors # +######################################## + +# export LDFLAGS="-L/opt/homebrew/opt/ruby/lib" +# export CPPFLAGS="-I/opt/homebrew/opt/ruby/include" + +# export PKG_CONFIG_PATH="/opt/homebrew/opt/ruby/lib/pkgconfig" + + eval "$(fzf --zsh)" + +# Fix npm install errors + # This loads nvm bash_completion + +########################### +# Python Environment Path # +########################### + + +# pnpm +# pnpm end + +#export ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX=YES + +########################## +# Homebrew directory fix # +########################## + +eval "$(fzf --zsh)" + + +############## +# Yazi Config # +############## + + +#eval "$(oh-my-posh init zsh --config $(brew --prefix oh-my-posh)/themes/catppuccin_frappe.omp.json)" + +#eval "$(oh-my-posh init zsh --config ~/.mycat.omp.toml)" + +# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. +# [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + +# (( ! ${+functions[p10k]} )) || p10k finalize + + +# Created by `pipx` on 2024-06-24 17:58:35 + + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. + + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. + + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. + +alias vim="nvim" diff --git a/.zshrc.bak b/.zshrc.bak new file mode 100644 index 0000000..3250929 --- /dev/null +++ b/.zshrc.bak @@ -0,0 +1,572 @@ +# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. +# Initialization code that may require console input (password prompts, [y/n] +# confirmations, etc.) must go above this block; everything else may go below. +# if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then +# source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +# fi + +ZSH=$HOME/.oh-my-zsh +source $HOMEBREW_PREFIX/share/zsh-autocomplete/zsh-autocomplete.plugin.zsh +# Set name of the theme to load. +# Look in ~/.oh-my-zsh/themes/ +# Optionally, if you set this to "random", it'll load a random theme each +# time that oh-my-zsh is loaded. +ZSH_THEME="spaceship" +# ZSH_THEME="powerlevel10k/powerlevel10k" +# ORDER +SPACESHIP_PROMPT_ORDER=( + time # + vi_mode # these sections will be + user # before prompt char + host # + char + dir + git + node + ruby + xcode + swift + golang + docker + venv + pyenv +) + +# USER +SPACESHIP_USER_PREFIX="" # remove `with` before username +SPACESHIP_USER_SUFFIX="" # remove space before host + +# HOST +# Result will look like this: +# username@:(hostname) +SPACESHIP_HOST_PREFIX="@:(" +SPACESHIP_HOST_SUFFIX=") " + +# DIR +SPACESHIP_DIR_PREFIX='' # disable directory prefix, cause it's not the first section +SPACESHIP_DIR_TRUNC='1' # show only last directory + +# GIT +# Disable git symbol +SPACESHIP_GIT_SYMBOL="" # disable git prefix +SPACESHIP_GIT_BRANCH_PREFIX="" # disable branch prefix too +# Wrap git in `git:(...)` +SPACESHIP_GIT_PREFIX='git:(' +SPACESHIP_GIT_SUFFIX=") " +SPACESHIP_GIT_BRANCH_SUFFIX="" # remove space after branch name +# Unwrap git status from `[...]` +SPACESHIP_GIT_STATUS_PREFIX="" +SPACESHIP_GIT_STATUS_SUFFIX="" + +# NODE +SPACESHIP_NODE_PREFIX="node:(" +SPACESHIP_NODE_SUFFIX=") " +SPACESHIP_NODE_SYMBOL="" + +# RUBY +SPACESHIP_RUBY_PREFIX="ruby:(" +SPACESHIP_RUBY_SUFFIX=") " +SPACESHIP_RUBY_SYMBOL="" + +# XCODE +SPACESHIP_XCODE_PREFIX="xcode:(" +SPACESHIP_XCODE_SUFFIX=") " +SPACESHIP_XCODE_SYMBOL="" + +# SWIFT +SPACESHIP_SWIFT_PREFIX="swift:(" +SPACESHIP_SWIFT_SUFFIX=") " +SPACESHIP_SWIFT_SYMBOL="" + +# GOLANG +SPACESHIP_GOLANG_PREFIX="go:(" +SPACESHIP_GOLANG_SUFFIX=") " +SPACESHIP_GOLANG_SYMBOL="" + +# DOCKER +SPACESHIP_DOCKER_PREFIX="docker:(" +SPACESHIP_DOCKER_SUFFIX=") " +SPACESHIP_DOCKER_SYMBOL="" + +# VENV +SPACESHIP_VENV_PREFIX="venv:(" +SPACESHIP_VENV_SUFFIX=") " + +# PYENV +SPACESHIP_PYENV_PREFIX="python:(" +SPACESHIP_PYENV_SUFFIX=") " +SPACESHIP_PYENV_SYMBOL="" + +# Z jump +. $HOME/z.sh + +# setopt AUTO_NAME_DIRS +# setopt CDABLE_VARS +# TWBlog=/Volumes/Working\ Drive/Git_Repositories/TWBlog +# checkyoself=/Volumes/Working\ Drive/Git_Repositories/checkyoself +# checkyoself-docs=/Volumes/Working\ Drive/Git_Repositories/checkyoselfDocs +# dev-research=/Volumes/Working\ Drive/Git_Repositories/devResearch +# book-finder=/Volumes/Working\ Drive/Git_Repositories/bookFinder +# portfolio-v6=/Volumes/Working\ Drive/Git_Repositories/portfoliov6 +# tiffany.blog=/Volumes/Working\ Drive/Git_Repositories/tiffanyBlog + +# resume=/Volumes/Working\ Drive/Git_Repositories/resume + +# Apps + +alias ci="code-insiders" +alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' +alias canary='/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary' + +# Kill Chrome because it gets stuck sometimes +alias chromekill="ps ux | grep '[C]hrome Helper --type=renderer' | grep -v extension-process | tr -s ' ' | cut -d ' ' -f2 | xargs kill" + +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +# Set to this to use case-sensitive completion +# CASE_SENSITIVE="true" + +# Comment this out to disable weekly auto-update checks +DISABLE_AUTO_UPDATE=false + +# Uncomment following line if you want to disable colors in ls + # DISABLE_LS_COLORS="true" + +# Uncomment following line if you want to disable autosetting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment following line if you want red dots to be displayed while waiting for completion +COMPLETION_WAITING_DOTS="true" + +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +plugins=(git dirhistory brew dircycle gitfast git-extras jsontools node npm macos repo sudo urltools web-search dirpersist history-substring-search last-working-dir safe-paste yarn zsh-completions) + +source $ZSH/oh-my-zsh.sh +# Timing +PROMPT_TITLE='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"' +export PROMPT_COMMAND="${PROMPT_COMMAND} ${PROMPT_TITLE}; " + +ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor) + +# Declare the variable +typeset -A ZSH_HIGHLIGHT_STYLES + +# To differentiate aliases from other command types +ZSH_HIGHLIGHT_STYLES[alias]='fg=cyan,bold' + +# To have paths colored instead of underlined +ZSH_HIGHLIGHT_STYLES[path]='fg=magenta' + +ZSH_HIGHLIGHT_STYLES[cursor]='bg=pink' + +# To define styles for nested brackets up to level 4 +ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold' +ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold' + +ZSH_HIGHLIGHT_STYLES[root]='bg=red' + +# ------------------------------------------------------------------ +# Go Paths +# ------------------------------------------------------------------ +# export PATH=$PATH:$(go env GOPATH)/bin +# export GOPATH=$(go env GOPATH) +# export $PATH=$PATH:$GOBIN +# export GOROOT=/usr/local/go + +export GOPATH=/Users/tiffanywhite/go +export PATH=$GOPATH/bin:$PATH + +#-------------------------------------------------------------------- +# Ruby Path fixes +#-------------------------------------------------------------------- + +export LDFLAGS="-L/opt/homebrew/opt/ruby/lib" +export CPPFLAGS="-I/opt/homebrew/opt/ruby/include" + +export PKG_CONFIG_PATH="/opt/homebrew/opt/ruby/lib/pkgconfig" + +# ------------------------------------------------------------------- +# Git aliases +# ------------------------------------------------------------------- + +alias gaa='git add -A' +alias gp='git push' +alias gl='git log' +alias gs='git status' +alias gd='git diff' +alias gmsg='git commit -m' +alias gmsga='git commit -am' +alias gb='git branch' +alias gc='git checkout' +alias gra='git remote add' +alias grr='git remote rm' +alias gdown='git pull' +alias gcl='git clone' +alias gta='git tag -a -m' +alias gf='git reflog' +alias gfa='git fetch --all' +alias pushor="git push -u origin main" +alias addup='git remote add upstream' +alias gitup='git fetch upstream' +alias chmain='git checkout main' +alias merup='git merge upstream/main' +alias gst='git stash' +alias gitsta='git stash apply' +alias ohshit='git revert --no commit' + +# ------------------------------------------------------------------- +# OTHER aliases +# ------------------------------------------------------------------- +# alias python=/usr/local/bin/python3 +alias cl='clear' +alias bi= 'bundle install' +alias npming='npm install -g' +alias h='history' +alias help='man' +alias pyide='open -a /Applications/PyCharm.app' +alias pych="PyCharm ." +alias gol="GoLand ." +alias rus="open -a /Applications/RustRover.app" +alias lion="open -a /Applications/CLion.app" +alias rubyide='open -a /Applications/RubyMine.app' +alias goide='open -a /Applications/GoLand.app' +alias code='open -a Visual\ Studio\ Code.app' +alias gitk='open -a /Applications/GitKraken.app' +alias brewi='brew install' +alias brupg='brew upgrade' +alias brupd='brew update' +alias szsh='source ~/.zshrc' +alias jopt='jpeg-recompress --accurate --quality medium --min 40' +alias popt='pngcrush -brute' +alias jeksthx='bundle exec jekyll serve --livereload --open-url --port 4001 --future --host 0.0.0.0 ' +alias jeksth='bundle exec jekyll serve --livereload --open-url --drafts --future' +alias jeksd='bundle exec jekyll serve --livereload --open-url --drafts --future' +alias jeksttt='bundle exec jekyll serve --livereload --open-url --port 4002 --drafts --future --host 0.0.0.0' +alias jeksg='bundle exec jekyll serve --livereload --open-url --port 4003 --drafts --future --host 0.0.0.0' +alias jeksp='bundle exec jekyll serve --livereload --open-url --port 4004 --drafts --future --host 0.0.0.0' +alias jeksfit='bundle exec jekyll serve --livereload --open-url --port 3040 --drafts --future --host 0.0.0.0' +alias jeksb='bundle exec jekyll serve --livereload --open-url --port 3030 --drafts --future --host 0.0.0.0' +alias gitor='git remote add origin' +alias pushit='git push -u origin master' +alias free='git pull --rebase upstream master' +alias bug='git pull upstream master' +alias start='torus run bin/rails server' +alias console='torus run bin/rails console' +alias killpry='lsof -wni tcp:3000' +alias git=hub +alias pullup='git pull upstream master' +alias lint='./node_modules/.bin/eslint --init' +alias gac="ga . && gcmsg" +alias gpo="gp && go" +alias gundo="git undo" +alias yo="yo" +alias dewebpng='find . -name "*.webp" | xargs -I {} dwebp {} -o {}.png' +alias dewebpgif='find . -name "*.webp" | xargs -I {} dwebp {} -o {}.gif' +alias dewebpjpg='find . -name "*.webp" | xargs -I {} dwebp {} -o {}.jpg' +alias mp3="youtube-dl -i --extract-audio --audio-format mp3 --audio-quality 0" +alias mkv="youtube-dl --merge-output-format mkv" +alias mp4="youtube-dl --merge-output-format mp4" +alias mp3play="youtube-dl -ict --yes-playlist --extract-audio --audio-format mp3 --audio-quality 0 " +alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale" +alias ls='colorls --dark --sort-dirs --report -A --gs' +alias lc='colorls --dark --sort-dirs --report -A --gs --tree' +alias jeksdoc="docker-compose up" + +# exa file list +alias la="exa --git --color=automatic -x" +# `cat` with beautiful colors. requires: pip install -U Pygments +alias c='pygmentize -O style=borland -f console256 -g' + +alias wmyip='curl ip.appspot.com' +# memHogsTop, memHogsPs: Find memory hogs +# ----------------------------------------------------- +alias memHogsTop='top -l 1 -o rsize | head -20' +alias memHogsPs='ps wwaxm -o pid,stat,vsize,rss,time,command | head -10' + +# cpuHogs: Find CPU hogs +# ----------------------------------------------------- +alias cpu_hogs='ps wwaxr -o pid,stat,%cpu,time,command | head -10' +alias flushDNS='dscacheutil -flushcache' + +# Reload dns +alias reloaddns="dscacheutil -flushcache && sudo killall -HUP mDNSResponder" + +# Empty the Trash on all mounted volumes and the main HDD. +# Also, clear Apple’s System Logs to improve shell startup speed. +# Finally, clear download history from quarantine. https://mths.be/bum +alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl; sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'" + +# finderShowHidden: Show hidden files in Finder +# finderHideHidden: Hide hidden files in Finder +# ------------------------------------------------------------------- +alias finderShowHidden='defaults write com.apple.finder ShowAllFiles TRUE' +alias finderHideHidden='defaults write com.apple.finder ShowAllFiles FALSE' + +# Useful Aliases + +alias l="exa -l" +alias copyssh="pbcopy < $HOME/.ssh/id_rsa.pub" +alias alz="alias | fzf" + +# alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale" + +######################## +# Terminalizer Aliases # +######################## + +alias trex='terminalizer record' +alias tconfig='terminalizer config' +alias tren='terminalizer render' +alias tplay='terminalizer play' +alias tgen='terminalizer generate' +alias tshare='terminalizer share' + +fpath=(/usr/local/share/zsh-completions $fpath) + +######################## +# Useful Functions # +######################## + +# Git sometimes goes into a detached head state. git_prompt_info doesn't +# return anything in this case. So wrap it in another function and check +# for an empty string. +function check_git_prompt_info() { + if git rev-parse --git-dir > /dev/null 2>&1; then + if [[ -z $(git_prompt_info) ]]; then + echo "%{$fg[magenta]%}detached-head%{$reset_color%})" + else + echo "$(git_prompt_info)" + fi + fi +} + +######################## +# Location Path Setter # +######################## + +function get_pwd(){ + git_root=$PWD + while [[ $git_root != / && ! -e $git_root/.git ]]; do + git_root=$git_root:h + done + if [[ $git_root = / ]]; then + unset git_root + prompt_short_dir=%~ + else + parent=${git_root%\/*} + prompt_short_dir=${PWD#$parent/} + fi + echo $prompt_short_dir +} + +function acp() { + git add . + git commit -m "Update something" + git push +} + +# Function taken from Jeff Geerling https://github.com/geerlingguy/dotfiles +# that syncs and pushes your branches +function gsync() { + if [[ ! "$1" ]] ; then + echo "You must supply a branch." + return 0 + fi + + BRANCHES=$(git branch --list $1) + if [ ! "$BRANCHES" ] ; then + echo "Branch $1 does not exist." + return 0 + fi + + git checkout "$1" && \ + git pull upstream "$1" && \ + git push origin "$1" +} + +# extract: Extract most know archives with one command +# --------------------------------------------------------- + extract () { + if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.xz) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bkz2) bunzip2 $1 ;; + *.rar) unrar e $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1 ;; + *.7z) 7z x $1 ;; + *) echo "'$1' cannot be extracted via extract()" ;; + esac + else + echo "'$1' is not a valid file" + fi + } + +function tbwebp() { + for file in tiffany.blog-photos/*; + do cwebp -q 50 "$file" -o "${file%.*}.webp"; + done +} + +function trwbwebp() { + for file in TWBlog-photos/*; + do cwebp -q 50 "$file" -o "${file%.*}.webp"; + done +} + +function shrink() { + for file in blog/*; + do magick -sampling-factor 4:2:0 -quality 85 -interlace JPEG -colorspace RGB "$file" "${file%.*}.jpg" + done +} + +function f2fwebp() { + for file in dfl-photos/*; + do cwebp -q 50 "$file" -o "${file%.*}.webp"; + done +} + +function webpall() { + for file in *; + do cwebp -q 50 "$file" -o "${file%.*}.webp"; + done +} + +function removedates() { + for file in *.md + do mv "${file%%[0-9]*.md} /dates-removed/${file%*.md}" + done +} +export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +source /Users/tiffanywhite/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + +BROWSER="Vivaldi.app"; export BROWSER +EDITOR=nvim; export EDITOR +VISUAL=wezterm; export VISUAL + +eval "$(hub alias -s)" +export GITHUB_TOKEN=$token + +. $HOME/.asdf/asdf.sh + +. $HOME/.asdf/completions/asdf.bash + +. "$HOME/.cargo/env" + +############## +# Yarn Paths # +############## + +export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" +export PATH="$PATH:/opt/yarn-[1.22.4]/bin" +export PATH="$PATH:`yarn global bin`" + +# Set Spaceship ZSH as a prompt +# autoload -U promptinit; promptinit +# prompt spaceship + +######################## +# Ruby/Jekyll Fix # +######################## + +export PATH="/usr/local/opt/openssl/bin:$PATH" + +######################################## +# Flags for Ruby Homebrew macOS errors # +######################################## + +# export LDFLAGS="-L/opt/homebrew/opt/ruby/lib" +# export CPPFLAGS="-I/opt/homebrew/opt/ruby/include" + +# export PKG_CONFIG_PATH="/opt/homebrew/opt/ruby/lib/pkgconfig" + + eval "$(fzf --zsh)" + +# Fix npm install errors +export PATH="~/.npm-global/bin:$PATH" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + +########################### +# Python Environment Path # +########################### + +export PYENV_ROOT="$HOME/.pyenv" +command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init -)" + +eval "$(zoxide init zsh)" +# pnpm +export PNPM_HOME="/Users/tiffanywhite/Library/pnpm" +export PATH="$PNPM_HOME:$PATH" +# pnpm end + +export ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX=YES + +########################## +# Homebrew directory fix # +########################## + +eval "$(fzf --zsh)" + +if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then + eval "$(oh-my-posh init zsh)" +fi + +function y() { + local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd + yazi "$@" --cwd-file="$tmp" + if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then + builtin cd -- "$cwd" + fi + rm -f -- "$tmp" +} + +############## +# Yazi Config # +############## + + +#eval "$(oh-my-posh init zsh --config $(brew --prefix oh-my-posh)/themes/catppuccin_frappe.omp.json)" + +eval "$(oh-my-posh init zsh --config ~/.mycat.omp.toml)" + +# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. +# [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + +# (( ! ${+functions[p10k]} )) || p10k finalize + +test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" + +# Created by `pipx` on 2024-06-24 17:58:35 +export PATH="$PATH:/Users/tiffanywhite/.local/bin" +eval "$(zellij setup --generate-auto-start zsh)" +export PATH="/opt/homebrew/opt/ruby/bin:$PATH" +export LDFLAGS="-L/opt/homebrew/opt/ruby/lib" +export CPPFLAGS="-I/opt/homebrew/opt/ruby/include" +export PKG_CONFIG_PATH="/opt/homebrew/opt/ruby/lib/pkgconfig" + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" +export PATH="/opt/homebrew/opt/ruby/bin:$PATH" + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" +export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting +[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" +alias vim="nvim" diff --git a/aliases.txt b/aliases.txt new file mode 100644 index 0000000..e69de29 diff --git a/asciinema/install-id b/asciinema/install-id new file mode 100644 index 0000000..d9437ba --- /dev/null +++ b/asciinema/install-id @@ -0,0 +1 @@ +2339b1f5-d50e-4663-85f0-7c9041ea634e \ No newline at end of file diff --git a/ghostty/config b/ghostty/config new file mode 100644 index 0000000..5204756 --- /dev/null +++ b/ghostty/config @@ -0,0 +1,19 @@ +theme=catppuccin-frappe.conf + +window-height=30 +window-width=110 +window-theme=auto +macos-titlebar-style=hidden +background-blur-radius=25 + + + +font-family="Fira Code" +font-size=24 +font-thicken=true +cursor-style=block +cursor-style-blink=true + + +window-save-state=always + diff --git a/ghostty/themes/catppuccin-frappe.conf b/ghostty/themes/catppuccin-frappe.conf new file mode 100644 index 0000000..30558fc --- /dev/null +++ b/ghostty/themes/catppuccin-frappe.conf @@ -0,0 +1,22 @@ +palette = 0=#51576d +palette = 1=#e78284 +palette = 2=#74c7ec +palette = 3=#e5c890 +palette = 4=#8caaee +palette = 5=#f4b8e4 +palette = 6=#81c8be +palette = 7=#b5bfe2 +palette = 8=#626880 +palette = 9=#e78284 +palette = 10=#74c7ec +palette = 11=#e5c890 +palette = 12=#8caaee +palette = 13=#f4b8e4 +palette = 14=#81c8be +palette = 15=#a5adce +background = 303446 +foreground = c6d0f5 +cursor-color = f2d5cf +cursor-text = 303446 +selection-background = 44495d +selection-foreground = c6d0f5 diff --git a/ghostty/themes/catppuccin-latte.conf b/ghostty/themes/catppuccin-latte.conf new file mode 100644 index 0000000..884910d --- /dev/null +++ b/ghostty/themes/catppuccin-latte.conf @@ -0,0 +1,22 @@ +palette = 0=#5c5f77 +palette = 1=#d20f39 +palette = 2=#40a02b +palette = 3=#df8e1d +palette = 4=#1e66f5 +palette = 5=#ea76cb +palette = 6=#179299 +palette = 7=#acb0be +palette = 8=#6c6f85 +palette = 9=#d20f39 +palette = 10=#40a02b +palette = 11=#df8e1d +palette = 12=#1e66f5 +palette = 13=#ea76cb +palette = 14=#179299 +palette = 15=#bcc0cc +background = eff1f5 +foreground = 4c4f69 +cursor-color = dc8a78 +cursor-text = eff1f5 +selection-background = d8dae1 +selection-foreground = 4c4f69 diff --git a/ghostty/themes/catppuccin-macchiato.conf b/ghostty/themes/catppuccin-macchiato.conf new file mode 100644 index 0000000..5b95607 --- /dev/null +++ b/ghostty/themes/catppuccin-macchiato.conf @@ -0,0 +1,22 @@ +palette = 0=#494d64 +palette = 1=#ed8796 +palette = 2=#a6da95 +palette = 3=#eed49f +palette = 4=#8aadf4 +palette = 5=#f5bde6 +palette = 6=#8bd5ca +palette = 7=#b8c0e0 +palette = 8=#5b6078 +palette = 9=#ed8796 +palette = 10=#a6da95 +palette = 11=#eed49f +palette = 12=#8aadf4 +palette = 13=#f5bde6 +palette = 14=#8bd5ca +palette = 15=#a5adcb +background = 24273a +foreground = cad3f5 +cursor-color = f4dbd6 +cursor-text = 24273a +selection-background = 3a3e53 +selection-foreground = cad3f5 diff --git a/ghostty/themes/catppuccin-mocha.conf b/ghostty/themes/catppuccin-mocha.conf new file mode 100644 index 0000000..9eb84cd --- /dev/null +++ b/ghostty/themes/catppuccin-mocha.conf @@ -0,0 +1,22 @@ +palette = 0=#45475a +palette = 1=#f38ba8 +palette = 2=#a6e3a1 +palette = 3=#f9e2af +palette = 4=#89b4fa +palette = 5=#f5c2e7 +palette = 6=#94e2d5 +palette = 7=#bac2de +palette = 8=#585b70 +palette = 9=#f38ba8 +palette = 10=#a6e3a1 +palette = 11=#f9e2af +palette = 12=#89b4fa +palette = 13=#f5c2e7 +palette = 14=#94e2d5 +palette = 15=#a6adc8 +background = 1e1e2e +foreground = cdd6f4 +cursor-color = f5e0dc +cursor-text = 1e1e2e +selection-background = 353749 +selection-foreground = cdd6f4 diff --git a/ghostty/themes/coolnight.bak b/ghostty/themes/coolnight.bak new file mode 100644 index 0000000..1ac0e1d --- /dev/null +++ b/ghostty/themes/coolnight.bak @@ -0,0 +1,21 @@ +palette = 0=#214969 +palette = 1=#E52E2E +palette = 2=#44FFB1 +palette = 3=#FFE073 +palette = 4=#49cae4 +palette = 5=#0FC5ED +palette = 6=#a277ff +palette = 7=#24EAF7 +palette = 8=#24EAF7 +palette = 9=#214969 +palette = 10=#E52E2E +palette = 11=#44FFB1 +palette = 12=#FFE073 +palette = 13=#A277FF +palette = 14=#a277ff +palette = 15=#24EAF7 +background =#011f37 +foreground = #CBE0F0 +cursor-color = #47FF9C +selection-background = #033259 +selection-foreground = #CBE0F0 diff --git a/gitconfig/.gitconfig b/gitconfig/.gitconfig new file mode 100644 index 0000000..9d9af21 --- /dev/null +++ b/gitconfig/.gitconfig @@ -0,0 +1,32 @@ +[user] + name = tiff + email = tiff@tifflabs.org +[core] + editor = nvim + excludesfile = ~/.gitignore + autocrlf = input +[color] + branch = auto + diff = auto + interactive = auto + status = auto +[init] + defaultBranch = main +[web] + browser = vivaldi +[credential] + helper = osxkeychain +[push] + default = simple +[merge] + tool = kdiff3 +[difftool] + prompt = false +[alias] + d = diff + dc = diff --cached + l = log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit +[pull] + rebase = false +[rerere] + enabled = true diff --git a/k9s/aliases.yaml b/k9s/aliases.yaml deleted file mode 100644 index ee4d9ec..0000000 --- a/k9s/aliases.yaml +++ /dev/null @@ -1,9 +0,0 @@ -aliases: - dp: deployments - sec: v1/secrets - jo: jobs - cr: clusterroles - crb: clusterrolebindings - ro: roles - rb: rolebindings - np: networkpolicies diff --git a/k9s/config.yaml b/k9s/config.yaml deleted file mode 100644 index 32d420d..0000000 --- a/k9s/config.yaml +++ /dev/null @@ -1,42 +0,0 @@ -k9s: - liveViewAutoRefresh: false - screenDumpDir: /home/arcadian/.local/state/k9s/screen-dumps - refreshRate: 2 - maxConnRetry: 5 - readOnly: false - noExitOnCtrlC: false - ui: - skin: theme - enableMouse: false - headless: false - logoless: false - crumbsless: false - reactive: false - noIcons: false - defaultsToFullScreen: false - skipLatestRevCheck: false - disablePodCounting: false - shellPod: - image: busybox:1.35.0 - namespace: default - limits: - cpu: 100m - memory: 100Mi - imageScans: - enable: false - exclusions: - namespaces: [] - labels: {} - logger: - tail: 100 - buffer: 5000 - sinceSeconds: -1 - textWrap: false - showTime: false - thresholds: - cpu: - critical: 90 - warn: 70 - memory: - critical: 90 - warn: 70 diff --git a/k9s/skins/theme.yaml b/k9s/skins/theme.yaml deleted file mode 100644 index 834f23e..0000000 --- a/k9s/skins/theme.yaml +++ /dev/null @@ -1,100 +0,0 @@ -k9s: - body: - fgColor: '#cdd6f4' - bgColor: '#1e1e2e' - logoColor: '#cba6f7' - prompt: - fgColor: '#cdd6f4' - bgColor: '#181825' - suggestColor: '#89b4fa' - help: - fgColor: '#cdd6f4' - bgColor: '#1e1e2e' - sectionColor: '#a6e3a1' - keyColor: '#89b4fa' - numKeyColor: '#eba0ac' - frame: - title: - fgColor: '#94e2d5' - bgColor: '#1e1e2e' - highlightColor: '#f5c2e7' - counterColor: '#f9e2af' - filterColor: '#a6e3a1' - border: - fgColor: '#cba6f7' - focusColor: '#b4befe' - menu: - fgColor: '#cdd6f4' - keyColor: '#89b4fa' - numKeyColor: '#eba0ac' - crumbs: - fgColor: '#1e1e2e' - bgColor: '#eba0ac' - activeColor: '#f2cdcd' - status: - newColor: '#89b4fa' - modifyColor: '#b4befe' - addColor: '#a6e3a1' - pendingColor: '#fab387' - errorColor: '#f38ba8' - highlightColor: '#89dceb' - killColor: '#cba6f7' - completedColor: '#6c7086' - info: - fgColor: '#fab387' - sectionColor: '#cdd6f4' - views: - table: - fgColor: '#cdd6f4' - bgColor: '#1e1e2e' - cursorFgColor: '#313244' - cursorBgColor: '#45475a' - markColor: '#f5e0dc' - header: - fgColor: '#f9e2af' - bgColor: '#1e1e2e' - sorterColor: '#89dceb' - xray: - fgColor: '#cdd6f4' - bgColor: '#1e1e2e' - cursorColor: '#45475a' - cursorTextColor: '#1e1e2e' - graphicColor: '#f5c2e7' - charts: - bgColor: '#1e1e2e' - chartBgColor: '#1e1e2e' - dialBgColor: '#1e1e2e' - defaultDialColors: - - '#a6e3a1' - - '#f38ba8' - defaultChartColors: - - '#a6e3a1' - - '#f38ba8' - resourceColors: - cpu: - - '#cba6f7' - - '#89b4fa' - mem: - - '#f9e2af' - - '#fab387' - yaml: - keyColor: '#89b4fa' - valueColor: '#cdd6f4' - colonColor: '#a6adc8' - logs: - fgColor: '#cdd6f4' - bgColor: '#1e1e2e' - indicator: - fgColor: '#b4befe' - bgColor: '#1e1e2e' - toggleOnColor: '#a6e3a1' - toggleOffColor: '#a6adc8' - dialog: - fgColor: '#f9e2af' - bgColor: '#9399b2' - buttonFgColor: '#1e1e2e' - buttonBgColor: '#7f849c' - buttonFocusFgColor: '#1e1e2e' - buttonFocusBgColor: '#f5c2e7' - labelFgColor: '#f5e0dc' - fieldFgColor: '#cdd6f4' \ No newline at end of file diff --git a/nvim/.luarc.json b/nvim.bak/.luarc.json similarity index 100% rename from nvim/.luarc.json rename to nvim.bak/.luarc.json diff --git a/nvim.bak/init.lua b/nvim.bak/init.lua new file mode 100644 index 0000000..08423ef --- /dev/null +++ b/nvim.bak/init.lua @@ -0,0 +1,30 @@ +local set = vim.opt + +set.shiftwidth = 2 +set.tabstop = 2 +set.softtabstop = 2 +set.expandtab = true +set.autoindent = true +set.number = true +set.relativenumber = true +set.clipboard = "unnamedplus" +set.splitright = true +set.splitbelow = true + +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +vim.keymap.set("n", "x", "source %", { desc = "Source file" }) +vim.keymap.set("n", "cs", "nohl", { desc = "Clear search highlights" }) +vim.keymap.set("n", "ww", "set wrap!", { desc = "Toggle word wrap" }) +vim.keymap.set("n", "lb", "set linebreak!", { desc = "Toggle linebreak" }) + +vim.api.nvim_create_autocmd("TextYankPost", { + desc = "Highlight when yanking", + group = vim.api.nvim_create_augroup("highlight-yank", { clear = true }), + callback = function() + vim.highlight.on_yank() + end, +}) + +require("config.lazy") diff --git a/nvim.bak/lazy-lock.json b/nvim.bak/lazy-lock.json new file mode 100644 index 0000000..3de0cd2 --- /dev/null +++ b/nvim.bak/lazy-lock.json @@ -0,0 +1,46 @@ +{ + "LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" }, + "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, + "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, + "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, + "dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, + "gitsigns.nvim": { "branch": "main", "commit": "d8918f06624dd53b9a82bd0e29c31bcfd541b40d" }, + "image.nvim": { "branch": "master", "commit": "b991fc7f845bc6ab40c6ec00b39750dcd5190010" }, + "indent-blankline.nvim": { "branch": "master", "commit": "259357fa4097e232730341fa60988087d189193a" }, + "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, + "lazydev.nvim": { "branch": "main", "commit": "8620f82ee3f59ff2187647167b6b47387a13a018" }, + "lazygit.nvim": { "branch": "main", "commit": "77a0d42943d8265271e6e6beaed72da54eeb17e7" }, + "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, + "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "c6c686781f9841d855bf1b926e10aa5e19430a38" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "neo-tree.nvim": { "branch": "v3.x", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, + "none-ls.nvim": { "branch": "main", "commit": "ed8f80849ef1ad31c2f74679fafdef7801091247" }, + "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, + "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, + "nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" }, + "nvim-dap": { "branch": "master", "commit": "ead0de6eac91a555b714bfd7d28959eeecfb96f9" }, + "nvim-dap-ui": { "branch": "master", "commit": "e94d98649dccb6a3884b66aabc2e07beb279e535" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, + "nvim-lspconfig": { "branch": "master", "commit": "8b15a1a597a59f4f5306fad9adfe99454feab743" }, + "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, + "nvim-surround": { "branch": "main", "commit": "9f0cb495f25bff32c936062d85046fbda0c43517" }, + "nvim-treesitter": { "branch": "master", "commit": "043d5fb1505ca4bc0f48b42666ae7ebc4bb1a671" }, + "nvim-ts-autotag": { "branch": "main", "commit": "1cca23c9da708047922d3895a71032bc0449c52d" }, + "nvim-web-devicons": { "branch": "master", "commit": "4adeeaa7a32d46cf3b5833341358c797304f950a" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, + "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, + "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, + "vim-fugitive": { "branch": "master", "commit": "174230d6a7f2df94705a7ffd8d5413e27ec10a80" }, + "vim-tmux-navigator": { "branch": "master", "commit": "d847ea942a5bb4d4fab6efebc9f30d787fd96e65" }, + "which-key.nvim": { "branch": "main", "commit": "8ab96b38a2530eacba5be717f52e04601eb59326" } +} diff --git a/nvim.bak/lua/config/lazy.lua b/nvim.bak/lua/config/lazy.lua new file mode 100644 index 0000000..47ee066 --- /dev/null +++ b/nvim.bak/lua/config/lazy.lua @@ -0,0 +1,42 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Setup lazy.nvim +require("lazy").setup({ + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.6, height = 0.6 }, + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "rounded", + }, + spec = { + -- import your plugins + { import = "config.plugins.auto-completion" }, + { import = "config.plugins.core" }, + { import = "config.plugins.git" }, + { import = "config.plugins.lsp" }, + { import = "config.plugins.qol" }, + { import = "config.plugins.ui" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "catppuccin" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) + +vim.keymap.set("n", "l", "Lazy", { desc = "Lazy" }) diff --git a/nvim/lua/config/plugins/auto-completion/copilot.lua b/nvim.bak/lua/config/plugins/auto-completion/copilot.lua similarity index 100% rename from nvim/lua/config/plugins/auto-completion/copilot.lua rename to nvim.bak/lua/config/plugins/auto-completion/copilot.lua diff --git a/nvim/lua/config/plugins/auto-completion/nvim-cmp.lua b/nvim.bak/lua/config/plugins/auto-completion/nvim-cmp.lua similarity index 100% rename from nvim/lua/config/plugins/auto-completion/nvim-cmp.lua rename to nvim.bak/lua/config/plugins/auto-completion/nvim-cmp.lua diff --git a/nvim/lua/config/plugins/core/debugging.lua b/nvim.bak/lua/config/plugins/core/debugging.lua similarity index 100% rename from nvim/lua/config/plugins/core/debugging.lua rename to nvim.bak/lua/config/plugins/core/debugging.lua diff --git a/nvim/lua/config/plugins/core/image.lua b/nvim.bak/lua/config/plugins/core/image.lua similarity index 100% rename from nvim/lua/config/plugins/core/image.lua rename to nvim.bak/lua/config/plugins/core/image.lua diff --git a/nvim/lua/config/plugins/core/neo-tree.lua b/nvim.bak/lua/config/plugins/core/neo-tree.lua similarity index 100% rename from nvim/lua/config/plugins/core/neo-tree.lua rename to nvim.bak/lua/config/plugins/core/neo-tree.lua diff --git a/nvim/lua/config/plugins/core/telescope.lua b/nvim.bak/lua/config/plugins/core/telescope.lua similarity index 100% rename from nvim/lua/config/plugins/core/telescope.lua rename to nvim.bak/lua/config/plugins/core/telescope.lua diff --git a/nvim/lua/config/plugins/core/tree-sitter.lua b/nvim.bak/lua/config/plugins/core/tree-sitter.lua similarity index 100% rename from nvim/lua/config/plugins/core/tree-sitter.lua rename to nvim.bak/lua/config/plugins/core/tree-sitter.lua diff --git a/nvim/lua/config/plugins/core/trouble.lua b/nvim.bak/lua/config/plugins/core/trouble.lua similarity index 100% rename from nvim/lua/config/plugins/core/trouble.lua rename to nvim.bak/lua/config/plugins/core/trouble.lua diff --git a/nvim/lua/config/plugins/git/fugitive.lua b/nvim.bak/lua/config/plugins/git/fugitive.lua similarity index 100% rename from nvim/lua/config/plugins/git/fugitive.lua rename to nvim.bak/lua/config/plugins/git/fugitive.lua diff --git a/nvim/lua/config/plugins/git/gitsigns.lua b/nvim.bak/lua/config/plugins/git/gitsigns.lua similarity index 100% rename from nvim/lua/config/plugins/git/gitsigns.lua rename to nvim.bak/lua/config/plugins/git/gitsigns.lua diff --git a/nvim/lua/config/plugins/git/lazygit.lua b/nvim.bak/lua/config/plugins/git/lazygit.lua similarity index 100% rename from nvim/lua/config/plugins/git/lazygit.lua rename to nvim.bak/lua/config/plugins/git/lazygit.lua diff --git a/nvim/lua/config/plugins/lsp/lspconfig.lua b/nvim.bak/lua/config/plugins/lsp/lspconfig.lua similarity index 100% rename from nvim/lua/config/plugins/lsp/lspconfig.lua rename to nvim.bak/lua/config/plugins/lsp/lspconfig.lua diff --git a/nvim/lua/config/plugins/lsp/mason-lspconfig.lua b/nvim.bak/lua/config/plugins/lsp/mason-lspconfig.lua similarity index 100% rename from nvim/lua/config/plugins/lsp/mason-lspconfig.lua rename to nvim.bak/lua/config/plugins/lsp/mason-lspconfig.lua diff --git a/nvim/lua/config/plugins/lsp/mason.lua b/nvim.bak/lua/config/plugins/lsp/mason.lua similarity index 100% rename from nvim/lua/config/plugins/lsp/mason.lua rename to nvim.bak/lua/config/plugins/lsp/mason.lua diff --git a/nvim/lua/config/plugins/lsp/none-ls.lua b/nvim.bak/lua/config/plugins/lsp/none-ls.lua similarity index 100% rename from nvim/lua/config/plugins/lsp/none-ls.lua rename to nvim.bak/lua/config/plugins/lsp/none-ls.lua diff --git a/nvim/lua/config/plugins/qol/auto-pairs.lua b/nvim.bak/lua/config/plugins/qol/auto-pairs.lua similarity index 100% rename from nvim/lua/config/plugins/qol/auto-pairs.lua rename to nvim.bak/lua/config/plugins/qol/auto-pairs.lua diff --git a/nvim/lua/config/plugins/qol/auto-session.lua b/nvim.bak/lua/config/plugins/qol/auto-session.lua similarity index 100% rename from nvim/lua/config/plugins/qol/auto-session.lua rename to nvim.bak/lua/config/plugins/qol/auto-session.lua diff --git a/nvim/lua/config/plugins/qol/surround.lua b/nvim.bak/lua/config/plugins/qol/surround.lua similarity index 100% rename from nvim/lua/config/plugins/qol/surround.lua rename to nvim.bak/lua/config/plugins/qol/surround.lua diff --git a/nvim/lua/config/plugins/qol/vim-tmux-navigator.lua b/nvim.bak/lua/config/plugins/qol/vim-tmux-navigator.lua similarity index 100% rename from nvim/lua/config/plugins/qol/vim-tmux-navigator.lua rename to nvim.bak/lua/config/plugins/qol/vim-tmux-navigator.lua diff --git a/nvim/lua/config/plugins/qol/which-key.lua b/nvim.bak/lua/config/plugins/qol/which-key.lua similarity index 100% rename from nvim/lua/config/plugins/qol/which-key.lua rename to nvim.bak/lua/config/plugins/qol/which-key.lua diff --git a/nvim/lua/config/plugins/ui/alpha.lua b/nvim.bak/lua/config/plugins/ui/alpha.lua similarity index 100% rename from nvim/lua/config/plugins/ui/alpha.lua rename to nvim.bak/lua/config/plugins/ui/alpha.lua diff --git a/nvim/lua/config/plugins/ui/catppuccin.lua b/nvim.bak/lua/config/plugins/ui/catppuccin.lua similarity index 100% rename from nvim/lua/config/plugins/ui/catppuccin.lua rename to nvim.bak/lua/config/plugins/ui/catppuccin.lua diff --git a/nvim/lua/config/plugins/ui/dressing.lua b/nvim.bak/lua/config/plugins/ui/dressing.lua similarity index 100% rename from nvim/lua/config/plugins/ui/dressing.lua rename to nvim.bak/lua/config/plugins/ui/dressing.lua diff --git a/nvim/lua/config/plugins/ui/indent-blankline.lua b/nvim.bak/lua/config/plugins/ui/indent-blankline.lua similarity index 100% rename from nvim/lua/config/plugins/ui/indent-blankline.lua rename to nvim.bak/lua/config/plugins/ui/indent-blankline.lua diff --git a/nvim/lua/config/plugins/ui/lua-line.lua b/nvim.bak/lua/config/plugins/ui/lua-line.lua similarity index 100% rename from nvim/lua/config/plugins/ui/lua-line.lua rename to nvim.bak/lua/config/plugins/ui/lua-line.lua diff --git a/nvim/lua/config/plugins/ui/todo-comments.lua b/nvim.bak/lua/config/plugins/ui/todo-comments.lua similarity index 100% rename from nvim/lua/config/plugins/ui/todo-comments.lua rename to nvim.bak/lua/config/plugins/ui/todo-comments.lua diff --git a/nvim/lua/config/telescope/multigrep.lua b/nvim.bak/lua/config/telescope/multigrep.lua similarity index 100% rename from nvim/lua/config/telescope/multigrep.lua rename to nvim.bak/lua/config/telescope/multigrep.lua diff --git a/nvim/.gitignore b/nvim/.gitignore new file mode 100644 index 0000000..cc5457a --- /dev/null +++ b/nvim/.gitignore @@ -0,0 +1,8 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/nvim/.neoconf.json b/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/nvim/LICENSE b/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/nvim/LICENSE @@ -0,0 +1,201 @@ + 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/nvim/README.md b/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/nvim/README.md @@ -0,0 +1,4 @@ +# πŸ’€ 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/nvim/init.lua b/nvim/init.lua index 08423ef..730df29 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -1,30 +1,3 @@ -local set = vim.opt - -set.shiftwidth = 2 -set.tabstop = 2 -set.softtabstop = 2 -set.expandtab = true -set.autoindent = true -set.number = true -set.relativenumber = true -set.clipboard = "unnamedplus" -set.splitright = true -set.splitbelow = true - -vim.g.mapleader = " " -vim.g.maplocalleader = "\\" - -vim.keymap.set("n", "x", "source %", { desc = "Source file" }) -vim.keymap.set("n", "cs", "nohl", { desc = "Clear search highlights" }) -vim.keymap.set("n", "ww", "set wrap!", { desc = "Toggle word wrap" }) -vim.keymap.set("n", "lb", "set linebreak!", { desc = "Toggle linebreak" }) - -vim.api.nvim_create_autocmd("TextYankPost", { - desc = "Highlight when yanking", - group = vim.api.nvim_create_augroup("highlight-yank", { clear = true }), - callback = function() - vim.highlight.on_yank() - end, -}) - +vim.deprecate = function() end ---@diagnostic disable-line: duplicate-set-field +-- bootstrap lazy.nvim, LazyVim and your plugins require("config.lazy") diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 3de0cd2..170bfbd 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,46 +1,61 @@ { - "LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" }, - "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, - "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, - "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, - "dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "gitsigns.nvim": { "branch": "main", "commit": "d8918f06624dd53b9a82bd0e29c31bcfd541b40d" }, - "image.nvim": { "branch": "master", "commit": "b991fc7f845bc6ab40c6ec00b39750dcd5190010" }, - "indent-blankline.nvim": { "branch": "master", "commit": "259357fa4097e232730341fa60988087d189193a" }, - "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, - "lazydev.nvim": { "branch": "main", "commit": "8620f82ee3f59ff2187647167b6b47387a13a018" }, - "lazygit.nvim": { "branch": "main", "commit": "77a0d42943d8265271e6e6beaed72da54eeb17e7" }, - "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, - "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "c6c686781f9841d855bf1b926e10aa5e19430a38" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "neo-tree.nvim": { "branch": "v3.x", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, - "none-ls.nvim": { "branch": "main", "commit": "ed8f80849ef1ad31c2f74679fafdef7801091247" }, - "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, - "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, - "nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" }, - "nvim-dap": { "branch": "master", "commit": "ead0de6eac91a555b714bfd7d28959eeecfb96f9" }, - "nvim-dap-ui": { "branch": "master", "commit": "e94d98649dccb6a3884b66aabc2e07beb279e535" }, - "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, - "nvim-lspconfig": { "branch": "master", "commit": "8b15a1a597a59f4f5306fad9adfe99454feab743" }, - "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, - "nvim-surround": { "branch": "main", "commit": "9f0cb495f25bff32c936062d85046fbda0c43517" }, - "nvim-treesitter": { "branch": "master", "commit": "043d5fb1505ca4bc0f48b42666ae7ebc4bb1a671" }, - "nvim-ts-autotag": { "branch": "main", "commit": "1cca23c9da708047922d3895a71032bc0449c52d" }, - "nvim-web-devicons": { "branch": "master", "commit": "4adeeaa7a32d46cf3b5833341358c797304f950a" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, - "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, - "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, - "vim-fugitive": { "branch": "master", "commit": "174230d6a7f2df94705a7ffd8d5413e27ec10a80" }, - "vim-tmux-navigator": { "branch": "master", "commit": "d847ea942a5bb4d4fab6efebc9f30d787fd96e65" }, - "which-key.nvim": { "branch": "main", "commit": "8ab96b38a2530eacba5be717f52e04601eb59326" } + "LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" }, + "SchemaStore.nvim": { "branch": "main", "commit": "98543263f95dd191fd6d3b08500680d18bebe214" }, + "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, + "blogutils.nvim": { "branch": "master", "commit": "f68fb20f56b11b8ee0ecaa8c498764b7573bf9e6" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" }, + "cmake-tools.nvim": { "branch": "master", "commit": "d4eb7638f6048a1701dedb0cf3891e7238ec3ce1" }, + "conform.nvim": { "branch": "master", "commit": "8132ec733eed3bf415b97b76797ca41b59f51d7d" }, + "crates.nvim": { "branch": "main", "commit": "5d8b1bef686db0fabe5f1bb593744b617e8f1405" }, + "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "fzf-lua": { "branch": "main", "commit": "39c55811772d61751d8e5206e8746e0e3ec95f64" }, + "grug-far.nvim": { "branch": "main", "commit": "e152f6f4c4261e177a5417dce0980d3a88cc6ce1" }, + "inc-rename.nvim": { "branch": "main", "commit": "a3e31af13844534c66041ce92f29af7745883875" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, + "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, + "mdx.nvim": { "branch": "main", "commit": "464a74be368dce212cff02f6305845dc7f209ab3" }, + "mini.ai": { "branch": "main", "commit": "95e9d77e58bdf633c4d0c6b8c72892dd10eada51" }, + "mini.comment": { "branch": "main", "commit": "22ee9f6be1c78bcebe009a564758e5b6df08903b" }, + "mini.diff": { "branch": "main", "commit": "f7bcd3cb4561f7d3a02ae9afafeda899c82f7108" }, + "mini.files": { "branch": "main", "commit": "49c855977e9f4821d1ed8179ed44fe098b93ea2a" }, + "mini.hipatterns": { "branch": "main", "commit": "e5083df391171dc9d8172645606f8496d9443374" }, + "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" }, + "mini.nvim": { "branch": "main", "commit": "35e1767f4cd7dde51256eabae7349a5283a43cba" }, + "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" }, + "mini.snippets": { "branch": "main", "commit": "6f0de3c3f97a8c015f99619f72edf9b2880b6886" }, + "mini.surround": { "branch": "main", "commit": "365f98d842face0876e95f05d6e48fbfcc08e351" }, + "multiple-cursors.nvim": { "branch": "main", "commit": "1ac15d047a4b265cc2389957bcc56ee561b29e02" }, + "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-lint": { "branch": "master", "commit": "cc26ae6a620298bb3f33b0e0681f99a10ae57781" }, + "nvim-lspconfig": { "branch": "master", "commit": "a182334ba933e58240c2c45e6ae2d9c7ae313e00" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, + "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, + "octo.nvim": { "branch": "master", "commit": "3ee802ce8486c2a07d0219a12544433b9c95ad35" }, + "outline.nvim": { "branch": "main", "commit": "321f89ef79f168a78685f70d70c52d0e7b563abb" }, + "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "render-markdown.nvim": { "branch": "main", "commit": "6f5a4c36d9383b2a916facaa63dcd573afa11ee8" }, + "rustaceanvim": { "branch": "master", "commit": "a0c8e9698ef90bcfdf42806a38bf55b612b65b18" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" }, + "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, + "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, + "vim-dadbod-ui": { "branch": "master", "commit": "2900a1617b3df1a48683d872eadbe1101146a49a" }, + "vim-tmux-navigator": { "branch": "master", "commit": "412c474e97468e7934b9c217064025ea7a69e05e" }, + "vim-wakatime": { "branch": "master", "commit": "f39c4a201ae350aaba713b59d4a4fdd88e0811aa" }, + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }, + "yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" }, + "yazi.nvim": { "branch": "main", "commit": "e2ddbaa88ec61d0b96e3d53ba851b0e7a0b36f14" } } diff --git a/nvim/lazyvim.json b/nvim/lazyvim.json new file mode 100644 index 0000000..dcb0aeb --- /dev/null +++ b/nvim/lazyvim.json @@ -0,0 +1,42 @@ +{ + "extras": [ + "lazyvim.plugins.extras.coding.mini-comment", + "lazyvim.plugins.extras.coding.mini-snippets", + "lazyvim.plugins.extras.coding.mini-surround", + "lazyvim.plugins.extras.coding.yanky", + "lazyvim.plugins.extras.editor.fzf", + "lazyvim.plugins.extras.editor.inc-rename", + "lazyvim.plugins.extras.editor.mini-diff", + "lazyvim.plugins.extras.editor.mini-files", + "lazyvim.plugins.extras.editor.outline", + "lazyvim.plugins.extras.editor.snacks_explorer", + "lazyvim.plugins.extras.editor.snacks_picker", + "lazyvim.plugins.extras.lang.astro", + "lazyvim.plugins.extras.lang.cmake", + "lazyvim.plugins.extras.lang.docker", + "lazyvim.plugins.extras.lang.git", + "lazyvim.plugins.extras.lang.go", + "lazyvim.plugins.extras.lang.json", + "lazyvim.plugins.extras.lang.markdown", + "lazyvim.plugins.extras.lang.nix", + "lazyvim.plugins.extras.lang.php", + "lazyvim.plugins.extras.lang.python", + "lazyvim.plugins.extras.lang.ruby", + "lazyvim.plugins.extras.lang.rust", + "lazyvim.plugins.extras.lang.sql", + "lazyvim.plugins.extras.lang.svelte", + "lazyvim.plugins.extras.lang.tailwind", + "lazyvim.plugins.extras.lang.toml", + "lazyvim.plugins.extras.lang.yaml", + "lazyvim.plugins.extras.lang.zig", + "lazyvim.plugins.extras.util.dot", + "lazyvim.plugins.extras.util.gitui", + "lazyvim.plugins.extras.util.mini-hipatterns", + "lazyvim.plugins.extras.util.octo" + ], + "install_version": 7, + "news": { + "NEWS.md": "10960" + }, + "version": 8 +} \ No newline at end of file diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..27e9e06 --- /dev/null +++ b/nvim/lua/config/autocmds.lua @@ -0,0 +1,3 @@ +-- 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/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..662ab08 --- /dev/null +++ b/nvim/lua/config/keymaps.lua @@ -0,0 +1,233 @@ +-- 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 + +-- set leader key to space +vim.g.mapleader = " " + +local keymap = vim.keymap -- for conciseness + +--------------------- +-- General Keymaps ------------------- + +-- use jk to exit insert mode +keymap.set("i", "jk", "", { desc = "Exit insert mode with jk" }) + +-- clear search highlights +keymap.set("n", "nh", ":nohl", { desc = "Clear search highlights" }) + +-- delete single character without copying into register +-- keymap.set("n", "x", '"_x') + +-- increment/decrement numbers +keymap.set("n", "+", "", { desc = "Increment number" }) -- increment +keymap.set("n", "-", "", { desc = "Decrement number" }) -- decrement + +-- window management +keymap.set("n", "sv", "v", { desc = "Split window vertically" }) -- split window vertically +keymap.set("n", "sh", "s", { desc = "Split window horizontally" }) -- split window horizontally +keymap.set("n", "se", "=", { desc = "Make splits equal size" }) -- make split windows equal width & height +keymap.set( + "n", + "sx", + "close", + { desc = "Close current split" } +) -- close current split window + +keymap.set("n", "to", "tabnew", { desc = "Open new tab" }) -- open new tab +keymap.set( + "n", + "tx", + "tabclose", + { desc = "Close current tab" } +) -- close current tab +keymap.set("n", "tn", "tabn", { desc = "Go to next tab" }) -- go to next tab +keymap.set("n", "tp", "tabp", { desc = "Go to previous tab" }) -- go to previous tab +keymap.set( + "n", + "tf", + "tabnew %", + { desc = "Open current buffer in new tab" } +) -- move current buffer to new tab + +keymap.set("i", "", "^i", { desc = "Move Beginning of line" }) +keymap.set("i", "", "", { desc = "Move End of line" }) +keymap.set("i", "", "", { desc = "Move Left" }) +keymap.set("i", "", "", { desc = "Move Right" }) +keymap.set("i", "", "", { desc = "Move Down" }) +keymap.set("i", "", "", { desc = "Move Up" }) + +keymap.set("n", "", "noh", { desc = "General Clear highlights" }) + +keymap.set("n", "", "h", { desc = "Switch Window left" }) +keymap.set("n", "", "l", { desc = "Switch Window right" }) +keymap.set("n", "", "j", { desc = "Switch Window down" }) +keymap.set("n", "", "k", { desc = "Switch Window up" }) +keymap.set("n", "", "", { desc = "Increase Window Height" }) + +keymap.set("n", "", "w", { desc = "File Save" }) +keymap.set("i", "", "l", { desc = "Save file in Insert mode" }) +keymap.set("n", "", "%y+", { desc = "File Copy whole" }) + +-- keymap.set("n", "n", "set nu!", { desc = "Toggle Line number" }) +-- keymap.set("n", "rn", "set rnu!", { desc = "Toggle Relative number" }) +-- keymap.set("n", "ch", "NvCheatsheet", { desc = "Toggle NvCheatsheet" }) + +keymap.set("n", "fm", function() + require("conform").format({ lsp_fallback = true }) +end, { desc = "Format Files" }) + +-- global lsp mappings +keymap.set( + "n", + "lf", + vim.diagnostic.open_float, + { desc = "Lsp floating diagnostics" } +) +keymap.set( + "n", + "[d", + vim.diagnostic.goto_prev, + { desc = "Lsp prev diagnostic" } +) +keymap.set( + "n", + "]d", + vim.diagnostic.goto_next, + { desc = "Lsp next diagnostic" } +) +keymap.set( + "n", + "q", + vim.diagnostic.setloclist, + { desc = "Lsp diagnostic loclist" } +) + +-- Comment +keymap.set("n", "/", function() + require("Comment.api").toggle.linewise.current() +end, { desc = "Comment Toggle" }) + +keymap.set( + "v", + "/", + "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", + { desc = "Comment Toggle" } +) + +-- blogutils + +keymap.set("n", "`", "", { desc = "Command for blogutils" }) + +-- telescope +keymap.set( + "n", + "fw", + "Telescope live_grep", + { desc = "Telescope Live grep" } +) +keymap.set( + "n", + "fb", + "Telescope buffers", + { desc = "Telescope Find buffers" } +) +keymap.set( + "n", + "fh", + "Telescope help_tags", + { desc = "Telescope Help page" } +) + +keymap.set( + "n", + "fo", + "Telescope oldfiles", + { desc = "Telescope Find oldfiles" } +) +keymap.set( + "n", + "fz", + "Telescope current_buffer_fuzzy_find", + { desc = "Telescope Find in current buffer" } +) +keymap.set( + "n", + "cm", + "Telescope git_commits", + { desc = "Telescope Git commits" } +) +keymap.set( + "n", + "gt", + "Telescope git_status", + { desc = "Telescope Git status" } +) +keymap.set( + "n", + "pt", + "Telescope terms", + { desc = "Telescope Pick hidden term" } +) +keymap.set( + "n", + "th", + "Telescope themes", + { desc = "Telescope Nvchad themes" } +) +keymap.set( + "n", + "ff", + "Telescope find_files", + { desc = "Telescope Find files" } +) +keymap.set( + "n", + "fa", + "Telescope find_files follow=true no_ignore=true hidden=true", + { desc = "Telescope Find all files" } +) + +-- terminal +keymap.set( + "t", + "", + "", + { desc = "Terminal Escape terminal mode" } +) + +keymap.set("t", "", function() + local win = vim.api.nvim_get_current_win() + vim.api.nvim_win_close(win, true) +end, { desc = "Terminal Close term in terminal mode" }) + +-- whichkey +keymap.set( + "n", + "wK", + "WhichKey ", + { desc = "Whichkey all keymaps" } +) + +keymap.set("n", "wk", function() + vim.cmd("WhichKey " .. vim.fn.input("WhichKey: ")) +end, { desc = "Whichkey query lookup" }) + +-- blankline +keymap.set("n", "cc", function() + local config = { scope = {} } + config.scope.exclude = { language = {}, node_type = {} } + config.scope.include = { node_type = {} } + local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config) + + if node then + local start_row, _, end_row, _ = node:range() + if start_row ~= end_row then + vim.api.nvim_win_set_cursor( + vim.api.nvim_get_current_win(), + { start_row + 1, 0 } + ) + vim.api.nvim_feedkeys("_", "n", true) + end + end +end, { desc = "Blankline Jump to current context" }) diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua index 47ee066..6d8e3a6 100644 --- a/nvim/lua/config/lazy.lua +++ b/nvim/lua/config/lazy.lua @@ -1,42 +1,50 @@ --- Bootstrap lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end +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(lazypath) - --- Setup lazy.nvim +vim.opt.rtp:prepend(vim.env.LAZY or lazypath) +vim.deprecate = function() end ---@diagnostic disable-line: duplicate-set-field require("lazy").setup({ - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.6, height = 0.6 }, - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "rounded", - }, - spec = { - -- import your plugins - { import = "config.plugins.auto-completion" }, - { import = "config.plugins.core" }, - { import = "config.plugins.git" }, - { import = "config.plugins.lsp" }, - { import = "config.plugins.qol" }, - { import = "config.plugins.ui" }, - }, - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "catppuccin" } }, - -- automatically check for plugin updates - checker = { enabled = true }, + 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.json" }, + -- { import = "lazyvim.plugins.extras.ui.mini-animate" }, + -- import/override with your plugins + { import = "plugins" }, + -- { import = "plugins.lsp"} + }, + 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 + }, + change_detection = { + notify = false, + }, + install = { colorscheme = { "catppuccin-frappe" } }, + checker = { enabled = true }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, }) - -vim.keymap.set("n", "l", "Lazy", { desc = "Lazy" }) diff --git a/nvim/lua/config/options.lua b/nvim/lua/config/options.lua new file mode 100644 index 0000000..a13fc5e --- /dev/null +++ b/nvim/lua/config/options.lua @@ -0,0 +1,46 @@ +-- 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 -- for conciseness + +-- line numbers +opt.relativenumber = true -- show relative line numbers +opt.number = true -- shows absolute line number on cursor line (when relative number is on) + +-- tabs & indentation +opt.tabstop = 2 -- 2 spaces for tabs (prettier default) +opt.shiftwidth = 2 -- 2 spaces for indent width +opt.expandtab = true -- expand tab to spaces +opt.autoindent = true -- copy indent from current line when starting new one + +-- line wrapping +opt.wrap = false -- disable line wrapping + +-- search settings +opt.ignorecase = true -- ignore case when searching +opt.smartcase = true -- if you include mixed case in your search, assumes you want case-sensitive + +-- cursor line +opt.cursorline = true -- highlight the current cursor line + +-- appearance + +-- turn on termguicolors for nightfly colorscheme to work +-- (have to use iterm2 or any other true color terminal) +opt.termguicolors = true +opt.background = "dark" -- colorschemes that can be light or dark will be made dark +opt.signcolumn = "yes" -- show sign column so that text doesn't shift + +-- backspace +opt.backspace = "indent,eol,start" -- allow backspace on indent, end of line or insert mode start position + +-- clipboard +opt.clipboard:append("unnamedplus") -- use system clipboard as default register + +-- split windows +opt.splitright = true -- split vertical window to the right +opt.splitbelow = true -- split horizontal window to the bottom + +-- turn off swapfile +opt.swapfile = false + diff --git a/nvim/lua/plugins/blogutils.lua b/nvim/lua/plugins/blogutils.lua new file mode 100644 index 0000000..0ff5e21 --- /dev/null +++ b/nvim/lua/plugins/blogutils.lua @@ -0,0 +1,6 @@ +return { + "chrishannah/blogutils.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, +} diff --git a/nvim/lua/plugins/colorscheme.lua b/nvim/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..c387165 --- /dev/null +++ b/nvim/lua/plugins/colorscheme.lua @@ -0,0 +1,7 @@ + +return { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + flavour = "frappe" +} \ No newline at end of file diff --git a/nvim/lua/plugins/example.lua b/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..de22bc8 --- /dev/null +++ b/nvim/lua/plugins/example.lua @@ -0,0 +1,245 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, "πŸ˜„") + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, + + -- Use for completion and snippets (supertab) + -- first: disable default and behavior in LuaSnip + { + "L3MON4D3/LuaSnip", + keys = function() + return {} + end, + }, + -- then: setup supertab in cmp + { + "hrsh7th/nvim-cmp", + dependencies = { + "hrsh7th/cmp-emoji", + }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + local has_words_before = function() + unpack = unpack or table.unpack + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + end + + local luasnip = require("luasnip") + local cmp = require("cmp") + + opts.mapping = vim.tbl_extend("force", opts.mapping, { + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() + -- this way you will only jump inside the snippet region + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }) + end, + }, +} diff --git a/nvim/lua/plugins/markdown-preview.lua b/nvim/lua/plugins/markdown-preview.lua new file mode 100644 index 0000000..cdcac4c --- /dev/null +++ b/nvim/lua/plugins/markdown-preview.lua @@ -0,0 +1,18 @@ +-- -- install without yarn or npm +-- return { +-- "iamcco/markdown-preview.nvim", +-- cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, +-- ft = { "markdown" }, +-- build = function() vim.fn["mkdp#util#install"]() end, +-- } + +--install with yarn or npm +return { + "iamcco/markdown-preview.nvim", + cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, + build = "cd app && yarn install", + init = function() + vim.g.mkdp_filetypes = { "markdown" } + end, + ft = { "markdown" }, +} \ No newline at end of file diff --git a/nvim/lua/plugins/mdx.lua b/nvim/lua/plugins/mdx.lua new file mode 100644 index 0000000..fd5694f --- /dev/null +++ b/nvim/lua/plugins/mdx.lua @@ -0,0 +1,5 @@ +return { + "davidmh/mdx.nvim", + config = true, + dependencies = { "nvim-treesitter/nvim-treesitter" }, +} diff --git a/nvim/lua/plugins/multicursors.lua b/nvim/lua/plugins/multicursors.lua new file mode 100644 index 0000000..04afd72 --- /dev/null +++ b/nvim/lua/plugins/multicursors.lua @@ -0,0 +1,81 @@ +-- lazy.nvim: +return { + "brenton-leighton/multiple-cursors.nvim", + version = "*", -- Use the latest tagged version + opts = {}, -- This causes the plugin setup function to be called + keys = { + { + "", + "MultipleCursorsAddDown", + mode = { "n", "x" }, + desc = "Add cursor and move down", + }, + { + "", + "MultipleCursorsAddUp", + mode = { "n", "x" }, + desc = "Add cursor and move up", + }, + + { + "", + "MultipleCursorsAddUp", + mode = { "n", "i", "x" }, + desc = "Add cursor and move up", + }, + { + "", + "MultipleCursorsAddDown", + mode = { "n", "i", "x" }, + desc = "Add cursor and move down", + }, + + { + "", + "MultipleCursorsMouseAddDelete", + mode = { "n", "i" }, + desc = "Add or remove cursor", + }, + + { + "m", + "MultipleCursorsAddVisualArea", + mode = { "x" }, + desc = "Add cursors to the lines of the visual area", + }, + + { + "a", + "MultipleCursorsAddMatches", + mode = { "n", "x" }, + desc = "Add cursors to cword", + }, + { + "A", + "MultipleCursorsAddMatchesV", + mode = { "n", "x" }, + desc = "Add cursors to cword in previous area", + }, + + { + "d", + "MultipleCursorsAddJumpNextMatch", + mode = { "n", "x" }, + desc = "Add cursor and jump to next cword", + }, + { + "D", + "MultipleCursorsJumpNextMatch", + mode = { "n", "x" }, + desc = "Jump to next cword", + }, + + { + "l", + "MultipleCursorsLock", + mode = { "n", "x" }, + desc = "Lock virtual cursors", + }, + }, +} + diff --git a/nvim/lua/plugins/preview.lua b/nvim/lua/plugins/preview.lua new file mode 100644 index 0000000..533b6a4 --- /dev/null +++ b/nvim/lua/plugins/preview.lua @@ -0,0 +1,9 @@ +return { + "MeanderingProgrammer/render-markdown.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons + ---@module 'render-markdown' + ---@type render.md.UserConfig + opts = {}, +} diff --git a/nvim/lua/plugins/tmux.lua b/nvim/lua/plugins/tmux.lua new file mode 100644 index 0000000..0172ce3 --- /dev/null +++ b/nvim/lua/plugins/tmux.lua @@ -0,0 +1,3 @@ +return { + {"christoomey/vim-tmux-navigator"} +} \ No newline at end of file diff --git a/nvim/lua/plugins/wakatime.lua b/nvim/lua/plugins/wakatime.lua new file mode 100644 index 0000000..8a16d36 --- /dev/null +++ b/nvim/lua/plugins/wakatime.lua @@ -0,0 +1,3 @@ +return { + {"wakatime/vim-wakatime"} +} \ No newline at end of file diff --git a/nvim/lua/plugins/yazi.lua b/nvim/lua/plugins/yazi.lua new file mode 100644 index 0000000..d8cbfd0 --- /dev/null +++ b/nvim/lua/plugins/yazi.lua @@ -0,0 +1,32 @@ +return { + "mikavilpas/yazi.nvim", + event = "VeryLazy", + keys = { + -- πŸ‘‡ in this section, choose your own keymappings! + { + "-", + mode = { "n", "v" }, + "Yazi", + desc = "Open yazi at the current file", + }, + { + -- Open in the current working directory + "cw", + "Yazi cwd", + desc = "Open the file manager in nvim's working directory", + }, + { + "", + "Yazi toggle", + desc = "Resume the last yazi session", + }, + }, + + opts = { + -- if you want to open yazi instead of netrw, see below for more info + open_for_directories = false, + keymaps = { + show_help = "", + }, + }, +} diff --git a/nvim/stylua.toml b/nvim/stylua.toml new file mode 100644 index 0000000..09a7488 --- /dev/null +++ b/nvim/stylua.toml @@ -0,0 +1,4 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 80 + diff --git a/ohmyposh/.mycat.omp.toml b/ohmyposh/.mycat.omp.toml new file mode 100644 index 0000000..b205d75 --- /dev/null +++ b/ohmyposh/.mycat.omp.toml @@ -0,0 +1,77 @@ +console_title_template = '{{.Folder}}' +version = 3 +final_space = true + +[palette] + blue = '#8CAAEE' + closer = 'p:os' + lavender = '#BABBF1' + os = '#ACB0BE' + pink = '#F4B8E4' + +[[blocks]] + type = 'prompt' + alignment = 'left' + + [[blocks.segments]] + template = '{{.Icon}} ' + foreground = 'p:os' + type = 'os' + style = 'plain' + + [[blocks.segments]] + template = '{{ .Shell}} ' + foreground = 'p:blue' + type = 'session' + style = 'plain' + + [[blocks.segments]] + template = '{{ .Folder}} ' + foreground = 'p:pink' + type = 'path' + style = 'plain' + + [blocks.segments.properties] + folder_icon = 'ξ—Ύ..' + hide_root_location = true + home_icon = '~' + max_depth = 1 + style = 'agnoster_short' + + [[blocks.segments]] + template = '{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }} ' + foreground = 'p:lavender' + type = 'git' + style = 'plain' + + [blocks.segments.properties] + branch_icon = 'ξœ₯ ' + cherry_pick_icon = 'ξŠ› ' + commit_icon = ' ' + fetch_status = false + fetch_upstream_icon = false + merge_icon = ' ' + no_commits_icon = ' ' + rebase_icon = ' ' + revert_icon = 'οƒ’ ' + tag_icon = ' ' + + [[blocks.segments]] + template = 'ο„…' + foreground = 'p:closer' + type = 'text' + style = 'plain' + +[[blocks]] + type = 'rprompt' + overflow = 'hidden' + + [[blocks.segments]] + template = '{{ .FormattedMs }}' + foreground = '#F47AD4' + background = 'transparent' + type = 'executiontime' + style = 'plain' + + [blocks.segments.properties] + threshold = 5000 diff --git a/ohmyposh/.mycat.omp.toml.bak b/ohmyposh/.mycat.omp.toml.bak new file mode 100644 index 0000000..9e75d64 --- /dev/null +++ b/ohmyposh/.mycat.omp.toml.bak @@ -0,0 +1,78 @@ +#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json + +version = 2 +final_space = true +console_title_template = '{{.Folder}}' + +[[blocks]] + type = 'prompt' + alignment = 'left' + + [[blocks.segments]] + type = 'os' + style = 'plain' + foreground = 'p:os' + template = '{{.Icon}} ' + + [[blocks.segments]] + type = 'session' + style = 'plain' + foreground = 'p:blue' + template = '{{ .Shell}} ' + + [[blocks.segments]] + type = 'path' + style = 'plain' + foreground = 'p:pink' + template = '{{ .Folder}} ' + + [blocks.segments.properties] + folder_icon = 'ξ—Ύ..' + home_icon = '~' + style = 'agnoster_short' + hide_root_location = true + max_depth = 1 + + [[blocks.segments]] + type = 'git' + style = 'plain' + foreground = 'p:lavender' + template = '{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }} ' + + [blocks.segments.properties] + branch_icon = 'ξœ₯ ' + cherry_pick_icon = 'ξŠ› ' + commit_icon = ' ' + fetch_status = false + fetch_upstream_icon = false + merge_icon = ' ' + no_commits_icon = ' ' + rebase_icon = ' ' + revert_icon = 'οƒ’ ' + tag_icon = ' ' + + [[blocks.segments]] + type = 'text' + style = 'plain' + foreground = 'p:closer' + template = 'ο„…' +[[blocks]] + type = 'rprompt' + overflow = 'hidden' + + [[blocks.segments]] + type = 'executiontime' + style = 'plain' + foreground = '#F47AD4' + background = 'transparent' + template = '{{ .FormattedMs }}' + + [blocks.segments.properties] + threshold = 5000 + +[palette] + blue = '#8CAAEE' + closer = 'p:os' + lavender = '#BABBF1' + os = '#ACB0BE' + pink = '#F4B8E4' diff --git a/ohmyposh/mytheme.omp.json b/ohmyposh/mytheme.omp.json new file mode 100644 index 0000000..58f5158 --- /dev/null +++ b/ohmyposh/mytheme.omp.json @@ -0,0 +1,84 @@ +{ + "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "blocks": [ + { + "alignment": "left", + "newline": true, + "segments": [ + { + "foreground": "#ffbebc", + "leading_diamond": "<#ff70a6> \ue200 ", + "properties": { + "display_host": true + }, + "style": "plain", + "template": "{{ .PWD }} <#ffffff>on", + "type": "session" + }, + { + "foreground": "#bc93ff", + "properties": { + "time_format": "Monday <#ffffff>at 3:04 PM" + }, + "style": "diamond", + "template": " {{ .CurrentDate | date .Format }} ", + "type": "time" + }, + { + "foreground": "#ee79d1", + "properties": { + "branch_icon": "\ue725 ", + "fetch_stash_count": true, + "fetch_status": true, + "fetch_upstream_icon": true, + "fetch_worktree_count": true + }, + "style": "diamond", + "template": " {{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}", + "type": "git" + } + ], + "type": "prompt" + }, + { + "alignment": "left", + "newline": true, + "segments": [ + { + "foreground": "#ffafd2", + "leading_diamond": "<#00c7fc> \ue285 <#ffafd2>{", + "properties": { + "folder_icon": "\uf07b", + "folder_separator_icon": "..", + "home_icon": "home", + "style": "full" + }, + "style": "plain", + "template": " \ue5ff {{ .Path }} ", + "trailing_diamond": "<#ffafd2>}", + "type": "path" + }, + { + "foreground": "#A9FFB4", + "foreground_templates": [ + "{{ if gt .Code 0 }}#ef5350{{ end }}" + ], + "properties": { + "always_enabled": true + }, + "style": "plain", + "template": " \ue286 ", + "type": "status" + } + ], + "type": "prompt" + } + ], + "console_title_template": "{{ .Folder }}", + "transient_prompt": { + "background": "transparent", + "foreground": "#FEF5ED", + "template": "\ue285 " + }, + "version": 2 +} \ No newline at end of file diff --git a/ohmyposh/posh.toml b/ohmyposh/posh.toml new file mode 100644 index 0000000..174e579 --- /dev/null +++ b/ohmyposh/posh.toml @@ -0,0 +1,24 @@ +"$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json" + +version = 2 +final_space = true +console_title_template = '{{.Folder}}' + + +[[blocks]] + type = 'prompt' + alignment = 'left' + newline = true + + [[blocks.segments]] + type = 'path' + style = 'plain' + template = '{{ .RootDir }}' + + [blocks.segments.properties] + style = 'full' + +[transient_prompt] + foreground = "#F4B8E4" + background = 'transparent' + template = '❯ ' \ No newline at end of file diff --git a/setup.sh b/setup.sh index 0742655..dcd8109 100755 --- a/setup.sh +++ b/setup.sh @@ -2,7 +2,7 @@ set -euo pipefail -cat << EOF +cat < Backing up existing config files..." mkdir -p "$BACKUP_DIR" for dir in $CONFIGS; do - if [ -d "$HOME/.config/$dir" ]; then - echo "=> Backing up $dir to $BACKUP_DIR" - cp -r "$HOME/.config/$dir" "$BACKUP_DIR/$dir" - rm -rf "$HOME/.config/$dir" - fi + if [ -d "$HOME/.config/$dir" ]; then + echo "=> Backing up $dir to $BACKUP_DIR" + cp -r "$HOME/.config/$dir" "$BACKUP_DIR/$dir" + rm -rf "$HOME/.config/$dir" + fi done echo "==> Copying new config files..." @@ -53,17 +52,17 @@ mkdir -p "$FA_DIR" echo "==> Installing Font Awesome (v5 & v6)..." if [[ ! -f "$FA_DIR/fa-brands-400.ttf" ]]; then - wget -q https://use.fontawesome.com/releases/v6.7.2/fontawesome-free-6.7.2-desktop.zip - unzip -q fontawesome-free-6.7.2-desktop.zip - mv fontawesome-free-6.7.2-desktop/otfs/*.otf "$FA_DIR/" - rm -rf fontawesome-free-6.7.2-desktop* - - wget -q https://use.fontawesome.com/releases/v5.15.4/fontawesome-free-5.15.4-desktop.zip - unzip -q fontawesome-free-5.15.4-desktop.zip - mv fontawesome-free-5.15.4-desktop/otfs/*.otf "$FA_DIR/" - rm -rf fontawesome-free-5.15.4-desktop* + wget -q https://use.fontawesome.com/releases/v6.7.2/fontawesome-free-6.7.2-desktop.zip + unzip -q fontawesome-free-6.7.2-desktop.zip + mv fontawesome-free-6.7.2-desktop/otfs/*.otf "$FA_DIR/" + rm -rf fontawesome-free-6.7.2-desktop* + + wget -q https://use.fontawesome.com/releases/v5.15.4/fontawesome-free-5.15.4-desktop.zip + unzip -q fontawesome-free-5.15.4-desktop.zip + mv fontawesome-free-5.15.4-desktop/otfs/*.otf "$FA_DIR/" + rm -rf fontawesome-free-5.15.4-desktop* else - echo "βœ”οΈ Font Awesome already installed, skipping." + echo "βœ”οΈ Font Awesome already installed, skipping." fi # JetBrains Nerd Font Installation @@ -72,12 +71,12 @@ mkdir -p "$JB_FONT_DIR" echo "==> Installing JetBrains Nerd Fonts..." if [[ ! -f "$JB_FONT_DIR/JetBrainsMono-Regular.ttf" ]]; then - wget -q https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/JetBrainsMono.zip - unzip -q JetBrainsMono.zip -d JetBrainsMono - mv JetBrainsMono/*.ttf "$JB_FONT_DIR/" - rm -rf JetBrainsMono JetBrainsMono.zip + wget -q https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/JetBrainsMono.zip + unzip -q JetBrainsMono.zip -d JetBrainsMono + mv JetBrainsMono/*.ttf "$JB_FONT_DIR/" + rm -rf JetBrainsMono JetBrainsMono.zip else - echo "βœ”οΈ JetBrains Nerd Font already installed, skipping." + echo "βœ”οΈ JetBrains Nerd Font already installed, skipping." fi echo "==> Refreshing font cache..." @@ -91,63 +90,74 @@ mkdir -p ~/Pictures/Wallpaper # Install yay if not already installed if ! command -v yay &>/dev/null; then - echo "==> Installing AUR package manager (yay)..." - sudo pacman -S --needed git base-devel || { echo "❌ Failed to install base-devel"; exit 1; } - git clone https://aur.archlinux.org/yay.git ~/yay && cd ~/yay && makepkg -si || { echo "❌ yay installation failed"; exit 1; } - cd ~ + echo "==> Installing AUR package manager (yay)..." + sudo pacman -S --needed git base-devel || { + echo "❌ Failed to install base-devel" + exit 1 + } + git clone https://aur.archlinux.org/yay.git ~/yay && cd ~/yay && makepkg -si || { + echo "❌ yay installation failed" + exit 1 + } + cd ~ else - echo "βœ”οΈ yay is already installed." + echo "βœ”οΈ yay is already installed." fi # Install useful packages from pacman and AUR echo "==> Installing core packages..." yay -S --noconfirm \ -pacseek \ -zoxide \ -fzf \ -unzip \ -zsh \ -starship \ -atuin \ -eza \ -acpi \ -playerctl \ -zsh-autosuggestions \ -zsh-syntax-highlighting \ -zsh-history-substring-search + pacseek \ + zoxide \ + fzf \ + unzip \ + ghostty \ + ghostty-terminfo \ + ghostty-shell-integration \ + zsh \ + starship \ + atuin \ + zellij \ + eza \ + acpi \ + playerctl \ + zsh-autosuggestions \ + zsh-syntax-highlighting \ + zsh-history-substring-search sudo pacman -S --noconfirm \ -dunst \ -libnotify \ -waybar \ -wl-clipboard \ -xdg-desktop-portal-hyprland \ -xdg-desktop-portal \ -brightnessctl \ -pavucontrol \ -tmux \ -slurp \ -grim \ -hyprlock \ -pamixer + dunst \ + libnotify \ + waybar \ + wl-clipboard \ + xdg-desktop-portal-hyprland \ + xdg-desktop-portal \ + brightnessctl \ + pavucontrol \ + tmux \ + slurp \ + grim \ + hyprlock \ + pamixer # Set zsh as default shell if not already if [[ "$SHELL" != "$(which zsh)" ]]; then - echo "==> Changing default shell to zsh..." - chsh -s "$(which zsh)" + echo "==> Changing default shell to zsh..." + chsh -s "$(which zsh)" fi # Ensure Zsh plugins and tools are sourced in .zshrc ZSHRC="$HOME/.zshrc" echo "==> Configuring Zsh plugins and tools..." { - echo -e "\n# Zsh Plugins and Tools" - echo "source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" - echo "source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" - echo "source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh" - echo 'eval "$(zoxide init zsh)"' - echo 'eval "$(atuin init zsh)"' - echo 'eval "$(starship init zsh)"' -} >> "$ZSHRC" + echo -e "\n# Zsh Plugins and Tools" + echo "source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" + echo "source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" + echo "source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh" + echo 'eval "$(zoxide init zsh)"' + echo 'eval "$(atuin init zsh)"' + echo 'eval "$(zellij setup --generate-auto-start zsh)"' + echo 'eval "$(starship init zsh)"' +} >>"$ZSHRC" echo -e "\nβœ… All packages and Zsh plugins configured successfully!" diff --git a/uv/uv-receipt.json b/uv/uv-receipt.json new file mode 100644 index 0000000..8630709 --- /dev/null +++ b/uv/uv-receipt.json @@ -0,0 +1 @@ +{"binaries":["uv","uvx"],"binary_aliases":{},"cdylibs":[],"cstaticlibs":[],"install_layout":"flat","install_prefix":"/Users/tiffanywhite/.local/bin","modify_path":true,"provider":{"source":"cargo-dist","version":"0.27.0"},"source":{"app_name":"uv","name":"uv","owner":"astral-sh","release_type":"github"},"version":"0.5.14"} diff --git a/zellij/config.kdl b/zellij/config.kdl new file mode 100644 index 0000000..73e99b0 --- /dev/null +++ b/zellij/config.kdl @@ -0,0 +1,375 @@ +// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" +keybinds { + normal { + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + locked { + bind "Ctrl g" { SwitchToMode "Normal"; } + } + resize { + bind "Ctrl n" { SwitchToMode "Normal"; } + bind "h" "Left" { Resize "Increase Left"; } + bind "j" "Down" { Resize "Increase Down"; } + bind "k" "Up" { Resize "Increase Up"; } + bind "l" "Right" { Resize "Increase Right"; } + bind "H" { Resize "Decrease Left"; } + bind "J" { Resize "Decrease Down"; } + bind "K" { Resize "Decrease Up"; } + bind "L" { Resize "Decrease Right"; } + bind "=" "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + } + pane { + bind "Ctrl p" { SwitchToMode "Normal"; } + bind "h" "Left" { MoveFocus "Left"; } + bind "l" "Right" { MoveFocus "Right"; } + bind "j" "Down" { MoveFocus "Down"; } + bind "k" "Up" { MoveFocus "Up"; } + bind "p" { SwitchFocus; } + bind "n" { NewPane; SwitchToMode "Normal"; } + bind "d" { NewPane "Down"; SwitchToMode "Normal"; } + bind "r" { NewPane "Right"; SwitchToMode "Normal"; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } + bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;} + } + move { + bind "Ctrl h" { SwitchToMode "Normal"; } + bind "n" "Tab" { MovePane; } + bind "p" { MovePaneBackwards; } + bind "h" "Left" { MovePane "Left"; } + bind "j" "Down" { MovePane "Down"; } + bind "k" "Up" { MovePane "Up"; } + bind "l" "Right" { MovePane "Right"; } + } + tab { + bind "Ctrl t" { SwitchToMode "Normal"; } + bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } + bind "h" "Left" "Up" "k" { GoToPreviousTab; } + bind "l" "Right" "Down" "j" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "Normal"; } + bind "x" { CloseTab; SwitchToMode "Normal"; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } + bind "b" { BreakPane; SwitchToMode "Normal"; } + bind "]" { BreakPaneRight; SwitchToMode "Normal"; } + bind "[" { BreakPaneLeft; SwitchToMode "Normal"; } + bind "1" { GoToTab 1; SwitchToMode "Normal"; } + bind "2" { GoToTab 2; SwitchToMode "Normal"; } + bind "3" { GoToTab 3; SwitchToMode "Normal"; } + bind "4" { GoToTab 4; SwitchToMode "Normal"; } + bind "5" { GoToTab 5; SwitchToMode "Normal"; } + bind "6" { GoToTab 6; SwitchToMode "Normal"; } + bind "7" { GoToTab 7; SwitchToMode "Normal"; } + bind "8" { GoToTab 8; SwitchToMode "Normal"; } + bind "9" { GoToTab 9; SwitchToMode "Normal"; } + bind "Tab" { ToggleTab; } + } + scroll { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "e" { EditScrollback; SwitchToMode "Normal"; } + bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + search { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + bind "n" { Search "down"; } + bind "p" { Search "up"; } + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "o" { SearchToggleOption "WholeWord"; } + } + entersearch { + bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } + bind "Enter" { SwitchToMode "Search"; } + } + renametab { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } + } + renamepane { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } + } + session { + bind "Ctrl o" { SwitchToMode "Normal"; } + bind "Ctrl s" { SwitchToMode "Scroll"; } + bind "d" { Detach; } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + } + tmux { + bind "[" { SwitchToMode "Scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } + bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } + bind "%" { NewPane "Right"; SwitchToMode "Normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "," { SwitchToMode "RenameTab"; } + bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } + bind "n" { GoToNextTab; SwitchToMode "Normal"; } + bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "o" { FocusNextPane; } + bind "d" { Detach; } + bind "Space" { NextSwapLayout; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + } + shared_except "locked" { + bind "Ctrl g" { SwitchToMode "Locked"; } + bind "Ctrl q" { Quit; } + bind "Alt n" { NewPane; } + bind "Alt i" { MoveTab "Left"; } + bind "Alt o" { MoveTab "Right"; } + bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } + bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } + bind "Alt j" "Alt Down" { MoveFocus "Down"; } + bind "Alt k" "Alt Up" { MoveFocus "Up"; } + bind "Alt =" "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + bind "Alt [" { PreviousSwapLayout; } + bind "Alt ]" { NextSwapLayout; } + bind "Ctrl y" { + LaunchOrFocusPlugin "file:~/.config/zellij/plugins/room.wasm" { + floating true + ignore_case true + quick_jump true + } + } + } + shared_except "normal" "locked" { + bind "Enter" "Esc" { SwitchToMode "Normal"; } + } + shared_except "pane" "locked" { + bind "Ctrl p" { SwitchToMode "Pane"; } + } + shared_except "resize" "locked" { + bind "Ctrl n" { SwitchToMode "Resize"; } + } + shared_except "scroll" "locked" { + bind "Ctrl s" { SwitchToMode "Scroll"; } + } + shared_except "session" "locked" { + bind "Ctrl o" { SwitchToMode "Session"; } + } + shared_except "tab" "locked" { + bind "Ctrl t" { SwitchToMode "Tab"; } + } + shared_except "move" "locked" { + bind "Ctrl h" { SwitchToMode "Move"; } + } + shared_except "tmux" "locked" { + bind "Ctrl b" { SwitchToMode "Tmux"; } + } +} + +plugins { + tab-bar location="zellij:tab-bar" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + compact-bar location="zellij:compact-bar" + session-manager location="zellij:session-manager" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } + filepicker location="zellij:strider" { + cwd "/" + } +} + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// Options: +// - detach (Default) +// - quit +// +// on_force_close "quit" + +// Send a request for a simplified ui (without arrow fonts) to plugins +// Options: +// - true +// - false (Default) +// +// simplified_ui true + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Choose the path to override cwd that zellij will use for opening new panes +// +// default_cwd "" + +// Toggle between having pane frames around the panes +// Options: +// - true (default) +// - false +// +// pane_frames true + +// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible +// Options: +// - true (default) +// - false +// +// auto_layout true + +// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected +// Options: +// - true (default) +// - false +// +// session_serialization false + +// Whether pane viewports are serialized along with the session, default is false +// Options: +// - true +// - false (default) +// serialize_pane_viewport true + +// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 +// defaults to the scrollback size. If this number is higher than the scrollback size, it will +// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. +// + +scrollback_lines_to_serialize 10000 + +// Define color themes for Zellij +// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes +// Once these themes are defined, one of them should to be selected in the "theme" section of this file +// +// themes { +// dracula { +// fg 248 248 242 +// bg 40 42 54 +// red 255 85 85 +// green 80 250 123 +// yellow 241 250 140 +// blue 98 114 164 +// magenta 255 121 198 +// orange 255 184 108 +// cyan 139 233 253 +// black 0 0 0 +// white 255 255 255 +// } +// } + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "catppuccin-frappe" + +// The name of the default layout to load on startup +// Default: "default" +// +// default_layout "compact" + +// Choose the mode that zellij uses when starting up. +// Default: normal +// +// default_mode "locked" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// Options: +// - true (default) +// - false +// +// mouse_mode true + +// Configure the scroll back buffer size +// This is the number of lines zellij stores for each pane in the scroll back +// buffer. Excess number of lines are discarded in a FIFO fashion. +// Valid values: positive integers +// Default value: 10000 +// + +scroll_buffer_size 10000 + +// Provide a command to execute when copying text. The text will be piped to +// the stdin of the program to perform the copy. This can be used with +// terminal emulators which do not support the OSC 52 ANSI control sequence +// that will be used by default if this option is not set. +// Examples: +// +// copy_command "xclip -selection clipboard" // x11 +// copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +// +// copy_clipboard "primary" + +// Enable or disable automatic copy (and clear) of selection when releasing mouse +// Default: true +// +// copy_on_select false + +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// +// scrollback_editor "/usr/bin/vim" + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// Default: false +// +// mirror_session true + +// The folder in which Zellij will look for layouts +// + +layout_dir "~/dotfiles/zellij/config/layouts" + +// The folder in which Zellij will look for themes +// +// theme_dir "/path/to/my/theme_dir" + +// Enable or disable the rendering of styled and colored underlines (undercurl). +// May need to be disabled for certain unsupported terminals +// Default: true +// +// styled_underlines false + +// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know +// metadata info on this session) +// Default: false +// +// disable_session_metadata true diff --git a/zellij/config/default.kdl b/zellij/config/default.kdl new file mode 100644 index 0000000..216d8ea --- /dev/null +++ b/zellij/config/default.kdl @@ -0,0 +1,12 @@ +layout { + pane split_direction="vertical" { + pane + pane split_direction="horizontal" { + pane + pane + } + } + pane size=1 borderless=true { + plugin location="zellij:compact-bar" + } +} diff --git a/zellij/config/layouts/default.kdl b/zellij/config/layouts/default.kdl new file mode 100644 index 0000000..216d8ea --- /dev/null +++ b/zellij/config/layouts/default.kdl @@ -0,0 +1,12 @@ +layout { + pane split_direction="vertical" { + pane + pane split_direction="horizontal" { + pane + pane + } + } + pane size=1 borderless=true { + plugin location="zellij:compact-bar" + } +} diff --git a/zellij/plugins/harpoon b/zellij/plugins/harpoon new file mode 160000 index 0000000..d328461 --- /dev/null +++ b/zellij/plugins/harpoon @@ -0,0 +1 @@ +Subproject commit d3284615ba5063c73e0c1729edf5b10b46aead5e diff --git a/zellij/plugins/harpoon.wasm b/zellij/plugins/harpoon.wasm new file mode 100755 index 0000000..a0315de Binary files /dev/null and b/zellij/plugins/harpoon.wasm differ diff --git a/zellij/plugins/monocle.wasm b/zellij/plugins/monocle.wasm new file mode 100644 index 0000000..d8eaa6e Binary files /dev/null and b/zellij/plugins/monocle.wasm differ diff --git a/zellij/plugins/room.wasm b/zellij/plugins/room.wasm new file mode 100644 index 0000000..6e2da00 Binary files /dev/null and b/zellij/plugins/room.wasm differ