├── .gitignore ├── .stow-local-ignore ├── LICENSE ├── README.md ├── asdf ├── .asdfrc └── .tool-versions ├── bash └── .bashrc ├── bin └── .local │ └── bin │ ├── colortest │ ├── git-brst │ ├── git-cm │ ├── git-publish │ ├── git-uncommit │ └── tat ├── brew └── Brewfile ├── example.rest ├── fish └── .config │ └── fish │ ├── abbreviations.fish │ ├── colors.fish │ ├── completions │ ├── asdf.fish │ └── tmuxinator.fish │ ├── config.fish │ └── functions │ ├── addpaths.fish │ ├── aua.fish │ ├── bb.fish │ ├── bbc.fish │ ├── bbcf.fish │ ├── bubo.fish │ ├── cat.fish │ ├── copy.fish │ ├── copycwd.fish │ ├── cp.fish │ ├── ct.fish │ ├── dsx.fish │ ├── ed.fish │ ├── efl.fish │ ├── et.fish │ ├── ev.fish │ ├── evl.fish │ ├── fish_user_key_bindings.fish │ ├── fkill.fish │ ├── g.fish │ ├── gbrm.fish │ ├── gl.fish │ ├── glg.fish │ ├── gwip.fish │ ├── haf.fish │ ├── htop.fish │ ├── l.fish │ ├── la.fish │ ├── ll.fish │ ├── ls.fish │ ├── mm.fish │ ├── mmb.fish │ ├── mmc.fish │ ├── mms.fish │ ├── path.fish │ ├── pi.fish │ ├── psq.fish │ ├── removepath.fish │ ├── rlv.fish │ ├── saf.fish │ ├── sha256.fish │ ├── src.fish │ ├── startpost.fish │ ├── statpost.fish │ ├── stoppost.fish │ ├── ta.fish │ ├── tk.fish │ ├── tka.fish │ ├── tn.fish │ ├── tna.fish │ ├── tsrc.fish │ ├── update_jumpstart.fish │ └── ygs.fish ├── ghostty └── .config │ └── ghostty │ ├── config │ └── config-default ├── git ├── .gitconfig ├── .gitignore_global └── .gitmessage ├── iterm ├── .stow-local-ignore ├── colors │ ├── Nord.itermcolors │ ├── Oceanic-Dark-iterm3.itermcolors │ ├── OneHalfDark.itermcolors │ ├── Tender.itermcolors │ ├── gruvbox-dark.itermcolors │ ├── material.itermcolors │ ├── monokai_tasty.itermcolors │ ├── night-owl.itermcolors │ ├── nightfly.itermcolors │ ├── one-dark-navarasu.itermcolors │ ├── tokyonight_day.itermcolors │ ├── tokyonight_moon.itermcolors │ ├── tokyonight_night.itermcolors │ ├── tokyonight_storm.itermcolors │ └── tokyonight_storm_bg_24283b.itermcolors └── com.googlecode.iterm2.plist ├── kitty └── .config │ └── kitty │ ├── current-theme.conf │ ├── enabled-layouts.conf │ ├── kitty.conf │ ├── sample-kitty.conf │ ├── sample-startup.conf │ └── unicode-symbol-maps.conf ├── laptop └── .laptop.local ├── lazygit └── .config │ └── lazygit │ └── config.yml ├── local └── config.fish.example ├── markdown └── .markdownlint.yaml ├── nerd-font-smoke-test.sh ├── node ├── .default-npm-packages └── .npmrc ├── nvim └── .config │ └── nvim │ ├── .gitignore │ ├── .neoconf.json │ ├── init.lua │ ├── lazy-lock.json │ ├── lazyvim.json │ ├── lua │ ├── config │ │ ├── autocmds.lua │ │ ├── keymaps.lua │ │ ├── lazy.lua │ │ ├── options.lua │ │ └── util.lua │ └── plugins │ │ ├── colorscheme.lua │ │ ├── extend-blink.lua │ │ ├── extend-bufferline.lua │ │ ├── extend-conform.lua │ │ ├── extend-dashboard.lua │ │ ├── extend-mason.lua │ │ ├── extend-mini-files.lua │ │ ├── extend-mini-map.lua │ │ ├── extend-neo-tree.lua │ │ ├── extend-neotest.lua │ │ ├── extend-nvim-lint.lua │ │ ├── extend-nvim-lspconfig.lua │ │ ├── extend-nvim-ts-autotag.lua │ │ ├── extend-snacks.lua │ │ ├── extend-treesitter.lua │ │ ├── extend-trouble.lua │ │ ├── gruvbox.lua │ │ ├── rails-vim.lua │ │ ├── tokyonight.lua │ │ └── vim-tmux-navigator.lua │ ├── spell │ └── stylua.toml ├── rc ├── .hushlogin └── .ripgreprc ├── ruby ├── .default-gems ├── .gemrc ├── .irbrc ├── .pryrc └── .rubocop.yml ├── scripts └── download_files.sh ├── setup.sh ├── spell ├── .stow-local-ignore ├── en.utf-8.add ├── en.utf-8.add.spl ├── en.utf-8.spl ├── en.utf-8.sug ├── es.utf-8.add ├── es.utf-8.add.spl ├── es.utf-8.spl ├── fr.utf-8.spl ├── ru.utf-8.spl └── uk.utf-8.spl ├── starship └── .config │ └── starship.toml ├── terminfo ├── .stow-local-ignore ├── tmux-256color.terminfo └── xterm-256color-italic.terminfo ├── tmux └── .config │ └── tmux │ ├── themes │ ├── tokyonight_day.tmux │ ├── tokyonight_moon.tmux │ ├── tokyonight_night.tmux │ └── tokyonight_storm.tmux │ └── tmux.conf ├── yamllint └── .config │ └── yamllint │ └── config ├── yazi └── .config │ └── yazi │ ├── keymap.toml │ ├── theme.toml │ └── yazi.toml └── zsh ├── .config ├── zsh-abbr │ └── abbreviations.zsh └── zsh │ ├── aliases.zsh │ ├── colors.zsh │ ├── docker.sh │ ├── functions.zsh │ ├── plugins.zsh │ ├── profiler │ ├── profiler.start │ └── profiler.stop ├── .p10k.zsh └── .zshrc /.gitignore: -------------------------------------------------------------------------------- 1 | .gitconfig.local 2 | .vimrc.local 3 | .zshrc.local 4 | brew/Brewfile.lock.json 5 | config.fish.local 6 | fish_variables 7 | fzf_key_bindings.fish 8 | kitty.conf.bak 9 | lazygit/.config/lazygit/state.yml 10 | local/* 11 | startup.conf 12 | tmux/.config/tmux/plugins 13 | vim/.netrwhist 14 | vim/bundle 15 | -------------------------------------------------------------------------------- /.stow-local-ignore: -------------------------------------------------------------------------------- 1 | # https://www.gnu.org/software/stow/manual/html_node/Ignore-Lists.html#Ignore-Lists 2 | # Comments and blank lines are allowed. 3 | 4 | RCS 5 | .+,v 6 | 7 | CVS 8 | \.\#.+ # CVS conflict files / emacs lock files 9 | \.cvsignore 10 | 11 | \.svn 12 | _darcs 13 | \.hg 14 | 15 | \.git 16 | \.gitignore 17 | 18 | .+~ # emacs backup files 19 | \#.*\# # emacs autosave files 20 | 21 | ^/README.* 22 | ^/LICENSE.* 23 | ^/COPYING 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2014–2025 Joshua Steele 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /asdf/.asdfrc: -------------------------------------------------------------------------------- 1 | legacy_version_file = yes 2 | -------------------------------------------------------------------------------- /asdf/.tool-versions: -------------------------------------------------------------------------------- 1 | ruby 3.4.3 2 | nodejs 23.11.0 3 | python 3.12.4 2.7.18 4 | lua 5.1 5 | neovim stable 6 | -------------------------------------------------------------------------------- /bash/.bashrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$(arch)" = arm64 ]; then 4 | eval "$(/opt/homebrew/bin/brew shellenv)" 5 | else 6 | eval "$(/usr/local/bin/brew shellenv)" 7 | fi 8 | 9 | export EDITOR="nvim" 10 | export GIT_EDITOR="nvim" 11 | export BUNDLER_EDITOR=$EDITOR 12 | export MANPAGER="less -X" # Don’t clear the screen after quitting a manual page 13 | export XDG_CONFIG_HOME="$HOME/.config" 14 | export XDG_DATA_HOME="$HOME/.local/share" 15 | export XDG_CACHE_HOME="$HOME/.cache" 16 | export DOTFILES="$HOME/dotfiles" 17 | 18 | # FZF specific - https://github.com/junegunn/fzf#key-bindings-for-command-line 19 | export FZF_DEFAULT_COMMAND="rg --files --hidden --follow --no-ignore-vcs" 20 | export FZF_DEFAULT_OPTS="--height 75% --layout=reverse --border" 21 | export FZF_CTRL_T_COMMAND=$FZF_DEFAULT_COMMAND 22 | export FZF_ALT_C_COMMAND="fd --type d . --color=never" 23 | 24 | alias c='clear' 25 | alias cat='bat' 26 | alias cp='cp -iv' 27 | alias df='df -h' 28 | alias du='du -h' 29 | alias dud='du -d 1 -h' 30 | alias duf='du -sh *' 31 | alias l='eza -lhF' 32 | alias la='eza -lahF' 33 | alias ls='eza' 34 | alias mkdir='mkdir -pv' 35 | alias mv='mv -iv' 36 | 37 | alias cdot='cd $DOTFILES' 38 | alias cdxc='cd $XDG_CONFIG_HOME' 39 | alias cdfi='cd $XDG_CONFIG_HOME/fish' 40 | alias cdnv='cd $XDG_CONFIG_HOME/nvim' 41 | alias cdxd='cd $XDG_DATA_HOME' 42 | alias cdxa='cd $XDG_CACHE_HOME' 43 | alias cdlb='cd $HOME/.local/bin' 44 | 45 | function path() { 46 | echo "$PATH" | tr ":" "\n" | nl 47 | } 48 | 49 | function g() { 50 | if [[ $# -gt 0 ]]; then 51 | git "$@" 52 | else 53 | clear && git status --short --branch && echo 54 | fi 55 | } 56 | 57 | function pi() { 58 | ping -Anc 5 1.1.1.1 59 | } 60 | 61 | function src() { 62 | # shellcheck disable=SC1090 63 | source ~/.bashrc && echo 'source ~/.bashrc' 64 | } 65 | 66 | eval "$(starship init bash)" 67 | 68 | # shellcheck disable=SC1091 69 | # . "$HOME/.asdf/asdf.sh" 70 | # shellcheck disable=SC1091 71 | # . "$HOME/.asdf/completions/asdf.bash" 72 | 73 | # shellcheck disable=SC1090 74 | [ -f ~/.fzf.bash ] && source ~/.fzf.bash 75 | 76 | # vim: set filetype=bash: 77 | -------------------------------------------------------------------------------- /bin/.local/bin/git-brst: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Prints out branch ahead/behind status vs origin/master for all branches 4 | # 5 | # example: 6 | # $ git branch-status 7 | # dns_check (ahead 1) | (behind 112) origin/master 8 | # master (ahead 2) | (behind 0) origin/master 9 | # 10 | # https://github.com/Stratus3D/dotfiles/blob/4565b251354bed240b55c83fc15d226aa8f798a5/scripts/git/git-branch-status 11 | 12 | TMP_FILE_NAME=/tmp/git_upstream_status_delta 13 | 14 | git for-each-ref --format="%(refname:short) %(upstream:short)" refs/ | \ 15 | while read -r local remote 16 | do 17 | if [ -x "$remote" ]; then 18 | branches=("$local") 19 | else 20 | branches=("$local" "$remote") 21 | fi; 22 | for branch in "${branches[@]}"; do 23 | master="origin/master" 24 | git rev-list --left-right "${branch}"..."${master}" -- 2>/dev/null > $TMP_FILE_NAME || continue 25 | LEFT_AHEAD=$(grep -c '^<' $TMP_FILE_NAME) 26 | RIGHT_AHEAD=$(grep -c '^>' $TMP_FILE_NAME) 27 | echo "$branch (ahead $LEFT_AHEAD) | (behind $RIGHT_AHEAD) $master" 28 | done 29 | done | grep -v "^origin/master" | sort | uniq 30 | -------------------------------------------------------------------------------- /bin/.local/bin/git-cm: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # https://github.com/christoomey/dotfiles/blob/77fb4084bd3f207aace80aa93a49769a6a298ddb/bin/git-cm 4 | # Small wrapper around git commit. Bare 'cm' will enter normal git commit 5 | # editor, but with args it will do a direct `commit -m` 6 | 7 | if [[ $# -gt 0 ]]; then 8 | git commit -m "$@" 9 | else 10 | git commit -v 11 | fi 12 | -------------------------------------------------------------------------------- /bin/.local/bin/git-publish: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | # 5 | # https://github.com/christoomey/dotfiles/blob/77fb4084bd3f207aace80aa93a49769a6a298ddb/bin/git-publish 6 | # Usage: git publish 7 | # Open the pull request page for , or the current branch if not 8 | # specified. Lands on the new pull request page when no PR exists yet. 9 | # The local branch must be tracking the remote branch. 10 | 11 | def read_current_branch 12 | `git rev-parse --abbrev-ref HEAD`.chomp 13 | end 14 | 15 | def main 16 | current_branch = read_current_branch 17 | if current_branch == "master" 18 | warn "Currently on master, aborting." 19 | exit 1 20 | else 21 | system("git push -u origin #{current_branch}:#{current_branch}") 22 | end 23 | end 24 | 25 | main 26 | -------------------------------------------------------------------------------- /bin/.local/bin/git-uncommit: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # https://github.com/christoomey/dotfiles/blob/77fb4084bd3f207aace80aa93a49769a6a298ddb/bin/git-uncommit 3 | 4 | git_clean() { 5 | git diff --no-ext-diff --quiet --exit-code 6 | } 7 | 8 | main() { 9 | if git_clean; then 10 | local branch_name 11 | local current_sha 12 | 13 | branch_name=$(git symbolic-ref HEAD 2>/dev/null | tr '/' '\n' | tail -1) 14 | current_sha=$(git rev-parse HEAD) 15 | 16 | echo "Branch ${branch_name} was ${current_sha}" 17 | git reset --soft HEAD^ 18 | git reset 19 | else 20 | >&2 echo "Aborting due to local changes" 21 | exit 1 22 | fi 23 | } 24 | 25 | main 26 | -------------------------------------------------------------------------------- /bin/.local/bin/tat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Attach or create tmux session named the same as current directory. 4 | 5 | path_name="$(basename "$PWD" | tr . -)" 6 | session_name=${1-$path_name} 7 | 8 | not_in_tmux() { 9 | [ -z "$TMUX" ] 10 | } 11 | 12 | session_exists() { 13 | tmux list-sessions | sed -E 's/:.*$//' | grep -q "^$session_name$" 14 | } 15 | 16 | create_detached_session() { 17 | (TMUX='' tmux new-session -Ad -s "$session_name") 18 | } 19 | 20 | create_if_needed_and_attach() { 21 | if not_in_tmux; then 22 | tmux new-session -As "$session_name" 23 | else 24 | if ! session_exists; then 25 | create_detached_session 26 | fi 27 | tmux switch-client -t "$session_name" 28 | fi 29 | } 30 | 31 | create_if_needed_and_attach 32 | -------------------------------------------------------------------------------- /brew/Brewfile: -------------------------------------------------------------------------------- 1 | # https://github.com/Homebrew/homebrew-bundle 2 | 3 | tap "olets/tap" 4 | tap "stripe/stripe-cli" 5 | tap "teamookla/speedtest" 6 | 7 | # Homebrew 8 | # https://github.com/Homebrew/brew/ 9 | 10 | brew "advancecomp" 11 | brew "openssl@3" 12 | brew "libyaml" 13 | brew "readline" 14 | brew "ansible" 15 | brew "asciidoctor" 16 | brew "asdf" 17 | brew "awscli" 18 | brew "bash" 19 | brew "bash-completion" 20 | brew "bat" 21 | brew "btop" 22 | brew "cloc" 23 | brew "cmake" 24 | brew "coreutils" 25 | brew "curl" 26 | brew "diff-so-fancy" 27 | brew "docutils" 28 | brew "dos2unix" 29 | brew "eza" 30 | brew "fd" 31 | brew "ffmpegthumbnailer" 32 | brew "gcc" 33 | brew "fish" 34 | brew "flyctl" 35 | brew "fontforge" 36 | brew "fonttools" 37 | brew "fzf" 38 | brew "gh" 39 | brew "gifsicle" 40 | brew "git" 41 | brew "git-quick-stats" 42 | brew "gnu-sed" 43 | brew "gnupg" 44 | brew "icu4c@76" 45 | brew "graphviz" 46 | brew "hadolint" 47 | brew "pkgconf" 48 | brew "highlight" 49 | brew "htop" 50 | brew "httpie" 51 | brew "hugo" 52 | brew "imagemagick" 53 | brew "jhead" 54 | brew "jq" 55 | brew "lazydocker" 56 | brew "lazygit" 57 | brew "less" 58 | brew "libpq" 59 | brew "libtermkey" 60 | brew "lynx" 61 | brew "mas" 62 | brew "media-info" 63 | brew "memcached" 64 | brew "most" 65 | brew "neofetch" 66 | brew "neovim" 67 | brew "node" 68 | brew "onefetch" 69 | brew "openssl@1.1" 70 | brew "ossp-uuid" 71 | brew "tmux" 72 | brew "overmind" 73 | brew "pandoc" 74 | brew "perl" 75 | brew "pgcli" 76 | brew "php" 77 | brew "pillow" 78 | brew "pinentry-mac" 79 | brew "poppler" 80 | brew "postgresql@17" 81 | brew "pstree" 82 | brew "redis" 83 | brew "ripgrep" 84 | brew "rlwrap" 85 | brew "rsync" 86 | brew "rust" 87 | brew "shellcheck" 88 | brew "ssh-copy-id" 89 | brew "starship" 90 | brew "stow" 91 | brew "telnet" 92 | brew "the_silver_searcher" 93 | brew "tldr" 94 | brew "trash" 95 | brew "tree" 96 | brew "unar" 97 | brew "universal-ctags" 98 | brew "vips" 99 | brew "w3m" 100 | brew "wget" 101 | brew "wordnet" 102 | brew "yamllint" 103 | brew "yarn" 104 | brew "yazi" 105 | brew "zlib" 106 | brew "zoxide" 107 | brew "zsh" 108 | brew "olets/tap/zsh-abbr" 109 | brew "stripe/stripe-cli/stripe" 110 | brew "teamookla/speedtest/speedtest" 111 | 112 | # homebrew-cask 113 | # https://github.com/Homebrew/homebrew-cask 114 | 115 | # cask "1password-cli" 116 | cask "alfred" 117 | cask "bartender" 118 | cask "brave-browser" 119 | cask "carbon-copy-cloner" 120 | cask "cleanmymac" 121 | cask "firefox" 122 | cask "font-cascadia-code" 123 | cask "font-fira-code" 124 | cask "font-hack" 125 | cask "font-jetbrains-mono" 126 | cask "font-monaspace" 127 | cask "font-source-code-pro" 128 | cask "font-symbols-only-nerd-font" 129 | cask "ghostty" 130 | cask "google-drive" 131 | cask "grammarly-desktop" 132 | cask "hazel" 133 | cask "istat-menus" 134 | cask "kitty" 135 | cask "loom" 136 | cask "messenger" 137 | cask "ngrok" 138 | cask "notion" 139 | cask "obsidian" 140 | cask "postico" 141 | cask "qxmledit" 142 | cask "screenflick" 143 | cask "signal" 144 | cask "tableplus" 145 | cask "telegram" 146 | cask "todoist" 147 | cask "viber" 148 | cask "whatsapp" 149 | 150 | mas "1Password for Safari", id: 1569813296 151 | mas "e-Sword X", id: 968437868 152 | mas "Keynote", id: 409183694 153 | mas "Logic Pro", id: 634148309 154 | mas "Marked 2", id: 890031187 155 | mas "Numbers", id: 409203825 156 | mas "Pages", id: 409201541 157 | mas "The Unarchiver", id: 425424353 158 | mas "Toggl Track", id: 1291898086 159 | 160 | # vim: set filetype=ruby: 161 | -------------------------------------------------------------------------------- /example.rest: -------------------------------------------------------------------------------- 1 | ### GET request example ### 2 | 3 | # host 4 | https://reqres.in 5 | 6 | # curl options 7 | --connect-timeout 10 8 | 9 | # query 10 | GET /api/users/2 11 | 12 | ### POST request example ### 13 | 14 | # host 15 | https://reqres.in 16 | 17 | # query 18 | POST /api/users 19 | { 20 | "name": "morpheus", 21 | "job": "leader" 22 | } 23 | 24 | # https://github.com/diepm/vim-rest-console#5-usage 25 | -------------------------------------------------------------------------------- /fish/.config/fish/abbreviations.fish: -------------------------------------------------------------------------------- 1 | # https://fishshell.com/docs/current/cmds/abbr.html 2 | 3 | # General UNIX 4 | abbr -a -g c clear 5 | abbr -a -g cv 'command -v' 6 | abbr -a -g df 'df -h' 7 | abbr -a -g du 'du -h' 8 | abbr -a -g dud 'du -d 1 -h' 9 | abbr -a -g duf 'du -sh *' 10 | abbr -a -g mkdir 'mkdir -pv' 11 | abbr -a -g mv 'mv -iv' 12 | 13 | # Config dir access 14 | abbr -a -g cdot 'cd $DOTFILES' 15 | abbr -a -g cdxc 'cd $XDG_CONFIG_HOME' 16 | abbr -a -g cdfi 'cd $XDG_CONFIG_HOME/fish' 17 | abbr -a -g cdnv 'cd $XDG_CONFIG_HOME/nvim' 18 | abbr -a -g cdxd 'cd $XDG_DATA_HOME' 19 | abbr -a -g cdxa 'cd $XDG_CACHE_HOME' 20 | abbr -a -g cdxs 'cd $XDG_STATE_HOME' 21 | abbr -a -g cdlb 'cd $HOME/.local/bin' 22 | abbr -a -g cdbn 'cd $HOME/.bin' 23 | 24 | # Moving around 25 | abbr -a -g .. 'cd ..' 26 | abbr -a -g ... 'cd ../../' 27 | abbr -a -g .... 'cd ../../../' 28 | abbr -a -g ..... 'cd ../../../../' 29 | abbr -a -g - 'cd -' 30 | 31 | # Tree - requires eza 32 | abbr -a -g tree 'll --tree --level=2' 33 | abbr -a -g t2 'll --tree --level=2' 34 | abbr -a -g t2a 'll --tree --level=2 -a' 35 | abbr -a -g t3 'll --tree --level=3' 36 | abbr -a -g t3a 'll --tree --level=3 -a' 37 | abbr -a -g t4 'll --tree --level=4' 38 | abbr -a -g t4a 'll --tree --level=4 -a' 39 | 40 | # Git 41 | abbr -a -g ga 'git add' 42 | abbr -a -g gaa 'git add --all' 43 | abbr -a -g gap 'git add --patch' 44 | abbr -a -g gb 'git branch' 45 | abbr -a -g gba 'git branch --all' 46 | abbr -a -g gbm 'git branch -m' 47 | abbr -a -g gbr 'git branch --remote' 48 | abbr -a -g gca 'git commit --amend' 49 | abbr -a -g gcl 'git clone' 50 | abbr -a -g gcm 'git cm' 51 | abbr -a -g gco 'git checkout' 52 | abbr -a -g gcom 'git checkout master' 53 | abbr -a -g gdc 'git diff --cached' 54 | abbr -a -g gdf 'git diff' 55 | abbr -a -g gf 'git fetch' 56 | abbr -a -g gfu 'git fetch upstream' 57 | abbr -a -g gg lazygit 58 | abbr -a -g glo 'git log' 59 | abbr -a -g gm 'git merge' 60 | abbr -a -g gpl 'git pull' 61 | abbr -a -g gps 'git push' 62 | abbr -a -g gpsf 'git push --force-with-lease' 63 | abbr -a -g gpst 'git push --tags' 64 | abbr -a -g gpub 'git publish' 65 | abbr -a -g gpum 'git push -u origin master' 66 | abbr -a -g gpuo 'git push -u origin' 67 | abbr -a -g gra 'git remote add' 68 | abbr -a -g grb 'git rebase' 69 | abbr -a -g grba 'git rebase --abort' 70 | abbr -a -g grbc 'git rebase --continue' 71 | abbr -a -g grbi 'git rebase -i' 72 | abbr -a -g grbm 'git rebase master' 73 | abbr -a -g gre 'git reset' 74 | abbr -a -g grso 'git remote set-url origin' 75 | abbr -a -g grsu 'git remote set-url' 76 | abbr -a -g grup 'git remote add upstream' 77 | abbr -a -g grv 'git remote -v' 78 | abbr -a -g gs 'git status' 79 | abbr -a -g gtl 'git tag --list' 80 | abbr -a -g oc overcommit 81 | 82 | # macOS Finder 83 | abbr -a -g defr 'defaults read' 84 | abbr -a -g defw 'defaults write' 85 | 86 | # Misc 87 | abbr -a -g neo neofetch 88 | abbr -a -g one onefetch 89 | abbr -a -g ch 'cht.sh' 90 | abbr -a -g chs 'cht.sh --shell' 91 | abbr -a -g color 'colortest -w -s' 92 | abbr -a -g spt speedtest 93 | abbr -a -g s2 sha256 94 | 95 | # Tmux 96 | abbr -a -g tl 'tmux ls' 97 | abbr -a -g tlw 'tmux list-windows' 98 | 99 | # Neovim 100 | abbr -a -g nv nvim 101 | abbr -a -g vi nvim 102 | abbr -a -g vi0 'nvim -u NONE' 103 | abbr -a -g vir 'nvim -R' 104 | abbr -a -g vv 'nvim --version | less' 105 | 106 | # asdf 107 | abbr -a -g ail 'asdf install lua' 108 | abbr -a -g ain 'asdf install nodejs' 109 | abbr -a -g aip 'asdf install python' 110 | abbr -a -g air 'asdf install ruby' 111 | abbr -a -g ala 'asdf list-all' 112 | 113 | # https://fishshell.com/docs/current/commands.html#fish_update_completions 114 | abbr -a -g ucl fish_update_completions 115 | 116 | # Homebrew 117 | abbr -a -g brc 'brew cleanup' 118 | abbr -a -g brb 'brew bundle' 119 | abbr -a -g brd 'brew doctor' 120 | abbr -a -g brg 'brew upgrade' 121 | abbr -a -g bri 'brew info' 122 | abbr -a -g brl 'brew list -1' 123 | abbr -a -g brlf 'brew list | fzf' 124 | abbr -a -g bro 'brew outdated' 125 | abbr -a -g brs 'brew search' 126 | abbr -a -g bru 'brew update' 127 | abbr -a -g bs0 'brew services stop' 128 | abbr -a -g bs1 'brew services start' 129 | abbr -a -g bsc 'brew services cleanup' 130 | abbr -a -g bsl 'brew services list' 131 | abbr -a -g bsr 'brew services restart' 132 | abbr -a -g bsv 'brew services' 133 | 134 | # Yabai 135 | abbr -a -g yb0 "yabai --stop-service" 136 | abbr -a -g yb1 "yabai --start-service" 137 | abbr -a -g ybr "yabai --restart-service" 138 | 139 | # skhd 140 | abbr -a -g sk0 "skhd --stop-service" 141 | abbr -a -g sk1 "skhd --start-service" 142 | abbr -a -g skr "skhd --restart-service" 143 | abbr -a -g skd "skhd --reload" 144 | 145 | # Ansible 146 | abbr -a -g ans ansible 147 | abbr -a -g anp ansible-playbook 148 | abbr -a -g anv 'ansible-vault --ask-vault-pass' 149 | abbr -a -g ang ansible-galaxy 150 | 151 | # Rails 152 | abbr -a -g RED 'RAILS_ENV=development' 153 | abbr -a -g REP 'RAILS_ENV=production' 154 | abbr -a -g RET 'RAILS_ENV=test' 155 | abbr -a -g bbi 'bin/bundle install' 156 | abbr -a -g bbo 'bin/bundle outdated' 157 | abbr -a -g bbu 'bin/bundle update' 158 | abbr -a -g bd bin/dev 159 | abbr -a -g be 'bundle exec' 160 | abbr -a -g cred 'bin/rails credentials:edit --environment' 161 | abbr -a -g crsp 'env COVERAGE=true bin/rspec .' 162 | abbr -a -g hm hivemind 163 | abbr -a -g ocr 'overmind connect rails' 164 | abbr -a -g om 'overmind start' 165 | abbr -a -g psp 'bin/rake parallel:spec' 166 | abbr -a -g r bin/rails 167 | abbr -a -g rc 'bin/rails console' 168 | abbr -a -g rcop rubocop 169 | abbr -a -g rdb 'bin/rails dbconsole' 170 | abbr -a -g rdm 'bin/rails db:migrate' 171 | abbr -a -g rdms 'bin/rails db:migrate:status' 172 | abbr -a -g rdr 'bin/rails db:rollback' 173 | abbr -a -g rdr2 'bin/rails db:rollback STEP=2' 174 | abbr -a -g rdr3 'bin/rails db:rollback STEP=3' 175 | abbr -a -g rgm 'bin/rails generate migration' 176 | abbr -a -g rgs 'bin/rails generate stimulus' 177 | abbr -a -g rs 'bin/rails server' 178 | abbr -a -g rsp 'bin/rspec .' 179 | abbr -a -g rtp 'bin/rails db:test:prepare' 180 | 181 | # NPM 182 | abbr -a -g nb 'npm build' 183 | abbr -a -g ncl 'npm clean' 184 | abbr -a -g nd 'npm run dev' 185 | abbr -a -g ndv 'npm develop' 186 | abbr -a -g ni 'npm install' 187 | abbr -a -g nid 'npm install -D' 188 | abbr -a -g nig 'npm install -g' 189 | abbr -a -g nit 'npm init' 190 | abbr -a -g ns 'npm serve' 191 | abbr -a -g nst 'npm start' 192 | abbr -a -g nt 'npm test' 193 | abbr -a -g nv 'npm --version' 194 | 195 | # Yarn 196 | abbr -a -g y yarn 197 | abbr -a -g ya 'yarn add' 198 | abbr -a -g yad 'yarn add -D' 199 | abbr -a -g yap 'yarn add --peer' 200 | abbr -a -g yb 'yarn build' 201 | abbr -a -g yba 'yarn build --analyze' 202 | abbr -a -g yc 'yarn create' 203 | abbr -a -g ycc 'yarn cache clean' 204 | abbr -a -g ycl 'yarn clean' 205 | abbr -a -g yd 'yarn dev' 206 | abbr -a -g ydd 'yarn docs:dev' 207 | abbr -a -g ydv 'yarn develop' 208 | abbr -a -g yg 'yarn generate' 209 | abbr -a -g yga 'yarn global add' 210 | abbr -a -g ygls 'yarn global list' 211 | abbr -a -g ygrm 'yarn global remove' 212 | abbr -a -g ygu 'yarn global upgrade' 213 | abbr -a -g yh 'yarn help' 214 | abbr -a -g yi 'yarn init' 215 | abbr -a -g yin 'yarn install' 216 | abbr -a -g yls 'yarn list' 217 | abbr -a -g yout 'yarn outdated' 218 | abbr -a -g yp 'yarn pack' 219 | abbr -a -g yrm 'yarn remove' 220 | abbr -a -g yrun 'yarn run' 221 | abbr -a -g ys 'yarn serve' 222 | abbr -a -g yst 'yarn start' 223 | abbr -a -g yt 'yarn test' 224 | abbr -a -g ytc 'yarn test --coverage' 225 | abbr -a -g yuc 'yarn global upgrade; and yarn cache clean' 226 | abbr -a -g yui 'yarn upgrade-interactive' 227 | abbr -a -g yup 'yarn upgrade' 228 | abbr -a -g yupl 'yarn upgrade --latest' 229 | abbr -a -g yv 'yarn version' 230 | abbr -a -g yw 'yarn workspace' 231 | abbr -a -g yws 'yarn workspaces' 232 | 233 | # Ruby Gems 234 | abbr -a -g gel 'gem cleanup' 235 | abbr -a -g gemv 'gem environment' 236 | abbr -a -g gins 'gem install' 237 | abbr -a -g gli 'gem list' 238 | abbr -a -g gout 'gem outdated' 239 | abbr -a -g guns 'gem uninstall' 240 | abbr -a -g gup 'gem update' 241 | abbr -a -g gus 'gem update --system' 242 | 243 | # Tmuxinator 244 | abbr -a -g mux tmuxinator 245 | abbr -a -g ms 'tmuxinator start' 246 | abbr -a -g msa 'tmuxinator start mac-bootstrap' 247 | abbr -a -g msb 'tmuxinator start bible_first_online' 248 | abbr -a -g msc 'tmuxinator start bf_curriculum' 249 | abbr -a -g msd 'tmuxinator start dot' 250 | abbr -a -g msl 'tmuxinator start laptop' 251 | abbr -a -g msm 'tmuxinator start mux' 252 | abbr -a -g msn 'tmuxinator start obsidian' 253 | abbr -a -g mso 'tmuxinator start ofreport' 254 | 255 | # Local servers 256 | abbr -a -g hts http-server 257 | abbr -a -g lvs live-server 258 | 259 | # Docker 260 | abbr -a -g dc 'docker compose' 261 | abbr -a -g dcu 'docker compose up -d' 262 | abbr -a -g dcb 'docker compose up --build -d' 263 | abbr -a -g dcd 'docker compose down' 264 | abbr -a -g dcv 'docker compose down -v' 265 | abbr -a -g dce 'docker compose exec' 266 | abbr -a -g dl 'docker logs' 267 | abbr -a -g dim 'docker images' 268 | abbr -a -g dnet 'docker network' 269 | abbr -a -g dps 'docker ps' 270 | abbr -a -g dpsa 'docker ps -a' 271 | abbr -a -g dsp 'docker system prune --all' 272 | -------------------------------------------------------------------------------- /fish/.config/fish/colors.fish: -------------------------------------------------------------------------------- 1 | # TokyoNight Color Palette 2 | set -l foreground c0caf5 3 | set -l selection 364a82 4 | set -l comment 565f89 5 | set -l red f7768e 6 | set -l orange ff9e64 7 | set -l yellow e0af68 8 | set -l green 9ece6a 9 | set -l purple 9d7cd8 10 | set -l cyan 7dcfff 11 | set -l pink bb9af7 12 | 13 | # Syntax Highlighting Colors 14 | set -g fish_color_normal $foreground 15 | set -g fish_color_command $cyan 16 | set -g fish_color_keyword $pink 17 | set -g fish_color_quote $yellow 18 | set -g fish_color_redirection $foreground 19 | set -g fish_color_end $orange 20 | set -g fish_color_error $red 21 | set -g fish_color_param $purple 22 | set -g fish_color_comment $comment 23 | set -g fish_color_selection --background=$selection 24 | set -g fish_color_search_match --background=$selection 25 | set -g fish_color_operator $green 26 | set -g fish_color_escape $pink 27 | set -g fish_color_autosuggestion $comment 28 | 29 | # Completion Pager Colors 30 | set -g fish_pager_color_progress $comment 31 | set -g fish_pager_color_prefix $cyan 32 | set -g fish_pager_color_completion $foreground 33 | set -g fish_pager_color_description $comment 34 | set -g fish_pager_color_selected_background --background=$selection 35 | -------------------------------------------------------------------------------- /fish/.config/fish/completions/asdf.fish: -------------------------------------------------------------------------------- 1 | set -x asdf_data_dir ( 2 | if test -n "$ASDF_DATA_DIR"; echo $ASDF_DATA_DIR; 3 | else; echo $HOME/.asdf; end) 4 | 5 | function __fish_asdf_needs_command 6 | set -l cmd (commandline -opc) 7 | if test (count $cmd) -eq 1 8 | return 0 9 | end 10 | return 1 11 | end 12 | 13 | function __fish_asdf_using_command -a current_command 14 | set -l cmd (commandline -opc) 15 | if test (count $cmd) -gt 1 16 | if test $current_command = $cmd[2] 17 | return 0 18 | end 19 | end 20 | return 1 21 | end 22 | 23 | function __fish_asdf_arg_number -a number 24 | set -l cmd (commandline -opc) 25 | test (count $cmd) -eq $number 26 | end 27 | 28 | function __fish_asdf_arg_at -a number 29 | set -l cmd (commandline -opc) 30 | echo $cmd[$number] 31 | end 32 | 33 | function __fish_asdf_list_versions -a plugin 34 | asdf list $plugin 2> /dev/null | sed -e 's/^[[:space:]]*//' 35 | end 36 | 37 | function __fish_asdf_list_all -a plugin 38 | asdf list-all $plugin 2> /dev/null 39 | end 40 | 41 | function __fish_asdf_plugin_list 42 | asdf plugin-list 2> /dev/null 43 | end 44 | 45 | function __fish_asdf_plugin_list_all 46 | asdf plugin-list-all 2> /dev/null 47 | end 48 | 49 | function __fish_asdf_list_shims 50 | ls $asdf_data_dir/shims 51 | end 52 | 53 | # update 54 | complete -f -c asdf -n '__fish_asdf_needs_command' -a update -d "Update asdf" 55 | complete -f -c asdf -n '__fish_asdf_using_command update; and __fish_asdf_arg_number 2' -l "head" -d "Updates to master HEAD" 56 | 57 | # plugin-add completion 58 | complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-add -d "Add git repo as plugin" 59 | complete -f -c asdf -n '__fish_asdf_using_command plugin-add; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list_all | grep -v \'*\' | awk \'{ print $1 }\')' 60 | complete -f -c asdf -n '__fish_asdf_using_command plugin-add; and __fish_asdf_arg_number 3' -a '(__fish_asdf_plugin_list_all | grep (__fish_asdf_arg_at 3) | awk \'{ print $2 }\')' 61 | complete -f -c asdf -n '__fish_asdf_using_command plugin-add; and __fish_asdf_arg_number 4' 62 | 63 | # plugin-list completion 64 | complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-list -d "List installed plugins" 65 | 66 | # plugin-list-all completion 67 | complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-list-all -d "List all existing plugins" 68 | 69 | # plugin-remove completion 70 | complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-remove -d "Remove plugin and package versions" 71 | complete -f -c asdf -n '__fish_asdf_using_command plugin-remove; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 72 | 73 | # plugin-update completion 74 | complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-update -d "Update plugin" 75 | complete -f -c asdf -n '__fish_asdf_using_command plugin-update; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 76 | complete -f -c asdf -n '__fish_asdf_using_command plugin-update; and __fish_asdf_arg_number 2' -a --all 77 | 78 | # install completion 79 | complete -f -c asdf -n '__fish_asdf_needs_command' -a install -d "Install a specific version of a package" 80 | complete -f -c asdf -n '__fish_asdf_using_command install; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 81 | complete -f -c asdf -n '__fish_asdf_using_command install; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_all (__fish_asdf_arg_at 3))' 82 | 83 | # uninstall completion 84 | complete -f -c asdf -n '__fish_asdf_needs_command' -a uninstall -d "Remove a specific version of a package" 85 | complete -f -c asdf -n '__fish_asdf_using_command uninstall; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 86 | complete -f -c asdf -n '__fish_asdf_using_command uninstall; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3))' 87 | 88 | # current completion 89 | complete -f -c asdf -n '__fish_asdf_needs_command' -a current -d "Display version set or being used for package" 90 | complete -f -c asdf -n '__fish_asdf_using_command current; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 91 | 92 | # where completion 93 | complete -f -c asdf -n '__fish_asdf_needs_command' -a where -d "Display install path for an installed version" 94 | complete -f -c asdf -n '__fish_asdf_using_command where; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 95 | complete -f -c asdf -n '__fish_asdf_using_command where; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3))' 96 | 97 | # which completion 98 | complete -f -c asdf -n '__fish_asdf_needs_command' -a which -d "Display executable path for a command" 99 | complete -f -c asdf -n '__fish_asdf_using_command which; and __fish_asdf_arg_number 2' -a '(__fish_asdf_list_shims)' 100 | 101 | # latest completion 102 | complete -f -c asdf -n '__fish_asdf_needs_command' -a latest -d "Show latest stable version of a package" 103 | complete -f -c asdf -n '__fish_asdf_using_command latest; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 104 | 105 | # list completion 106 | complete -f -c asdf -n '__fish_asdf_needs_command' -a list -d "List installed versions of a package" 107 | complete -f -c asdf -n '__fish_asdf_using_command list; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 108 | 109 | # list-all completion 110 | complete -f -c asdf -n '__fish_asdf_needs_command' -a list-all -d "List all versions of a package" 111 | complete -f -c asdf -n '__fish_asdf_using_command list-all; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 112 | 113 | # reshim completion 114 | complete -f -c asdf -n '__fish_asdf_needs_command' -a reshim -d "Recreate shims for version of a package" 115 | complete -f -c asdf -n '__fish_asdf_using_command reshim; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 116 | complete -f -c asdf -n '__fish_asdf_using_command reshim; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3))' 117 | 118 | # local completion 119 | complete -f -c asdf -n '__fish_asdf_needs_command' -a local -d "Set local version for a plugin" 120 | complete -f -c asdf -n '__fish_asdf_using_command local; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 121 | complete -f -c asdf -n '__fish_asdf_using_command local; and test (count (commandline -opc)) -gt 2' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3)) system' 122 | 123 | # global completion 124 | complete -f -c asdf -n '__fish_asdf_needs_command' -a global -d "Set global version for a plugin" 125 | complete -f -c asdf -n '__fish_asdf_using_command global; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 126 | complete -f -c asdf -n '__fish_asdf_using_command global; and test (count (commandline -opc)) -gt 2' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3)) system' 127 | 128 | # shell completion 129 | complete -f -c asdf -n '__fish_asdf_needs_command' -a shell -d "Set version for a plugin in current shell session" 130 | complete -f -c asdf -n '__fish_asdf_using_command shell; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)' 131 | complete -f -c asdf -n '__fish_asdf_using_command shell; and test (count (commandline -opc)) -gt 2' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3)) system' 132 | 133 | # misc 134 | complete -f -c asdf -n '__fish_asdf_needs_command' -l "help" -d "Displays help" 135 | complete -f -c asdf -n '__fish_asdf_needs_command' -l "version" -d "Displays asdf version" 136 | -------------------------------------------------------------------------------- /fish/.config/fish/completions/tmuxinator.fish: -------------------------------------------------------------------------------- 1 | function __fish_tmuxinator_using_command 2 | set cmd (commandline -opc) 3 | if [ (count $cmd) -gt 1 ] 4 | if [ $argv[1] = $cmd[2] ] 5 | return 0 6 | end 7 | end 8 | return 1 9 | end 10 | 11 | set __fish_tmuxinator_program_cmd (commandline -o)[1] 12 | 13 | function __fish_tmuxinator_program 14 | eval "$__fish_tmuxinator_program_cmd $argv" 15 | end 16 | 17 | complete -f -c $__fish_tmuxinator_program_cmd -a '(__fish_tmuxinator_program completions start)' 18 | complete -f -c $__fish_tmuxinator_program_cmd -n '__fish_use_subcommand' -x -a "(__fish_tmuxinator_program commands)" 19 | complete -f -c $__fish_tmuxinator_program_cmd -n '__fish_tmuxinator_using_command start' -a "(__fish_tmuxinator_program completions start)" 20 | complete -f -c $__fish_tmuxinator_program_cmd -n '__fish_tmuxinator_using_command open' -a "(__fish_tmuxinator_program completions open)" 21 | complete -f -c $__fish_tmuxinator_program_cmd -n '__fish_tmuxinator_using_command copy' -a "(__fish_tmuxinator_program completions copy)" 22 | complete -f -c $__fish_tmuxinator_program_cmd -n '__fish_tmuxinator_using_command delete' -a "(__fish_tmuxinator_program completions delete)" 23 | 24 | abbr --add mux "tmuxinator" 25 | -------------------------------------------------------------------------------- /fish/.config/fish/config.fish: -------------------------------------------------------------------------------- 1 | # https://fishshell.com/docs/current/index.html 2 | 3 | # set fish_greeting # supress fish greeting 4 | 5 | if test (arch) = arm64 6 | eval (/opt/homebrew/bin/brew shellenv) 7 | else 8 | eval (/usr/local/bin/brew shellenv) 9 | end 10 | 11 | # Environment variables - https://fishshell.com/docs/current/cmds/set.html 12 | set -gx EDITOR nvim 13 | set -gx GIT_EDITOR nvim 14 | set -gx BUNDLER_EDITOR $EDITOR 15 | set -gx MANPAGER 'less -X' # Don’t clear the screen after quitting a manual page 16 | set -gx HOMEBREW_CASK_OPTS '--appdir=/Applications' 17 | set -gx SOURCE_ANNOTATION_DIRECTORIES spec 18 | set -gx RUBY_CONFIGURE_OPTS "--with-opt-dir=$HOMEBREW_PREFIX/opt/openssl:$HOMEBREW_PREFIX/opt/readline:$HOMEBREW_PREFIX/opt/libyaml:$HOMEBREW_PREFIX/opt/gdbm" 19 | set -gx XDG_CONFIG_HOME "$HOME/.config" 20 | set -gx XDG_DATA_HOME "$HOME/.local/share" 21 | set -gx XDG_CACHE_HOME "$HOME/.cache" 22 | set -gx XDG_STATE_HOME "$HOME/.local/state" 23 | set -gx DOTFILES "$HOME/dotfiles" 24 | set -gx RIPGREP_CONFIG_PATH "$HOME/.ripgreprc" 25 | set -gx SSH_AUTH_SOCK "$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" 26 | 27 | # FZF specific - https://github.com/junegunn/fzf#key-bindings-for-command-line 28 | set -gx FZF_DEFAULT_COMMAND 'rg --files --hidden --follow --no-ignore-vcs' 29 | set -gx FZF_DEFAULT_OPTS '--height 75% --layout=reverse --border' 30 | set -gx FZF_CTRL_T_COMMAND $FZF_DEFAULT_COMMAND 31 | set -gx FZF_ALT_C_COMMAND 'fd --type d . --color=never' 32 | 33 | fish_vi_key_bindings 34 | 35 | if status is-interactive 36 | source $XDG_CONFIG_HOME/fish/abbreviations.fish 37 | source $XDG_CONFIG_HOME/fish/colors.fish 38 | 39 | # https://github.com/starship/starship#fish 40 | starship init fish | source 41 | 42 | # https://github.com/ajeetdsouza/zoxide 43 | zoxide init fish | source 44 | 45 | if test -e $HOME/.secrets/config.fish.local 46 | source $HOME/.secrets/config.fish.local 47 | end 48 | end 49 | 50 | # tabtab source for packages 51 | # uninstall by removing these lines 52 | [ -f ~/.config/tabtab/__tabtab.fish ]; and . ~/.config/tabtab/__tabtab.fish; or true 53 | 54 | source ~/.asdf/asdf.fish 55 | 56 | set OP_PLUGINS "$HOME/.config/op" 57 | 58 | if test -d "$OP_PLUGINS" 59 | source ~/.config/op/plugins.sh 60 | else 61 | echo "Directory does not exist: $OP_PLUGINS. Please reference https://developer.1password.com/docs/cli for installation instructions." 62 | end 63 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/addpaths.fish: -------------------------------------------------------------------------------- 1 | function addpaths 2 | contains -- $argv $fish_user_paths 3 | or set -U fish_user_paths $fish_user_paths $argv 4 | echo "Updated PATH: $PATH" 5 | end 6 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/aua.fish: -------------------------------------------------------------------------------- 1 | function aua 2 | asdf update 3 | and asdf plugin-update --all 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/bb.fish: -------------------------------------------------------------------------------- 1 | function bb 2 | if [ -e $HOME/Brewfile ] 3 | echo "-> Bundling Brewfile located at $HOME/Brewfile" 4 | sleep 2 5 | brew bundle --file $HOME/Brewfile 6 | else 7 | echo "Brewfile not found." 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/bbc.fish: -------------------------------------------------------------------------------- 1 | function bbc 2 | if [ -e $HOME/Brewfile ] 3 | echo "-> Running bundle cleanup dry-run for Brewfile located at $HOME/Brewfile" 4 | sleep 2 5 | brew bundle cleanup --file $HOME/Brewfile 6 | else 7 | echo "Brewfile not found." 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/bbcf.fish: -------------------------------------------------------------------------------- 1 | function bbcf 2 | if [ -e $HOME/Brewfile ] 3 | echo "-> Running bundle cleanup (force) for Brewfile located at $HOME/Brewfile" 4 | sleep 2 5 | brew bundle cleanup --force --file $HOME/Brewfile 6 | else 7 | echo "Brewfile not found." 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/bubo.fish: -------------------------------------------------------------------------------- 1 | function bubo 2 | brew update 3 | and brew outdated 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/cat.fish: -------------------------------------------------------------------------------- 1 | function cat 2 | bat $argv 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/copy.fish: -------------------------------------------------------------------------------- 1 | function copy 2 | echo $argv | tr -d "\n" | pbcopy 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/copycwd.fish: -------------------------------------------------------------------------------- 1 | function copycwd 2 | echo "Choose how to display the home directory:" 3 | echo "1) ~" 4 | echo "2) \$HOME" 5 | echo "3) $HOME" 6 | read -P "Enter choice (1, 2, or 3): " choice 7 | 8 | switch $choice 9 | case 1 10 | pwd | sed "s|^$HOME|~|" | tr -d '\n' | pbcopy 11 | echo "Current path copied to clipboard with ~ as home directory." 12 | case 2 13 | pwd | sed "s|^$HOME|\$HOME|" | tr -d '\n' | pbcopy 14 | echo "Current path copied to clipboard with \$HOME as home directory." 15 | case 3 16 | pwd | tr -d '\n' | pbcopy 17 | echo "Current path copied to clipboard with full path as home directory." 18 | case '*' 19 | echo "Invalid choice. Please enter 1, 2, or 3." 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/cp.fish: -------------------------------------------------------------------------------- 1 | function cp 2 | gcp -iv $argv 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ct.fish: -------------------------------------------------------------------------------- 1 | function ct 2 | ctags -R --languages=ruby --exclude=.git --exclude=log . (bundle list --paths) 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/dsx.fish: -------------------------------------------------------------------------------- 1 | function dsx -d "Recursively remove all .DS_Store files" 2 | set count (fd -HI '^\.DS_Store$' --type f | wc -l) 3 | 4 | if test ! $count -eq 0 5 | fd -HI '^\.DS_Store$' --type f -X rm 6 | echo "$count .DS_Store files removed." 7 | else 8 | echo "No .DS_Store files were found." 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ed.fish: -------------------------------------------------------------------------------- 1 | function ed 2 | $EDITOR $DOTFILES 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/efl.fish: -------------------------------------------------------------------------------- 1 | function efl 2 | $EDITOR ~/.fish.local 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/et.fish: -------------------------------------------------------------------------------- 1 | function et 2 | $EDITOR ~/.tmux.conf 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ev.fish: -------------------------------------------------------------------------------- 1 | function ev 2 | $EDITOR $XDG_CONFIG_HOME/nvim/init.vim 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/evl.fish: -------------------------------------------------------------------------------- 1 | function evl 2 | $EDITOR ~/.vimrc.local 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/fish_user_key_bindings.fish: -------------------------------------------------------------------------------- 1 | function fish_user_key_bindings 2 | fzf --fish | source 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/fkill.fish: -------------------------------------------------------------------------------- 1 | function fkill -d "Fuzzy kill" 2 | set pid (ps -ef | sed 1d | fzf -m | awk '{print $2}') 3 | 4 | if test -n "$pid" 5 | echo $pid | xargs kill -9 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/g.fish: -------------------------------------------------------------------------------- 1 | function g 2 | if count $argv >/dev/null 3 | git $argv 4 | else 5 | clear && git status --short --branch && echo 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/gbrm.fish: -------------------------------------------------------------------------------- 1 | function gbrm 2 | git branch --merged master | grep -v "^\*\| master" | xargs -n 1 git branch -d 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/gl.fish: -------------------------------------------------------------------------------- 1 | function gl 2 | git log --date=format:"%b %d, %Y" --pretty=format:"%C(yellow bold)%h%Creset%C(white)%d%Creset %s%n%C(blue)%aN <%ae> | %cd%n" 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/glg.fish: -------------------------------------------------------------------------------- 1 | function glg 2 | git log --graph --stat --date=format:"%b %d, %Y" --pretty=format:"%C(yellow bold)%h%Creset%C(white)%d%Creset %s%n%C(blue)%aN <%ae> | %cd%n" 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/gwip.fish: -------------------------------------------------------------------------------- 1 | function gwip 2 | git add -A 3 | git rm (git ls-files --deleted) 2>/dev/null 4 | git commit --no-verify -m "--wip--" 5 | end 6 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/haf.fish: -------------------------------------------------------------------------------- 1 | # You can also toggle hidden files from the Finder GUI with Cmd + Shift + . 2 | 3 | function haf 4 | defaults write com.apple.finder AppleShowAllFiles FALSE 5 | killall Finder 6 | end 7 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/htop.fish: -------------------------------------------------------------------------------- 1 | function htop 2 | sudo htop 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/l.fish: -------------------------------------------------------------------------------- 1 | function l 2 | ls -lhF --git $argv 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/la.fish: -------------------------------------------------------------------------------- 1 | function la 2 | ls -lahF --git $argv 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ll.fish: -------------------------------------------------------------------------------- 1 | function ll 2 | ls -lhF --git $argv 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ls.fish: -------------------------------------------------------------------------------- 1 | function ls 2 | eza --group-directories-first --icons $argv 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/mm.fish: -------------------------------------------------------------------------------- 1 | function mm 2 | bundle exec middleman 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/mmb.fish: -------------------------------------------------------------------------------- 1 | function mmb 2 | bundle exec middleman build --clean 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/mmc.fish: -------------------------------------------------------------------------------- 1 | function mmc 2 | bundle exec middleman console -e console 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/mms.fish: -------------------------------------------------------------------------------- 1 | function mms 2 | bundle exec middleman server 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/path.fish: -------------------------------------------------------------------------------- 1 | function path 2 | echo $PATH | tr " " "\n" | nl 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/pi.fish: -------------------------------------------------------------------------------- 1 | function pi 2 | if count $argv >/dev/null 3 | ping -Anc 5 $argv 4 | else 5 | ping -Anc 5 1.1.1.1 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/psq.fish: -------------------------------------------------------------------------------- 1 | function psq 2 | pgcli -d postgres 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/removepath.fish: -------------------------------------------------------------------------------- 1 | function removepath 2 | if set -l index (contains -i $argv[1] $PATH) 3 | set --erase --universal fish_user_paths[$index] 4 | echo "Updated PATH: $PATH" 5 | else 6 | echo "$argv[1] not found in PATH: $PATH" 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/rlv.fish: -------------------------------------------------------------------------------- 1 | function rlv 2 | asdf list-all ruby | rg '^\d' 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/saf.fish: -------------------------------------------------------------------------------- 1 | # You can also toggle hidden files from the Finder GUI with Cmd + Shift + . 2 | function saf 3 | defaults write com.apple.finder AppleShowAllFiles TRUE 4 | killall Finder 5 | end 6 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/sha256.fish: -------------------------------------------------------------------------------- 1 | function sha256 2 | printf "%s %s\n" "$argv[1]" "$argv[2]" | sha256sum --check 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/src.fish: -------------------------------------------------------------------------------- 1 | function src 2 | exec fish 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/startpost.fish: -------------------------------------------------------------------------------- 1 | function startpost 2 | brew services start postgresql 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/statpost.fish: -------------------------------------------------------------------------------- 1 | function statpost 2 | ps aux | rg postgres 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/stoppost.fish: -------------------------------------------------------------------------------- 1 | function stoppost 2 | brew services stop postgresql 3 | end 4 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ta.fish: -------------------------------------------------------------------------------- 1 | # Makes attaching to an existing tmux session (with a specific name) easier 2 | function ta 3 | tmux attach -t $argv 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/tk.fish: -------------------------------------------------------------------------------- 1 | # Makes deleting a tmux session easier 2 | function tk 3 | tmux kill-session -t $argv 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/tka.fish: -------------------------------------------------------------------------------- 1 | # Kill all tmux sessions 2 | function tka 3 | tmux ls | cut -d : -f 1 | xargs -I {} tmux kill-session -t {} 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/tn.fish: -------------------------------------------------------------------------------- 1 | # Makes creating a new tmux session (with a specific name) easier 2 | function tn 3 | tmux new -s $argv 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/tna.fish: -------------------------------------------------------------------------------- 1 | # Create a new session named for current directory, or attach if exists. 2 | function tna 3 | tmux new-session -As (basename "$PWD" | tr . -) 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/tsrc.fish: -------------------------------------------------------------------------------- 1 | # Source .tmux.conf 2 | function tsrc 3 | tmux source-file $HOME/.tmux.conf 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/update_jumpstart.fish: -------------------------------------------------------------------------------- 1 | function update_jumpstart 2 | git fetch jumpstart-pro 3 | git merge jumpstart-pro/main 4 | end 5 | -------------------------------------------------------------------------------- /fish/.config/fish/functions/ygs.fish: -------------------------------------------------------------------------------- 1 | function ygs -d "Build a Nuxt site and serve from the dist/ folder." 2 | yarn generate 3 | and http-server dist/ -p 8080 4 | end 5 | -------------------------------------------------------------------------------- /ghostty/.config/ghostty/config: -------------------------------------------------------------------------------- 1 | # To generate a new list of the default values: 2 | # ghostty +show-config --default --docs > ~/dotfiles/ghostty/config-default 3 | # 4 | # Online documentation: 5 | # https://ghostty.org/docs/config/reference 6 | 7 | theme = tokyonight_moon 8 | 9 | # Font settings 10 | font-family = Cascadia Code 11 | font-size = 17 12 | adjust-cell-height = 6 13 | 14 | # Cursor settings 15 | cursor-style = block 16 | shell-integration-features = no-cursor 17 | 18 | # Window settings 19 | window-padding-x = 7 20 | window-padding-y = 7 21 | window-width = 140 22 | window-height = 35 23 | window-save-state = always 24 | 25 | # Split navigation 26 | keybind = ctrl+shift+k=goto_split:top 27 | keybind = ctrl+shift+j=goto_split:bottom 28 | keybind = ctrl+shift+h=goto_split:left 29 | keybind = ctrl+shift+l=goto_split:right 30 | 31 | # Split resizing 32 | keybind = super+ctrl+down=resize_split:down,100 33 | keybind = super+ctrl+left=resize_split:left,100 34 | keybind = super+ctrl+up=resize_split:up,100 35 | keybind = super+ctrl+right=resize_split:right,100 36 | -------------------------------------------------------------------------------- /git/.gitconfig: -------------------------------------------------------------------------------- 1 | # https://git-scm.com/docs/git-config 2 | 3 | [alias] 4 | a = add 5 | aa = add --all 6 | ap = add --patch 7 | b = branch 8 | ba = branch --all 9 | br = branch --remote 10 | ca = commit --amend 11 | cm = commit -v 12 | cl = clone 13 | co = checkout 14 | com = checkout master 15 | df = diff 16 | dc = diff --cached 17 | f = fetch 18 | l = log --date=format:'%b %d, %Y' --pretty=format:'%C(yellow bold)%h%Creset%C(white)%d%Creset %s%n%C(blue)%aN <%ae> | %cd%n' 19 | lg = log --graph --stat --date=format:'%b %d, %Y' --pretty=format:'%C(yellow bold)%h%Creset%C(white)%d%Creset %s%n%C(blue)%aN <%ae> | %cd%n' 20 | pl = pull 21 | ps = push 22 | psf = push --force-with-lease 23 | pum = push -u origin master 24 | recent = for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))' 25 | rv = remote -v 26 | s = status 27 | tl = tag --list 28 | re = reset 29 | rsh = reset --soft HEAD^ 30 | wch = whatchanged -p --abbrev-commit --pretty=medium -10 31 | 32 | [apply] 33 | whitespace = nowarn 34 | 35 | [color] 36 | ui = true 37 | 38 | [color "branch"] 39 | current = white bold 40 | local = yellow 41 | remote = cyan 42 | 43 | [color "diff"] 44 | frag = cyan bold 45 | meta = white 46 | new = green bold 47 | old = red bold 48 | commit = yellow bold 49 | whitespace = red reverse 50 | 51 | [color "diff-highlight"] 52 | oldNormal = red bold 53 | oldHighlight = red bold 52 54 | newNormal = green bold 55 | newHighlight = green bold 22 56 | 57 | [color "status"] 58 | untracked = cyan 59 | 60 | [commit] 61 | template = ~/.gitmessage 62 | gpgSign = true 63 | 64 | [core] 65 | autocrlf = input 66 | excludesfile = ~/.gitignore_global 67 | ignorecase = false 68 | safecrlf = warn 69 | abbrev = 7 70 | editor = nvim 71 | 72 | [diff] 73 | tool = vimdiff3 74 | submodule = log 75 | 76 | [pager] 77 | diff = diff-so-fancy | less --tabs=4 -RFXS 78 | log = less -+X 79 | 80 | [fetch] 81 | prune = true 82 | 83 | [gitsh] 84 | defaultCommand = status --short --branch 85 | 86 | [gitsh "color"] 87 | default = blue 88 | modified = red 89 | untracked = cyan 90 | 91 | [include] 92 | path = ~/.gitconfig.local 93 | 94 | [init] 95 | defaultBranch = master 96 | 97 | [mailmap] 98 | # Display commit author names based on global mailmap file. 99 | file = ~/.mailmap 100 | 101 | [merge] 102 | conflictstyle = diff3 103 | 104 | # Always create local merge commits when merging. 105 | ff = false 106 | 107 | [pull] 108 | # Don't flatten locally created merge commits when rebasing. 109 | rebase = merges 110 | 111 | [push] 112 | # Refuse to push if upstream branch name is different from local. 113 | default = simple 114 | 115 | [status] 116 | submoduleSummary = true 117 | 118 | [tag] 119 | gpgSign = true 120 | 121 | [url "https://github.com/"] 122 | insteadOf = git@github.com: 123 | 124 | [url "https://"] 125 | insteadOf = git:// 126 | -------------------------------------------------------------------------------- /git/.gitignore_global: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/macos,linux,vim,rails,node 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos,linux,vim,rails,node 3 | 4 | ### Linux ### 5 | *~ 6 | 7 | # temporary files which can be created if a process still has a handle open of a deleted file 8 | .fuse_hidden* 9 | 10 | # KDE directory preferences 11 | .directory 12 | 13 | # Linux trash folder which might appear on any partition or disk 14 | .Trash-* 15 | 16 | # .nfs files are created when an open file is removed but is still being accessed 17 | .nfs* 18 | 19 | ### macOS ### 20 | # General 21 | .DS_Store 22 | .AppleDouble 23 | .LSOverride 24 | 25 | # Icon must end with two \r 26 | Icon 27 | 28 | # Thumbnails 29 | ._* 30 | 31 | # Files that might appear in the root of a volume 32 | .DocumentRevisions-V100 33 | .fseventsd 34 | .Spotlight-V100 35 | .TemporaryItems 36 | .Trashes 37 | .VolumeIcon.icns 38 | .com.apple.timemachine.donotpresent 39 | 40 | # Directories potentially created on remote AFP share 41 | .AppleDB 42 | .AppleDesktop 43 | Network Trash Folder 44 | Temporary Items 45 | .apdisk 46 | 47 | ### macOS Patch ### 48 | # iCloud generated files 49 | *.icloud 50 | 51 | ### Node ### 52 | # Logs 53 | logs 54 | *.log 55 | npm-debug.log* 56 | yarn-debug.log* 57 | yarn-error.log* 58 | lerna-debug.log* 59 | .pnpm-debug.log* 60 | 61 | # Diagnostic reports (https://nodejs.org/api/report.html) 62 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 63 | 64 | # Runtime data 65 | pids 66 | *.pid 67 | *.seed 68 | *.pid.lock 69 | 70 | # Directory for instrumented libs generated by jscoverage/JSCover 71 | lib-cov 72 | 73 | # Coverage directory used by tools like istanbul 74 | coverage 75 | *.lcov 76 | 77 | # nyc test coverage 78 | .nyc_output 79 | 80 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 81 | .grunt 82 | 83 | # Bower dependency directory (https://bower.io/) 84 | bower_components 85 | 86 | # node-waf configuration 87 | .lock-wscript 88 | 89 | # Compiled binary addons (https://nodejs.org/api/addons.html) 90 | build/Release 91 | 92 | # Dependency directories 93 | node_modules/ 94 | jspm_packages/ 95 | 96 | # Snowpack dependency directory (https://snowpack.dev/) 97 | web_modules/ 98 | 99 | # TypeScript cache 100 | *.tsbuildinfo 101 | 102 | # Optional npm cache directory 103 | .npm 104 | 105 | # Optional eslint cache 106 | .eslintcache 107 | 108 | # Optional stylelint cache 109 | .stylelintcache 110 | 111 | # Microbundle cache 112 | .rpt2_cache/ 113 | .rts2_cache_cjs/ 114 | .rts2_cache_es/ 115 | .rts2_cache_umd/ 116 | 117 | # Optional REPL history 118 | .node_repl_history 119 | 120 | # Output of 'npm pack' 121 | *.tgz 122 | 123 | # Yarn Integrity file 124 | .yarn-integrity 125 | 126 | # dotenv environment variable files 127 | .env 128 | .env.development.local 129 | .env.test.local 130 | .env.production.local 131 | .env.local 132 | 133 | # parcel-bundler cache (https://parceljs.org/) 134 | .cache 135 | .parcel-cache 136 | 137 | # Next.js build output 138 | .next 139 | out 140 | 141 | # Nuxt.js build / generate output 142 | .nuxt 143 | dist 144 | 145 | # Gatsby files 146 | .cache/ 147 | # Comment in the public line in if your project uses Gatsby and not Next.js 148 | # https://nextjs.org/blog/next-9-1#public-directory-support 149 | # public 150 | 151 | # vuepress build output 152 | .vuepress/dist 153 | 154 | # vuepress v2.x temp and cache directory 155 | .temp 156 | 157 | # Docusaurus cache and generated files 158 | .docusaurus 159 | 160 | # Serverless directories 161 | .serverless/ 162 | 163 | # FuseBox cache 164 | .fusebox/ 165 | 166 | # DynamoDB Local files 167 | .dynamodb/ 168 | 169 | # TernJS port file 170 | .tern-port 171 | 172 | # Stores VSCode versions used for testing VSCode extensions 173 | .vscode-test 174 | 175 | # yarn v2 176 | .yarn/cache 177 | .yarn/unplugged 178 | .yarn/build-state.yml 179 | .yarn/install-state.gz 180 | .pnp.* 181 | 182 | ### Node Patch ### 183 | # Serverless Webpack directories 184 | .webpack/ 185 | 186 | # Optional stylelint cache 187 | 188 | # SvelteKit build / generate output 189 | .svelte-kit 190 | 191 | ### Rails ### 192 | *.rbc 193 | capybara-*.html 194 | .rspec 195 | /db/*.sqlite3 196 | /db/*.sqlite3-journal 197 | /db/*.sqlite3-[0-9]* 198 | /public/system 199 | /coverage/ 200 | /spec/tmp 201 | *.orig 202 | rerun.txt 203 | pickle-email-*.html 204 | 205 | # Ignore all logfiles and tempfiles. 206 | /log/* 207 | /tmp/* 208 | !/log/.keep 209 | !/tmp/.keep 210 | 211 | # TODO Comment out this rule if you are OK with secrets being uploaded to the repo 212 | config/initializers/secret_token.rb 213 | config/master.key 214 | 215 | # Only include if you have production secrets in this file, which is no longer a Rails default 216 | # config/secrets.yml 217 | 218 | # dotenv, dotenv-rails 219 | # TODO Comment out these rules if environment variables can be committed 220 | .env*.local 221 | 222 | ## Environment normalization: 223 | /.bundle 224 | /vendor/bundle 225 | 226 | # these should all be checked in to normalize the environment: 227 | # Gemfile.lock, .ruby-version, .ruby-gemset 228 | 229 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 230 | .rvmrc 231 | 232 | # if using bower-rails ignore default bower_components path bower.json files 233 | /vendor/assets/bower_components 234 | *.bowerrc 235 | bower.json 236 | 237 | # Ignore pow environment settings 238 | .powenv 239 | 240 | # Ignore Byebug command history file. 241 | .byebug_history 242 | 243 | # Ignore precompiled javascript packs 244 | /public/packs 245 | /public/packs-test 246 | /public/assets 247 | 248 | # Ignore yarn files 249 | /yarn-error.log 250 | 251 | # Ignore uploaded files in development 252 | /storage/* 253 | !/storage/.keep 254 | /public/uploads 255 | 256 | ### Vim ### 257 | # Swap 258 | [._]*.s[a-v][a-z] 259 | !*.svg # comment out if you don't need vector files 260 | [._]*.sw[a-p] 261 | [._]s[a-rt-v][a-z] 262 | [._]ss[a-gi-z] 263 | [._]sw[a-p] 264 | 265 | # Session 266 | Session.vim 267 | Sessionx.vim 268 | 269 | # Temporary 270 | .netrwhist 271 | # Auto-generated tag files 272 | tags 273 | # Persistent undo 274 | [._]*.un~ 275 | 276 | # End of https://www.toptal.com/developers/gitignore/api/macos,linux,vim,rails,node 277 | 278 | *.local 279 | foo.* 280 | -------------------------------------------------------------------------------- /git/.gitmessage: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 50-character subject line 4 | # * Present tense 5 | # 6 | # 72-character wrapped longer description. This should answer: 7 | # * Why was this change necessary? 8 | # * How does it address the problem? 9 | # * Are there any side effects? 10 | -------------------------------------------------------------------------------- /iterm/.stow-local-ignore: -------------------------------------------------------------------------------- 1 | .+ # Ignore everything 2 | -------------------------------------------------------------------------------- /iterm/colors/Tender.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.40000000596046448 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.40000000596046448 15 | Red Component 16 | 0.40000000596046448 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.32549020648002625 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.21568627655506134 28 | Red Component 29 | 0.95686274766921997 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.0 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.66666668653488159 41 | Red Component 42 | 0.62352943420410156 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.29411765933036804 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.7607843279838562 54 | Red Component 55 | 1 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.95686274766921997 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.80784314870834351 67 | Red Component 68 | 0.45098039507865906 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.52941179275512695 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.72549021244049072 80 | Red Component 81 | 0.82745099067687988 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.93725490570068359 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.87058824300765991 93 | Red Component 94 | 0.70196080207824707 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 1 102 | Color Space 103 | sRGB 104 | Green Component 105 | 1 106 | Red Component 107 | 0.99999600648880005 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.36078432202339172 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.81568628549575806 119 | Red Component 120 | 0.78823530673980713 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.29411765933036804 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.7607843279838562 132 | Red Component 133 | 1 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.93725490570068359 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.87058824300765991 145 | Red Component 146 | 0.70196080207824707 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.52941179275512695 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.72549021244049072 158 | Red Component 159 | 0.82745099067687988 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.55294120311737061 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.46666666865348816 171 | Red Component 172 | 0.26666668057441711 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.93333333730697632 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.93333333730697632 184 | Red Component 185 | 0.93333333730697632 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.40000000596046448 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.40000000596046448 197 | Red Component 198 | 0.40000000596046448 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.18431372940540314 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.08235294371843338 210 | Red Component 211 | 0.77254903316497803 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.15686275064945221 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.15686275064945221 223 | Red Component 224 | 0.15686275064945221 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.0 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.1491314172744751 236 | Red Component 237 | 1 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.89999991655349731 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.97826081514358521 249 | Red Component 250 | 1 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.39999991655349731 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.7999998927116394 262 | Red Component 263 | 1 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 1 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.9268307089805603 275 | Red Component 276 | 0.70213186740875244 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 1 284 | Color Space 285 | sRGB 286 | Green Component 287 | 1 288 | Red Component 289 | 0.99999600648880005 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.93333333730697632 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.93333333730697632 301 | Red Component 302 | 0.93333333730697632 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.85098046064376831 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.58039218187332153 314 | Red Component 315 | 0.043137438595294952 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.80784308910369873 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.84313732385635376 327 | Red Component 328 | 0.85098057985305786 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.27843135595321655 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.23137250542640686 340 | Red Component 341 | 0.19215685129165649 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /iterm/colors/material.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.0 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.0 15 | Red Component 16 | 0.0 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.43921568989753723 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.32549020648002625 28 | Red Component 29 | 1 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.55294120311737061 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.90980392694473267 41 | Red Component 42 | 0.76470589637756348 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.41960784792900085 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.79607844352722168 54 | Red Component 55 | 1 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 1 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.66666668653488159 67 | Red Component 68 | 0.50980395078659058 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.91764706373214722 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.57254904508590698 80 | Red Component 81 | 0.78039216995239258 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 1 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.86666667461395264 93 | Red Component 94 | 0.5372549295425415 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 1 102 | Color Space 103 | sRGB 104 | Green Component 105 | 1 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.55294120311737061 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.90980392694473267 119 | Red Component 120 | 0.76470589637756348 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.41960784792900085 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.79607844352722168 132 | Red Component 133 | 1 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 1 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.66666668653488159 145 | Red Component 146 | 0.50980395078659058 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.91764706373214722 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.57254904508590698 158 | Red Component 159 | 0.78039216995239258 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 1 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.86666667461395264 171 | Red Component 172 | 0.5372549295425415 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 1 180 | Color Space 181 | sRGB 182 | Green Component 183 | 1 184 | Red Component 185 | 0.93333333730697632 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.47843137383460999 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.43137255311012268 197 | Red Component 198 | 0.32941177487373352 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.43921568989753723 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.32549020648002625 210 | Red Component 211 | 1 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.21960784494876862 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.19607843458652496 223 | Red Component 224 | 0.14901961386203766 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.0 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.1491314172744751 236 | Red Component 237 | 1 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 1 245 | Color Space 246 | sRGB 247 | Green Component 248 | 1 249 | Red Component 250 | 0.93333333730697632 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.0 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.80000001192092896 262 | Red Component 263 | 1 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 1 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.9268307089805603 275 | Red Component 276 | 0.70213186740875244 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.21960784494876862 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.19607843458652496 288 | Red Component 289 | 0.14901961386203766 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 1 297 | Color Space 298 | sRGB 299 | Green Component 300 | 1 301 | Red Component 302 | 0.93333333730697632 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.70196080207824707 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.50196081399917603 314 | Red Component 315 | 0.73333334922790527 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 1 323 | Color Space 324 | sRGB 325 | Green Component 326 | 1 327 | Red Component 328 | 0.93333333730697632 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.25490197539329529 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.23137255012989044 340 | Red Component 341 | 0.17254902422428131 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /iterm/colors/monokai_tasty.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.14901961386203766 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.14901961386203766 15 | Red Component 16 | 0.14901961386203766 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.37254902720451355 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.0 28 | Red Component 29 | 1 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.0 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.89411765336990356 41 | Red Component 42 | 0.64313727617263794 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.52941179275512695 50 | Color Space 51 | sRGB 52 | Green Component 53 | 1 54 | Red Component 55 | 1 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.94509804248809814 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.84705883264541626 67 | Red Component 68 | 0.38431373238563538 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.37254902720451355 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.0 80 | Red Component 81 | 1 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 1 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.52941179275512695 93 | Red Component 94 | 0.68627452850341797 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 1 102 | Color Space 103 | sRGB 104 | Green Component 105 | 1 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.0 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.89411765336990356 119 | Red Component 120 | 0.64313727617263794 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.0 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.59215688705444336 132 | Red Component 133 | 1 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.94509804248809814 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.84705883264541626 145 | Red Component 146 | 0.38431373238563538 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.37254902720451355 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.0 158 | Red Component 159 | 1 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.69803923368453979 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.70196080207824707 171 | Red Component 172 | 0.37254902720451355 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.26666668057441711 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.26666668057441711 184 | Red Component 185 | 0.26666668057441711 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.73725491762161255 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.73725491762161255 197 | Red Component 198 | 0.73725491762161255 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.0 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.59215688705444336 210 | Red Component 211 | 1 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.14901961386203766 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.14901961386203766 223 | Red Component 224 | 0.14901961386203766 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.43921568989753723 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.10196078568696976 236 | Red Component 237 | 0.98823529481887817 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 1 245 | Color Space 246 | sRGB 247 | Green Component 248 | 1 249 | Red Component 250 | 1 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.0 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.89411765336990356 262 | Red Component 263 | 0.64313727617263794 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 1 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.9268307089805603 275 | Red Component 276 | 0.70213186740875244 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.14901961386203766 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.14901961386203766 288 | Red Component 289 | 0.14901961386203766 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.73725491762161255 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.73725491762161255 301 | Red Component 302 | 0.73725491762161255 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.37254902720451355 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.0 314 | Red Component 315 | 1 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.42745098471641541 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.86274510622024536 327 | Red Component 328 | 0.90588235855102539 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.37254902720451355 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.37254902720451355 340 | Red Component 341 | 0.37254902720451355 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /kitty/.config/kitty/current-theme.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Tokyo Night Moon 4 | ## license: MIT 5 | ## author: Folke Lemaitre 6 | ## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_moon.conf 7 | 8 | 9 | background #222436 10 | foreground #c8d3f5 11 | selection_background #2d3f76 12 | selection_foreground #c8d3f5 13 | url_color #4fd6be 14 | cursor #c8d3f5 15 | cursor_text_color #222436 16 | 17 | # Tabs 18 | active_tab_background #82aaff 19 | active_tab_foreground #1e2030 20 | inactive_tab_background #2f334d 21 | inactive_tab_foreground #545c7e 22 | #tab_bar_background #1b1d2b 23 | 24 | # Windows 25 | active_border_color #82aaff 26 | inactive_border_color #2f334d 27 | 28 | # normal 29 | color0 #1b1d2b 30 | color1 #ff757f 31 | color2 #c3e88d 32 | color3 #ffc777 33 | color4 #82aaff 34 | color5 #c099ff 35 | color6 #86e1fc 36 | color7 #828bb8 37 | 38 | # bright 39 | color8 #444a73 40 | color9 #ff757f 41 | color10 #c3e88d 42 | color11 #ffc777 43 | color12 #82aaff 44 | color13 #c099ff 45 | color14 #86e1fc 46 | color15 #c8d3f5 47 | 48 | # extended colors 49 | color16 #ff966c 50 | color17 #c53b53 51 | -------------------------------------------------------------------------------- /kitty/.config/kitty/enabled-layouts.conf: -------------------------------------------------------------------------------- 1 | enabled_layouts tall:bias=65;full_size=1;mirrored=false, fat:bias=80;full_size=1;mirrored=false, stack, vertical, horizontal 2 | -------------------------------------------------------------------------------- /kitty/.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:foldmethod=marker 2 | 3 | #: Fonts {{{ 4 | 5 | #: MonoLisa {{{ 6 | #: https://www.monolisa.dev 7 | 8 | # font_family MonoLisa Custom Regular 9 | # italic_font MonoLisa Custom Regular Italic 10 | # bold_font MonoLisa Custom Bold 11 | # bold_italic_font MonoLisa Custom Bold Italic 12 | # 13 | # font_size 16.0 14 | # modify_font cell_height 0px 15 | 16 | #: }}} 17 | 18 | #: Operator Mono {{{ 19 | #: https://www.typography.com/fonts/operator/styles/operatormono 20 | #: https://github.com/kiliman/operator-mono-lig 21 | 22 | # font_family Operator Mono SSm Lig Book 23 | # italic_font Operator Mono SSm Lig Book Italic 24 | # bold_font Operator Mono SSm Lig Bold 25 | # bold_italic_font Operator Mono SSm Lig Bold Italic 26 | # 27 | # font_size 16.0 28 | # modify_font cell_height 0px 29 | 30 | #: }}} 31 | 32 | #: Cascadia Code {{{ 33 | #: https://github.com/microsoft/cascadia-code 34 | 35 | font_family Cascadia Code SemiLight 36 | italic_font Cascadia Code SemiLight Italic 37 | bold_font Cascadia Code Bold 38 | bold_italic_font Cascadia Code Bold Italic 39 | 40 | font_features CascadiaCodeRoman-SemiLight +calt +ss01 41 | font_features CascadiaCodeItalic-SemiLight +calt +ss01 42 | font_features CascadiaCodeRoman-Bold +calt +ss01 43 | font_features CascadiaCodeItalic-Bold +calt +ss01 44 | 45 | font_size 17.0 46 | modify_font cell_height +6px 47 | modify_font baseline 0.5 48 | 49 | #: }}} 50 | 51 | #: Fira Code {{{ 52 | #: https://github.com/tonsky/FiraCode 53 | 54 | # font_family Fira Code Regular 55 | # italic_font Fira Code Italic 56 | # bold_font Fira Code Bold 57 | # bold_italic_font Fira Code Bold Italic 58 | # 59 | # font_size 16.0 60 | # modify_font cell_height -2px 61 | 62 | #: }}} 63 | 64 | #: Comic Code {{{ 65 | #: https://tosche.net/fonts/comic-code 66 | 67 | # font_family Comic Code Ligatures Regular 68 | # italic_font Comic Code Ligatures Italic 69 | # bold_font Comic Code Ligatures Bold 70 | # bold_italic_font Comic Code Ligatures Bold Italic 71 | # 72 | # font_size 16.0 73 | # modify_font cell_height -3px 74 | 75 | #: }}} 76 | 77 | #: Hack {{{ 78 | #: https://sourcefoundry.org/hack 79 | 80 | # font_family Hack Regular 81 | # italic_font Hack Italic 82 | # bold_font Hack Bold 83 | # bold_italic_font Hack Bold Italic 84 | # 85 | # font_size 16.0 86 | # modify_font cell_height +4px 87 | 88 | #: }}} 89 | 90 | #: JetBrains Mono {{{ 91 | #: https://www.jetbrains.com/lp/mono 92 | 93 | # font_family JetBrains Mono Regular 94 | # italic_font JetBrains Mono Italic 95 | # bold_font JetBrains Mono Bold 96 | # bold_italic_font JetBrains Mono Bold Italic 97 | # 98 | # font_size 16.0 99 | # modify_font cell_height -1px 100 | 101 | #: }}} 102 | 103 | #: Monaspace Neon {{{ 104 | #: https://monaspace.githubnext.com 105 | 106 | # font_family Monaspace Neon Var Light 107 | # italic_font Monaspace Neon Var Light Italic 108 | # bold_font Monaspace Neon Var Bold 109 | # bold_italic_font Monaspace Neon Var Bold Italic 110 | # 111 | # font_features MonaspaceNeonVar-Light +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 112 | # font_features MonaspaceNeonVar-LightItalic +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 113 | # font_features MonaspaceNeonVar-Bold +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 114 | # font_features MonaspaceNeonVar-BoldItalic +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 115 | # 116 | # font_size 16.0 117 | # modify_font cell_height +6px 118 | 119 | #: }}} 120 | 121 | #: Monaspace Argon {{{ 122 | #: https://monaspace.githubnext.com 123 | 124 | # font_family Monaspace Argon Var Light 125 | # italic_font Monaspace Argon Var Light Italic 126 | # bold_font Monaspace Argon Var Bold 127 | # bold_italic_font Monaspace Argon Var Bold Italic 128 | # 129 | # font_features MonaspaceArgonVar-Light +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 130 | # font_features MonaspaceArgonVar-LightItalic +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 131 | # font_features MonaspaceArgonVar-Bold +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 132 | # font_features MonaspaceArgonVar-BoldItalic +calt +ss01 +ss02 +ss03 +ss04 +ss05 +ss08 133 | # 134 | # font_size 16.0 135 | # modify_font cell_height +6px 136 | 137 | #: }}} 138 | 139 | #: Ligature Samples {{{ 140 | #: Based on Monaspace - https://github.com/githubnext/monaspace?tab=readme-ov-file#coding-ligatures 141 | 142 | # calt 143 | # // 144 | # /// 145 | # && 146 | # !! 147 | # ?? 148 | # ?. 149 | # ?: 150 | # || 151 | # :: 152 | # ::: 153 | # ;; 154 | # .. 155 | # ......... 156 | # =!= 157 | # #= 158 | # := 159 | # =: 160 | # =:= 161 | # :> 162 | # >: 163 | # <: 164 | # :< 165 | # ..= 166 | # ..- 167 | 168 | # ss01 169 | # == 170 | # === 171 | # =/= 172 | # != 173 | # !== 174 | # /= 175 | # /== 176 | # ~~ 177 | # =~ 178 | # !~ 179 | 180 | # ss02 181 | # >= 182 | # <= 183 | 184 | # ss03 185 | # -> 186 | # <- 187 | # => 188 | # 190 | # <~ 191 | # <~~ 192 | # ~> 193 | # ~~> 194 | # <~> 195 | 196 | # ss04 197 | # 199 | # 200 | # /\ 201 | # \/ 202 | 203 | # ss05 204 | # |> 205 | # <| 206 | 207 | # ss06 208 | # ## 209 | # ### 210 | 211 | # ss07 212 | # *** 213 | # /* 214 | # */ 215 | # /*/ 216 | # (* 217 | # *) 218 | # (*) 219 | 220 | # ss08 221 | # .= 222 | # .- 223 | # ..< 224 | 225 | #: }}} 226 | 227 | #: }}} 228 | 229 | #: Cursor customization {{{ 230 | 231 | cursor_shape block 232 | 233 | #: }}} 234 | 235 | #: Window layout {{{ 236 | 237 | include enabled-layouts.conf 238 | window_padding_width 2 239 | # hide_window_decorations yes 240 | 241 | #: }}} 242 | 243 | #: Tab bar {{{ 244 | 245 | tab_bar_style fade 246 | tab_bar_align center 247 | 248 | #: }}} 249 | 250 | #: Advanced {{{ 251 | 252 | startup_session ./startup.conf 253 | shell_integration no-cursor 254 | 255 | #: }}} 256 | 257 | #: OS specific tweaks {{{ 258 | 259 | macos_option_as_alt yes 260 | # macos_titlebar_color dark 261 | 262 | #: }}} 263 | 264 | #: Window management {{{ 265 | 266 | map cmd+enter new_window_with_cwd 267 | 268 | #: }}} 269 | 270 | #: Window Navigation {{{ 271 | 272 | map kitty_mod+j neighboring_window down 273 | map kitty_mod+k neighboring_window up 274 | map kitty_mod+h neighboring_window left 275 | map kitty_mod+l neighboring_window right 276 | 277 | #: }}} 278 | 279 | #: Layout management {{{ 280 | 281 | map ctrl+alt+f goto_layout fat 282 | map ctrl+alt+s goto_layout stack 283 | map ctrl+alt+t goto_layout tall 284 | map ctrl+alt+h goto_layout horizontal 285 | map ctrl+alt+v goto_layout vertical 286 | map ctrl+alt+p last_used_layout 287 | map ctrl+alt+z toggle_layout stack 288 | 289 | map kitty_mod+n next_layout 290 | 291 | #: }}} 292 | 293 | #: Unicode Symbol Maps {{{ 294 | 295 | include unicode-symbol-maps.conf 296 | 297 | #: }}} 298 | 299 | #: Color scheme {{{ 300 | 301 | # background_opacity 0.9 302 | # background_blur 70 303 | 304 | #: }}} 305 | 306 | #: Miscellaneous {{{ 307 | 308 | #: Toggle fullscreen 309 | 310 | # map kitty_mod+f11 toggle_fullscreen 311 | map ctrl+cmd+f toggle_fullscreen 312 | 313 | #: Reload kitty.conf 314 | 315 | # map kitty_mod+f5 load_config_file 316 | map ctrl+cmd+, load_config_file 317 | 318 | #: }}} 319 | 320 | 321 | # BEGIN_KITTY_THEME 322 | # Tokyo Night Moon 323 | include current-theme.conf 324 | # END_KITTY_THEME 325 | -------------------------------------------------------------------------------- /kitty/.config/kitty/sample-startup.conf: -------------------------------------------------------------------------------- 1 | # shellcheck disable=SC2164 2 | # startup.conf 3 | 4 | new_tab home 5 | cd ~ 6 | launch zsh 7 | 8 | new_tab dotfiles 9 | cd ~/dotfiles/ 10 | launch zsh 11 | -------------------------------------------------------------------------------- /kitty/.config/kitty/unicode-symbol-maps.conf: -------------------------------------------------------------------------------- 1 | # Seti-UI + Custom 2 | symbol_map U+E5FA-U+E6AC Symbols Nerd Font 3 | 4 | # Devicons 5 | symbol_map U+E700-U+E7C5 Symbols Nerd Font 6 | 7 | # Font Awesome 8 | symbol_map U+F000-U+F2E0 Symbols Nerd Font 9 | 10 | # Font Awesome Extension 11 | symbol_map U+E200-U+E2A9 Symbols Nerd Font 12 | 13 | # Material Design Icons 14 | symbol_map U+F0001-U+F1AF0 Symbols Nerd Font 15 | 16 | # Weather 17 | symbol_map U+E300-U+E3E3 Symbols Nerd Font 18 | 19 | # Octicons 20 | symbol_map U+F400-U+F532,U+2665,U+26A1 Symbols Nerd Font 21 | 22 | # Powerline Symbols 23 | symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 Symbols Nerd Font 24 | 25 | # Powerline Extra Symbols 26 | symbol_map U+E0A3,U+E0B4-U+E0C8,U+E0CA,U+E0CC-U+E0D4 Symbols Nerd Font 27 | 28 | # IEC Power Symbols 29 | symbol_map U+23FB-U+23FE,U+2B58 Symbols Nerd Font 30 | 31 | # Font Logos 32 | symbol_map U+F300-U+F32F Symbols Nerd Font 33 | 34 | # Pomicons 35 | symbol_map U+E000-U+E00A Symbols Nerd Font 36 | 37 | # Codicons 38 | symbol_map U+EA60-U+EBEB Symbols Nerd Font 39 | 40 | # Toml Icon 41 | symbol_map U+E6B2 Symbols Nerd Font 42 | 43 | # Additional sets 44 | symbol_map U+E276C-U+E2771 Symbols Nerd Font # Heavy Angle Brackets 45 | symbol_map U+2500-U+259F Symbols Nerd Font # Box Drawing 46 | 47 | # Some symbols not covered by Symbols Nerd Font 48 | # nonicons contains icons in the range: U+F101-U+F27D 49 | # U+F167 is HTML logo, but YouTube logo in Symbols Nerd Font 50 | # symbol_map U+F102,U+F116-U+F118,U+F12F,U+F13E,U+F1AF,U+F1BF,U+F1CF,U+F1FF,U+F20F,U+F21F-U+F220,U+F22E-U+F22F,U+F23F,U+F24F,U+F25F nonicons 51 | 52 | # REFERENCE 53 | 54 | # https://sw.kovidgoyal.net/kitty/faq/#kitty-is-not-able-to-use-my-favorite-font 55 | # https://sw.kovidgoyal.net/kitty/conf/#opt-kitty.symbol_map 56 | 57 | # https://github.com/kovidgoyal/kitty/issues/3072 58 | # https://www.reddit.com/r/KittyTerminal/comments/r5hssh/kitty_nerd_fonts/ 59 | # https://github.com/Sharparam/dotfiles/blob/71ed2187356bff46e396a2b88346ddccd6c84f6d/kitty/.config/kitty/font-nerd-symbols.conf 60 | 61 | # Symbols Nerd Font 62 | # https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/NerdFontsSymbolsOnly.zip 63 | 64 | # - Use additional nerd symbols 65 | # See https://github.com/be5invis/Iosevka/issues/248 66 | # See https://github.com/ryanoasis/nerd-fonts/wiki/Glyph-Sets-and-Code-Points 67 | 68 | # https://www.youtube.com/watch?v=mQdB_kHyZn8 69 | # https://gist.github.com/elijahmanor/c10e5787bf9ac6b8c276e47e6745826c 70 | # https://erwin.co/kitty-and-nerd-fonts/ 71 | -------------------------------------------------------------------------------- /laptop/.laptop.local: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Laptop extras 4 | # https://github.com/joshukraine/laptop 5 | 6 | fancy_echo "Updating PATH..." 7 | # shellcheck disable=SC2016 8 | append_to_zshrc 'export PATH="$HOME/.local/bin:$PATH"' 9 | 10 | fancy_echo "Adding additional Homebrew formulae ..." 11 | brew bundle --file=- <' # alternative/alias of quit 92 | return: '' # return to previous menu, will quit if there's nowhere to return 93 | quitWithoutChangingDirectory: 'Q' 94 | togglePanel: '' # goto the next panel 95 | prevItem: '' # go one line up 96 | nextItem: '' # go one line down 97 | prevItem-alt: 'k' # go one line up 98 | nextItem-alt: 'j' # go one line down 99 | prevPage: ',' # go to next page in list 100 | nextPage: '.' # go to previous page in list 101 | gotoTop: '<' # go to top of list 102 | gotoBottom: '>' # go to bottom of list 103 | scrollLeft: 'H' # scroll left within list view 104 | scrollRight: 'L' # scroll right within list view 105 | prevBlock: '' # goto the previous block / panel 106 | nextBlock: '' # goto the next block / panel 107 | prevBlock-alt: 'h' # goto the previous block / panel 108 | nextBlock-alt: 'l' # goto the next block / panel 109 | jumpToBlock: ['1', '2', '3', '4', '5'] # goto the Nth block / panel 110 | nextMatch: 'n' 111 | prevMatch: 'N' 112 | optionMenu: 'x' # show help menu 113 | optionMenu-alt1: '?' # show help menu 114 | select: '' 115 | goInto: '' 116 | openRecentRepos: '' 117 | confirm: '' 118 | confirm-alt1: 'y' 119 | remove: 'd' 120 | new: 'n' 121 | edit: 'e' 122 | openFile: 'o' 123 | scrollUpMain: '' # main panel scroll up 124 | scrollDownMain: '' # main panel scroll down 125 | scrollUpMain-alt1: 'K' # main panel scroll up 126 | scrollDownMain-alt1: 'J' # main panel scroll down 127 | scrollUpMain-alt2: '' # main panel scroll up 128 | scrollDownMain-alt2: '' # main panel scroll down 129 | executeShellCommand: ':' 130 | createRebaseOptionsMenu: 'm' 131 | pushFiles: 'P' 132 | pullFiles: 'p' 133 | refresh: 'R' 134 | createPatchOptionsMenu: '' 135 | nextTab: ']' 136 | prevTab: '[' 137 | nextScreenMode: '+' 138 | prevScreenMode: '_' 139 | undo: 'z' 140 | redo: '' 141 | filteringMenu: '' 142 | diffingMenu: 'W' 143 | diffingMenu-alt: '' # deprecated 144 | copyToClipboard: '' 145 | submitEditorText: '' 146 | appendNewline: '' 147 | extrasMenu: '@' 148 | toggleWhitespaceInDiffView: '' 149 | increaseContextInDiffView: '}' 150 | decreaseContextInDiffView: '{' 151 | status: 152 | checkForUpdate: 'u' 153 | recentRepos: '' 154 | files: 155 | commitChanges: 'c' 156 | commitChangesWithoutHook: 'w' # commit changes without pre-commit hook 157 | amendLastCommit: 'A' 158 | commitChangesWithEditor: 'C' 159 | ignoreFile: 'i' 160 | refreshFiles: 'r' 161 | stashAllChanges: 's' 162 | viewStashOptions: 'S' 163 | toggleStagedAll: 'a' # stage/unstage all 164 | viewResetOptions: 'D' 165 | fetch: 'f' 166 | toggleTreeView: '`' 167 | branches: 168 | createPullRequest: 'o' 169 | viewPullRequestOptions: 'O' 170 | checkoutBranchByName: 'c' 171 | forceCheckoutBranch: 'F' 172 | rebaseBranch: 'r' 173 | renameBranch: 'R' 174 | mergeIntoCurrentBranch: 'M' 175 | viewGitFlowOptions: 'i' 176 | fastForward: 'f' # fast-forward this branch from its upstream 177 | pushTag: 'P' 178 | setUpstream: 'u' # set as upstream of checked-out branch 179 | fetchRemote: 'f' 180 | commits: 181 | squashDown: 's' 182 | renameCommit: 'r' 183 | renameCommitWithEditor: 'R' 184 | viewResetOptions: 'g' 185 | markCommitAsFixup: 'f' 186 | createFixupCommit: 'F' # create fixup commit for this commit 187 | squashAboveCommits: 'S' 188 | moveDownCommit: '' # move commit down one 189 | moveUpCommit: '' # move commit up one 190 | amendToCommit: 'A' 191 | pickCommit: 'p' # pick commit (when mid-rebase) 192 | revertCommit: 't' 193 | cherryPickCopy: 'c' 194 | cherryPickCopyRange: 'C' 195 | pasteCommits: 'v' 196 | tagCommit: 'T' 197 | checkoutCommit: '' 198 | resetCherryPick: '' 199 | copyCommitMessageToClipboard: '' 200 | openLogMenu: '' 201 | viewBisectOptions: 'b' 202 | stash: 203 | popStash: 'g' 204 | renameStash: 'r' 205 | commitFiles: 206 | checkoutCommitFile: 'c' 207 | main: 208 | toggleDragSelect: 'v' 209 | toggleDragSelect-alt: 'V' 210 | toggleSelectHunk: 'a' 211 | pickBothHunks: 'b' 212 | submodules: 213 | init: 'i' 214 | update: 'u' 215 | bulkMenu: 'b' 216 | # yamllint enable 217 | -------------------------------------------------------------------------------- /local/config.fish.example: -------------------------------------------------------------------------------- 1 | # Rename me to config.fish.local 2 | 3 | set -xg GITHUB_USER 'your_username' 4 | set -xg GITHUB_TOKEN 'my123nuclear456launch789code' 5 | set -xg MY_SPECIAL_PATH "$HOME/foo/bar" 6 | 7 | # vim: set filetype=fish: 8 | -------------------------------------------------------------------------------- /markdown/.markdownlint.yaml: -------------------------------------------------------------------------------- 1 | # https://github.com/DavidAnson/markdownlint/blob/v0.37.3/schema/.markdownlint.yaml 2 | 3 | # MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md013.md 4 | MD013: false 5 | 6 | # MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md026.md 7 | MD026: 8 | # Punctuation characters 9 | punctuation: ",;:。,;:!" 10 | 11 | # MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md033.md 12 | MD033: 13 | # Allowed elements 14 | allowed_elements: [details, summary, strong] 15 | 16 | # MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md034.md 17 | MD034: false 18 | -------------------------------------------------------------------------------- /nerd-font-smoke-test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | smoke_tests="Normal 4 | \033[1mBold\033[22m 5 | \033[3mItalic\033[23m 6 | \033[3;1mBold Italic\033[0m 7 | \033[4mUnderline\033[24m 8 | == === !== >= <= => 9 | 󰐊   󰄉   󰑓 󰒲  " 10 | 11 | echo -e "${smoke_tests}" 12 | 13 | # Adapted from https://gist.github.com/elijahmanor/c10e5787bf9ac6b8c276e47e6745826c 14 | -------------------------------------------------------------------------------- /node/.default-npm-packages: -------------------------------------------------------------------------------- 1 | gulp-cli 2 | http-server 3 | live-server 4 | neovim 5 | pug 6 | stylelint 7 | typescript 8 | -------------------------------------------------------------------------------- /node/.npmrc: -------------------------------------------------------------------------------- 1 | init-author-email=joshuasteele@hey.com 2 | init-author-name=Joshua Steele 3 | init-license=MIT 4 | -------------------------------------------------------------------------------- /nvim/.config/nvim/.gitignore: -------------------------------------------------------------------------------- 1 | tt.* 2 | .tests 3 | doc/tags 4 | debug 5 | .repro 6 | foo.* 7 | *.log 8 | data 9 | -------------------------------------------------------------------------------- /nvim/.config/nvim/.neoconf.json: -------------------------------------------------------------------------------- 1 | { 2 | "neodev": { 3 | "library": { 4 | "enabled": true, 5 | "plugins": true 6 | } 7 | }, 8 | "neoconf": { 9 | "plugins": { 10 | "lua_ls": { 11 | "enabled": true 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /nvim/.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- bootstrap lazy.nvim, LazyVim and your plugins 2 | require("config.lazy") 3 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "CopilotChat.nvim": { "branch": "main", "commit": "4dce4d2fc185a935024511811139b68e91b2d2a8" }, 3 | "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, 4 | "LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" }, 5 | "LuaSnip": { "branch": "master", "commit": "c1851d5c519611dfc451b6582961b2602e0af89b" }, 6 | "SchemaStore.nvim": { "branch": "main", "commit": "df87d16fc4ea7c2c67cfc00b513861738693fe07" }, 7 | "blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" }, 8 | "blink-emoji.nvim": { "branch": "master", "commit": "a77aebc092ebece1eed108f301452ae774d6b67a" }, 9 | "blink.cmp": { "branch": "main", "commit": "4f38ce99a472932d5776337f08f7a8180f1f571a" }, 10 | "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, 11 | "catppuccin": { "branch": "main", "commit": "1bf070129c0b6f77cc23f6a2212dcdc868308c52" }, 12 | "conform.nvim": { "branch": "master", "commit": "374aaf384e2e841607b8e2fe63fa3ad01d111c91" }, 13 | "copilot.lua": { "branch": "master", "commit": "2fe34db04570f6c47db0b752ca421a49b7357c03" }, 14 | "dial.nvim": { "branch": "master", "commit": "2c7e2750372918f072a20f3cf754d845e143d7c9" }, 15 | "edgy.nvim": { "branch": "main", "commit": "7e8dedc39abebe40c289b8012cc89b11c69aa7a0" }, 16 | "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, 17 | "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, 18 | "gitsigns.nvim": { "branch": "main", "commit": "43b0c856ae5f32a195d83f4a27fe21d63e6c966c" }, 19 | "grug-far.nvim": { "branch": "main", "commit": "78c8d27c6f3300bfa92bb535236732d8e9bcb614" }, 20 | "inc-rename.nvim": { "branch": "main", "commit": "2eaff20526ff6101337b84f4b0d238c11f47d7f4" }, 21 | "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, 22 | "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, 23 | "lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" }, 24 | "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, 25 | "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, 26 | "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, 27 | "mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" }, 28 | "mini.hipatterns": { "branch": "main", "commit": "e5083df391171dc9d8172645606f8496d9443374" }, 29 | "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" }, 30 | "mini.map": { "branch": "stable", "commit": "4c58e755d75f9999abcd3b3c6e934734b6a8b098" }, 31 | "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" }, 32 | "mini.surround": { "branch": "main", "commit": "5aab42fcdcf31fa010f012771eda5631c077840a" }, 33 | "neotest": { "branch": "master", "commit": "2d9011396c43fa1d40221e6b6c3be5eb001427a9" }, 34 | "neotest-minitest": { "branch": "main", "commit": "7ff057de8ab2c27491ff27c7be9826b8f3bb5ec1" }, 35 | "neotest-rspec": { "branch": "main", "commit": "281c0ed0e55d623e8028796e1c4dc27b7e421fd0" }, 36 | "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, 37 | "nui.nvim": { "branch": "main", "commit": "f535005e6ad1016383f24e39559833759453564e" }, 38 | "nvim-ansible": { "branch": "main", "commit": "bba61168b7aef735e7f950fdfece5ef6c388eacf" }, 39 | "nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" }, 40 | "nvim-lspconfig": { "branch": "master", "commit": "61e5109c8cf24807e4ae29813a3a82b31821dd45" }, 41 | "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, 42 | "nvim-treesitter": { "branch": "master", "commit": "28d480e0624b259095e56f353ec911f9f2a0f404" }, 43 | "nvim-treesitter-textobjects": { "branch": "master", "commit": "0e3be38005e9673d044e994b1e4b123adb040179" }, 44 | "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, 45 | "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, 46 | "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, 47 | "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, 48 | "render-markdown.nvim": { "branch": "main", "commit": "935c2c70c296d87ed1bcce9ce667c239c9c982b5" }, 49 | "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, 50 | "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, 51 | "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, 52 | "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, 53 | "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" }, 54 | "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, 55 | "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, 56 | "vim-dadbod-ui": { "branch": "master", "commit": "460432301a5cb280ea265ddfa15c9f3dcd1d26b7" }, 57 | "vim-rails": { "branch": "master", "commit": "b0a5c76f86ea214ade36ab0b811e730c3f0add67" }, 58 | "vim-tmux-navigator": { "branch": "master", "commit": "33afa80db65113561dc53fa732b7f5e53d5ecfd0" }, 59 | "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }, 60 | "yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" } 61 | } 62 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lazyvim.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": [ 3 | "lazyvim.plugins.extras.ai.copilot", 4 | "lazyvim.plugins.extras.ai.copilot-chat", 5 | "lazyvim.plugins.extras.coding.luasnip", 6 | "lazyvim.plugins.extras.coding.mini-surround", 7 | "lazyvim.plugins.extras.coding.yanky", 8 | "lazyvim.plugins.extras.editor.dial", 9 | "lazyvim.plugins.extras.editor.inc-rename", 10 | "lazyvim.plugins.extras.editor.snacks_explorer", 11 | "lazyvim.plugins.extras.editor.snacks_picker", 12 | "lazyvim.plugins.extras.formatting.prettier", 13 | "lazyvim.plugins.extras.lang.ansible", 14 | "lazyvim.plugins.extras.lang.docker", 15 | "lazyvim.plugins.extras.lang.git", 16 | "lazyvim.plugins.extras.lang.json", 17 | "lazyvim.plugins.extras.lang.markdown", 18 | "lazyvim.plugins.extras.lang.ruby", 19 | "lazyvim.plugins.extras.lang.sql", 20 | "lazyvim.plugins.extras.lang.tailwind", 21 | "lazyvim.plugins.extras.lang.toml", 22 | "lazyvim.plugins.extras.lang.typescript", 23 | "lazyvim.plugins.extras.lang.vue", 24 | "lazyvim.plugins.extras.lang.yaml", 25 | "lazyvim.plugins.extras.linting.eslint", 26 | "lazyvim.plugins.extras.test.core", 27 | "lazyvim.plugins.extras.ui.edgy", 28 | "lazyvim.plugins.extras.util.dot", 29 | "lazyvim.plugins.extras.util.mini-hipatterns", 30 | "lazyvim.plugins.extras.util.project" 31 | ], 32 | "install_version": 7, 33 | "news": { 34 | "NEWS.md": "10960" 35 | }, 36 | "version": 8 37 | } -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/config/autocmds.lua: -------------------------------------------------------------------------------- 1 | -- Autocmds are automatically loaded on the VeryLazy event 2 | -- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua 3 | -- Add any additional autocmds here 4 | 5 | local create_augroup = vim.api.nvim_create_augroup 6 | local create_autocmd = vim.api.nvim_create_autocmd 7 | 8 | create_augroup("file_types", { clear = true }) 9 | 10 | create_autocmd({ "BufEnter", "BufRead", "BufNewFile" }, { 11 | desc = "Recognize .gemrc as yaml", 12 | group = "file_types", 13 | pattern = { ".gemrc" }, 14 | command = [[ set filetype=yaml ]], 15 | }) 16 | 17 | create_autocmd({ "BufEnter", "BufRead", "BufNewFile" }, { 18 | desc = "Recognize mdx files as markdown", 19 | group = "file_types", 20 | pattern = { "*.mdx" }, 21 | command = [[ set filetype=markdown ]], 22 | }) 23 | 24 | create_autocmd("FileType", { 25 | desc = "Disable autocmd set filetype=eruby.yaml from rails.vim", 26 | group = "file_types", 27 | pattern = "eruby.yaml", 28 | command = [[set filetype=yaml]], 29 | }) 30 | 31 | create_autocmd({ "VimEnter" }, { 32 | desc = "Go straight to INSERT mode in commit message", 33 | group = "file_types", 34 | pattern = { "COMMIT_EDITMSG" }, 35 | command = [[ exec 'norm gg' | startinsert! ]], 36 | }) 37 | 38 | -- Uncomment this section to launch mini map when vim starts 39 | -- create_autocmd({ "VimEnter", "Filetype" }, { 40 | -- desc = "Open mini.map and exclude some filetypes", 41 | -- pattern = { "*" }, 42 | -- callback = function() 43 | -- local exclude_ft = { 44 | -- "NvimTree", 45 | -- "TelescopePrompt", 46 | -- "alpha", 47 | -- "dashboard", 48 | -- "lazy", 49 | -- "netrw", 50 | -- "qf", 51 | -- "toggleterm", 52 | -- "gitcommit", 53 | -- } 54 | -- 55 | -- local status_ok, map = pcall(require, "mini.map") 56 | -- if not status_ok then 57 | -- return 58 | -- end 59 | -- 60 | -- if vim.tbl_contains(exclude_ft, vim.o.filetype) then 61 | -- vim.b.minimap_disable = true 62 | -- map.close() 63 | -- elseif vim.o.buftype == "" then 64 | -- map.open() 65 | -- end 66 | -- end, 67 | -- }) 68 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/config/keymaps.lua: -------------------------------------------------------------------------------- 1 | -- Keymaps are automatically loaded on the VeryLazy event 2 | -- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua 3 | -- Add any additional keymaps here 4 | 5 | local util = require("config.util") 6 | 7 | util.cowboy() 8 | 9 | -- Remove key mappings that conflict with macOS 10 | vim.keymap.del("n", "") 11 | vim.keymap.del("n", "") 12 | vim.keymap.del("n", "") 13 | vim.keymap.del("n", "") 14 | 15 | -- Resize with simple arrow keys 16 | vim.keymap.set("n", "", "resize +5", { desc = "Increase window height" }) 17 | vim.keymap.set("n", "", "resize -5", { desc = "Decrease window height" }) 18 | vim.keymap.set("n", "", "vertical resize -10", { desc = "Decrease window width" }) 19 | vim.keymap.set("n", "", "vertical resize +10", { desc = "Increase window width" }) 20 | 21 | -- Back to normal mode 22 | vim.keymap.set("i", "jj", "") 23 | 24 | -- Equalize splits 25 | vim.keymap.set("n", "b=", "wincmd =", { desc = "Balance windows" }) 26 | 27 | -- Zoom current buffer 28 | vim.keymap.set("n", "bz", "wincmd _:wincmd |", { desc = "Zoom buffer" }) 29 | 30 | -- Toggle MiniMap 31 | vim.keymap.set("n", "m", "lua MiniMap.toggle()", { desc = "MiniMap" }) 32 | 33 | -- Save without formatting 34 | vim.keymap.set("n", "qQ", "noautocmd w", { desc = "Save without formatting" }) 35 | 36 | -- Sort text in a list 37 | vim.keymap.set("v", "cs", ":'<,'>sort", { desc = "Sort selected lines" }) 38 | 39 | -- Toggle CursorColumn 40 | vim.keymap.set( 41 | "n", 42 | "uo", 43 | "lua require('config.util').toggle_option('cursorcolumn')", 44 | { desc = "Toggle CursorColumn" } 45 | ) 46 | 47 | -- Toggle ColorColumn 48 | vim.keymap.set( 49 | "n", 50 | "uO", 51 | "lua require('config.util').toggle_colorcolumn()", 52 | { desc = "Toggle ColorColumn" } 53 | ) 54 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/config/lazy.lua: -------------------------------------------------------------------------------- 1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 2 | if not (vim.uv or vim.loop).fs_stat(lazypath) then 3 | local lazyrepo = "https://github.com/folke/lazy.nvim.git" 4 | local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) 5 | if vim.v.shell_error ~= 0 then 6 | vim.api.nvim_echo({ 7 | { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, 8 | { out, "WarningMsg" }, 9 | { "\nPress any key to exit..." }, 10 | }, true, {}) 11 | vim.fn.getchar() 12 | os.exit(1) 13 | end 14 | end 15 | vim.opt.rtp:prepend(lazypath) 16 | 17 | require("lazy").setup({ 18 | spec = { 19 | -- add LazyVim and import its plugins 20 | { "LazyVim/LazyVim", import = "lazyvim.plugins" }, 21 | -- import/override with your plugins 22 | { import = "plugins" }, 23 | }, 24 | defaults = { 25 | -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. 26 | -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. 27 | lazy = false, 28 | -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, 29 | -- have outdated releases, which may break your Neovim install. 30 | version = false, -- always use the latest git commit 31 | -- version = "*", -- try installing the latest stable version for plugins that support semver 32 | }, 33 | install = { colorscheme = { "tokyonight", "habamax" } }, 34 | checker = { 35 | enabled = true, -- check for plugin updates periodically 36 | notify = false, -- notify on update 37 | }, -- automatically check for plugin updates 38 | performance = { 39 | rtp = { 40 | -- disable some rtp plugins 41 | disabled_plugins = { 42 | "gzip", 43 | -- "matchit", 44 | -- "matchparen", 45 | -- "netrwPlugin", 46 | "tarPlugin", 47 | "tohtml", 48 | "tutor", 49 | "zipPlugin", 50 | }, 51 | }, 52 | }, 53 | }) 54 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/config/options.lua: -------------------------------------------------------------------------------- 1 | -- Options are automatically loaded before lazy.nvim startup 2 | -- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua 3 | -- Add any additional options here 4 | 5 | vim.opt.listchars:append({ extends = "…" }) 6 | vim.opt.listchars:append({ nbsp = "+" }) 7 | vim.opt.listchars:append({ precedes = "…" }) 8 | vim.opt.listchars:append({ tab = "·»" }) 9 | vim.opt.listchars:append({ trail = "·" }) 10 | 11 | -- LSP Ruby configuration 12 | vim.g.lazyvim_ruby_lsp = "ruby_lsp" 13 | vim.g.lazyvim_ruby_formatter = "standardrb" 14 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/config/util.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | function M.toggle_option(option) 4 | local value = not vim.api.nvim_get_option_value(option, {}) 5 | vim.opt[option] = value 6 | vim.notify(option .. " set to " .. tostring(value)) 7 | end 8 | 9 | function M.toggle_colorcolumn() 10 | local value = vim.api.nvim_get_option_value("colorcolumn", {}) 11 | if value == "81" then 12 | value = "0" 13 | else 14 | value = "81" 15 | end 16 | vim.opt.colorcolumn = value 17 | vim.notify("colorcolumn" .. " set to " .. tostring(value)) 18 | end 19 | 20 | -- https://github.com/folke/dot/blob/1007fc65738ad1f7a3e9c91432430017a6878378/nvim/lua/util/init.lua#L125 21 | function M.cowboy() 22 | ---@type table? 23 | local id 24 | local ok = true 25 | for _, key in ipairs({ "h", "j", "k", "l", "+", "-" }) do 26 | local count = 0 27 | local timer = assert(vim.loop.new_timer()) 28 | local map = key 29 | vim.keymap.set("n", key, function() 30 | if vim.v.count > 0 then 31 | count = 0 32 | end 33 | if count >= 10 and vim.bo.buftype ~= "nofile" then 34 | ok, id = pcall(vim.notify, "Whoa there, Cowboy!", vim.log.levels.WARN, { 35 | icon = "🤠", 36 | replace = id, 37 | keep = function() 38 | return count >= 10 39 | end, 40 | }) 41 | if not ok then 42 | id = nil 43 | return map 44 | end 45 | else 46 | count = count + 1 47 | timer:start(2000, 0, function() 48 | count = 0 49 | end) 50 | return map 51 | end 52 | end, { expr = true, silent = true }) 53 | end 54 | end 55 | 56 | return M 57 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/colorscheme.lua: -------------------------------------------------------------------------------- 1 | -- https://www.lazyvim.org/plugins/colorscheme 2 | 3 | return { 4 | { 5 | "LazyVim/LazyVim", 6 | opts = { 7 | -- colorscheme = "gruvbox", 8 | -- colorscheme = "nord", 9 | colorscheme = "tokyonight", 10 | -- colorscheme = "catppuccin-macchiato", -- catppuccin-latte, catppuccin-faappe, catppuccin-macchiato, catppuccin-mocha 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-bufferline.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "akinsho/bufferline.nvim", 4 | keys = { 5 | { "[b", "BufferLineMovePrev", desc = "Buffer move prev" }, 6 | { "]b", "BufferLineMoveNext", desc = "Buffer move next" }, 7 | }, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-conform.lua: -------------------------------------------------------------------------------- 1 | -- https://github.com/folke/dot/blob/master/nvim/lua/plugins/lsp.lua 2 | 3 | return { 4 | { 5 | "stevearc/conform.nvim", 6 | opts = { 7 | formatters = { 8 | shfmt = { 9 | prepend_args = { "-i", "2", "-ci" }, 10 | }, 11 | }, 12 | }, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-dashboard.lua: -------------------------------------------------------------------------------- 1 | -- https://www.lazyvim.org/plugins/ui#snacksnvim 2 | 3 | -- Uncomment the conditional to disable this config. 4 | -- stylua: ignore 5 | -- if true then return {} end 6 | 7 | return { 8 | { 9 | "folke/snacks.nvim", 10 | opts = { 11 | dashboard = { 12 | preset = { 13 | pick = function(cmd, opts) 14 | return LazyVim.pick(cmd, opts)() 15 | end, 16 | header = [[ 17 | 18 | ⠀⠀⠀⠀⢀⣴⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 19 | ⠀⠀⢀⣴⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 20 | ⠀⠀⢻⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 21 | ⢸⣷⡀⠹⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 22 | ⢸⣿⣿⣄⠘⢿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⡆⢀⡤⠒⠒⠲⢦⡀⠀⠀⠀⢀⡤⠖⠒⠒⠢⣄⠀⠀⠀⠀⣠⠴⠒⠒⠲⢦⣄⠀⠸⣿⣿⡄⠀⠀⠀⠀⣸⣿⡿⠁⣿⣿⣿⠀⠀⣿⣿⣤⣾⣿⣿⣿⣦⢠⣶⣿⣿⣿⣷⣦⠀ 23 | ⢸⣿⣿⣿⣦⠈⢻⣿⣿⣿⣿⣷⡀⠀⠀⠀⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⡗⠁⠀⠀⠀⠀⠈⣿⠀⠀⣰⠏⠀⠀⠀⠀⠀⠈⢧⠀⢀⡾⠁⠀⠀⠀⠀⠀⠹⣧⠀⢻⣿⣷⠀⠀⠀⢠⣿⣿⠃⠀⣿⣿⣿⠀⠀⣿⣿⡟⠁⠀⠈⢻⣿⣿⠏⠀⠀⠘⣿⣿⡇ 24 | ⢸⣿⣿⣿⣿⡇⠀⢻⣿⣿⣿⣿⣿⣄⠀⠀⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⣿⠀⠀⣿⠤⠤⠤⠤⠤⠤⠤⠼⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⣿⡆⠀⢿⣿⣇⠀⢀⣿⣿⠏⠀⠀⣿⣿⣿⠀⠀⣿⣿⡇⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⣿⣿⡇ 25 | ⢸⣿⣿⣿⣿⡇⠀⠀⠻⣿⣿⣿⣿⣿⣆⠀⢿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⣿⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⣾⡇⠀⠈⣿⣿⡄⣼⣿⡟⠀⠀⠀⣿⣿⣿⠀⠀⣿⣿⡇⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⣿⣿⡇ 26 | ⢸⣿⣿⣿⣿⡇⠀⠀⠀⠙⣿⣿⣿⣿⣿⣧⡀⠻⣿⣿⣿⡇⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⣿⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⠀⠀⠀⠀⢠⡿⠀⠀⠀⠸⣿⣷⣿⡿⠁⠀⠀⠀⣿⣿⣿⠀⠀⣿⣿⡇⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⣿⣿⡇ 27 | ⢸⣿⣿⣿⣿⡇⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣷⡄⠹⣿⣿⡇⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠙⠳⢤⣀⣀⡤⠴⠛⠀⠀⠈⠳⢤⣀⣀⣠⠴⠛⠀⠀⠀⠀⠀⠹⠿⠿⠃⠀⠀⠀⠀⠿⠿⠿⠀⠀⠿⠿⠇⠀⠀⠀⠸⠿⠿⠀⠀⠀⠀⠿⠿⠇ 28 | ⢸⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣆⠘⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 29 | ⠀⠹⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⡧⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 30 | ⠀⠀⠈⠻⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 31 | ⠀⠀⠀⠀⠈⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 32 | [ @joshukraine ] 33 | ]], 34 | -- stylua: ignore 35 | ---@type snacks.dashboard.Item[] 36 | keys = { 37 | { icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" }, 38 | { icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" }, 39 | { icon = " ", key = "p", desc = "Projects", action = ":lua Snacks.picker.projects()", }, 40 | { icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" }, 41 | { icon = " ", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" }, 42 | { icon = " ", key = "c", desc = "Config", action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" }, 43 | { icon = " ", key = "s", desc = "Restore Session", section = "session" }, 44 | { icon = " ", key = "x", desc = "Lazy Extras", action = ":LazyExtras" }, 45 | { icon = "󰒲 ", key = "l", desc = "Lazy", action = ":Lazy" }, 46 | { icon = " ", key = "q", desc = "Quit", action = ":qa" }, 47 | }, 48 | }, 49 | }, 50 | }, 51 | }, 52 | } 53 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-mason.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "williamboman/mason.nvim", 4 | opts = { 5 | ensure_installed = { 6 | "bash-language-server", 7 | "css-lsp", 8 | "docker-compose-language-service", 9 | "dockerfile-language-server", 10 | "erb-formatter", 11 | "erb-lint", 12 | "eslint-lsp", 13 | "flake8", 14 | "hadolint", 15 | "html-lsp", 16 | "json-lsp", 17 | "lua-language-server", 18 | "markdown-toc", 19 | "markdownlint", 20 | "markdownlint-cli2", 21 | "marksman", 22 | "phpactor", 23 | "prettier", 24 | "shellcheck", 25 | "shfmt", 26 | "sqlfluff", 27 | "stylua", 28 | "tailwindcss-language-server", 29 | "taplo", 30 | "typescript-language-server", 31 | "vim-language-server", 32 | "vue-language-server", 33 | "yaml-language-server", 34 | }, 35 | }, 36 | }, 37 | } 38 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-mini-files.lua: -------------------------------------------------------------------------------- 1 | -- Uncomment the conditional to disable this config. 2 | -- stylua: ignore 3 | if true then return {} end 4 | 5 | return { 6 | "echasnovski/mini.files", 7 | keys = { 8 | { 9 | "e", 10 | function() 11 | require("mini.files").open(vim.api.nvim_buf_get_name(0), true) 12 | end, 13 | desc = "Open mini.files (directory of current file)", 14 | }, 15 | { 16 | "E", 17 | function() 18 | require("mini.files").open(vim.uv.cwd(), true) 19 | end, 20 | desc = "Open mini.files (cwd)", 21 | }, 22 | { 23 | "fm", 24 | function() 25 | require("mini.files").open(LazyVim.root(), true) 26 | end, 27 | desc = "Open mini.files (root)", 28 | }, 29 | }, 30 | opts = { 31 | windows = { 32 | preview = true, 33 | width_focus = 30, 34 | width_preview = 30, 35 | }, 36 | options = { 37 | -- Whether to use for editing directories 38 | -- Disabled by default in LazyVim because neo-tree is used for that 39 | use_as_default_explorer = true, 40 | }, 41 | }, 42 | } 43 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-mini-map.lua: -------------------------------------------------------------------------------- 1 | -- Blazing fast minimap/scrollbar in Lua | https://github.com/echasnovski/mini.map/ 2 | 3 | return { 4 | { 5 | "echasnovski/mini.map", 6 | branch = "stable", 7 | config = function() 8 | require("mini.map").setup() 9 | local map = require("mini.map") 10 | map.setup({ 11 | integrations = { 12 | map.gen_integration.builtin_search(), 13 | map.gen_integration.diagnostic({ 14 | error = "DiagnosticFloatingError", 15 | warn = "DiagnosticFloatingWarn", 16 | info = "DiagnosticFloatingInfo", 17 | hint = "DiagnosticFloatingHint", 18 | }), 19 | map.gen_integration.gitsigns({ 20 | add = "GitSignsAdd", 21 | change = "GitSignsChange", 22 | delete = "GitSignsDelete", 23 | }), 24 | }, 25 | symbols = { 26 | encode = map.gen_encode_symbols.dot("3x2"), 27 | }, 28 | window = { 29 | side = "right", 30 | width = 15, -- set to 1 for a pure scrollbar :) 31 | winblend = 15, 32 | show_integration_count = false, 33 | }, 34 | }) 35 | end, 36 | }, 37 | } 38 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-neo-tree.lua: -------------------------------------------------------------------------------- 1 | -- Uncomment the conditional to disable this config. 2 | -- stylua: ignore 3 | if true then return {} end 4 | 5 | -- https://github.com/nvim-neo-tree/neo-tree.nvim 6 | -- https://www.lazyvim.org/plugins/editor#neo-treenvim 7 | 8 | return { 9 | { 10 | "nvim-neo-tree/neo-tree.nvim", 11 | opts = { 12 | sources = { "filesystem", "buffers", "git_status", "document_symbols" }, 13 | open_files_do_not_replace_types = { "terminal", "Trouble", "trouble", "qf", "Outline" }, 14 | filesystem = { 15 | filtered_items = { 16 | visible = false, -- when true, they will just be displayed differently than normal items 17 | hide_dotfiles = false, 18 | hide_gitignored = true, 19 | -- hide_hidden = true, -- only works on Windows for hidden files/directories 20 | hide_by_name = { 21 | ".DS_Store", 22 | "thumbs.db", 23 | "node_modules", 24 | ".git", 25 | }, 26 | hide_by_pattern = { 27 | --"*.meta", 28 | --"*/src/*/tsconfig.json", 29 | }, 30 | always_show = { -- remains visible even if other settings would normally hide it 31 | --".gitignore", 32 | }, 33 | never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show 34 | --".DS_Store", 35 | --"thumbs.db", 36 | }, 37 | never_show_by_pattern = { -- uses glob style patterns 38 | --".null-ls_*", 39 | }, 40 | }, 41 | bind_to_cwd = false, 42 | follow_current_file = { enabled = true }, 43 | use_libuv_file_watcher = true, 44 | }, 45 | window = { 46 | position = "left", 47 | width = 30, 48 | mappings = { 49 | [""] = "none", 50 | }, 51 | }, 52 | default_component_configs = { 53 | indent = { 54 | with_expanders = true, -- if nil and file nesting is enabled, will enable expanders 55 | expander_collapsed = "", 56 | expander_expanded = "", 57 | expander_highlight = "NeoTreeExpander", 58 | }, 59 | }, 60 | }, 61 | }, 62 | vim.api.nvim_set_hl(0, "NeoTreeDirectoryIcon", { fg = "#e0af68" }), 63 | } 64 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-neotest.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-neotest/neotest", 4 | dependencies = { 5 | "nvim-neotest/nvim-nio", 6 | "nvim-lua/plenary.nvim", 7 | "antoinemadec/FixCursorHold.nvim", 8 | "nvim-treesitter/nvim-treesitter", 9 | "olimorris/neotest-rspec", 10 | "zidhuss/neotest-minitest", 11 | }, 12 | opts = { 13 | adapters = { 14 | ["neotest-rspec"] = { 15 | -- NOTE: By default neotest-rspec uses the system wide rspec gem instead of the one through bundler 16 | -- rspec_cmd = function() 17 | -- return vim.tbl_flatten({ 18 | -- "bundle", 19 | -- "exec", 20 | -- "rspec", 21 | -- }) 22 | -- end, 23 | }, 24 | ["neotest-minitest"] = { 25 | -- NOTE: By default neotest-minitest uses the system wide minitest gem instead of the one through bundler 26 | -- minitest_cmd = function() 27 | -- return vim.tbl_flatten({ 28 | -- "bundle", 29 | -- "exec", 30 | -- "rails", 31 | -- "test", 32 | -- }) 33 | -- end, 34 | }, 35 | }, 36 | }, 37 | }, 38 | } 39 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-nvim-lint.lua: -------------------------------------------------------------------------------- 1 | -- Adapted from https://github.com/linkarzu/dotfiles-latest/blob/main/neovim/neobean/lua/plugins/nvim-lint.lua 2 | 3 | return { 4 | "mfussenegger/nvim-lint", 5 | optional = true, 6 | opts = { 7 | linters = { 8 | ["markdownlint-cli2"] = { 9 | args = { "--config", os.getenv("HOME") .. "/.markdownlint.yaml", "--" }, 10 | }, 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-nvim-lspconfig.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "neovim/nvim-lspconfig", 3 | opts = { 4 | diagnostics = { 5 | underline = true, 6 | update_in_insert = false, 7 | severity_sort = true, 8 | virtual_text = true, 9 | float = { 10 | source = "always", -- Or "if_many" 11 | }, 12 | signs = true, 13 | }, 14 | servers = { 15 | -- https://shopify.github.io/ruby-lsp/editors.html#lazyvim-lsp 16 | ruby_lsp = { 17 | mason = false, 18 | cmd = { vim.fn.expand("~/.asdf/shims/ruby-lsp") }, 19 | }, 20 | -- https://github.com/standardrb/standard 21 | standardrb = { 22 | mason = false, 23 | cmd = { vim.fn.expand("~/.asdf/shims/standardrb"), "--lsp" }, 24 | filetypes = { "ruby", "rakefile" }, 25 | }, 26 | }, 27 | }, 28 | } 29 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-nvim-ts-autotag.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "windwp/nvim-ts-autotag", 4 | opts = { 5 | filetypes = { 6 | "embedded_template", 7 | "eruby", 8 | "html", 9 | "xml", 10 | }, 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-snacks.lua: -------------------------------------------------------------------------------- 1 | -- Uncomment the conditional to disable this config. 2 | -- stylua: ignore 3 | -- if true then return {} end 4 | 5 | return { 6 | "folke/snacks.nvim", 7 | keys = { 8 | -- Always open picker at project root 9 | { "", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" }, 10 | }, 11 | opts = { 12 | picker = { 13 | hidden = true, 14 | sources = { 15 | -- These define their own options, we must override their defaults. 16 | files = { hidden = true }, 17 | buffers = { hidden = true }, 18 | -- Explorer and the rest of the sources don't define their own opts 19 | -- so it will use the picker options defined above and we can choose 20 | -- to override them if desired. 21 | explorer = { ignored = true }, 22 | }, 23 | }, 24 | }, 25 | } 26 | 27 | -- Reference: 28 | -- https://www.reddit.com/r/neovim/comments/1ittmg3/hidden_files_in_lazyvim/ 29 | -- https://github.com/nickjj/dotfiles/blob/99713e0f5011cfbf934c9bd51cfffc1498b35431/.config/nvim/lua/plugins/snacks.lua 30 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-treesitter/nvim-treesitter", 4 | opts = { 5 | ensure_installed = { 6 | "bash", 7 | "c", 8 | "css", 9 | "diff", 10 | "embedded_template", 11 | "fish", 12 | "html", 13 | "javascript", 14 | "jsdoc", 15 | "json", 16 | "json5", 17 | "jsonc", 18 | "lua", 19 | "luadoc", 20 | "luap", 21 | "markdown", 22 | "markdown_inline", 23 | "python", 24 | "query", 25 | "regex", 26 | "ruby", 27 | "rust", 28 | "toml", 29 | "tsx", 30 | "typescript", 31 | "vim", 32 | "vimdoc", 33 | "vue", 34 | "yaml", 35 | }, 36 | }, 37 | }, 38 | } 39 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/extend-trouble.lua: -------------------------------------------------------------------------------- 1 | -- https://github.com/folke/trouble.nvimdev 2 | -- https://www.lazyvim.org/plugins/editor#troublenvim 3 | 4 | return { 5 | { 6 | "folke/trouble.nvim", 7 | -- opts will be merged with the parent spec 8 | opts = { use_diagnostic_signs = true }, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/gruvbox.lua: -------------------------------------------------------------------------------- 1 | -- Uncomment the conditional to disable this config. 2 | -- stylua: ignore 3 | if true then return {} end 4 | 5 | return { 6 | { 7 | "ellisonleao/gruvbox.nvim", 8 | priority = 1000, 9 | config = true, 10 | opts = { 11 | terminal_colors = true, -- add neovim terminal colors 12 | undercurl = true, 13 | underline = false, 14 | bold = true, 15 | italic = { 16 | strings = true, 17 | emphasis = true, 18 | comments = true, 19 | operators = false, 20 | folds = true, 21 | }, 22 | strikethrough = true, 23 | invert_selection = false, 24 | invert_signs = false, 25 | invert_tabline = false, 26 | invert_intend_guides = false, 27 | inverse = false, -- invert background for search, diffs, statuslines and errors 28 | contrast = "soft", -- can be "hard", "soft" or empty string 29 | palette_overrides = {}, 30 | overrides = { 31 | IncSearch = { fg = "#504945", bg = "#ebdbb2" }, 32 | Search = { bg = "#665c54" }, 33 | StatusLine = { link = "lualine_c_normal" }, 34 | FlashLabel = { link = "DiffDelete" }, 35 | YankyPut = { bg = "#ebdbb2" }, 36 | YankyYanked = { bg = "#ebdbb2" }, 37 | }, 38 | dim_inactive = false, 39 | transparent_mode = false, 40 | }, 41 | }, 42 | } 43 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/rails-vim.lua: -------------------------------------------------------------------------------- 1 | -- https://github.com/tpope/vim-rails 2 | 3 | return { 4 | "tpope/vim-rails", 5 | } 6 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/tokyonight.lua: -------------------------------------------------------------------------------- 1 | -- https://github.com/folke/tokyonight.nvimdev 2 | 3 | return { 4 | { 5 | "folke/tokyonight.nvim", 6 | lazy = true, 7 | opts = { 8 | style = "moon", -- The theme comes in three styles, `storm`, `moon`, a darker variant `night` and `day` 9 | light_style = "day", -- The theme is used when the background is set to light 10 | transparent = false, -- Enable this to disable setting the background color 11 | terminal_colors = true, -- Configure the colors used when opening a `:terminal` in [Neovim](https://github.com/neovim/neovim) 12 | styles = { 13 | -- Style to be applied to different syntax groups 14 | -- Value is any valid attr-list value for `:help nvim_set_hl` 15 | comments = { italic = true }, 16 | keywords = { italic = true }, 17 | functions = {}, 18 | variables = {}, 19 | -- Background styles. Can be "dark", "transparent" or "normal" 20 | sidebars = "normal", -- style for sidebars, see below 21 | floats = "normal", -- style for floating windows 22 | }, 23 | sidebars = { "qf", "help" }, -- Set a darker background on sidebar-like windows. For example: `["qf", "vista_kind", "terminal", "packer"]` 24 | day_brightness = 0.3, -- Adjusts the brightness of the colors of the **Day** style. Number between 0 and 1, from dull to vibrant colors 25 | hide_inactive_statusline = false, -- Enabling this option, will hide inactive statuslines and replace them with a thin border instead. Should work with the standard **StatusLine** and **LuaLine**. 26 | dim_inactive = false, -- dims inactive windows 27 | lualine_bold = false, -- When `true`, section headers in the lualine theme will be bold 28 | }, 29 | }, 30 | } 31 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/vim-tmux-navigator.lua: -------------------------------------------------------------------------------- 1 | -- https://github.com/christoomey/vim-tmux-navigator 2 | 3 | return { 4 | "christoomey/vim-tmux-navigator", 5 | cmd = { 6 | "TmuxNavigateLeft", 7 | "TmuxNavigateDown", 8 | "TmuxNavigateUp", 9 | "TmuxNavigateRight", 10 | "TmuxNavigatePrevious", 11 | "TmuxNavigatorProcessList", 12 | }, 13 | keys = { 14 | { "", "TmuxNavigateLeft" }, 15 | { "", "TmuxNavigateDown" }, 16 | { "", "TmuxNavigateUp" }, 17 | { "", "TmuxNavigateRight" }, 18 | { "", "TmuxNavigatePrevious" }, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /nvim/.config/nvim/spell: -------------------------------------------------------------------------------- 1 | ../../../spell/ -------------------------------------------------------------------------------- /nvim/.config/nvim/stylua.toml: -------------------------------------------------------------------------------- 1 | # https://github.com/JohnnyMorganz/StyLua#configuration 2 | 3 | column_width = 120 4 | line_endings = "Unix" 5 | indent_type = "Spaces" 6 | indent_width = 2 7 | quote_style = "AutoPreferDouble" 8 | call_parentheses = "Always" 9 | collapse_simple_statement = "Never" 10 | -------------------------------------------------------------------------------- /rc/.hushlogin: -------------------------------------------------------------------------------- 1 | # The mere presence of this file in the home directory disables the system 2 | # copyright notice, the date and time of the last login, the message of the 3 | # day as well as other information that may otherwise appear on login. 4 | # See `man login`. 5 | -------------------------------------------------------------------------------- /rc/.ripgreprc: -------------------------------------------------------------------------------- 1 | # https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md#configuration-file 2 | 3 | # Don't print lines longer than this limit in bytes. Longer lines are omitted, 4 | # and only the number of matches in that line is printed. 5 | --max-columns=150 6 | 7 | # Show a preview for long lines. 8 | --max-columns-preview 9 | 10 | # Limit search depth for directories. 11 | --max-depth=8 12 | 13 | # Search hidden files / directories (e.g. dotfiles) by default 14 | --hidden 15 | 16 | # Files/folders to ignore 17 | --glob=!**/galaxy/roles/* 18 | --glob=!**/node_modules/* 19 | --glob=!.cache/* 20 | --glob=!.config/htop 21 | --glob=!.git/* 22 | --glob=!Library/* 23 | --glob=!Movies/* 24 | --glob=!build* 25 | --glob=!coverage/* 26 | --glob=!dist/* 27 | --glob=!lib/bf_curriculum/* 28 | --glob=!log/* 29 | --glob=!public/* 30 | --glob=!tmp/* 31 | --glob=!vendor/* 32 | 33 | # Set the colors. 34 | --colors=line:none 35 | --colors=line:style:bold 36 | 37 | # Searches case insensitively if the pattern is all lowercase. 38 | # Search case sensitively otherwise. 39 | --smart-case 40 | -------------------------------------------------------------------------------- /ruby/.default-gems: -------------------------------------------------------------------------------- 1 | amazing_print 2 | bundler 3 | foreman 4 | irb-theme-tokyonight 5 | neovim 6 | overcommit 7 | rubocop 8 | ruby-lsp 9 | standard 10 | tmuxinator 11 | -------------------------------------------------------------------------------- /ruby/.gemrc: -------------------------------------------------------------------------------- 1 | --- 2 | :backtrace: true 3 | :bulk_threshold: 1000 4 | :sources: 5 | - https://rubygems.org/ 6 | :update_sources: true 7 | :verbose: true 8 | :concurrent_downloads: 8 9 | gem: "--document=yri" 10 | -------------------------------------------------------------------------------- /ruby/.irbrc: -------------------------------------------------------------------------------- 1 | # https://github.com/amazing-print/amazing_print#irb-integration 2 | if defined?(AmazingPrint) 3 | require "amazing_print" 4 | AmazingPrint.irb! 5 | end 6 | 7 | # https://github.com/vitallium/irb-theme-tokyonight 8 | if defined?(Irb::Theme::Tokyonight) 9 | require "irb/theme/tokyonight/storm" 10 | end 11 | 12 | # vim: set filetype=ruby: 13 | -------------------------------------------------------------------------------- /ruby/.pryrc: -------------------------------------------------------------------------------- 1 | if defined?(PryDebugger) || defined?(PryByebug) 2 | # Aliases 3 | Pry.commands.alias_command "..", "cd .." 4 | Pry.commands.alias_command "c", "clear-screen" 5 | Pry.commands.alias_command "cc", "continue" 6 | Pry.commands.alias_command "ff", "finish" 7 | Pry.commands.alias_command "h", "help" 8 | Pry.commands.alias_command "l", "ls" 9 | Pry.commands.alias_command "nn", "next" 10 | Pry.commands.alias_command "ss", "step" 11 | 12 | # Prompt (For more options, see change-prompt --list) 13 | Pry.config.prompt = Pry::Prompt[:nav] 14 | end 15 | 16 | # https://github.com/amazing-print/amazing_print#pry-integration 17 | if defined?(AmazingPrint) 18 | require "amazing_print" 19 | AmazingPrint.pry! 20 | end 21 | 22 | # vim: set filetype=ruby: 23 | -------------------------------------------------------------------------------- /ruby/.rubocop.yml: -------------------------------------------------------------------------------- 1 | --- 2 | AllCops: 3 | DisplayCopNames: true 4 | NewCops: enable 5 | 6 | Layout/IndentationConsistency: 7 | EnforcedStyle: indented_internal_methods 8 | 9 | Layout/LineLength: 10 | Max: 80 11 | 12 | Style/StringLiteralsInInterpolation: 13 | EnforcedStyle: double_quotes 14 | Enabled: true 15 | 16 | Style/StringLiterals: 17 | EnforcedStyle: double_quotes 18 | Enabled: true 19 | 20 | Style/FrozenStringLiteralComment: 21 | EnforcedStyle: never 22 | -------------------------------------------------------------------------------- /scripts/download_files.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Downloading all files from a specific directory in a GitHub 4 | # repository using curl can be tricky because GitHub does not 5 | # provide direct links to files within directories for curl to 6 | # handle recursively. However, you can use the GitHub API to 7 | # list the files and then download them individually. 8 | # 9 | # 1. List the files in the directory using the GitHub API. 10 | # 2. Download each file using curl. 11 | # 12 | # First, ensure you have jq installed to parse JSON data. 13 | # If you don’t have it installed, you can install it with the 14 | # following command (assuming you’re using a Debian-based system): 15 | # 16 | # sudo apt-get install jq 17 | # 18 | # Or if you're on macOS using Homebrew: 19 | # 20 | # brew install jq 21 | # 22 | # Before running this script, be sure to make it executable: 23 | # chmod +x download_files.sh 24 | # 25 | # Usage: 26 | # 1. Set the GitHub repository information (REPO, BRANCH, DIR). 27 | # 2. Set the destination directory where the files will be saved (DEST_DIR). 28 | # 3. Run the script: ./download_files.sh 29 | 30 | # GitHub repository information 31 | REPO="sxyazi/yazi" 32 | BRANCH="latest" 33 | DIR="yazi-config/preset" 34 | 35 | # Destination directory 36 | DEST_DIR="./downloaded_files" 37 | 38 | # Create the destination directory if it doesn't exist 39 | mkdir -p "$DEST_DIR" 40 | 41 | # Fetch the file list from GitHub API 42 | FILE_LIST=$(curl -s "https://api.github.com/repos/$REPO/contents/$DIR?ref=$BRANCH" | jq -r '.[].download_url') 43 | 44 | # Loop through each file URL and download it 45 | for FILE_URL in $FILE_LIST; do 46 | FILE_NAME=$(basename "$FILE_URL") 47 | echo "Downloading $FILE_NAME..." 48 | curl -s -L "$FILE_URL" -o "$DEST_DIR/$FILE_NAME" 49 | done 50 | 51 | echo "All files downloaded to $DEST_DIR" 52 | 53 | # Thank you ChatGPT for this script 🙂 54 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ################################################################################ 4 | # setup.sh 5 | # 6 | # This script uses GNU Stow to symlink files and directories into place. 7 | # It can be run safely multiple times on the same machine. (idempotency) 8 | ################################################################################ 9 | 10 | dotfiles_echo() { 11 | local fmt="$1" 12 | shift 13 | 14 | # shellcheck disable=SC2059 15 | printf "\\n[DOTFILES] ${fmt}\\n" "$@" 16 | } 17 | 18 | backup_stow_conflict() { 19 | dotfiles_echo "Conflict detected: ${1} Backing up.." 20 | local BACKUP_SUFFIX 21 | BACKUP_SUFFIX="$(date +%Y-%m-%d)_$(date +%s)" 22 | mv -v "$1" "${1}_${BACKUP_SUFFIX}" 23 | } 24 | 25 | osname=$(uname) 26 | 27 | if [ "$osname" != "Darwin" ]; then 28 | dotfiles_echo "Oops, it looks like you're using a non-Apple system. Sorry, this script only supports macOS. Exiting..." 29 | exit 1 30 | fi 31 | 32 | if ! command -v stow >/dev/null; then 33 | dotfiles_echo "GNU Stow is required but was not found. Try: brew install stow" 34 | dotfiles_echo "Exiting..." 35 | exit 1 36 | fi 37 | 38 | dotfiles_echo "Initializing dotfiles setup..." 39 | 40 | sudo -v 41 | 42 | set -e # Terminate script if anything exits with a non-zero value 43 | 44 | if [ -z "$DOTFILES" ]; then 45 | export DOTFILES="${HOME}/dotfiles" 46 | fi 47 | 48 | dotfiles_echo "Setting HostName..." 49 | 50 | COMPUTER_NAME=$(scutil --get ComputerName) 51 | LOCAL_HOST_NAME=$(scutil --get LocalHostName) 52 | 53 | sudo scutil --set HostName "$LOCAL_HOST_NAME" 54 | HOST_NAME=$(scutil --get HostName) 55 | 56 | sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server.plist NetBIOSName -string "$HOST_NAME" 57 | 58 | printf "ComputerName: ==> [%s]\\n" "$COMPUTER_NAME" 59 | printf "LocalHostName: ==> [%s]\\n" "$LOCAL_HOST_NAME" 60 | printf "HostName: ==> [%s]\\n" "$HOST_NAME" 61 | 62 | if [ -z "$XDG_CONFIG_HOME" ]; then 63 | dotfiles_echo "Setting up ~/.config directory..." 64 | if [ ! -d "${HOME}/.config" ]; then 65 | mkdir "${HOME}/.config" 66 | fi 67 | export XDG_CONFIG_HOME="${HOME}/.config" 68 | fi 69 | 70 | if [ ! -d "${HOME}/.local/bin" ]; then 71 | dotfiles_echo "Setting up ~/.local/bin directory..." 72 | mkdir -pv "${HOME}/.local/bin" 73 | fi 74 | 75 | dotfiles_echo "Checking your system architecture..." 76 | 77 | arch="$(uname -m)" 78 | 79 | if [ "$arch" == "arm64" ]; then 80 | dotfiles_echo "You're on Apple Silicon! Setting HOMEBREW_PREFIX to /opt/homebrew..." 81 | HOMEBREW_PREFIX="/opt/homebrew" 82 | else 83 | dotfiles_echo "You're on an Intel Mac! Setting HOMEBREW_PREFIX to /usr/local..." 84 | HOMEBREW_PREFIX="/usr/local" 85 | fi 86 | 87 | dotfiles_echo "Checking for potential stow conflicts..." 88 | 89 | cd "${DOTFILES}/" # stow needs to run from inside dotfiles dir 90 | 91 | stow_conflicts=( 92 | ".asdfrc" 93 | ".bashrc" 94 | ".config/fish" 95 | ".config/ghostty" 96 | ".config/kitty" 97 | ".config/lazygit" 98 | ".config/nvim" 99 | ".config/starship.toml" 100 | ".config/tmux" 101 | ".config/yamllint" 102 | ".config/zsh" 103 | ".config/zsh-abbr" 104 | ".default-gems" 105 | ".default-npm-packages" 106 | ".gemrc" 107 | ".gitconfig" 108 | ".gitignore_global" 109 | ".gitmessage" 110 | ".hushlogin" 111 | ".irbrc" 112 | ".laptop.local" 113 | ".local/bin/colortest" 114 | ".local/bin/git-brst" 115 | ".local/bin/git-cm" 116 | ".local/bin/git-publish" 117 | ".local/bin/git-uncommit" 118 | ".local/bin/tat" 119 | ".npmrc" 120 | ".pryrc" 121 | ".ripgreprc" 122 | ".rubocop.yml" 123 | ".tool-versions" 124 | ".zshrc" 125 | "Brewfile" 126 | ) 127 | 128 | for item in "${stow_conflicts[@]}"; do 129 | if [ -e "${HOME}/${item}" ]; then 130 | # Potential conflict detected 131 | if [ -L "${HOME}/${item}" ]; then 132 | # This is a symlink and we can ignore it. 133 | continue 134 | elif [ "$item" == ".tool-versions" ]; then 135 | # This was likely generated by Laptop, and we actually want to adopt it for now. 136 | dotfiles_echo "${HOME}/.tool-versions file found. Adopting..." 137 | stow --adopt asdf/ 138 | else 139 | # This is a file or directory that will cause a conflict. 140 | backup_stow_conflict "${HOME}/${item}" 141 | fi 142 | fi 143 | done 144 | 145 | dotfiles_echo "Setting up symlinks with GNU Stow..." 146 | 147 | for item in *; do 148 | if [ -d "$item" ]; then 149 | stow "$item"/ 150 | fi 151 | done 152 | 153 | if command -v fish &>/dev/null; then 154 | dotfiles_echo "Initializing fish_user_paths..." 155 | command fish -c "set -U fish_user_paths $HOME/.asdf/shims $HOME/.local/bin $HOME/.bin $HOME/.yarn/bin $HOMEBREW_PREFIX/bin" 156 | fi 157 | 158 | if [ -d "/Applications/iTerm.app" ]; then 159 | dotfiles_echo "Setting up iTerm2 preferences..." 160 | 161 | # Specify the preferences directory 162 | defaults write com.googlecode.iterm2.plist PrefsCustomFolder -string "$DOTFILES/iterm" 163 | 164 | # Tell iTerm2 to use the custom preferences in the directory 165 | defaults write com.googlecode.iterm2.plist LoadPrefsFromCustomFolder -bool true 166 | fi 167 | 168 | if command -v tmux &>/dev/null; then 169 | if [ ! -d "${HOME}/.terminfo" ]; then 170 | dotfiles_echo "Installing custom terminfo entries..." 171 | # These entries enable, among other things, italic text in the terminal. 172 | tic -x "${DOTFILES}/terminfo/tmux-256color.terminfo" 173 | tic -x "${DOTFILES}/terminfo/xterm-256color-italic.terminfo" 174 | fi 175 | 176 | if [ ! -d "${DOTFILES}/tmux/.config/tmux/plugins" ]; then 177 | dotfiles_echo "Installing Tmux Plugin Manager..." 178 | git clone https://github.com/tmux-plugins/tpm "${DOTFILES}/tmux/.config/tmux/plugins/tpm" 179 | fi 180 | fi 181 | 182 | dotfiles_echo "Dotfiles setup complete!" 183 | 184 | echo 185 | echo "Possible next steps:" 186 | echo "-> Install Zap (https://www.zapzsh.com)" 187 | echo "-> Install Homebrew packages (brew bundle install)" 188 | if command -v tmux &>/dev/null; then 189 | echo "-> Install Tmux plugins with + I (https://github.com/tmux-plugins/tpm)" 190 | fi 191 | echo "-> Set up 1Password CLI (https://developer.1password.com/docs/cli)" 192 | echo "-> Check out documentation for LazyVim (https://www.lazyvim.org/)" 193 | 194 | echo 195 | -------------------------------------------------------------------------------- /spell/.stow-local-ignore: -------------------------------------------------------------------------------- 1 | .+ # Ignore everything 2 | -------------------------------------------------------------------------------- /spell/en.utf-8.add: -------------------------------------------------------------------------------- 1 | breaketh 2 | cleaveth 3 | undefiled 4 | counsellors 5 | heardest 6 | melteth 7 | Stablish 8 | reproacheth 9 | intreated 10 | fainteth 11 | digged 12 | lovingkindness 13 | abideth 14 | alway 15 | puttest 16 | trembleth 17 | usest 18 | loveth 19 | endureth 20 | standeth 21 | findeth 22 | counsellers 23 | yaml 24 | Ansible 25 | Mina 26 | subtrees 27 | submodules 28 | intracategory 29 | intercategory 30 | namespace 31 | ETO's 32 | boolean 33 | configs 34 | Procfile 35 | postgres 36 | Rubocop 37 | Solarized 38 | Capybara 39 | livereload 40 | flexbox 41 | whitelist 42 | Ansible's 43 | collecter 44 | dotfiles 45 | runtime 46 | Homebrew's 47 | repo 48 | macOS 49 | PostgreSQL 50 | Bitbucket 51 | Homebrew 52 | Tmux 53 | iTerm2 54 | dotfile 55 | repos 56 | https 57 | github 58 | thoughtbot 59 | http 60 | Zsh 61 | Anatoli 62 | README 63 | Neovim 64 | Refactor 65 | refactor 66 | precompile 67 | precompiled 68 | precompiling 69 | Webpacker 70 | precompiles 71 | JavaScript 72 | postgresql 73 | debounce 74 | lodash 75 | navbar 76 | css 77 | Villeneuve 78 | Raphaël 79 | jpg 80 | READMORE 81 | blog 82 | webpack 83 | Serhii 84 | Kelsie 85 | CMO 86 | Chepara 87 | rspec 88 | param 89 | admins 90 | playbooks 91 | Ubuntu 92 | Debian 93 | Playbook 94 | Wiki 95 | ETO 96 | wiki 97 | SSL 98 | Online 99 | cron 100 | playbook 101 | Outbox 102 | outbox 103 | Kade 104 | L'viv 105 | we 106 | Catan 107 | outro 108 | Lutsk 109 | Tolik's 110 | Serhii's 111 | Truskavets 112 | Stebnyk 113 | Boryslav 114 | Yasenytsya 115 | Zamkova 116 | AsciiDoc 117 | Pandoc 118 | doctype 119 | Coronavirus 120 | colorschemes 121 | colorscheme 122 | app 123 | zsh 124 | vim 125 | Screenshot 126 | Config 127 | fave's 128 | Neovim's 129 | config 130 | screenshot 131 | Vue 132 | tmux 133 | fave 134 | dev 135 | linting 136 | relatable 137 | churchy 138 | Pavlo 139 | Cafe 140 | OFReport 141 | cloudinary 142 | plugin 143 | Fairpark 144 | blogging 145 | Steeles 146 | shellcheck 147 | rebase 148 | EOF 149 | EOL 150 | online 151 | UI 152 | Zhylavy 153 | Fedir 154 | Levchuk 155 | COVID 156 | lockfile 157 | GitHub 158 | myeloma 159 | eslint 160 | OpenCore 161 | licensors 162 | downloadable 163 | Euro 164 | Britford 165 | sublicensable 166 | spamming 167 | trojan 168 | sublicense 169 | URLs 170 | biblefirst 171 | getbiblefirst 172 | homeschool 173 | cli 174 | Natallia 175 | Katelin 176 | Vira 177 | Bohdana 178 | Kyiv 179 | podcast 180 | oblasts 181 | proven 182 | Gemfile 183 | admin 184 | Prepend 185 | prepend 186 | Žilina 187 | Zac 188 | Shepperson 189 | Sheppersons 190 | LunarVim 191 | nodejs 192 | joshukraine 193 | symlink 194 | IDE 195 | Radekhiv 196 | Facebook 197 | USD 198 | Xcode 199 | iCloud 200 | Mojš 201 | Vladyslav 202 | Andrii 203 | bloggers 204 | smartphones 205 | reconstructive 206 | Radekhivski 207 | Hospodyni 208 | Parashka 209 | oblast 210 | Skole 211 | Devicons 212 | Plugins 213 | LazyVim 214 | plugins 215 | Cascadia 216 | cascadia 217 | Fira 218 | fira 219 | JetBrains 220 | Monaspace 221 | jetbrains 222 | monaspace 223 | monolisa 224 | MonoLisa 225 | NERDTree 226 | devicons 227 | iterm2 228 | Distros 229 | lazyvim 230 | NvChad 231 | nvim 232 | baptizees 233 | -------------------------------------------------------------------------------- /spell/en.utf-8.add.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/en.utf-8.add.spl -------------------------------------------------------------------------------- /spell/en.utf-8.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/en.utf-8.spl -------------------------------------------------------------------------------- /spell/en.utf-8.sug: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/en.utf-8.sug -------------------------------------------------------------------------------- /spell/es.utf-8.add: -------------------------------------------------------------------------------- 1 | Patmos 2 | -------------------------------------------------------------------------------- /spell/es.utf-8.add.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/es.utf-8.add.spl -------------------------------------------------------------------------------- /spell/es.utf-8.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/es.utf-8.spl -------------------------------------------------------------------------------- /spell/fr.utf-8.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/fr.utf-8.spl -------------------------------------------------------------------------------- /spell/ru.utf-8.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/ru.utf-8.spl -------------------------------------------------------------------------------- /spell/uk.utf-8.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshukraine/dotfiles/b4958b03105d9ae22b346d1c90c3d2c6eb198da1/spell/uk.utf-8.spl -------------------------------------------------------------------------------- /starship/.config/starship.toml: -------------------------------------------------------------------------------- 1 | # REFERENCE: 2 | # https://starship.rs/config/ 3 | # https://www.nerdfonts.com/cheat-sheet 4 | 5 | # Get editor completions based on the config schema 6 | "$schema" = 'https://starship.rs/config-schema.json' 7 | 8 | add_newline = false 9 | command_timeout = 2000 10 | 11 | right_format = """$time""" 12 | 13 | [package] 14 | disabled = true 15 | 16 | [directory] 17 | style = "bold bright-blue" 18 | 19 | [git_branch] 20 | style = "bold bright-white" 21 | symbol = "󰘬 " 22 | 23 | [git_status] 24 | format = '([\[$all_status$ahead_behind \]]($style) )' 25 | ahead = " [](purple)[$count](white)" 26 | behind = " [](cyan)[$count](white)" 27 | conflicted = ' [=$count](yellow)' 28 | deleted = ' [✘$count](bright-black)' 29 | diverged = " [](cyan)[$ahead_count](white)[](purple)[$behind_count](white)" 30 | modified = ' [*$count](red)' 31 | renamed = " [»$count](purple)" 32 | staged = " [+$count](green)" 33 | stashed = " [\\$$count](yellow)" 34 | style = "bold bright-white" 35 | untracked = " [?$count](cyan)" 36 | 37 | [git_commit] 38 | only_detached = true 39 | style = "bright-black" 40 | format = "[$hash]($style) " 41 | 42 | [ruby] 43 | symbol = " " 44 | 45 | [nodejs] 46 | symbol = "󰎙 " 47 | 48 | [python] 49 | symbol = "󰌠 " 50 | 51 | # [shell] 52 | # disabled = false 53 | # style = 'cyan' 54 | # bash_indicator = '\$' 55 | # fish_indicator = '󰈺' 56 | # zsh_indicator = '%' 57 | 58 | [os] 59 | disabled = false 60 | 61 | [os.symbols] 62 | Macos = " " 63 | 64 | [time] 65 | disabled = false 66 | format = '[󱑎 $time]($style) ' 67 | style = "bright-black" 68 | -------------------------------------------------------------------------------- /terminfo/.stow-local-ignore: -------------------------------------------------------------------------------- 1 | .+ # Ignore everything 2 | -------------------------------------------------------------------------------- /terminfo/tmux-256color.terminfo: -------------------------------------------------------------------------------- 1 | tmux-256color|tmux with 256 colors, 2 | ritm=\E[23m, rmso=\E[27m, sitm=\E[3m, smso=\E[7m, Ms@, 3 | khome=\E[1~, kend=\E[4~, 4 | use=xterm-256color, use=screen-256color, 5 | -------------------------------------------------------------------------------- /terminfo/xterm-256color-italic.terminfo: -------------------------------------------------------------------------------- 1 | xterm-256color-italic|xterm with 256 colors and italic, 2 | sitm=\E[3m, ritm=\E[23m, 3 | use=xterm-256color, 4 | -------------------------------------------------------------------------------- /tmux/.config/tmux/themes/tokyonight_day.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # TokyoNight colors for Tmux 4 | 5 | set -g mode-style "fg=#2e7de9,bg=#a8aecb" 6 | 7 | set -g message-style "fg=#2e7de9,bg=#a8aecb" 8 | set -g message-command-style "fg=#2e7de9,bg=#a8aecb" 9 | 10 | set -g pane-border-style "fg=#a8aecb" 11 | set -g pane-active-border-style "fg=#2e7de9" 12 | 13 | set -g status "on" 14 | set -g status-justify "left" 15 | 16 | set -g status-style "fg=#2e7de9,bg=#d0d5e3" 17 | 18 | set -g status-left-length "100" 19 | set -g status-right-length "100" 20 | 21 | set -g status-left-style NONE 22 | set -g status-right-style NONE 23 | 24 | set -g status-left "#[fg=#b4b5b9,bg=#2e7de9,bold] #S #[fg=#2e7de9,bg=#d0d5e3,nobold,nounderscore,noitalics]" 25 | set -g status-right "#[fg=#d0d5e3,bg=#d0d5e3,nobold,nounderscore,noitalics]#[fg=#2e7de9,bg=#d0d5e3] #{prefix_highlight} #[fg=#a8aecb,bg=#d0d5e3,nobold,nounderscore,noitalics]#[fg=#2e7de9,bg=#a8aecb] %Y-%m-%d  %I:%M %p #[fg=#2e7de9,bg=#a8aecb,nobold,nounderscore,noitalics]#[fg=#b4b5b9,bg=#2e7de9,bold] #h " 26 | if-shell '[ "$(tmux show-option -gqv "clock-mode-style")" == "24" ]' { 27 | set -g status-right "#[fg=#d0d5e3,bg=#d0d5e3,nobold,nounderscore,noitalics]#[fg=#2e7de9,bg=#d0d5e3] #{prefix_highlight} #[fg=#a8aecb,bg=#d0d5e3,nobold,nounderscore,noitalics]#[fg=#2e7de9,bg=#a8aecb] %Y-%m-%d  %H:%M #[fg=#2e7de9,bg=#a8aecb,nobold,nounderscore,noitalics]#[fg=#b4b5b9,bg=#2e7de9,bold] #h " 28 | } 29 | 30 | setw -g window-status-activity-style "underscore,fg=#6172b0,bg=#d0d5e3" 31 | setw -g window-status-separator "" 32 | setw -g window-status-style "NONE,fg=#6172b0,bg=#d0d5e3" 33 | setw -g window-status-format "#[fg=#d0d5e3,bg=#d0d5e3,nobold,nounderscore,noitalics]#[default] #I  #W #F #[fg=#d0d5e3,bg=#d0d5e3,nobold,nounderscore,noitalics]" 34 | setw -g window-status-current-format "#[fg=#d0d5e3,bg=#a8aecb,nobold,nounderscore,noitalics]#[fg=#2e7de9,bg=#a8aecb,bold] #I  #W #F #[fg=#a8aecb,bg=#d0d5e3,nobold,nounderscore,noitalics]" 35 | 36 | # tmux-plugins/tmux-prefix-highlight support 37 | set -g @prefix_highlight_output_prefix "#[fg=#8c6c3e]#[bg=#d0d5e3]#[fg=#d0d5e3]#[bg=#8c6c3e]" 38 | set -g @prefix_highlight_output_suffix "" 39 | -------------------------------------------------------------------------------- /tmux/.config/tmux/themes/tokyonight_moon.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # TokyoNight colors for Tmux 4 | 5 | set -g mode-style "fg=#82aaff,bg=#3b4261" 6 | 7 | set -g message-style "fg=#82aaff,bg=#3b4261" 8 | set -g message-command-style "fg=#82aaff,bg=#3b4261" 9 | 10 | set -g pane-border-style "fg=#3b4261" 11 | set -g pane-active-border-style "fg=#82aaff" 12 | 13 | set -g status "on" 14 | set -g status-justify "left" 15 | 16 | set -g status-style "fg=#82aaff,bg=#1e2030" 17 | 18 | set -g status-left-length "100" 19 | set -g status-right-length "100" 20 | 21 | set -g status-left-style NONE 22 | set -g status-right-style NONE 23 | 24 | set -g status-left "#[fg=#1b1d2b,bg=#82aaff,bold] #S #[fg=#82aaff,bg=#1e2030,nobold,nounderscore,noitalics]" 25 | set -g status-right "#[fg=#1e2030,bg=#1e2030,nobold,nounderscore,noitalics]#[fg=#82aaff,bg=#1e2030] #{prefix_highlight} #[fg=#3b4261,bg=#1e2030,nobold,nounderscore,noitalics]#[fg=#82aaff,bg=#3b4261] %Y-%m-%d  %I:%M %p #[fg=#82aaff,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#1b1d2b,bg=#82aaff,bold] #h " 26 | if-shell '[ "$(tmux show-option -gqv "clock-mode-style")" == "24" ]' { 27 | set -g status-right "#[fg=#1e2030,bg=#1e2030,nobold,nounderscore,noitalics]#[fg=#82aaff,bg=#1e2030] #{prefix_highlight} #[fg=#3b4261,bg=#1e2030,nobold,nounderscore,noitalics]#[fg=#82aaff,bg=#3b4261] %Y-%m-%d  %H:%M #[fg=#82aaff,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#1b1d2b,bg=#82aaff,bold] #h " 28 | } 29 | 30 | setw -g window-status-activity-style "underscore,fg=#828bb8,bg=#1e2030" 31 | setw -g window-status-separator "" 32 | setw -g window-status-style "NONE,fg=#828bb8,bg=#1e2030" 33 | setw -g window-status-format "#[fg=#1e2030,bg=#1e2030,nobold,nounderscore,noitalics]#[default] #I  #W #F #[fg=#1e2030,bg=#1e2030,nobold,nounderscore,noitalics]" 34 | setw -g window-status-current-format "#[fg=#1e2030,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#82aaff,bg=#3b4261,bold] #I  #W #F #[fg=#3b4261,bg=#1e2030,nobold,nounderscore,noitalics]" 35 | 36 | # tmux-plugins/tmux-prefix-highlight support 37 | set -g @prefix_highlight_output_prefix "#[fg=#ffc777]#[bg=#1e2030]#[fg=#1e2030]#[bg=#ffc777]" 38 | set -g @prefix_highlight_output_suffix "" 39 | -------------------------------------------------------------------------------- /tmux/.config/tmux/themes/tokyonight_night.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # TokyoNight colors for Tmux 4 | 5 | set -g mode-style "fg=#7aa2f7,bg=#3b4261" 6 | 7 | set -g message-style "fg=#7aa2f7,bg=#3b4261" 8 | set -g message-command-style "fg=#7aa2f7,bg=#3b4261" 9 | 10 | set -g pane-border-style "fg=#3b4261" 11 | set -g pane-active-border-style "fg=#7aa2f7" 12 | 13 | set -g status "on" 14 | set -g status-justify "left" 15 | 16 | set -g status-style "fg=#7aa2f7,bg=#16161e" 17 | 18 | set -g status-left-length "100" 19 | set -g status-right-length "100" 20 | 21 | set -g status-left-style NONE 22 | set -g status-right-style NONE 23 | 24 | set -g status-left "#[fg=#15161e,bg=#7aa2f7,bold] #S #[fg=#7aa2f7,bg=#16161e,nobold,nounderscore,noitalics]" 25 | set -g status-right "#[fg=#16161e,bg=#16161e,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#16161e] #{prefix_highlight} #[fg=#3b4261,bg=#16161e,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#3b4261] %Y-%m-%d  %I:%M %p #[fg=#7aa2f7,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#15161e,bg=#7aa2f7,bold] #h " 26 | if-shell '[ "$(tmux show-option -gqv "clock-mode-style")" == "24" ]' { 27 | set -g status-right "#[fg=#16161e,bg=#16161e,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#16161e] #{prefix_highlight} #[fg=#3b4261,bg=#16161e,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#3b4261] %Y-%m-%d  %H:%M #[fg=#7aa2f7,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#15161e,bg=#7aa2f7,bold] #h " 28 | } 29 | 30 | setw -g window-status-activity-style "underscore,fg=#a9b1d6,bg=#16161e" 31 | setw -g window-status-separator "" 32 | setw -g window-status-style "NONE,fg=#a9b1d6,bg=#16161e" 33 | setw -g window-status-format "#[fg=#16161e,bg=#16161e,nobold,nounderscore,noitalics]#[default] #I  #W #F #[fg=#16161e,bg=#16161e,nobold,nounderscore,noitalics]" 34 | setw -g window-status-current-format "#[fg=#16161e,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#3b4261,bold] #I  #W #F #[fg=#3b4261,bg=#16161e,nobold,nounderscore,noitalics]" 35 | 36 | # tmux-plugins/tmux-prefix-highlight support 37 | set -g @prefix_highlight_output_prefix "#[fg=#e0af68]#[bg=#16161e]#[fg=#16161e]#[bg=#e0af68]" 38 | set -g @prefix_highlight_output_suffix "" 39 | -------------------------------------------------------------------------------- /tmux/.config/tmux/themes/tokyonight_storm.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # TokyoNight colors for Tmux 4 | 5 | set -g mode-style "fg=#7aa2f7,bg=#3b4261" 6 | 7 | set -g message-style "fg=#7aa2f7,bg=#3b4261" 8 | set -g message-command-style "fg=#7aa2f7,bg=#3b4261" 9 | 10 | set -g pane-border-style "fg=#3b4261" 11 | set -g pane-active-border-style "fg=#7aa2f7" 12 | 13 | set -g status "on" 14 | set -g status-justify "left" 15 | 16 | set -g status-style "fg=#7aa2f7,bg=#1f2335" 17 | 18 | set -g status-left-length "100" 19 | set -g status-right-length "100" 20 | 21 | set -g status-left-style NONE 22 | set -g status-right-style NONE 23 | 24 | set -g status-left "#[fg=#1d202f,bg=#7aa2f7,bold] #S #[fg=#7aa2f7,bg=#1f2335,nobold,nounderscore,noitalics]" 25 | set -g status-right "#[fg=#1f2335,bg=#1f2335,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#1f2335] #{prefix_highlight} #[fg=#3b4261,bg=#1f2335,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#3b4261] %Y-%m-%d  %I:%M %p #[fg=#7aa2f7,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#1d202f,bg=#7aa2f7,bold] #h " 26 | if-shell '[ "$(tmux show-option -gqv "clock-mode-style")" == "24" ]' { 27 | set -g status-right "#[fg=#1f2335,bg=#1f2335,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#1f2335] #{prefix_highlight} #[fg=#3b4261,bg=#1f2335,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#3b4261] %Y-%m-%d  %H:%M #[fg=#7aa2f7,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#1d202f,bg=#7aa2f7,bold] #h " 28 | } 29 | 30 | setw -g window-status-activity-style "underscore,fg=#a9b1d6,bg=#1f2335" 31 | setw -g window-status-separator "" 32 | setw -g window-status-style "NONE,fg=#a9b1d6,bg=#1f2335" 33 | setw -g window-status-format "#[fg=#1f2335,bg=#1f2335,nobold,nounderscore,noitalics]#[default] #I  #W #F #[fg=#1f2335,bg=#1f2335,nobold,nounderscore,noitalics]" 34 | setw -g window-status-current-format "#[fg=#1f2335,bg=#3b4261,nobold,nounderscore,noitalics]#[fg=#7aa2f7,bg=#3b4261,bold] #I  #W #F #[fg=#3b4261,bg=#1f2335,nobold,nounderscore,noitalics]" 35 | 36 | # tmux-plugins/tmux-prefix-highlight support 37 | set -g @prefix_highlight_output_prefix "#[fg=#e0af68]#[bg=#1f2335]#[fg=#1f2335]#[bg=#e0af68]" 38 | set -g @prefix_highlight_output_suffix "" 39 | -------------------------------------------------------------------------------- /tmux/.config/tmux/tmux.conf: -------------------------------------------------------------------------------- 1 | # $XDG_CONFIG_HOME/tmux/tmux.conf 2 | 3 | # Syntax reminder: 4 | # set == set-option 5 | # setw == set-window-option 6 | 7 | # Basic Tmux {{{ 8 | 9 | # Set prefix key 10 | unbind C-b 11 | set -g prefix C-a 12 | bind C-a send-prefix 13 | 14 | # Reload the file with prefix r 15 | bind r source-file ~/.config/tmux/tmux.conf \; display ".tmux.conf reloaded!" 16 | 17 | # Enable mouse support 18 | set -g mouse on 19 | 20 | # enable activity alerts 21 | setw -g monitor-activity on 22 | set -g visual-activity on 23 | 24 | # }}} 25 | 26 | # Sessions {{{ 27 | 28 | # Quickly switch between sessions 29 | bind-key C-j choose-tree 30 | 31 | # Break out new session based on current pane 32 | bind-key C-b send-keys 'tat && exit' 'C-m' 33 | 34 | # }}} 35 | 36 | # Windows and Panes {{{ 37 | 38 | # Set base index for windows and panes to 1 instead of 0 39 | set -g base-index 1 40 | set -g pane-base-index 1 41 | setw -g pane-base-index 1 42 | set -g renumber-windows on 43 | 44 | # Bind custom vertical and horizontal splits 45 | bind-key v split-window -h -p 35 # Default (50/50) vertical split: % 46 | bind-key s split-window -v -p 17 # Default (50/50) horizontal split: " 47 | 48 | # Pane resizing 49 | # <-> 50 | bind -r H resize-pane -L 10 51 | bind -r L resize-pane -R 10 52 | # ↑ ↓ 53 | bind -r K resize-pane -U 5 54 | bind -r J resize-pane -D 5 55 | 56 | # Select preset layouts 57 | bind-key - select-layout even-vertical 58 | bind-key | select-layout even-horizontal 59 | bind-key M select-layout main-horizontal 60 | bind-key m select-layout main-vertical 61 | bind-key t select-layout tiled 62 | 63 | # Break pane out into new window 64 | bind-key b break-pane -d 65 | 66 | # }}} 67 | 68 | # Terminal and Shell {{{ 69 | 70 | # Tells tmux up front what shell to expect 71 | set -g default-shell ${SHELL} 72 | 73 | # Display tmux session name in terminal title (instead of just "tmux") 74 | set -g set-titles on 75 | 76 | # Undercurl support 77 | # https://github.com/folke/tokyonight.nvim > "Fix undercurls in Tmux" 78 | set -g default-terminal "${TERM}" 79 | set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support 80 | set -as terminal-overrides ',*:Setulc=\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux-3.0 81 | 82 | # }}} 83 | 84 | # Vim Mode {{{ 85 | 86 | # Use vim keybindings in copy mode 87 | setw -g mode-keys vi 88 | bind-key -T copy-mode-vi v send-keys -X begin-selection 89 | bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle 90 | bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 91 | 92 | # }}} 93 | 94 | # Theme and Status Bar {{{ 95 | 96 | set -g status on 97 | set -g status-position top 98 | 99 | source-file $HOME/.config/tmux/themes/tokyonight_moon.tmux 100 | 101 | # }}} 102 | 103 | # Tmux Plugin Manager (TPM) {{{ 104 | 105 | # https://github.com/tmux-plugins/tpm 106 | # + I => Install new plugins 107 | # + U => Update plugins 108 | # + alt + u => Remove/uninstall unlisted plugins 109 | 110 | set -g @plugin 'tmux-plugins/tpm' 111 | set -g @plugin 'christoomey/vim-tmux-navigator' 112 | set -g @plugin 'tmux-plugins/tmux-yank' 113 | 114 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 115 | run '~/.config/tmux/plugins/tpm/tpm' 116 | 117 | # }}} 118 | 119 | # vim:foldmethod=marker:foldenable 120 | -------------------------------------------------------------------------------- /yamllint/.config/yamllint/config: -------------------------------------------------------------------------------- 1 | # REFERENCE: 2 | # https://yamllint.readthedocs.io/en/stable/configuration.html#default-configuration 3 | --- 4 | 5 | extends: default 6 | 7 | rules: 8 | braces: 9 | level: warning 10 | max-spaces-inside: 1 11 | brackets: 12 | level: warning 13 | max-spaces-inside: 1 14 | colons: 15 | level: warning 16 | commas: 17 | level: warning 18 | comments: disable 19 | comments-indentation: disable 20 | document-start: disable 21 | empty-lines: 22 | level: warning 23 | hyphens: 24 | level: warning 25 | indentation: 26 | level: warning 27 | indent-sequences: consistent 28 | line-length: 29 | level: warning 30 | allow-non-breakable-inline-mappings: true 31 | truthy: disable 32 | 33 | # vim: set filetype=yaml: 34 | -------------------------------------------------------------------------------- /yazi/.config/yazi/yazi.toml: -------------------------------------------------------------------------------- 1 | # A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. 2 | # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. 3 | "$schema" = "https://yazi-rs.github.io/schemas/yazi.json" 4 | 5 | [manager] 6 | ratio = [ 1, 4, 3 ] 7 | sort_by = "alphabetical" 8 | sort_sensitive = false 9 | sort_reverse = false 10 | sort_dir_first = true 11 | linemode = "none" 12 | show_hidden = false 13 | show_symlink = true 14 | scrolloff = 5 15 | 16 | [preview] 17 | tab_size = 2 18 | max_width = 600 19 | max_height = 900 20 | cache_dir = "" 21 | image_filter = "triangle" 22 | image_quality = 75 23 | sixel_fraction = 15 24 | ueberzug_scale = 1 25 | ueberzug_offset = [ 0, 0, 0, 0 ] 26 | 27 | [opener] 28 | edit = [ 29 | { run = '${EDITOR:=vi} "$@"', desc = "$EDITOR", block = true, for = "unix" }, 30 | { run = 'code "%*"', orphan = true, desc = "code", for = "windows" }, 31 | { run = 'code -w "%*"', block = true, desc = "code (block)", for = "windows" }, 32 | ] 33 | open = [ 34 | { run = 'xdg-open "$@"', desc = "Open", for = "linux" }, 35 | { run = 'open "$@"', desc = "Open", for = "macos" }, 36 | { run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" }, 37 | ] 38 | reveal = [ 39 | { run = 'xdg-open "$(dirname "$0")"', desc = "Reveal", for = "linux" }, 40 | { run = 'open -R "$1"', desc = "Reveal", for = "macos" }, 41 | { run = 'explorer /select, "%1"', orphan = true, desc = "Reveal", for = "windows" }, 42 | { run = '''exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" }, 43 | ] 44 | extract = [ 45 | { run = 'unar "$1"', desc = "Extract here", for = "unix" }, 46 | { run = 'unar "%1"', desc = "Extract here", for = "windows" }, 47 | ] 48 | play = [ 49 | { run = 'mpv "$@"', orphan = true, for = "unix" }, 50 | { run = 'mpv "%1"', orphan = true, for = "windows" }, 51 | { run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" }, 52 | ] 53 | 54 | [open] 55 | rules = [ 56 | { name = "*/", use = [ "edit", "open", "reveal" ] }, 57 | 58 | { mime = "text/*", use = [ "edit", "reveal" ] }, 59 | { mime = "image/*", use = [ "open", "reveal" ] }, 60 | { mime = "{audio,video}/*", use = [ "play", "reveal" ] }, 61 | { mime = "inode/x-empty", use = [ "edit", "reveal" ] }, 62 | 63 | { mime = "application/*zip", use = [ "extract", "reveal" ] }, 64 | { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = [ "extract", "reveal" ] }, 65 | 66 | { mime = "application/json", use = [ "edit", "reveal" ] }, 67 | { mime = "*/javascript", use = [ "edit", "reveal" ] }, 68 | 69 | { mime = "*", use = [ "open", "reveal" ] }, 70 | ] 71 | 72 | [tasks] 73 | micro_workers = 10 74 | macro_workers = 25 75 | bizarre_retry = 5 76 | image_alloc = 536870912 # 512MB 77 | image_bound = [ 0, 0 ] 78 | suppress_preload = false 79 | 80 | [plugin] 81 | 82 | preloaders = [ 83 | { name = "*", cond = "!mime", run = "mime", multi = true, prio = "high" }, 84 | # Image 85 | { mime = "image/*", run = "image" }, 86 | # Video 87 | { mime = "video/*", run = "video" }, 88 | # PDF 89 | { mime = "application/pdf", run = "pdf" }, 90 | ] 91 | previewers = [ 92 | { name = "*/", run = "folder", sync = true }, 93 | # Code 94 | { mime = "text/*", run = "code" }, 95 | { mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code" }, 96 | # JSON 97 | { mime = "application/json", run = "json" }, 98 | # Image 99 | { mime = "image/vnd.djvu", run = "noop" }, 100 | { mime = "image/*", run = "image" }, 101 | # Video 102 | { mime = "video/*", run = "video" }, 103 | # PDF 104 | { mime = "application/pdf", run = "pdf" }, 105 | # Archive 106 | { mime = "application/*zip", run = "archive" }, 107 | { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", run = "archive" }, 108 | # Fallback 109 | { name = "*", run = "file" }, 110 | ] 111 | 112 | [input] 113 | # cd 114 | cd_title = "Change directory:" 115 | cd_origin = "top-center" 116 | cd_offset = [ 0, 2, 50, 3 ] 117 | 118 | # create 119 | create_title = "Create:" 120 | create_origin = "top-center" 121 | create_offset = [ 0, 2, 50, 3 ] 122 | 123 | # rename 124 | rename_title = "Rename:" 125 | rename_origin = "hovered" 126 | rename_offset = [ 0, 1, 50, 3 ] 127 | 128 | # trash 129 | trash_title = "Move {n} selected file{s} to trash? (y/N)" 130 | trash_origin = "top-center" 131 | trash_offset = [ 0, 2, 50, 3 ] 132 | 133 | # delete 134 | delete_title = "Delete {n} selected file{s} permanently? (y/N)" 135 | delete_origin = "top-center" 136 | delete_offset = [ 0, 2, 50, 3 ] 137 | 138 | # filter 139 | filter_title = "Filter:" 140 | filter_origin = "top-center" 141 | filter_offset = [ 0, 2, 50, 3 ] 142 | 143 | # find 144 | find_title = [ "Find next:", "Find previous:" ] 145 | find_origin = "top-center" 146 | find_offset = [ 0, 2, 50, 3 ] 147 | 148 | # search 149 | search_title = "Search via {n}:" 150 | search_origin = "top-center" 151 | search_offset = [ 0, 2, 50, 3 ] 152 | 153 | # shell 154 | shell_title = [ "Shell:", "Shell (block):" ] 155 | shell_origin = "top-center" 156 | shell_offset = [ 0, 2, 50, 3 ] 157 | 158 | # overwrite 159 | overwrite_title = "Overwrite an existing file? (y/N)" 160 | overwrite_origin = "top-center" 161 | overwrite_offset = [ 0, 2, 50, 3 ] 162 | 163 | # quit 164 | quit_title = "{n} task{s} running, sure to quit? (y/N)" 165 | quit_origin = "top-center" 166 | quit_offset = [ 0, 2, 50, 3 ] 167 | 168 | [select] 169 | open_title = "Open with:" 170 | open_origin = "hovered" 171 | open_offset = [ 0, 1, 50, 7 ] 172 | 173 | [which] 174 | sort_by = "none" 175 | sort_sensitive = false 176 | sort_reverse = false 177 | 178 | [log] 179 | enabled = false 180 | 181 | [headsup] 182 | -------------------------------------------------------------------------------- /zsh/.config/zsh-abbr/abbreviations.zsh: -------------------------------------------------------------------------------- 1 | # https://github.com/olets/zsh-abbr 2 | # The zsh manager for auto-expanding abbreviations, inspired by fish shell. 3 | 4 | # General UNIX 5 | abbr "c"="clear" 6 | abbr "cv"="command -v" 7 | abbr "df"="df -h" 8 | abbr "du"="du -h" 9 | abbr "dud"="du -d 1 -h" 10 | abbr "duf"="du -sh *" 11 | abbr "mkdir"="mkdir -pv" 12 | abbr "mv"="mv -iv" 13 | abbr "src"="source $HOME/.zshrc" 14 | 15 | # Config dir access 16 | abbr "cdot"="cd $DOTFILES" 17 | abbr "cdxc"="cd $XDG_CONFIG_HOME" 18 | abbr "cdfi"="cd $XDG_CONFIG_HOME/fish" 19 | abbr "cdnv"="cd $XDG_CONFIG_HOME/nvim" 20 | abbr "cdxd"="cd $XDG_DATA_HOME" 21 | abbr "cdxa"="cd $XDG_CACHE_HOME" 22 | abbr "cdxs"="cd $XDG_STATE_HOME" 23 | abbr "cdlb"="cd $HOME/.local/bin" 24 | abbr "cdbn"="cd $HOME/.bin" 25 | 26 | # Moving around 27 | abbr ".."="cd .." 28 | abbr "..."="cd ../../" 29 | abbr "...."="cd ../../../" 30 | abbr "....."="cd ../../../../" 31 | abbr "-"="cd -" 32 | 33 | # Tree - requires eza 34 | abbr "t2"="ll --tree --level=2" 35 | abbr "t2a"="ll --tree --level=2 -a" 36 | abbr "t3"="ll --tree --level=3" 37 | abbr "t3a"="ll --tree --level=3 -a" 38 | abbr "t4"="ll --tree --level=4" 39 | abbr "t4a"="ll --tree --level=4 -a" 40 | 41 | # Git 42 | abbr "ga"="git add" 43 | abbr "gaa"="git add --all" 44 | abbr "gap"="git add --patch" 45 | abbr "gb"="git branch" 46 | abbr "gba"="git branch --all" 47 | abbr "gbm"="git branch -m" 48 | abbr "gbr"="git branch --remote" 49 | abbr "gca"="git commit --amend" 50 | abbr "gcl"="git clone" 51 | abbr "gcm"="git cm" 52 | abbr "gco"="git checkout" 53 | abbr "gcom"="git checkout master" 54 | abbr "gdc"="git diff --cached" 55 | abbr "gdf"="git diff" 56 | abbr "gf"="git fetch" 57 | abbr "gfu"="git fetch upstream" 58 | abbr "gg"="lazygit" 59 | abbr "glo"="git log" 60 | abbr "gm"="git merge" 61 | abbr "gpl"="git pull" 62 | abbr "gps"="git push" 63 | abbr "gpsf"="git push --force-with-lease" 64 | abbr "gpst"="git push --tags" 65 | abbr "gpub"="git publish" 66 | abbr "gpum"="git push -u origin master" 67 | abbr "gpuo"="git push -u origin" 68 | abbr "gra"="git remote add" 69 | abbr "grb"="git rebase" 70 | abbr "grba"="git rebase --abort" 71 | abbr "grbc"="git rebase --continue" 72 | abbr "grbi"="git rebase -i" 73 | abbr "grbm"="git rebase master" 74 | abbr "gre"="git reset" 75 | abbr "grso"="git remote set-url origin" 76 | abbr "grsu"="git remote set-url" 77 | abbr "grup"="git remote add upstream" 78 | abbr "grv"="git remote -v" 79 | abbr "gs"="git status" 80 | abbr "gtl"="git tag --list" 81 | abbr "oc"="overcommit" 82 | 83 | # macOS Finder 84 | abbr "defr"="defaults read" 85 | abbr "defw"="defaults write" 86 | 87 | # Misc 88 | abbr "neo"="neofetch" 89 | abbr "one"="onefetch" 90 | abbr "ch"="cht.sh" 91 | abbr "chs"="cht.sh --shell" 92 | abbr "color"="colortest -w -s" 93 | abbr "spt"="speedtest" 94 | abbr "s2"="sha256" 95 | 96 | # Tmux 97 | abbr "tl"="tmux ls" 98 | abbr "tlw"="tmux list-windows" 99 | 100 | # Neovim 101 | abbr "nv"="nvim" 102 | abbr "vi"="nvim" 103 | abbr "vi0"="nvim -u NONE" 104 | abbr "vir"="nvim -R" 105 | abbr "vv"="nvim --version | less" 106 | 107 | # asdf 108 | abbr "ail"="asdf install lua" 109 | abbr "ain"="asdf install nodejs" 110 | abbr "ainl"="asdf install nodejs latest" 111 | abbr "aip"="asdf install python" 112 | abbr "air"="asdf install ruby" 113 | abbr "airl"="asdf install ruby latest" 114 | abbr "ala"="asdf list all" 115 | 116 | # https://fishshell.com/docs/current/commands.html#fish_update_completions 117 | abbr "ucl"="fish_update_completions" 118 | 119 | # Homebrew 120 | abbr "brc"="brew cleanup" 121 | abbr "brb"="brew bundle" 122 | abbr "brd"="brew doctor" 123 | abbr "brg"="brew upgrade" 124 | abbr "bri"="brew info" 125 | abbr "brl"="brew list -1" 126 | abbr "brlf"="brew list | fzf" 127 | abbr "bro"="brew outdated" 128 | abbr "brs"="brew search" 129 | abbr "bru"="brew update" 130 | abbr "bs0"="brew services stop" 131 | abbr "bs1"="brew services start" 132 | abbr "bsc"="brew services cleanup" 133 | abbr "bsl"="brew services list" 134 | abbr "bsr"="brew services restart" 135 | abbr "bsv"="brew services" 136 | 137 | # Yabai 138 | abbr "yb0"="yabai --stop-service" 139 | abbr "yb1"="yabai --start-service" 140 | abbr "ybr"="yabai --restart-service" 141 | 142 | # skhd 143 | abbr "sk0"="skhd --stop-service" 144 | abbr "sk1"="skhd --start-service" 145 | abbr "skr"="skhd --restart-service" 146 | abbr "skd"="skhd --reload" 147 | 148 | # Ansible 149 | abbr "ans"="ansible" 150 | abbr "anp"="ansible-playbook" 151 | abbr "anv"="ansible-vault --ask-vault-pass" 152 | abbr "ang"="ansible-galaxy" 153 | 154 | # Rails 155 | abbr "RED"="RAILS_ENV=development" 156 | abbr "REP"="RAILS_ENV=production" 157 | abbr "RET"="RAILS_ENV=test" 158 | abbr "bbi"="bin/bundle install" 159 | abbr "bbo"="bin/bundle outdated" 160 | abbr "bbu"="bin/bundle update" 161 | abbr "bd"="bin/dev" 162 | abbr "be"="bundle exec" 163 | abbr "cred"="bin/rails credentials:edit --environment" 164 | abbr "crsp"="env COVERAGE=true bin/rspec ." 165 | abbr "hm"="hivemind" 166 | abbr "ocr"="overmind connect rails" 167 | abbr "om"="overmind start" 168 | abbr "psp"="bin/rake parallel:spec" 169 | abbr "r"="bin/rails" 170 | abbr "rc"="bin/rails console" 171 | abbr "rcop"="rubocop" 172 | abbr "rdb"="bin/rails dbconsole" 173 | abbr "rdm"="bin/rails db:migrate" 174 | abbr "rdms"="bin/rails db:migrate:status" 175 | abbr "rdr"="bin/rails db:rollback" 176 | abbr "rdr2"="bin/rails db:rollback STEP=2" 177 | abbr "rdr3"="bin/rails db:rollback STEP=3" 178 | abbr "rgm"="bin/rails generate migration" 179 | abbr "rgs"="bin/rails generate stimulus" 180 | abbr "rs"="bin/rails server" 181 | abbr "rsp"="bin/rspec ." 182 | abbr "rtp"="bin/rails db:test:prepare" 183 | 184 | # NPM 185 | abbr "nb"="npm build" 186 | abbr "ncl"="npm clean" 187 | abbr "nd"="npm run dev" 188 | abbr "ndv"="npm develop" 189 | abbr "ni"="npm install" 190 | abbr "nid"="npm install -D" 191 | abbr "nig"="npm install -g" 192 | abbr "nit"="npm init" 193 | abbr "ns"="npm serve" 194 | abbr "nst"="npm start" 195 | abbr "nt"="npm test" 196 | abbr "nv"="npm --version" 197 | 198 | # Yarn 199 | abbr "y"="yarn" 200 | abbr "ya"="yarn add" 201 | abbr "yad"="yarn add -D" 202 | abbr "yap"="yarn add --peer" 203 | abbr "yb"="yarn build" 204 | abbr "yba"="yarn build --analyze" 205 | abbr "yc"="yarn create" 206 | abbr "ycc"="yarn cache clean" 207 | abbr "ycl"="yarn clean" 208 | abbr "yd"="yarn dev" 209 | abbr "ydd"="yarn docs:dev" 210 | abbr "ydv"="yarn develop" 211 | abbr "yg"="yarn generate" 212 | abbr "yga"="yarn global add" 213 | abbr "ygls"="yarn global list" 214 | abbr "ygrm"="yarn global remove" 215 | abbr "ygu"="yarn global upgrade" 216 | abbr "yh"="yarn help" 217 | abbr "yi"="yarn init" 218 | abbr "yin"="yarn install" 219 | abbr "yls"="yarn list" 220 | abbr "yout"="yarn outdated" 221 | abbr "yp"="yarn pack" 222 | abbr "yrm"="yarn remove" 223 | abbr "yrun"="yarn run" 224 | abbr "ys"="yarn serve" 225 | abbr "yst"="yarn start" 226 | abbr "yt"="yarn test" 227 | abbr "ytc"="yarn test --coverage" 228 | abbr "yuc"="yarn global upgrade; and yarn cache clean" 229 | abbr "yui"="yarn upgrade-interactive" 230 | abbr "yup"="yarn upgrade" 231 | abbr "yupl"="yarn upgrade --latest" 232 | abbr "yv"="yarn version" 233 | abbr "yw"="yarn workspace" 234 | abbr "yws"="yarn workspaces" 235 | 236 | # Ruby Gems 237 | abbr "gel"="gem cleanup" 238 | abbr "gemv"="gem environment" 239 | abbr "gins"="gem install" 240 | abbr "gli"="gem list" 241 | abbr "gout"="gem outdated" 242 | abbr "guns"="gem uninstall" 243 | abbr "gup"="gem update" 244 | abbr "gus"="gem update --system" 245 | 246 | # Tmuxinator 247 | abbr "mux"="tmuxinator" 248 | abbr "ms"="tmuxinator start" 249 | abbr "msa"="tmuxinator start mac-bootstrap" 250 | abbr "msb"="tmuxinator start bible_first_online" 251 | abbr "msc"="tmuxinator start bf_curriculum" 252 | abbr "msd"="tmuxinator start dot" 253 | abbr "mse"="tmuxinator start euroteamoutreach" 254 | abbr "msl"="tmuxinator start laptop" 255 | abbr "msm"="tmuxinator start mux" 256 | abbr "msn"="tmuxinator start obsidian" 257 | abbr "mso"="tmuxinator start ofreport" 258 | 259 | # Local servers 260 | abbr "hts"="http-server" 261 | abbr "lvs"="live-server" 262 | 263 | # Docker 264 | abbr "dc"="docker compose" 265 | abbr "dcu"="docker compose up -d" 266 | abbr "dcb"="docker compose up --build -d" 267 | abbr "dcd"="docker compose down" 268 | abbr "dcv"="docker compose down -v" 269 | abbr "dce"="docker compose exec" 270 | abbr "dcr"="docker compose restart" 271 | abbr "dl"="docker logs" 272 | abbr "dim"="docker images" 273 | abbr "dnet"="docker network" 274 | abbr "dps"="docker ps" 275 | abbr "dpsa"="docker ps -a" 276 | abbr "dsp"="docker system prune --all" 277 | 278 | # vim: set filetype=zsh: 279 | -------------------------------------------------------------------------------- /zsh/.config/zsh/aliases.zsh: -------------------------------------------------------------------------------- 1 | # General 2 | alias cat='bat --paging=never' 3 | alias cp='gcp -iv' 4 | 5 | # Alwyas use Neovim as EDITOR 6 | alias vim='nvim' 7 | 8 | # ls > eza 9 | # Other aliases handled by exa plugin 10 | # https://github.com/zap-zsh/exa (now uses eza) 11 | alias l='ll' 12 | 13 | # Middleman 14 | alias mm='bundle exec middleman' 15 | alias mms='bundle exec middleman server' 16 | alias mmc='bundle exec middleman console -e console' 17 | alias mmb='bundle exec middleman build --clean' 18 | alias mma='bundle exec middleman article' 19 | 20 | # Postgres 21 | alias psq='pgcli -d postgres' 22 | alias startpost='brew services start postgresql' 23 | alias statpost='ps aux | rg postgres' 24 | alias stoppost='brew services stop postgresql' 25 | 26 | # Mac App Store (https://github.com/argon/mas) 27 | alias masi='mas install' 28 | alias masl='mas list' 29 | alias maso='mas outdated' 30 | alias mass='mas search' 31 | alias masu='mas upgrade' 32 | 33 | # Finder 34 | # You can also toggle hidden files from the Finder GUI with Cmd + Shift + . 35 | alias saf='defaults write com.apple.finder AppleShowAllFiles TRUE; killall Finder' 36 | alias haf='defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder' 37 | alias o='open . &' 38 | 39 | # Neovim 40 | # https://github.com/richin13/asdf-neovim 41 | alias update-nvim-stable='asdf uninstall neovim stable && asdf install neovim stable' 42 | alias update-nvim-nightly='asdf uninstall neovim nightly && asdf install neovim nightly' 43 | # alias update-nvim-master='asdf uninstall neovim ref:master && asdf install neovim ref:master' 44 | 45 | # https://github.com/nickjj/docker-rails-example/blob/main/run 46 | alias run='./run' 47 | -------------------------------------------------------------------------------- /zsh/.config/zsh/colors.zsh: -------------------------------------------------------------------------------- 1 | typeset -A ZSH_HIGHLIGHT_REGEXP 2 | ZSH_HIGHLIGHT_HIGHLIGHTERS=(main regexp) 3 | 4 | # ZSH_HIGHLIGHT_STYLES[builtin]='fg=#97FEA4' 5 | # ZSH_HIGHLIGHT_STYLES[function]='fg=#97FEA4' 6 | # ZSH_HIGHLIGHT_STYLES[command]='fg=#97FEA4' 7 | # ZSH_HIGHLIGHT_STYLES[alias]='fg=#97FEA4' 8 | # ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#79A070' 9 | # ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#79A070' 10 | # ZSH_HIGHLIGHT_STYLES[double-quoted-argument-unclosed]='fg=#F0776D' 11 | # ZSH_HIGHLIGHT_STYLES[single-quoted-argument-unclosed]='fg=#F0776D' 12 | # ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#FB649F' 13 | # ZSH_HIGHLIGHT_STYLES[redirection]='fg=white' 14 | # ZSH_HIGHLIGHT_STYLES[default]='fg=#7EBDB3' 15 | # ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#F0776D' 16 | 17 | ZSH_HIGHLIGHT_REGEXP=('^[[:blank:][:space:]]*('${(j:|:)${(Qk)ABBR_REGULAR_USER_ABBREVIATIONS}}')$' fg=blue) 18 | ZSH_HIGHLIGHT_REGEXP+=('[[:<:]]('${(j:|:)${(Qk)ABBR_GLOBAL_USER_ABBREVIATIONS}}')$' fg=magenta) 19 | -------------------------------------------------------------------------------- /zsh/.config/zsh/docker.sh: -------------------------------------------------------------------------------- 1 | # Adapted from https://gist.github.com/jgrodziski/9ed4a17709baad10dbcd4530b60dfcbb 2 | 3 | ############################################################################ 4 | # # 5 | # ------- Useful Docker Aliases -------- # 6 | # # 7 | # # Usage: # 8 | # daws : aws cli in docker with # 9 | # dc : docker compose # 10 | # dcu : docker compose up -d # 11 | # dcd : docker compose down # 12 | # dcr : docker compose run # 13 | # dex : execute a bash shell inside the RUNNING # 14 | # di : docker inspect # 15 | # dim : docker images # 16 | # dip : IP addresses of all running containers # 17 | # dl : docker logs -f # 18 | # dnames : names of all running containers # 19 | # dps : docker ps # 20 | # dpsa : docker ps -a # 21 | # drmc : remove all exited containers # 22 | # drmid : remove all dangling images # 23 | # drun : execute a bash shell in NEW container from # 24 | # dsr : stop then remove # 25 | # # 26 | ############################################################################ 27 | 28 | function dnames-fn { 29 | for ID in $(docker ps | awk '{print $1}' | grep -v 'CONTAINER'); do 30 | docker inspect "$ID" | grep Name | head -1 | awk '{print $2}' | sed 's/,//g' | sed 's%/%%g' | sed 's/"//g' 31 | done 32 | } 33 | 34 | function dip-fn { 35 | echo "IP addresses of all named running containers" 36 | 37 | for DOC in $(dnames-fn); do 38 | IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}' "$DOC") 39 | OUT+=$DOC'\t'$IP'\n' 40 | done 41 | echo -e "$OUT" | column -t 42 | unset OUT 43 | } 44 | 45 | function dex-fn { 46 | docker exec -it "$1" "${2:-bash}" 47 | } 48 | 49 | function di-fn { 50 | docker inspect "$1" 51 | } 52 | 53 | function dl-fn { 54 | docker logs -f "$1" 55 | } 56 | 57 | function drun-fn { 58 | docker run -it "$1" "$2" 59 | } 60 | 61 | function dcr-fn { 62 | docker compose run "$@" 63 | } 64 | 65 | function dsr-fn { 66 | docker stop "$1" 67 | docker rm "$1" 68 | } 69 | 70 | function drmc-fn { 71 | docker rm "$(docker ps --all -q -f status=exited)" 72 | } 73 | 74 | function drmid-fn { 75 | imgs=$(docker images -q -f dangling=true) 76 | [ ! -z "$imgs" ] && docker rmi "$imgs" || echo "no dangling images." 77 | } 78 | 79 | # in order to do things like dex $(dlab label) sh 80 | function dlab { 81 | docker ps --filter="label=$1" --format="{{.ID}}" 82 | } 83 | 84 | function dc-fn { 85 | docker compose "$*" 86 | } 87 | 88 | function d-aws-cli-fn { 89 | docker run \ 90 | -e AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ 91 | -e AWS_DEFAULT_REGION="$AWS_DEFAULT_REGION" \ 92 | -e AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ 93 | amazon/aws-cli:latest "$1" "$2" "$3" 94 | } 95 | 96 | # Disabled aliases have equivalent zsh & fish abbreviations 97 | alias daws=d-aws-cli-fn 98 | alias dc=dc-fn 99 | # alias dcu="docker compose up -d" 100 | # alias dcd="docker compose down" 101 | alias dcr=dcr-fn 102 | alias dex=dex-fn 103 | alias di=di-fn 104 | # alias dim="docker images" 105 | alias dip=dip-fn 106 | alias dl=dl-fn 107 | alias dnames=dnames-fn 108 | # alias dps="docker ps" 109 | # alias dpsa="docker ps -a" 110 | alias drmc=drmc-fn 111 | alias drmid=drmid-fn 112 | alias drun=drun-fn 113 | # alias dsp="docker system prune --all" 114 | alias dsr=dsr-fn 115 | -------------------------------------------------------------------------------- /zsh/.config/zsh/functions.zsh: -------------------------------------------------------------------------------- 1 | function aua() { 2 | asdf update && asdf plugin-update --all 3 | } 4 | 5 | function bb() { 6 | if [ -e $HOME/Brewfile ]; then 7 | echo "-> Bundling Brewfile located at $HOME/Brewfile" 8 | sleep 2 9 | brew bundle --file $HOME/Brewfile 10 | else 11 | echo "Brewfile not found." 12 | fi 13 | } 14 | 15 | function bbc() { 16 | if [ -e $HOME/Brewfile ]; then 17 | echo "-> Running bundle cleanup dry-run for Brewfile located at $HOME/Brewfile" 18 | sleep 2 19 | brew bundle cleanup --file $HOME/Brewfile 20 | else 21 | echo "Brewfile not found." 22 | fi 23 | } 24 | 25 | function bbcf() { 26 | if [ -e $HOME/Brewfile ]; then 27 | echo "-> Running bundle cleanup (force) for Brewfile located at $HOME/Brewfile" 28 | sleep 2 29 | brew bundle cleanup --force --file $HOME/Brewfile 30 | else 31 | echo "Brewfile not found." 32 | fi 33 | } 34 | 35 | function bubo() { 36 | brew update && brew outdated 37 | } 38 | 39 | copy() { 40 | printf "%s" "$*" | tr -d "\n" | pbcopy 41 | } 42 | 43 | function ct() { 44 | ctags -R --languages=ruby --exclude=.git --exclude=log . $(bundle list --paths) 45 | } 46 | 47 | function copycwd() { 48 | echo "Choose how to display the home directory:" 49 | echo "1) ~" 50 | echo "2) \$HOME" 51 | echo "3) /Users/$(whoami)" 52 | read -r choice 53 | 54 | case $choice in 55 | 1) 56 | pwd | sed "s|^$HOME|~|" | tr -d '\n' | pbcopy 57 | echo "Current path copied to clipboard with ~ as home directory." 58 | ;; 59 | 2) 60 | pwd | sed "s|^$HOME|\\\$HOME|" | tr -d '\n' | pbcopy 61 | echo "Current path copied to clipboard with \$HOME as home directory." 62 | ;; 63 | 3) 64 | pwd | tr -d '\n' | pbcopy 65 | echo "Current path copied to clipboard with full path as home directory." 66 | ;; 67 | *) 68 | echo "Invalid choice. Please enter 1, 2, or 3." 69 | ;; 70 | esac 71 | } 72 | 73 | function dsx() { 74 | find . -name "*.DS_Store" -type f -delete 75 | } 76 | 77 | # Determine size of a file or total size of a directory 78 | # Thank you, Mathias! https://raw.githubusercontent.com/mathiasbynens/dotfiles/master/.functions 79 | function fs() { 80 | if du -b /dev/null > /dev/null 2>&1; then 81 | local arg=-sbh; 82 | else 83 | local arg=-sh; 84 | fi 85 | if [[ -n "$@" ]]; then 86 | du $arg -- "$@"; 87 | else 88 | du $arg .[^.]* *; 89 | fi; 90 | } 91 | 92 | function g() { 93 | if [[ $# -gt 0 ]]; then 94 | git "$@" 95 | else 96 | clear && git status --short --branch && echo 97 | fi 98 | } 99 | 100 | function gbrm() { 101 | git branch --merged master | grep -v "^\*\| master" | xargs -n 1 git branch -d 102 | } 103 | 104 | function gl() { 105 | git log --date=format:"%b %d, %Y" --pretty=format:"%C(yellow bold)%h%Creset%C(white)%d%Creset %s%n%C(blue)%aN <%ae> | %cd%n" 106 | } 107 | 108 | function glg() { 109 | git log --graph --stat --date=format:"%b %d, %Y" --pretty=format:"%C(yellow bold)%h%Creset%C(white)%d%Creset %s%n%C(blue)%aN <%ae> | %cd%n" 110 | } 111 | 112 | function gwip() { 113 | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip--" 114 | } 115 | 116 | function path() { 117 | echo $PATH | tr ":" "\n" | nl 118 | } 119 | 120 | function pi() { 121 | ping -Anc 5 1.1.1.1 122 | } 123 | 124 | function randpw() { 125 | openssl rand -base64 4 | md5 | head -c$1 ; echo 126 | } 127 | 128 | function rlv() { 129 | asdf list all ruby | rg '^\d' 130 | } 131 | 132 | # Thanks to https://github.com/Shpota/sha256 133 | function sha256() { 134 | printf "%s %s\n" "$1" "$2" | sha256sum --check 135 | } 136 | 137 | # Create a new session named for current directory, or attach if exists. 138 | function tna() { 139 | tmux new-session -As $(basename "$PWD" | tr . -) 140 | } 141 | 142 | # Makes creating a new tmux session (with a specific name) easier 143 | function tn() { 144 | tmux new -s $1 145 | } 146 | 147 | # Makes attaching to an existing tmux session (with a specific name) easier 148 | function ta() { 149 | tmux attach -t $1 150 | } 151 | 152 | # Makes deleting a tmux session easier 153 | function tk() { 154 | tmux kill-session -t $1 155 | } 156 | 157 | # Kill all tmux sessions 158 | function tka() { 159 | tmux ls | cut -d : -f 1 | xargs -I {} tmux kill-session -t {} 160 | } 161 | 162 | function ygs() { 163 | yarn generate && http-server dist/ -p 8080 164 | } 165 | 166 | # https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/rails/rails.plugin.zsh 167 | function _rails_command () { 168 | if [ -e "bin/rails" ]; then 169 | bin/rails $@ 170 | else 171 | command rails $@ 172 | fi 173 | } 174 | 175 | # https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/rails/rails.plugin.zsh 176 | function _rake_command () { 177 | if [ -e "bin/rake" ]; then 178 | bin/rake $@ 179 | elif type bundle &> /dev/null && [ -e "Gemfile" ]; then 180 | bundle exec rake $@ 181 | else 182 | command rake $@ 183 | fi 184 | } 185 | 186 | function _rspec_command () { 187 | if [ -e "bin/rspec" ]; then 188 | bin/rspec $@ 189 | elif type bundle &> /dev/null && [ -e "Gemfile" ]; then 190 | bundle exec rspec $@ 191 | else 192 | command rspec $@ 193 | fi 194 | } 195 | 196 | function _spring_command () { 197 | if [ -e "bin/spring" ]; then 198 | bin/spring $@ 199 | elif type bundle &> /dev/null && [ -e "Gemfile" ]; then 200 | bundle exec spring $@ 201 | else 202 | command spring $@ 203 | fi 204 | } 205 | 206 | function _mina_command () { 207 | if [ -e "bin/mina" ]; then 208 | bin/mina $@ 209 | elif type bundle &> /dev/null && [ -e "Gemfile" ]; then 210 | bundle exec mina $@ 211 | else 212 | command mina $@ 213 | fi 214 | } 215 | 216 | function n_test_runs() { 217 | for (( n=0; n<$1; n++ )); 218 | do { time bundle exec rspec ./spec; } 2>> time.txt; 219 | done 220 | } 221 | 222 | # https://yazi-rs.github.io/docs/quick-start#shell-wrapper 223 | function yy() { 224 | local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" 225 | yazi "$@" --cwd-file="$tmp" 226 | if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then 227 | cd -- "$cwd" 228 | fi 229 | rm -f -- "$tmp" 230 | } 231 | 232 | function update_jumpstart() { 233 | git fetch jumpstart-pro 234 | git merge jumpstart-pro/main 235 | } 236 | -------------------------------------------------------------------------------- /zsh/.config/zsh/plugins.zsh: -------------------------------------------------------------------------------- 1 | # https://github.com/zap-zsh/zap | https://www.zapzsh.com 2 | 3 | [ -f "${XDG_DATA_HOME:-$HOME/.local/share}/zap/zap.zsh" ] && source "${XDG_DATA_HOME:-$HOME/.local/share}/zap/zap.zsh" 4 | 5 | plug "zsh-users/zsh-autosuggestions" 6 | plug "zap-zsh/supercharge" 7 | plug "zsh-users/zsh-syntax-highlighting" 8 | plug "zap-zsh/exa" 9 | # plug "romkatv/powerlevel10k" 10 | plug "zsh-users/zsh-history-substring-search" 11 | 12 | # https://starship.rs 13 | if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then 14 | eval "$(starship init zsh)" 15 | fi 16 | 17 | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. 18 | # [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh 19 | 20 | # https://asdf-vm.com 21 | fpath=(${ASDF_DATA_DIR:-$HOME/.asdf}/completions $fpath) 22 | 23 | # OP_PLUGINS="$XDG_CONFIG_HOME/op" 24 | # 25 | # if [ -d "$OP_PLUGINS" ]; then 26 | # # https://developer.1password.com/docs/cli 27 | # . $XDG_CONFIG_HOME/op/plugins.sh 28 | # else 29 | # echo "Directory does not exist: $OP_PLUGINS. Please reference https://developer.1password.com/docs/cli for installation instructions." 30 | # fi 31 | 32 | # https://zsh-abbr.olets.dev 33 | . $HOMEBREW_PREFIX/share/zsh-abbr/zsh-abbr.zsh 34 | 35 | # https://github.com/junegunn/fzf 36 | [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh 37 | 38 | # https://github.com/ajeetdsouza/zoxide 39 | eval "$(zoxide init zsh)" 40 | 41 | # https://github.com/zsh-users/zsh-history-substring-search 42 | HISTORY_SUBSTRING_SEARCH_PREFIXED=1 43 | HISTORY_SUBSTRING_SEARCH_FUZZY=1 44 | 45 | unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND 46 | unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND 47 | 48 | bindkey '^[[A' history-substring-search-up 49 | bindkey '^[[B' history-substring-search-down 50 | 51 | # https://gist.github.com/elijahmanor/b279553c0132bfad7eae23e34ceb593b 52 | 53 | alias nvim-lazy="NVIM_APPNAME=LazyVim nvim" 54 | alias nvim-kick="NVIM_APPNAME=kickstart nvim" 55 | alias nvim-chad="NVIM_APPNAME=NvChad nvim" 56 | alias nvim-astro="NVIM_APPNAME=AstroNvim nvim" 57 | 58 | function nvims() { 59 | items=("default" "kickstart" "LazyVim" "NvChad" "AstroNvim") 60 | config=$(printf "%s\n" "${items[@]}" | fzf --prompt=" Neovim Config  " --height=~50% --layout=reverse --border --exit-0) 61 | if [[ -z $config ]]; then 62 | echo "Nothing selected" 63 | return 0 64 | elif [[ $config == "default" ]]; then 65 | config="" 66 | fi 67 | NVIM_APPNAME=$config nvim $@ 68 | } 69 | -------------------------------------------------------------------------------- /zsh/.config/zsh/profiler: -------------------------------------------------------------------------------- 1 | # credit to https://esham.io/2018/02/zsh-profiling 2 | 3 | # call no params : view top 20 lines for this process's log file 4 | # param 1 - number of lines to use 5 | # param 2 - path to profile log 6 | zshrc_profiler_view() { 7 | 8 | typeset -a lines 9 | typeset -i prev_time=0 10 | typeset prev_command 11 | 12 | while read line; do 13 | if [[ $line =~ '^.*\+([0-9]{10})\.([0-9]{6})[0-9]* (.+)' ]]; then 14 | integer this_time=$match[1]$match[2] 15 | 16 | if [[ $prev_time -gt 0 ]]; then 17 | time_difference=$(( $this_time - $prev_time )) 18 | lines+="$time_difference $prev_command" 19 | fi 20 | 21 | prev_time=$this_time 22 | 23 | local this_command=$match[3] 24 | if [[ ${#this_command} -le 132 ]]; then 25 | prev_command=$this_command 26 | else 27 | prev_command="${this_command:0:77}..." 28 | fi 29 | fi 30 | done < ${2:-${TMPDIR}/zshrc_profiler.$$.log} 31 | 32 | print -l ${(@On)lines} | head -n ${1:-20} 33 | 34 | } 35 | -------------------------------------------------------------------------------- /zsh/.config/zsh/profiler.start: -------------------------------------------------------------------------------- 1 | # Credit goes to https://esham.io/2018/02/zsh-profiling 2 | if [ -f $HOME/.zshrc.profiler ]; then 3 | 4 | source $HOME/.config/zsh/profiler 5 | zmodload zsh/datetime 6 | setopt PROMPT_SUBST 7 | PS4='+$EPOCHREALTIME %N:%i> ' 8 | 9 | zshrc_profiler_logfile=$TMPDIR/zshrc_profiler.$$.log 10 | echo "Logging script execution to $zshrc_profiler_logfile" 11 | exec 3>&2 2>$zshrc_profiler_logfile 12 | setopt XTRACE 13 | fi 14 | -------------------------------------------------------------------------------- /zsh/.config/zsh/profiler.stop: -------------------------------------------------------------------------------- 1 | if [ -f $HOME/.zshrc.profiler ]; then 2 | unsetopt XTRACE 3 | echo ".zshrc profiling complete." 4 | exec 2>&3 3>&- 5 | echo "View top time consumers with: zshrc_profiler_view" 6 | fi 7 | -------------------------------------------------------------------------------- /zsh/.zshrc: -------------------------------------------------------------------------------- 1 | . "$HOME/.config/zsh/profiler.start" 2 | 3 | # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. 4 | # Initialization code that may require console input (password prompts, [y/n] 5 | # confirmations, etc.) must go above this block; everything else may go below. 6 | # if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then 7 | # source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" 8 | # fi 9 | 10 | if [ "$(arch)" = arm64 ]; then 11 | eval "$(/opt/homebrew/bin/brew shellenv)" 12 | else 13 | eval "$(/usr/local/bin/brew shellenv)" 14 | fi 15 | 16 | export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$HOME/.local/bin:$HOME/.bin:$PATH" 17 | export EDITOR="nvim" 18 | export GIT_EDITOR="nvim" 19 | export BUNDLER_EDITOR=$EDITOR 20 | export MANPAGER="less -X" # Don’t clear the screen after quitting a manual page 21 | export HOMEBREW_CASK_OPTS="--appdir=/Applications" 22 | export SOURCE_ANNOTATION_DIRECTORIES="spec" 23 | export RUBY_CONFIGURE_OPTS="--with-opt-dir=$HOMEBREW_PREFIX/opt/openssl:$HOMEBREW_PREFIX/opt/readline:$HOMEBREW_PREFIX/opt/libyaml:$HOMEBREW_PREFIX/opt/gdbm" 24 | export XDG_CONFIG_HOME="$HOME/.config" 25 | export XDG_DATA_HOME="$HOME/.local/share" 26 | export XDG_CACHE_HOME="$HOME/.cache" 27 | export XDG_STATE_HOME="$HOME/.local/state" 28 | export DOTFILES="$HOME/dotfiles" 29 | export ABBR_USER_ABBREVIATIONS_FILE="$XDG_CONFIG_HOME/zsh-abbr/abbreviations.zsh" 30 | export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc" 31 | export SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" 32 | export PKG_CONFIG_PATH="/opt/homebrew/opt/libpq/lib/pkgconfig" 33 | export GPG_TTY=$(tty) 34 | 35 | . "$XDG_CONFIG_HOME/zsh/plugins.zsh" # Includes Zap - https://www.zapzsh.com 36 | . "$XDG_CONFIG_HOME/zsh/aliases.zsh" 37 | . "$XDG_CONFIG_HOME/zsh/functions.zsh" 38 | . "$XDG_CONFIG_HOME/zsh/colors.zsh" 39 | . "$XDG_CONFIG_HOME/zsh/docker.sh" 40 | . "$HOME/.zshrc.local" 41 | 42 | export HISTSIZE=1000000000 43 | export SAVEHIST=1000000000 44 | export HISTFILE=~/.zsh_history 45 | export HIST_STAMPS="yyyy-mm-dd" 46 | 47 | # FZF specific - https://github.com/junegunn/fzf#key-bindings-for-command-line 48 | export FZF_DEFAULT_COMMAND="rg --files --hidden --follow --no-ignore-vcs" 49 | export FZF_DEFAULT_OPTS="--height 75% --layout=reverse --border" 50 | export FZF_CTRL_T_COMMAND=$FZF_DEFAULT_COMMAND 51 | export FZF_ALT_C_COMMAND="fd --type d . --color=never" 52 | 53 | # homebrew completions 54 | # https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh 55 | if type brew &>/dev/null 56 | then 57 | FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" 58 | fi 59 | 60 | # Load and initialise completion system 61 | autoload -Uz compinit && compinit 62 | 63 | # De-dupe $PATH 64 | typeset -U path 65 | 66 | # GitHub Copilot CLI 67 | if command -v gh >/dev/null && gh extension list | grep -q 'copilot'; then 68 | eval "$(gh copilot alias -- zsh)" 69 | fi 70 | 71 | . "$HOME/.config/zsh/profiler.stop" 72 | --------------------------------------------------------------------------------