mirror of
https://github.com/jakejarvis/dotfiles.git
synced 2025-04-27 16:06:21 -04:00
a boatload of changes/fixes
This commit is contained in:
parent
bab66d06a5
commit
21da506122
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,3 +1,13 @@
|
|||||||
|
# auto-generated files
|
||||||
|
.zcompdump*
|
||||||
|
.zcompcache*
|
||||||
|
|
||||||
|
# compiled .zsh sources
|
||||||
|
*.zwc
|
||||||
|
|
||||||
|
# homebrew lockfile
|
||||||
|
Brewfile.lock.json
|
||||||
|
|
||||||
# oopsie proofing
|
# oopsie proofing
|
||||||
**/.ssh/known_hosts*
|
**/.ssh/known_hosts*
|
||||||
*id_rsa*
|
*id_rsa*
|
||||||
|
147
Brewfile
147
Brewfile
@ -3,6 +3,7 @@
|
|||||||
###############################
|
###############################
|
||||||
tap "1password/tap"
|
tap "1password/tap"
|
||||||
tap "dart-lang/dart"
|
tap "dart-lang/dart"
|
||||||
|
tap "dopplerhq/cli"
|
||||||
tap "hashicorp/tap"
|
tap "hashicorp/tap"
|
||||||
tap "homebrew/aliases"
|
tap "homebrew/aliases"
|
||||||
tap "homebrew/autoupdate"
|
tap "homebrew/autoupdate"
|
||||||
@ -13,144 +14,144 @@ tap "homebrew/cask-fonts"
|
|||||||
tap "homebrew/cask-versions"
|
tap "homebrew/cask-versions"
|
||||||
tap "homebrew/core"
|
tap "homebrew/core"
|
||||||
tap "homebrew/services"
|
tap "homebrew/services"
|
||||||
|
tap "microsoft/git"
|
||||||
tap "ngrok/ngrok"
|
tap "ngrok/ngrok"
|
||||||
tap "planetscale/tap"
|
tap "planetscale/tap"
|
||||||
tap "sass/sass"
|
tap "sass/sass"
|
||||||
tap "sidneys/homebrew"
|
|
||||||
|
|
||||||
###############################
|
###############################
|
||||||
# Binaries #
|
# Formulae #
|
||||||
###############################
|
###############################
|
||||||
|
|
||||||
# Perhaps most importantly...
|
# perhaps most importantly...
|
||||||
brew "zsh" unless OS.linux?
|
brew "zsh" unless OS.linux?
|
||||||
|
|
||||||
# Better bash as a backup
|
# modern bash as a backup
|
||||||
brew "bash" unless OS.linux?
|
brew "bash" unless OS.linux?
|
||||||
|
|
||||||
# GNU utilities (those that come with macOS are outdated)
|
# correct Apple's GPL stubbornness...
|
||||||
brew "coreutils"
|
brew "coreutils" if OS.mac?
|
||||||
brew "findutils"
|
brew "findutils" if OS.mac?
|
||||||
brew "gnu-indent"
|
|
||||||
brew "gnu-sed"
|
brew "gnu-sed"
|
||||||
brew "gnu-tar"
|
brew "gnu-tar"
|
||||||
brew "gnu-which"
|
brew "gnu-which"
|
||||||
brew "gnupg"
|
brew "gnupg" if OS.mac?
|
||||||
brew "gnutls"
|
brew "gnutls"
|
||||||
brew "grep"
|
brew "grep"
|
||||||
brew "make"
|
brew "make"
|
||||||
brew "moreutils"
|
|
||||||
|
|
||||||
# More recent versions of some macOS tools
|
# more recent versions of some other macOS tools/libraries
|
||||||
|
brew "bzip2", link: true
|
||||||
brew "curl", link: true
|
brew "curl", link: true
|
||||||
brew "gcc"
|
brew "gcc"
|
||||||
brew "gmp"
|
brew "icu4c"
|
||||||
|
brew "less"
|
||||||
|
brew "libffi"
|
||||||
|
brew "libxml2"
|
||||||
brew "nano"
|
brew "nano"
|
||||||
brew "openssh"
|
brew "ncurses"
|
||||||
|
brew "openssh" unless OS.linux?
|
||||||
|
brew "openssl@1.1" if OS.mac?
|
||||||
|
brew "readline"
|
||||||
brew "screen"
|
brew "screen"
|
||||||
|
brew "sqlite"
|
||||||
|
brew "tcl-tk"
|
||||||
brew "unzip", link: true
|
brew "unzip", link: true
|
||||||
brew "vim" #, args: ["with-override-system-vi"]
|
brew "vim" #, args: ["with-override-system-vi"]
|
||||||
|
brew "wget" #, args: ["with-iri"]
|
||||||
|
brew "whois", link: true
|
||||||
|
brew "zlib"
|
||||||
|
|
||||||
# Other useful binaries
|
# common binaries/libraries
|
||||||
brew "ack"
|
|
||||||
brew "autoconf"
|
|
||||||
brew "automake"
|
|
||||||
brew "ffmpeg" #, args: ["with-libvpx"]
|
brew "ffmpeg" #, args: ["with-libvpx"]
|
||||||
|
brew "fx"
|
||||||
|
brew "gettext"
|
||||||
|
brew "groff"
|
||||||
|
brew "guetzli"
|
||||||
|
brew "htop" if OS.mac?
|
||||||
|
brew "hyperfine"
|
||||||
brew "imagemagick" #, args: ["with-webp"]
|
brew "imagemagick" #, args: ["with-webp"]
|
||||||
brew "jemalloc"
|
brew "jemalloc"
|
||||||
brew "less"
|
brew "jq"
|
||||||
brew "libsass", args: ["HEAD"]
|
brew "libsass", args: ["HEAD"]
|
||||||
brew "libyaml"
|
brew "libyaml"
|
||||||
|
brew "mhash"
|
||||||
brew "mtr"
|
brew "mtr"
|
||||||
brew "openssl@1.1" if OS.mac?
|
|
||||||
brew "p7zip"
|
brew "p7zip"
|
||||||
brew "pkg-config"
|
brew "pkg-config"
|
||||||
brew "readline"
|
brew "protobuf"
|
||||||
brew "sidneys/homebrew/unrar" if OS.mac?
|
brew "rlwrap"
|
||||||
brew "ssh-copy-id", link: true
|
brew "rsync"
|
||||||
brew "tmux"
|
brew "tmux"
|
||||||
brew "tree"
|
brew "tree"
|
||||||
brew "wget" #, args: ["with-iri"]
|
brew "webp"
|
||||||
|
brew "xz"
|
||||||
|
brew "yq"
|
||||||
|
brew "zopfli"
|
||||||
|
|
||||||
# Git
|
# Git (and GitHub/GitLab CLIs)
|
||||||
brew "git"
|
brew "git"
|
||||||
brew "git-lfs"
|
brew "git-lfs"
|
||||||
brew "gh"
|
brew "gh"
|
||||||
|
brew "glab"
|
||||||
|
|
||||||
# Mostly ordinary binaries
|
# mostly development stuff
|
||||||
brew "1password/tap/1password-cli" if OS.mac?
|
brew "1password/tap/1password-cli" if OS.mac?
|
||||||
brew "angular-cli"
|
|
||||||
brew "asciinema"
|
brew "asciinema"
|
||||||
brew "aws-shell"
|
brew "aws-shell"
|
||||||
brew "awscli"
|
brew "awscli"
|
||||||
brew "carthage"
|
brew "carthage" if OS.mac?
|
||||||
brew "cocoapods"
|
brew "cocoapods" if OS.mac?
|
||||||
brew "composer"
|
brew "composer"
|
||||||
|
brew "croc"
|
||||||
brew "dart-lang/dart/dart"
|
brew "dart-lang/dart/dart"
|
||||||
brew "deno"
|
brew "deno"
|
||||||
|
brew "dive"
|
||||||
brew "doctl"
|
brew "doctl"
|
||||||
brew "fx"
|
brew "dopplerhq/cli/doppler"
|
||||||
|
brew "fnm"
|
||||||
brew "go"
|
brew "go"
|
||||||
brew "guetzli"
|
|
||||||
brew "hashicorp/tap/packer"
|
brew "hashicorp/tap/packer"
|
||||||
brew "hashicorp/tap/terraform"
|
brew "hashicorp/tap/terraform"
|
||||||
brew "hashicorp/tap/vault"
|
brew "hashicorp/tap/vault"
|
||||||
brew "htop"
|
|
||||||
brew "httpie"
|
brew "httpie"
|
||||||
brew "httrack"
|
brew "httrack"
|
||||||
brew "hugo", args: ["HEAD"]
|
brew "hugo", args: ["HEAD"]
|
||||||
brew "ipinfo-cli"
|
brew "iproute2mac" if OS.mac?
|
||||||
brew "iproute2mac"
|
brew "mariadb" unless OS.linux?
|
||||||
brew "jq"
|
|
||||||
brew "mariadb"
|
|
||||||
brew "mas" if OS.mac?
|
brew "mas" if OS.mac?
|
||||||
brew "mhash"
|
|
||||||
brew "mkcert"
|
brew "mkcert"
|
||||||
brew "mysql-client"
|
brew "mysql-client" unless OS.linux?
|
||||||
brew "ncurses"
|
|
||||||
brew "neofetch"
|
brew "neofetch"
|
||||||
|
brew "neonctl"
|
||||||
brew "netcat"
|
brew "netcat"
|
||||||
brew "openjdk"
|
brew "openjdk", link: true
|
||||||
brew "openvpn"
|
brew "openvpn"
|
||||||
brew "optipng"
|
|
||||||
brew "pandoc"
|
brew "pandoc"
|
||||||
brew "php"
|
brew "php" unless OS.linux?
|
||||||
brew "planetscale/tap/pscale"
|
brew "planetscale/tap/pscale"
|
||||||
brew "pngcrush"
|
brew "postgresql" unless OS.linux?
|
||||||
brew "postgresql"
|
brew "pyenv"
|
||||||
brew "protobuf"
|
brew "pyenv-virtualenv"
|
||||||
brew "pyenv" unless OS.linux?
|
|
||||||
# brew "python"
|
# brew "python"
|
||||||
# brew "python@3"
|
# brew "python@2"
|
||||||
brew "qemu"
|
brew "qemu"
|
||||||
brew "rbenv" unless OS.linux?
|
brew "rbenv"
|
||||||
brew "rclone"
|
|
||||||
brew "rlwrap"
|
|
||||||
brew "ruby-build" unless OS.linux?
|
|
||||||
# brew "ruby"
|
# brew "ruby"
|
||||||
|
brew "ruby-build"
|
||||||
brew "rust"
|
brew "rust"
|
||||||
brew "s3cmd"
|
brew "s3cmd"
|
||||||
brew "sass/sass/dart-sass-embedded"
|
brew "sass/sass/dart-sass-embedded"
|
||||||
brew "sass/sass/sass"
|
brew "sass/sass/sass"
|
||||||
brew "serverless"
|
|
||||||
brew "shellcheck"
|
brew "shellcheck"
|
||||||
brew "shfmt"
|
brew "tea"
|
||||||
brew "sqlite"
|
|
||||||
brew "subversion"
|
|
||||||
brew "svn"
|
|
||||||
brew "tor"
|
brew "tor"
|
||||||
brew "torsocks"
|
brew "torsocks"
|
||||||
brew "volta" unless OS.linux?
|
|
||||||
brew "whois", link: true
|
|
||||||
brew "wireguard-tools"
|
|
||||||
brew "wp-cli"
|
brew "wp-cli"
|
||||||
brew "xz"
|
|
||||||
# brew "youtube-dl"
|
# brew "youtube-dl"
|
||||||
brew "yq"
|
|
||||||
brew "yt-dlp"
|
brew "yt-dlp"
|
||||||
brew "zopfli"
|
|
||||||
|
|
||||||
# Pentesting tools
|
# infosec & pentesting
|
||||||
brew "aircrack-ng"
|
brew "aircrack-ng"
|
||||||
brew "apktool"
|
brew "apktool"
|
||||||
brew "bettercap"
|
brew "bettercap"
|
||||||
@ -162,6 +163,7 @@ brew "geoip"
|
|||||||
brew "hashcat"
|
brew "hashcat"
|
||||||
brew "httpx"
|
brew "httpx"
|
||||||
brew "hydra"
|
brew "hydra"
|
||||||
|
brew "ipinfo-cli"
|
||||||
brew "john"
|
brew "john"
|
||||||
brew "knock"
|
brew "knock"
|
||||||
brew "massdns"
|
brew "massdns"
|
||||||
@ -208,10 +210,9 @@ cask "1password"
|
|||||||
cask "authy"
|
cask "authy"
|
||||||
cask "gpg-suite"
|
cask "gpg-suite"
|
||||||
cask "little-snitch"
|
cask "little-snitch"
|
||||||
|
# cask "microsoft/git/git-credential-manager-core"
|
||||||
cask "tailscale"
|
cask "tailscale"
|
||||||
cask "tunnelblick"
|
cask "tunnelblick"
|
||||||
cask "yubico-authenticator"
|
|
||||||
cask "yubico-yubikey-manager"
|
|
||||||
|
|
||||||
# Development/Work
|
# Development/Work
|
||||||
cask "adobe-creative-cloud"
|
cask "adobe-creative-cloud"
|
||||||
@ -221,7 +222,8 @@ cask "eclipse-java"
|
|||||||
cask "github"
|
cask "github"
|
||||||
cask "google-cloud-sdk", args: { appdir: "~/Applications" }
|
cask "google-cloud-sdk", args: { appdir: "~/Applications" }
|
||||||
cask "imageoptim"
|
cask "imageoptim"
|
||||||
cask "iterm2"
|
# cask "iterm2"
|
||||||
|
cask "iterm2-beta"
|
||||||
cask "jetbrains-toolbox"
|
cask "jetbrains-toolbox"
|
||||||
cask "microsoft-office"
|
cask "microsoft-office"
|
||||||
cask "ngrok/ngrok/ngrok"
|
cask "ngrok/ngrok/ngrok"
|
||||||
@ -234,7 +236,9 @@ cask "visual-studio-code"
|
|||||||
|
|
||||||
# Virtual Machines (& Docker)
|
# Virtual Machines (& Docker)
|
||||||
cask "docker"
|
cask "docker"
|
||||||
|
# cask "multipass"
|
||||||
cask "parallels"
|
cask "parallels"
|
||||||
|
cask "vagrant"
|
||||||
# cask "virtualbox"
|
# cask "virtualbox"
|
||||||
cask "virtualbox-beta" # supports M1!
|
cask "virtualbox-beta" # supports M1!
|
||||||
|
|
||||||
@ -253,9 +257,6 @@ cask "skype"
|
|||||||
cask "slack"
|
cask "slack"
|
||||||
cask "zoomus"
|
cask "zoomus"
|
||||||
|
|
||||||
# Gaming
|
|
||||||
cask "steam"
|
|
||||||
|
|
||||||
# Pentesting
|
# Pentesting
|
||||||
cask "burp-suite"
|
cask "burp-suite"
|
||||||
cask "charles"
|
cask "charles"
|
||||||
@ -267,19 +268,17 @@ cask "wireshark"
|
|||||||
cask "firefox"
|
cask "firefox"
|
||||||
cask "firefox-developer-edition"
|
cask "firefox-developer-edition"
|
||||||
cask "google-chrome"
|
cask "google-chrome"
|
||||||
cask "safari-technology-preview"
|
|
||||||
cask "tor-browser"
|
cask "tor-browser"
|
||||||
|
|
||||||
###############################
|
###############################
|
||||||
# Drivers #
|
# Drivers #
|
||||||
###############################
|
###############################
|
||||||
|
|
||||||
cask "homebrew/cask-drivers/hp-easy-start"
|
|
||||||
cask "homebrew/cask-drivers/logitech-camera-settings"
|
|
||||||
cask "homebrew/cask-drivers/logi-options-plus"
|
cask "homebrew/cask-drivers/logi-options-plus"
|
||||||
cask "homebrew/cask-drivers/logitech-unifying"
|
cask "homebrew/cask-drivers/philips-hue-sync"
|
||||||
cask "homebrew/cask-drivers/razer-synapse"
|
|
||||||
cask "homebrew/cask-drivers/sonos"
|
cask "homebrew/cask-drivers/sonos"
|
||||||
|
cask "homebrew/cask-drivers/yubico-authenticator"
|
||||||
|
cask "homebrew/cask-drivers/yubico-yubikey-manager"
|
||||||
|
|
||||||
###############################
|
###############################
|
||||||
# Fonts #
|
# Fonts #
|
||||||
@ -288,14 +287,12 @@ cask "homebrew/cask-drivers/sonos"
|
|||||||
# Monospace
|
# Monospace
|
||||||
cask "homebrew/cask-fonts/font-cascadia-code"
|
cask "homebrew/cask-fonts/font-cascadia-code"
|
||||||
cask "homebrew/cask-fonts/font-hack"
|
cask "homebrew/cask-fonts/font-hack"
|
||||||
cask "homebrew/cask-fonts/font-ibm-plex-mono"
|
|
||||||
cask "homebrew/cask-fonts/font-roboto-mono"
|
cask "homebrew/cask-fonts/font-roboto-mono"
|
||||||
cask "homebrew/cask-fonts/font-sf-mono"
|
cask "homebrew/cask-fonts/font-sf-mono"
|
||||||
cask "homebrew/cask-fonts/font-sf-mono-for-powerline"
|
cask "homebrew/cask-fonts/font-sf-mono-for-powerline"
|
||||||
cask "homebrew/cask-fonts/font-source-code-pro"
|
cask "homebrew/cask-fonts/font-source-code-pro"
|
||||||
|
|
||||||
# Sans/Serif
|
# Sans/Serif
|
||||||
cask "homebrew/cask-fonts/font-comic-neue"
|
|
||||||
cask "homebrew/cask-fonts/font-inter"
|
cask "homebrew/cask-fonts/font-inter"
|
||||||
cask "homebrew/cask-fonts/font-open-sans"
|
cask "homebrew/cask-fonts/font-open-sans"
|
||||||
cask "homebrew/cask-fonts/font-roboto"
|
cask "homebrew/cask-fonts/font-roboto"
|
||||||
|
49
bash/.bash_profile
Normal file
49
bash/.bash_profile
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# super minimal bash setup for fallback, debugging, miscellaneous tasks, etc.
|
||||||
|
|
||||||
|
# disable unnecessary history
|
||||||
|
set +o history
|
||||||
|
export SHELL_SESSION_HISTORY=0
|
||||||
|
|
||||||
|
# hide macOS zsh default warning
|
||||||
|
export BASH_SILENCE_DEPRECATION_WARNING=1
|
||||||
|
|
||||||
|
# set PATH, MANPATH, etc., for Homebrew
|
||||||
|
if [[ -x /opt/homebrew/bin/brew ]]; then
|
||||||
|
# macOS on Apple Silicon
|
||||||
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||||
|
elif [[ -x /usr/local/bin/brew ]]; then
|
||||||
|
# macOS on Intel
|
||||||
|
eval "$(/usr/local/bin/brew shellenv)"
|
||||||
|
elif [[ -x "$HOME/.linuxbrew/bin/brew" ]]; then
|
||||||
|
# Linux, user install
|
||||||
|
eval "$("$HOME/.linuxbrew/bin/brew" shellenv)"
|
||||||
|
elif [[ -x /home/linuxbrew/.linuxbrew/bin/brew ]]; then
|
||||||
|
# Linux, system install
|
||||||
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# fnm
|
||||||
|
if command -v fnm &>/dev/null; then
|
||||||
|
eval "$(fnm env --use-on-cd --shell bash)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# rbenv
|
||||||
|
if command -v rbenv &>/dev/null; then
|
||||||
|
eval "$(rbenv init - --no-rehash bash)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
if command -v pyenv &>/dev/null; then
|
||||||
|
eval "$(pyenv init - --no-rehash bash)"
|
||||||
|
|
||||||
|
# pyenv-virtualenv
|
||||||
|
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
|
||||||
|
if command -v pyenv-virtualenv-init &>/dev/null; then
|
||||||
|
eval "$(pyenv virtualenv-init -)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pyenv-virtualenv
|
||||||
|
if command -v pyenv-virtualenv-init &>/dev/null; then
|
||||||
|
eval "$(pyenv virtualenv-init -)"
|
||||||
|
fi
|
@ -5,8 +5,17 @@
|
|||||||
"enabled": true
|
"enabled": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dns": [
|
||||||
|
"1.1.1.1",
|
||||||
|
"1.0.0.1"
|
||||||
|
],
|
||||||
"experimental": true,
|
"experimental": true,
|
||||||
"features": {
|
"features": {
|
||||||
"buildkit": true
|
"buildkit": true
|
||||||
|
},
|
||||||
|
"log-driver": "json-file",
|
||||||
|
"log-opts": {
|
||||||
|
"max-size": "10m",
|
||||||
|
"max-file": "5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[core]
|
[core]
|
||||||
editor = code --wait
|
editor = code --wait
|
||||||
pager = delta
|
pager = delta
|
||||||
excludesfile = ~/.gitignore_global
|
excludesfile = ~/.gitignore
|
||||||
|
|
||||||
# Make `git rebase` safer on macOS
|
# Make `git rebase` safer on macOS
|
||||||
# More info: <http://www.git-tower.com/blog/make-git-rebase-safe-on-osx/>
|
# More info: <http://www.git-tower.com/blog/make-git-rebase-safe-on-osx/>
|
||||||
@ -9,7 +9,17 @@
|
|||||||
[user]
|
[user]
|
||||||
email = jake@jarv.is
|
email = jake@jarv.is
|
||||||
name = Jake Jarvis
|
name = Jake Jarvis
|
||||||
signingkey = 3BC6E5776BF379D36F6714802B0C9CF251E69A39
|
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHeuNlSZmqygM4XN7++pmfrNUsFzAjlxaYHoO/JXVdT5
|
||||||
|
[credential "https://github.com"]
|
||||||
|
helper =
|
||||||
|
helper = !/opt/homebrew/bin/gh auth git-credential
|
||||||
|
[credential "https://gist.github.com"]
|
||||||
|
helper =
|
||||||
|
helper = !/opt/homebrew/bin/gh auth git-credential
|
||||||
|
[gpg]
|
||||||
|
format = ssh
|
||||||
|
[gpg "ssh"]
|
||||||
|
program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign
|
||||||
[init]
|
[init]
|
||||||
defaultBranch = main
|
defaultBranch = main
|
||||||
[push]
|
[push]
|
||||||
@ -39,10 +49,6 @@
|
|||||||
aliases = config --get-regexp alias
|
aliases = config --get-regexp alias
|
||||||
contributors = shortlog --summary --numbered
|
contributors = shortlog --summary --numbered
|
||||||
new = !git init && git symbolic-ref HEAD refs/heads/main
|
new = !git init && git symbolic-ref HEAD refs/heads/main
|
||||||
# [credential]
|
|
||||||
# helper = osxkeychain
|
|
||||||
# [gpg]
|
|
||||||
# program = /usr/local/MacGPG2/bin/gpg
|
|
||||||
[github]
|
[github]
|
||||||
user = jakejarvis
|
user = jakejarvis
|
||||||
[hub]
|
[hub]
|
||||||
|
@ -32,5 +32,5 @@ Temporary Items
|
|||||||
# Misc
|
# Misc
|
||||||
.wakatime-project
|
.wakatime-project
|
||||||
|
|
||||||
|
# allow
|
||||||
.sentryclirc
|
!.gitkeep
|
||||||
|
56
install.sh
56
install.sh
@ -6,21 +6,21 @@ echo "🙏 Deep breaths, everything will (probably) be fine!"
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# location of the *full repo* (defaults to ~/.dotfiles)
|
# location of the *full repo* (defaults to ~/.dotfiles)
|
||||||
DOTFILES_PATH="${DOTFILES_PATH:="$HOME/.dotfiles"}"
|
DOTFILES="${DOTFILES:-"$HOME/.dotfiles"}"
|
||||||
# location of this script (should be right next to all the other files, but we handle that next if it's not)
|
# location of this script (should be right next to all the other files, but we handle that next if it's not)
|
||||||
INSTALLER_PATH="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
|
INSTALLER_PATH="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
|
||||||
|
|
||||||
# if this is a codespace, link automatically cloned dotfiles repo to the expected DOTFILES_PATH
|
# if this is a codespace, link automatically cloned dotfiles repo to the expected DOTFILES
|
||||||
# https://docs.github.com/en/codespaces/troubleshooting/troubleshooting-personalization-for-codespaces#troubleshooting-dotfiles
|
# https://docs.github.com/en/codespaces/troubleshooting/troubleshooting-personalization-for-codespaces#troubleshooting-dotfiles
|
||||||
if [[ "$CODESPACES" = "true" ]] && [[ -d /workspaces/.codespaces/.persistedshare/dotfiles ]]; then
|
if [[ "$CODESPACES" = "true" ]] && [[ -d /workspaces/.codespaces/.persistedshare/dotfiles ]]; then
|
||||||
ln -sf /workspaces/.codespaces/.persistedshare/dotfiles "$DOTFILES_PATH"
|
ln -sf /workspaces/.codespaces/.persistedshare/dotfiles "$DOTFILES"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# clone this repo if this script is all by itself and/or we're not in the expected location
|
# clone this repo if this script is all by itself and/or we're not in the expected location
|
||||||
if [[ "$INSTALLER_PATH" != "$DOTFILES_PATH" ]] && [[ ! -d "$DOTFILES_PATH" ]]; then
|
if [[ "$INSTALLER_PATH" != "$DOTFILES" ]] && [[ ! -d "$DOTFILES" ]]; then
|
||||||
git clone https://github.com/jakejarvis/dotfiles.git "$DOTFILES_PATH"
|
git clone https://github.com/jakejarvis/dotfiles.git "$DOTFILES"
|
||||||
|
|
||||||
echo "Successfully cloned the full repo to '$DOTFILES_PATH'"
|
echo "Successfully cloned the full repo to '$DOTFILES'"
|
||||||
echo "Run install.sh from that directory to continue. Exiting now..."
|
echo "Run install.sh from that directory to continue. Exiting now..."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@ -29,48 +29,50 @@ fi
|
|||||||
if [[ ! -d ~/.config ]]; then
|
if [[ ! -d ~/.config ]]; then
|
||||||
mkdir -p ~/.config
|
mkdir -p ~/.config
|
||||||
fi
|
fi
|
||||||
ln -sf "$DOTFILES_PATH/zsh/.zshrc" ~/.zshrc
|
if [[ ! -d ~/.ssh ]]; then
|
||||||
ln -sf "$DOTFILES_PATH/zsh/.zprofile" ~/.zprofile
|
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
||||||
ln -sf "$DOTFILES_PATH/git/.gitconfig" ~/.gitconfig
|
fi
|
||||||
ln -sf "$DOTFILES_PATH/git/.gitignore_global" ~/.gitignore_global
|
ln -sf "$DOTFILES/zsh/.zshrc" ~/.zshrc
|
||||||
ln -sf "$DOTFILES_PATH/starship/config.toml" ~/.config/starship.toml
|
ln -sf "$DOTFILES/zsh/.zprofile" ~/.zprofile
|
||||||
|
ln -sf "$DOTFILES/bash/.bash_profile" ~/.bash_profile
|
||||||
|
ln -sf "$DOTFILES/ssh/.ssh/config" ~/.ssh/config
|
||||||
|
ln -sf "$DOTFILES/git/.gitconfig" ~/.gitconfig
|
||||||
|
ln -sf "$DOTFILES/git/.gitignore_global" ~/.gitignore
|
||||||
|
ln -sf "$DOTFILES/starship/config.toml" ~/.config/starship.toml
|
||||||
|
|
||||||
# this file will be sourced by .zshrc for more sensitive variables/settings
|
# this file will be sourced by .zshrc for more sensitive variables/settings
|
||||||
touch ~/.zshrc.local
|
touch ~/.zshrc.local
|
||||||
|
|
||||||
# prepare zinit manually
|
# prepare zinit manually
|
||||||
ZINIT_HOME="$HOME/.local/share/zinit/zinit.git"
|
ZINIT_HOME="${ZINIT_HOME:-"${XDG_DATA_HOME:-"${HOME}/.local/share"}/zinit/zinit.git"}"
|
||||||
if [[ ! -d "$ZINIT_HOME" ]]; then
|
if [[ ! -d "$ZINIT_HOME" ]]; then
|
||||||
mkdir -p "$(dirname "$ZINIT_HOME")"
|
mkdir -p "$(dirname "$ZINIT_HOME")"
|
||||||
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# the remainder of the setup tasks are OS-specific
|
# the remainder of the setup tasks are OS-specific
|
||||||
if [[ "$OSTYPE" = "darwin"* ]]; then
|
if [[ "$OSTYPE" = darwin* ]]; then
|
||||||
# final symlinks
|
# final symlinks
|
||||||
if [[ ! -d ~/.ssh ]]; then
|
ln -sf "$DOTFILES/nano/brew.nanorc" ~/.nanorc
|
||||||
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
ln -sf "$DOTFILES/Brewfile" ~/Brewfile
|
||||||
fi
|
|
||||||
ln -sf "$DOTFILES_PATH/ssh/.ssh/config" ~/.ssh/config
|
|
||||||
ln -sf "$DOTFILES_PATH/nano/brew.nanorc" ~/.nanorc
|
|
||||||
ln -sf "$DOTFILES_PATH/Brewfile" ~/Brewfile
|
|
||||||
|
|
||||||
# suppress terminal login banners
|
# suppress terminal login banners
|
||||||
touch ~/.hushlogin
|
touch ~/.hushlogin
|
||||||
|
|
||||||
# shellcheck disable=SC1090,SC1091
|
# disable bash session restoration
|
||||||
source "$DOTFILES_PATH/macos/macos.sh"
|
touch ~/.bash_sessions_disable
|
||||||
elif [[ "$OSTYPE" = "linux-gnu"* ]]; then
|
|
||||||
# final symlinks
|
|
||||||
ln -sf "$DOTFILES_PATH/nano/default.nanorc" ~/.nanorc
|
|
||||||
|
|
||||||
# shellcheck disable=SC1090,SC1091
|
source "$DOTFILES/macos/macos.sh"
|
||||||
source "$DOTFILES_PATH/linux/linux.sh"
|
elif [[ "$OSTYPE" = linux-gnu* ]]; then
|
||||||
|
# final symlinks
|
||||||
|
ln -sf "$DOTFILES/nano/default.nanorc" ~/.nanorc
|
||||||
|
|
||||||
|
source "$DOTFILES/linux/linux.sh"
|
||||||
else
|
else
|
||||||
echo "I don't recognize this OS... skipping extra steps."
|
echo "I don't recognize this OS... skipping extra steps."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# wow
|
# wow
|
||||||
echo ""
|
echo ""
|
||||||
echo "🎉 It actually worked!"
|
echo "🤯 It actually worked!"
|
||||||
echo "Log out and log back in (or just restart) to finish installing all ZSH features."
|
echo "Log out and log back in (or just restart) to finish installing all ZSH features."
|
||||||
|
5862
iterm/com.googlecode.iterm2.plist
Normal file
5862
iterm/com.googlecode.iterm2.plist
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"ASCII Ligatures" : true,
|
"Custom Directory" : "No",
|
||||||
"Working Directory" : "\/Users\/jake",
|
"Working Directory" : "\/Users\/jake",
|
||||||
"Prompt Before Closing 2" : false,
|
"Prompt Before Closing 2" : false,
|
||||||
"Selected Text Color" : {
|
"Selected Text Color" : {
|
||||||
@ -56,7 +56,9 @@
|
|||||||
"slogin",
|
"slogin",
|
||||||
"telnet"
|
"telnet"
|
||||||
],
|
],
|
||||||
|
"Scrollback With Status Bar" : true,
|
||||||
"Scrollback Lines" : 0,
|
"Scrollback Lines" : 0,
|
||||||
|
"Scrollback in Alternate Screen" : true,
|
||||||
"Draw Powerline Glyphs" : false,
|
"Draw Powerline Glyphs" : false,
|
||||||
"Status Bar Layout" : {
|
"Status Bar Layout" : {
|
||||||
"components" : [
|
"components" : [
|
||||||
@ -70,9 +72,9 @@
|
|||||||
"iTermStatusBarSpringComponentSizeMultipleKey" : 1
|
"iTermStatusBarSpringComponentSizeMultipleKey" : 1
|
||||||
},
|
},
|
||||||
"layout advanced configuration dictionary value" : {
|
"layout advanced configuration dictionary value" : {
|
||||||
"auto-rainbow style" : 0,
|
|
||||||
"algorithm" : 1,
|
"algorithm" : 1,
|
||||||
"remove empty components" : false
|
"remove empty components" : false,
|
||||||
|
"auto-rainbow style" : 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -138,8 +140,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"notes" : "Paths",
|
"notes" : "Paths",
|
||||||
|
"precision" : "normal",
|
||||||
"regex" : "\\~?\/?([[:letter:][:number:]._-]+\/+)+[[:letter:][:number:]._-]+\/?",
|
"regex" : "\\~?\/?([[:letter:][:number:]._-]+\/+)+[[:letter:][:number:]._-]+\/?",
|
||||||
"precision" : "normal"
|
"actions" : [
|
||||||
|
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"notes" : "Quoted string",
|
"notes" : "Quoted string",
|
||||||
@ -188,108 +193,108 @@
|
|||||||
"Title Components" : 2,
|
"Title Components" : 2,
|
||||||
"Keyboard Map" : {
|
"Keyboard Map" : {
|
||||||
"0x5e-0x60000" : {
|
"0x5e-0x60000" : {
|
||||||
"Action" : 11,
|
"Text" : "0x1e",
|
||||||
"Text" : "0x1e"
|
"Action" : 11
|
||||||
},
|
},
|
||||||
"0xf702-0x280000" : {
|
"0xf702-0x280000" : {
|
||||||
"Text" : "b",
|
"Action" : 10,
|
||||||
"Action" : 10
|
"Text" : "b"
|
||||||
},
|
},
|
||||||
"0xf702-0x260000" : {
|
"0xf702-0x260000" : {
|
||||||
"Action" : 11,
|
"Text" : "0x1b 0x1b 0x5b 0x44",
|
||||||
"Text" : "0x1b 0x1b 0x5b 0x44"
|
"Action" : 11
|
||||||
},
|
},
|
||||||
"0xf703-0x280000" : {
|
"0xf703-0x280000" : {
|
||||||
"Text" : "f",
|
"Action" : 10,
|
||||||
"Action" : 10
|
"Text" : "f"
|
||||||
},
|
},
|
||||||
"0xf70a-0x20000" : {
|
"0xf70a-0x20000" : {
|
||||||
"Action" : 10,
|
"Text" : "[28~",
|
||||||
"Text" : "[28~"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf703-0x260000" : {
|
"0xf703-0x260000" : {
|
||||||
"Action" : 10,
|
"Text" : "[C",
|
||||||
"Text" : "[C"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0x2d-0x40000" : {
|
"0x2d-0x40000" : {
|
||||||
"Action" : 11,
|
"Text" : "0x1f",
|
||||||
"Text" : "0x1f"
|
"Action" : 11
|
||||||
},
|
},
|
||||||
"0xf702-0x220000" : {
|
"0xf702-0x220000" : {
|
||||||
"Action" : 10,
|
"Text" : "[D",
|
||||||
"Text" : "[D"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf703-0x240000" : {
|
"0xf703-0x240000" : {
|
||||||
"Action" : 10,
|
"Text" : "[5C",
|
||||||
"Text" : "[5C"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf703-0x220000" : {
|
"0xf703-0x220000" : {
|
||||||
"Action" : 10,
|
"Text" : "[C",
|
||||||
"Text" : "[C"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf700-0x280000" : {
|
"0xf700-0x280000" : {
|
||||||
"Action" : 10,
|
"Text" : "[A",
|
||||||
"Text" : "[A"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf72b-0x20000" : {
|
"0xf72b-0x20000" : {
|
||||||
"Action" : 10,
|
"Text" : "[F",
|
||||||
"Text" : "[F"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf700-0x260000" : {
|
"0xf700-0x260000" : {
|
||||||
"Action" : 10,
|
"Text" : "[A",
|
||||||
"Text" : "[A"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf701-0x280000" : {
|
"0xf701-0x280000" : {
|
||||||
"Action" : 10,
|
"Text" : "[B",
|
||||||
"Text" : "[B"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf700-0x240000" : {
|
"0xf700-0x240000" : {
|
||||||
"Action" : 10,
|
"Text" : "[A",
|
||||||
"Text" : "[A"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf701-0x260000" : {
|
"0xf701-0x260000" : {
|
||||||
"Action" : 10,
|
"Text" : "[B",
|
||||||
"Text" : "[B"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf700-0x220000" : {
|
"0xf700-0x220000" : {
|
||||||
"Action" : 10,
|
"Text" : "[A",
|
||||||
"Text" : "[A"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf701-0x240000" : {
|
"0xf701-0x240000" : {
|
||||||
"Action" : 10,
|
"Text" : "[B",
|
||||||
"Text" : "[B"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf72b-0x40000" : {
|
"0xf72b-0x40000" : {
|
||||||
"Action" : 4,
|
"Text" : "",
|
||||||
"Text" : ""
|
"Action" : 4
|
||||||
},
|
},
|
||||||
"0xf708-0x20000" : {
|
"0xf708-0x20000" : {
|
||||||
"Action" : 10,
|
"Text" : "[25~",
|
||||||
"Text" : "[25~"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf701-0x220000" : {
|
"0xf701-0x220000" : {
|
||||||
"Action" : 10,
|
"Text" : "[B",
|
||||||
"Text" : "[B"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf709-0x20000" : {
|
"0xf709-0x20000" : {
|
||||||
"Action" : 10,
|
"Text" : "[26~",
|
||||||
"Text" : "[26~"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf70b-0x20000" : {
|
"0xf70b-0x20000" : {
|
||||||
"Action" : 10,
|
"Text" : "[29~",
|
||||||
"Text" : "[29~"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf702-0x240000" : {
|
"0xf702-0x240000" : {
|
||||||
"Action" : 10,
|
"Text" : "[5D",
|
||||||
"Text" : "[5D"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf729-0x20000" : {
|
"0xf729-0x20000" : {
|
||||||
"Action" : 10,
|
"Text" : "[H",
|
||||||
"Text" : "[H"
|
"Action" : 10
|
||||||
},
|
},
|
||||||
"0xf729-0x40000" : {
|
"0xf729-0x40000" : {
|
||||||
"Action" : 5,
|
"Text" : "",
|
||||||
"Text" : ""
|
"Action" : 5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Ansi 14 Color" : {
|
"Ansi 14 Color" : {
|
||||||
@ -319,7 +324,7 @@
|
|||||||
"Green Component" : 0.36078426241874695
|
"Green Component" : 0.36078426241874695
|
||||||
},
|
},
|
||||||
"Use Bold Font" : true,
|
"Use Bold Font" : true,
|
||||||
"Silence Bell" : false,
|
"Silence Bell" : true,
|
||||||
"Ansi 12 Color" : {
|
"Ansi 12 Color" : {
|
||||||
"Red Component" : 0.34117650985717773,
|
"Red Component" : 0.34117650985717773,
|
||||||
"Color Space" : "sRGB",
|
"Color Space" : "sRGB",
|
||||||
@ -329,8 +334,8 @@
|
|||||||
},
|
},
|
||||||
"Window Type" : 0,
|
"Window Type" : 0,
|
||||||
"Allow Title Reporting" : false,
|
"Allow Title Reporting" : false,
|
||||||
"Use Bright Bold" : true,
|
|
||||||
"Has Hotkey" : false,
|
"Has Hotkey" : false,
|
||||||
|
"Use Bright Bold" : true,
|
||||||
"Cursor Text Color" : {
|
"Cursor Text Color" : {
|
||||||
"Red Component" : 0.15686270594596863,
|
"Red Component" : 0.15686270594596863,
|
||||||
"Color Space" : "sRGB",
|
"Color Space" : "sRGB",
|
||||||
@ -379,9 +384,9 @@
|
|||||||
"Green Component" : 0.1491314172744751
|
"Green Component" : 0.1491314172744751
|
||||||
},
|
},
|
||||||
"Semantic History" : {
|
"Semantic History" : {
|
||||||
|
"editor" : "com.microsoft.VSCode",
|
||||||
"text" : "",
|
"text" : "",
|
||||||
"action" : "editor",
|
"action" : "editor"
|
||||||
"editor" : "com.microsoft.VSCode"
|
|
||||||
},
|
},
|
||||||
"Ambiguous Double Width" : false,
|
"Ambiguous Double Width" : false,
|
||||||
"Blur Radius" : 10.045428856382978,
|
"Blur Radius" : 10.045428856382978,
|
||||||
@ -457,7 +462,7 @@
|
|||||||
"Columns" : 120,
|
"Columns" : 120,
|
||||||
"Use Tab Color" : false,
|
"Use Tab Color" : false,
|
||||||
"Visual Bell" : true,
|
"Visual Bell" : true,
|
||||||
"Custom Directory" : "No",
|
"ASCII Ligatures" : true,
|
||||||
"Ansi 5 Color" : {
|
"Ansi 5 Color" : {
|
||||||
"Red Component" : 1,
|
"Red Component" : 1,
|
||||||
"Color Space" : "sRGB",
|
"Color Space" : "sRGB",
|
||||||
|
@ -26,16 +26,15 @@ if [[ -e /etc/debian_version ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# set machine's timezone to local time
|
# set machine's timezone to local time
|
||||||
sudo timedatectl set-timezone America/New_York
|
sudo timedatectl set-timezone America/New_York || true
|
||||||
|
|
||||||
# install linuxbrew:
|
# install linuxbrew:
|
||||||
# https://docs.brew.sh/Homebrew-on-Linux#install
|
# https://docs.brew.sh/Homebrew-on-Linux#install
|
||||||
if ! command -v brew &>/dev/null; then
|
if ! command -v brew &>/dev/null; then
|
||||||
# TODO: hack to permit installing as root, find a better way
|
# TODO: currently tricking installer into thinking we're running it as a non-root user, it doesn't _really_ matter in
|
||||||
# https://github.com/Homebrew/install/blob/master/install.sh#L306
|
# my use cases (e.g. codespaces) but this is apparently very unsafe.
|
||||||
sudo touch /.dockerenv
|
# https://github.com/Homebrew/install/blob/master/install.sh#L302
|
||||||
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash
|
NONINTERACTIVE=1 UID=999 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
sudo rm /.dockerenv
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# install tailscale
|
# install tailscale
|
||||||
@ -43,13 +42,10 @@ if ! command -v tailscale &>/dev/null; then
|
|||||||
curl -fsSL https://tailscale.com/install.sh | bash
|
curl -fsSL https://tailscale.com/install.sh | bash
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# install volta
|
# install fnm
|
||||||
if ! command -v volta &>/dev/null; then
|
if ! command -v fnm &>/dev/null; then
|
||||||
export VOLTA_HOME="$HOME/.volta"
|
curl -fsSL https://fnm.vercel.app/install | bash -s -- --skip-shell
|
||||||
export PATH="$VOLTA_HOME/bin:$PATH"
|
|
||||||
curl -fsSL https://get.volta.sh | bash -s -- --skip-setup
|
|
||||||
fi
|
fi
|
||||||
volta install node@lts npm@latest yarn@latest
|
|
||||||
|
|
||||||
# install rbenv & ruby-build
|
# install rbenv & ruby-build
|
||||||
if ! command -v rbenv &>/dev/null; then
|
if ! command -v rbenv &>/dev/null; then
|
||||||
|
@ -19,7 +19,7 @@ sudo xcodebuild -license accept
|
|||||||
# This whole thing kinda hinges on having Homebrew...
|
# This whole thing kinda hinges on having Homebrew...
|
||||||
# Check for it and install from GitHub if it's not there
|
# Check for it and install from GitHub if it's not there
|
||||||
if ! command -v brew &>/dev/null; then
|
if ! command -v brew &>/dev/null; then
|
||||||
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash
|
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Disable analytics
|
# Disable analytics
|
||||||
@ -39,14 +39,9 @@ chsh -s "$(brew --prefix)/bin/zsh"
|
|||||||
chmod 755 "$(brew --prefix)/share/zsh"
|
chmod 755 "$(brew --prefix)/share/zsh"
|
||||||
chmod 755 "$(brew --prefix)/share/zsh/site-functions"
|
chmod 755 "$(brew --prefix)/share/zsh/site-functions"
|
||||||
|
|
||||||
# 1Password SSH integration
|
|
||||||
# https://developer.1password.com/docs/ssh/get-started#step-4-configure-your-ssh-or-git-client
|
|
||||||
mkdir -p ~/.1password
|
|
||||||
ln -sf ~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock ~/.1password/agent.sock
|
|
||||||
|
|
||||||
# Install all apps from the Brewfile, ignore errors
|
# Install all apps from the Brewfile, ignore errors
|
||||||
brew tap homebrew/bundle
|
brew tap homebrew/bundle
|
||||||
brew bundle || true
|
brew bundle --no-lock || true
|
||||||
|
|
||||||
# Set macOS defaults
|
# Set macOS defaults
|
||||||
# Needs to be last since this will restart everything when done
|
# Needs to be last since this will restart everything when done
|
||||||
|
@ -1,24 +1,18 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -euo pipefail
|
set -e
|
||||||
|
|
||||||
# fetch and install Volta (better nvm)
|
if ! command -v fnm &>/dev/null; then
|
||||||
if ! command -v volta &>/dev/null; then
|
echo "fnm not found, exiting..."
|
||||||
# curl https://get.volta.sh | bash -s -- --skip-setup
|
return
|
||||||
brew install volta
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
volta install node@latest # remove when LTS officially supports arm64
|
fnm install --latest --corepack-enabled
|
||||||
volta install npm@8
|
npm install --global npm
|
||||||
volta install yarn@1
|
|
||||||
volta fetch node@lts # not native on M1 but good to have
|
|
||||||
|
|
||||||
volta list node
|
|
||||||
volta list npm
|
|
||||||
volta list yarn
|
|
||||||
|
|
||||||
# npm ls --global --parseable --depth=0 | awk '{gsub(/\/.*\//,"",$1); print}' | sort -u
|
# npm ls --global --parseable --depth=0 | awk '{gsub(/\/.*\//,"",$1); print}' | sort -u
|
||||||
packages=(
|
packages=(
|
||||||
|
@angular/cli
|
||||||
@babel/cli
|
@babel/cli
|
||||||
@babel/core
|
@babel/core
|
||||||
@lhci/cli
|
@lhci/cli
|
||||||
@ -26,10 +20,11 @@ packages=(
|
|||||||
autoprefixer
|
autoprefixer
|
||||||
cross-env
|
cross-env
|
||||||
depcheck
|
depcheck
|
||||||
dtslint
|
|
||||||
dts-gen
|
dts-gen
|
||||||
|
dtslint
|
||||||
esbuild
|
esbuild
|
||||||
eslint
|
eslint
|
||||||
|
gatsby-cli
|
||||||
gzip-size-cli
|
gzip-size-cli
|
||||||
json-server
|
json-server
|
||||||
markdownlint-cli2
|
markdownlint-cli2
|
||||||
@ -44,6 +39,7 @@ packages=(
|
|||||||
prettier
|
prettier
|
||||||
release-it
|
release-it
|
||||||
rollup
|
rollup
|
||||||
|
serverless
|
||||||
stylelint
|
stylelint
|
||||||
superstatic
|
superstatic
|
||||||
svgo
|
svgo
|
||||||
@ -56,9 +52,7 @@ packages=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
for p in "${packages[@]}"; do
|
for p in "${packages[@]}"; do
|
||||||
volta run --no-yarn -- npm install --global "$p" || echo "$p not found"
|
NPM_CONFIG_FUND=false npm install --global --no-audit "$p" || echo "$p not found"
|
||||||
done
|
done
|
||||||
|
|
||||||
unset p packages
|
unset p packages
|
||||||
|
|
||||||
volta list all
|
|
||||||
|
@ -1,71 +1,25 @@
|
|||||||
Include conf.d/*
|
Include conf.d/*
|
||||||
|
|
||||||
CanonicalizeHostname yes
|
|
||||||
CanonicalizeMaxDots 0
|
|
||||||
|
|
||||||
Host *
|
Host *
|
||||||
# https://stribika.github.io/2015/01/04/secure-secure-shell.html
|
CanonicalizeHostname yes
|
||||||
|
CanonicalizeMaxDots 1
|
||||||
ChallengeResponseAuthentication no
|
ChallengeResponseAuthentication no
|
||||||
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr
|
|
||||||
ControlMaster auto
|
|
||||||
ControlPath /tmp/ssh-%r@%h:%p
|
|
||||||
ControlPersist 5m
|
|
||||||
ForwardX11 no
|
|
||||||
GSSAPIAuthentication yes
|
|
||||||
GSSAPIDelegateCredentials yes
|
|
||||||
HashKnownHosts yes
|
HashKnownHosts yes
|
||||||
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa
|
|
||||||
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
|
|
||||||
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
|
|
||||||
SendEnv LANG
|
|
||||||
ServerAliveCountMax 3
|
ServerAliveCountMax 3
|
||||||
ServerAliveInterval 120
|
ServerAliveInterval 120
|
||||||
VisualHostKey yes
|
|
||||||
VerifyHostKeyDNS ask
|
VerifyHostKeyDNS ask
|
||||||
# macOS specific
|
VisualHostKey yes
|
||||||
IgnoreUnknown AddKeysToAgent,UseKeychain
|
|
||||||
AddKeysToAgent yes
|
|
||||||
UseKeychain yes
|
|
||||||
PreferredAuthentications publickey
|
|
||||||
# https://developer.1password.com/docs/ssh/get-started#step-4-configure-your-ssh-or-git-client
|
|
||||||
IdentityAgent "~/.1password/agent.sock"
|
|
||||||
|
|
||||||
Host tufts
|
Host tufts
|
||||||
HostName linux.eecs.tufts.edu
|
HostName linux.eecs.tufts.edu
|
||||||
User jjarvi01
|
User jjarvi01
|
||||||
ForwardAgent yes
|
ForwardAgent yes
|
||||||
|
|
||||||
Host mastodon
|
Host unifi
|
||||||
# tailscale IP:
|
HostName setup.ui.com
|
||||||
HostName 100.85.213.20
|
|
||||||
User root
|
User root
|
||||||
ForwardAgent yes
|
ForwardAgent yes
|
||||||
|
|
||||||
Host gitea
|
|
||||||
# tailscale IP:
|
|
||||||
HostName 100.75.40.17
|
|
||||||
User root
|
|
||||||
ForwardAgent yes
|
|
||||||
|
|
||||||
Host y2k
|
|
||||||
# tailscale IP:
|
|
||||||
HostName 100.79.167.105
|
|
||||||
Port 32422
|
|
||||||
User root
|
|
||||||
ForwardAgent yes
|
|
||||||
|
|
||||||
Host nas
|
|
||||||
# home net:
|
|
||||||
HostName 192.168.20.11
|
|
||||||
User jake
|
|
||||||
ForwardAgent yes
|
|
||||||
|
|
||||||
Host seed
|
|
||||||
# home net:
|
|
||||||
HostName 192.168.20.12
|
|
||||||
User jake
|
|
||||||
ForwardAgent yes
|
|
||||||
|
|
||||||
Host github.com
|
Host github.com
|
||||||
HostName github.com
|
HostName github.com
|
||||||
User git
|
User git
|
||||||
@ -73,6 +27,3 @@ Host github.com
|
|||||||
Host hashbang
|
Host hashbang
|
||||||
HostName de1.hashbang.sh
|
HostName de1.hashbang.sh
|
||||||
User jakej
|
User jakej
|
||||||
|
|
||||||
Host *.ssh.wpengine.net
|
|
||||||
IdentityFile ~/.ssh/wpe_devkit
|
|
||||||
|
@ -100,6 +100,7 @@ symbol = " "
|
|||||||
|
|
||||||
[python]
|
[python]
|
||||||
symbol = " "
|
symbol = " "
|
||||||
|
pyenv_version_name = true
|
||||||
|
|
||||||
[ruby]
|
[ruby]
|
||||||
symbol = " "
|
symbol = " "
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# set DOTFILES_DEBUG to trace startup times (1/2)
|
||||||
|
[[ "$DOTFILES_DEBUG" != "1" ]] || zmodload zsh/zprof
|
||||||
|
|
||||||
# path to this directory:
|
# path to this directory:
|
||||||
export ZSH_CUSTOM=~/.dotfiles/zsh
|
export ZSH_CUSTOM=~/.dotfiles/zsh
|
||||||
|
|
||||||
@ -12,10 +15,13 @@ done
|
|||||||
unset _dotzsh
|
unset _dotzsh
|
||||||
|
|
||||||
# macos.zsh has aliases, functions, etc specific to macOS:
|
# macos.zsh has aliases, functions, etc specific to macOS:
|
||||||
if [[ "$OSTYPE" = "darwin"* ]] && [[ -f "$ZSH_CUSTOM"/custom/macos.zsh ]]; then
|
if [[ "$OSTYPE" = darwin* ]] && [[ -f "$ZSH_CUSTOM"/custom/macos.zsh ]]; then
|
||||||
source "$ZSH_CUSTOM"/custom/macos.zsh
|
source "$ZSH_CUSTOM"/custom/macos.zsh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f ~/.zshrc.local ]]; then
|
if [[ -f ~/.zshrc.local ]]; then
|
||||||
source ~/.zshrc.local
|
source ~/.zshrc.local
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# uncomment to debug startup time (2/2)
|
||||||
|
[[ "$DOTFILES_DEBUG" != "1" ]] || zprof
|
||||||
|
@ -11,6 +11,7 @@ alias l="ll"
|
|||||||
|
|
||||||
# easier dotfile tinkering
|
# easier dotfile tinkering
|
||||||
alias shreload="exec \$SHELL"
|
alias shreload="exec \$SHELL"
|
||||||
|
alias shdebug="DOTFILES_DEBUG=1 exec \$SHELL"
|
||||||
|
|
||||||
# git
|
# git
|
||||||
alias g="git"
|
alias g="git"
|
||||||
@ -37,36 +38,42 @@ alias gist="gh gist create --web"
|
|||||||
# docker
|
# docker
|
||||||
alias dps="docker ps -a"
|
alias dps="docker ps -a"
|
||||||
dbar() {
|
dbar() {
|
||||||
# build and run:
|
# build a Dockerfile in the current directory and run it interactively:
|
||||||
# https://stackoverflow.com/questions/45141402/build-and-run-dockerfile-with-one-command/59220656#59220656
|
# https://stackoverflow.com/questions/45141402/build-and-run-dockerfile-with-one-command/59220656#59220656
|
||||||
docker build --progress=plain --no-cache . | tee /dev/tty | tail -n1 | cut -d' ' -f3 | xargs -I{} docker run --rm -i {}
|
docker run --rm -it "$(docker build --no-cache -q .)"
|
||||||
}
|
}
|
||||||
dsh() {
|
dsh() {
|
||||||
docker exec -it "$1" /bin/sh
|
docker exec -it "$1" /bin/sh
|
||||||
}
|
}
|
||||||
|
# alias dc="docker-compose"
|
||||||
alias dc="docker compose"
|
alias dc="docker compose"
|
||||||
alias dcu="docker compose up -d"
|
alias dcu="dc up -d"
|
||||||
alias dcd="docker compose down"
|
alias dcd="dc down"
|
||||||
alias dcr="docker compose down && docker compose up -d"
|
alias dcr="dcd && dcu"
|
||||||
alias dcl="docker compose logs -f"
|
alias dcl="dc logs -f"
|
||||||
|
|
||||||
# multipass
|
# multipass
|
||||||
alias mp="multipass"
|
alias mp="multipass"
|
||||||
mpl() {
|
mpl() {
|
||||||
# creates VM and opens its bash shell
|
# creates VM and opens its bash shell
|
||||||
# `mpl test1 4G 20.04`
|
# `mpl test1 4G 20.04`
|
||||||
multipass launch "${2:-jammy}" --cpus 4 --mem "${3:-2G}" --disk 20G --name "$1" && \
|
multipass launch "${2:-jammy}" --cpus=4 --memory="${3:-2G}" --disk="${4:-20G}" --name="$1" && \
|
||||||
multipass shell "$1"
|
multipass shell "$1"
|
||||||
}
|
}
|
||||||
|
mpd() {
|
||||||
|
multipass delete "$1" && multipass purge
|
||||||
|
}
|
||||||
alias mpls="multipass list"
|
alias mpls="multipass list"
|
||||||
alias mpsh="multipass shell"
|
alias mpsh="multipass shell"
|
||||||
alias mpk="multipass stop"
|
alias mpk="multipass stop"
|
||||||
alias mpd="multipass delete"
|
|
||||||
|
|
||||||
# Node/NPM/Yarn
|
# Node/NPM/Yarn
|
||||||
alias npr="npm run"
|
alias npr="npm run"
|
||||||
|
alias yar="yarn run"
|
||||||
|
alias pnpr="pnpm run"
|
||||||
alias fresh_npm="rm -rf node_modules package-lock.json && npm install"
|
alias fresh_npm="rm -rf node_modules package-lock.json && npm install"
|
||||||
alias fresh_yarn="rm -rf node_modules yarn.lock && yarn install"
|
alias fresh_yarn="rm -rf node_modules yarn.lock && yarn install"
|
||||||
|
alias fresh_pnpm="rm -rf node_modules pnpm-lock.yaml && pnpm install"
|
||||||
|
|
||||||
# uncomment to use VS Code insiders build
|
# uncomment to use VS Code insiders build
|
||||||
# alias code="code-insiders"
|
# alias code="code-insiders"
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
autoload -U colors && colors
|
autoload -U colors && \
|
||||||
|
colors
|
||||||
|
|
||||||
autoload -Uz url-quote-magic
|
autoload -Uz select-word-style && \
|
||||||
zle -N self-insert url-quote-magic
|
|
||||||
|
|
||||||
autoload -Uz select-word-style
|
|
||||||
select-word-style bash
|
select-word-style bash
|
||||||
|
|
||||||
|
# autoload -Uz bracketed-paste-magic && \
|
||||||
|
# zle -N bracketed-paste bracketed-paste-magic
|
||||||
|
# zstyle ':bracketed-paste-magic' active-widgets '.self-*'
|
||||||
|
|
||||||
|
autoload -Uz url-quote-magic && \
|
||||||
|
zle -N self-insert url-quote-magic
|
||||||
|
zstyle ":urlglobber" url-other-schema ftp git gopher http https magnet && \
|
||||||
|
|
||||||
|
export DISABLE_MAGIC_FUNCTIONS=true # make pasting into terminal faster
|
||||||
|
|
||||||
# enable bash-like 'help' command for zsh:
|
# enable bash-like 'help' command for zsh:
|
||||||
# https://stackoverflow.com/questions/4405382/how-can-i-read-documentation-about-built-in-zsh-commands
|
# https://stackoverflow.com/questions/4405382/how-can-i-read-documentation-about-built-in-zsh-commands
|
||||||
unalias run-help 2>/dev/null
|
unalias run-help 2>/dev/null
|
||||||
@ -17,31 +25,29 @@ alias help=run-help
|
|||||||
# ---
|
# ---
|
||||||
|
|
||||||
setopt notify
|
setopt notify
|
||||||
|
setopt complete_aliases
|
||||||
setopt complete_in_word
|
setopt complete_in_word
|
||||||
setopt always_to_end
|
setopt always_to_end
|
||||||
setopt extended_history
|
setopt extended_history
|
||||||
setopt hist_expire_dups_first
|
setopt hist_expire_dups_first
|
||||||
# setopt hist_ignore_dups
|
setopt hist_ignore_dups
|
||||||
setopt hist_ignore_space
|
setopt hist_ignore_space
|
||||||
setopt hist_verify
|
setopt hist_verify
|
||||||
setopt share_history
|
setopt share_history
|
||||||
setopt inc_append_history
|
setopt inc_append_history
|
||||||
setopt rc_quotes
|
setopt rc_quotes
|
||||||
setopt autocd
|
|
||||||
setopt extended_glob
|
setopt extended_glob
|
||||||
setopt glob_dots
|
setopt glob_dots
|
||||||
unsetopt case_glob
|
unsetopt case_glob
|
||||||
unsetopt beep # kindly stfu
|
unsetopt beep # kindly stfu
|
||||||
|
unsetopt list_beep
|
||||||
unsetopt correct
|
unsetopt correct
|
||||||
unsetopt correct_all
|
unsetopt correct_all
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
bindkey -e
|
# kinda hacky way to traverse up to the root of the dotfiles repo
|
||||||
bindkey "^[^[[D" backward-word
|
export DOTFILES="$(realpath "$(realpath "$(dirname "${0}")")/../..")"
|
||||||
bindkey "^[^[[C" forward-word
|
|
||||||
|
|
||||||
# ---
|
|
||||||
|
|
||||||
export LC_ALL="${LC_ALL:-en_US.UTF-8}"
|
export LC_ALL="${LC_ALL:-en_US.UTF-8}"
|
||||||
export LANG="${LANG:-en_US.UTF-8}"
|
export LANG="${LANG:-en_US.UTF-8}"
|
||||||
@ -55,7 +61,17 @@ export HISTSIZE=10000
|
|||||||
export SAVEHIST=10000
|
export SAVEHIST=10000
|
||||||
|
|
||||||
export EDITOR="nano" # don't judge me
|
export EDITOR="nano" # don't judge me
|
||||||
export VISUAL="code"
|
export VISUAL="code --new-window --wait"
|
||||||
|
|
||||||
|
export PAGER="less"
|
||||||
|
export LESS="$LESS -RF --mouse --silent"
|
||||||
|
|
||||||
|
# resolve GPG terminal at shell runtime
|
||||||
|
# fixes "signing failed: Inappropriate ioctl for device"
|
||||||
|
if tty -s 2>/dev/null; then
|
||||||
|
GPG_TTY=$(tty)
|
||||||
|
export GPG_TTY
|
||||||
|
fi
|
||||||
|
|
||||||
# https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/theme-and-appearance.zsh#L5
|
# https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/theme-and-appearance.zsh#L5
|
||||||
# export LS_COLORS="Gxfxcxdxbxegedabagacad"
|
# export LS_COLORS="Gxfxcxdxbxegedabagacad"
|
||||||
|
@ -1,11 +1,33 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# homebrew tweaks
|
||||||
export HOMEBREW_NO_ANALYTICS=1
|
export HOMEBREW_NO_ANALYTICS=1
|
||||||
|
export HOMEBREW_NO_ENV_HINTS=1
|
||||||
export HOMEBREW_NO_INSECURE_REDIRECT=1
|
export HOMEBREW_NO_INSECURE_REDIRECT=1
|
||||||
# export HOMEBREW_CASK_OPTS=--require-sha
|
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
# docker tweaks
|
||||||
export GATSBY_TELEMETRY_DISABLED=1
|
export DOCKER_BUILDKIT=1
|
||||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
export DOCKER_SCAN_SUGGEST=false
|
||||||
export SAM_CLI_TELEMETRY=0
|
export COMPOSE_DOCKER_CLI_BUILD=1
|
||||||
|
|
||||||
|
# npm tweaks
|
||||||
|
export DISABLE_OPENCOLLECTIVE=1
|
||||||
|
export NO_UPDATE_NOTIFIER=1
|
||||||
|
export NPM_CONFIG_FUND=false
|
||||||
|
export NPM_CONFIG_UPDATE_NOTIFIER=false
|
||||||
|
export OPEN_SOURCE_CONTRIBUTOR=true
|
||||||
|
export OPENCOLLECTIVE_HIDE=1
|
||||||
|
|
||||||
|
# can everyone stop being so creepy pls
|
||||||
export AZURE_CORE_COLLECT_TELEMETRY=0
|
export AZURE_CORE_COLLECT_TELEMETRY=0
|
||||||
export CHECKPOINT_DISABLE=1
|
export CHECKPOINT_DISABLE=1
|
||||||
|
export CLI_COLLECT_METRICS=0
|
||||||
|
export CLOUDSDK_CORE_DISABLE_USAGE_REPORTING=true
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=true
|
||||||
|
export GATSBY_TELEMETRY_DISABLED=1
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
export POWERSHELL_TELEMETRY_OPTOUT=1
|
||||||
|
export SAM_CLI_TELEMETRY=0
|
||||||
|
export SLS_TELEMETRY_DISABLED=1
|
||||||
|
export VAGRANT_CHECKPOINT_DISABLE=1
|
||||||
|
export YARN_ENABLE_TELEMETRY=0
|
||||||
|
@ -2,8 +2,18 @@
|
|||||||
|
|
||||||
# Make a new directory and `cd` right into it (this seems like a no-brainer)
|
# Make a new directory and `cd` right into it (this seems like a no-brainer)
|
||||||
mkcd() {
|
mkcd() {
|
||||||
mkdir -p -- "$1" &&
|
mkdir -p "$1" && cd "$1"
|
||||||
cd -P -- "$1" || return
|
}
|
||||||
|
|
||||||
|
# Load .env file into shell session for environment variables
|
||||||
|
# https://github.com/thoughtbot/dotfiles/blob/main/zsh/functions/envup
|
||||||
|
envup() {
|
||||||
|
if [ -f .env ]; then
|
||||||
|
export $(sed '/^ *#/ d' .env)
|
||||||
|
else
|
||||||
|
echo 'No .env file found' 1>&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start an HTTP server from a directory, optionally specifying the port
|
# Start an HTTP server from a directory, optionally specifying the port
|
||||||
@ -61,6 +71,13 @@ extract() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# create a jrvs.io short URL
|
||||||
|
# ex: short https://github.com/jakejarvis/dotfiles jakesdotfiles => https://jrvs.io/jakesdotfiles
|
||||||
|
# https://github.com/jakejarvis/jrvs.io/blob/main/short.sh
|
||||||
|
short() {
|
||||||
|
( cd "$HOME/source/jrvs.io" && bash -c "./short.sh $*" )
|
||||||
|
}
|
||||||
|
|
||||||
# Create a git.io short URL (custom slug optional)
|
# Create a git.io short URL (custom slug optional)
|
||||||
# ex: gitio https://github.com/jakejarvis/dotfiles [jakesdotfiles] => https://git.io/jakesdotfiles
|
# ex: gitio https://github.com/jakejarvis/dotfiles [jakesdotfiles] => https://git.io/jakesdotfiles
|
||||||
# https://blog.github.com/2011-11-10-git-io-github-url-shortener
|
# https://blog.github.com/2011-11-10-git-io-github-url-shortener
|
||||||
|
@ -1,7 +1,15 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
export BROWSER="/Applications/Firefox.app/Contents/MacOS/firefox"
|
export BROWSER="/Applications/Firefox.app/Contents/MacOS/firefox"
|
||||||
# export BROWSER="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
|
|
||||||
|
# https://developer.1password.com/docs/ssh/get-started#step-4-configure-your-ssh-or-git-client
|
||||||
|
if [[ -S "$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" ]]; then
|
||||||
|
export SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export HOMEBREW_CASK_OPTS="--appdir=/Applications" # --require-sha
|
||||||
|
export HOMEBREW_FORCE_BREWED_CURL=1
|
||||||
|
export HOMEBREW_FORCE_BREWED_GIT=1
|
||||||
|
|
||||||
# Rosetta hacks for M1
|
# Rosetta hacks for M1
|
||||||
alias intel="arch -x86_64 /bin/zsh"
|
alias intel="arch -x86_64 /bin/zsh"
|
||||||
@ -16,17 +24,13 @@ system_update() {
|
|||||||
brew update
|
brew update
|
||||||
brew upgrade
|
brew upgrade
|
||||||
# avoid annoying `(latest) != latest` cask updates:
|
# avoid annoying `(latest) != latest` cask updates:
|
||||||
# shellcheck disable=SC2046
|
|
||||||
brew upgrade $(brew outdated --greedy --verbose | awk '$2 !~ /(latest)/ {print $1}')
|
brew upgrade $(brew outdated --greedy --verbose | awk '$2 !~ /(latest)/ {print $1}')
|
||||||
brew cleanup
|
brew cleanup
|
||||||
|
|
||||||
# node, npm, yarn
|
# node, npm, yarn
|
||||||
echo -e "${YELLOW}Updating global NPM/Yarn packages...${NC}"
|
echo -e "${YELLOW}Updating global NPM/Yarn packages...${NC}"
|
||||||
volta fetch node@latest # pull latest non-LTS version but don't use it
|
fnm install --latest --corepack-enabled
|
||||||
volta install node@lts
|
npm update --global --no-audit
|
||||||
volta install yarn@1
|
|
||||||
volta run --node lts --no-yarn -- npm update --global
|
|
||||||
volta run --node lts --yarn 1 -- yarn global upgrade
|
|
||||||
|
|
||||||
# ruby, gems
|
# ruby, gems
|
||||||
echo -e "${YELLOW}Updating Ruby and gems...${NC}"
|
echo -e "${YELLOW}Updating Ruby and gems...${NC}"
|
||||||
@ -43,6 +47,11 @@ system_update() {
|
|||||||
echo -e "${YELLOW}Updating pip packages...${NC}"
|
echo -e "${YELLOW}Updating pip packages...${NC}"
|
||||||
pip3 list --outdated --format=json | jq -r '.[] | .name+"="+.latest_version' | cut -d = -f 1 | xargs -n1 pip3 install -U
|
pip3 list --outdated --format=json | jq -r '.[] | .name+"="+.latest_version' | cut -d = -f 1 | xargs -n1 pip3 install -U
|
||||||
|
|
||||||
|
# zinit & plugins
|
||||||
|
echo -e "${YELLOW}Updating zinit...${NC}"
|
||||||
|
zinit self-update
|
||||||
|
zinit update --all
|
||||||
|
|
||||||
# App Store
|
# App Store
|
||||||
echo -e "${YELLOW}Checking for App Store updates...${NC}"
|
echo -e "${YELLOW}Checking for App Store updates...${NC}"
|
||||||
mas outdated
|
mas outdated
|
||||||
@ -50,20 +59,16 @@ system_update() {
|
|||||||
# macOS system
|
# macOS system
|
||||||
echo -e "${YELLOW}Checking for macOS system updates...${NC}"
|
echo -e "${YELLOW}Checking for macOS system updates...${NC}"
|
||||||
softwareupdate --list
|
softwareupdate --list
|
||||||
|
|
||||||
# zinit & plugins
|
|
||||||
echo -e "${YELLOW}Updating zinit...${NC}"
|
|
||||||
zinit self-update
|
|
||||||
zinit update --all
|
|
||||||
}
|
}
|
||||||
|
|
||||||
alias rehide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
|
alias unhidden="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
|
||||||
alias unhide="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
|
alias rehidden="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
|
||||||
alias force_empty="sudo rm -rf ~/.Trash /Volumes/*/.Trashes"
|
alias force_empty="sudo rm -rf ~/.Trash /Volumes/*/.Trashes"
|
||||||
alias unq="sudo xattr -rd com.apple.quarantine"
|
alias unq="sudo xattr -rd com.apple.quarantine"
|
||||||
|
|
||||||
alias gpu="system_profiler SPDisplaysDataType"
|
# hide/show all desktop icons (useful when presenting)
|
||||||
alias cpu="sysctl -n machdep.cpu.brand_string"
|
alias hidedesk="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
|
||||||
|
alias showdesk="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
|
||||||
|
|
||||||
alias ripfinder="killall Finder"
|
alias ripfinder="killall Finder"
|
||||||
alias ripdock="killall Dock"
|
alias ripdock="killall Dock"
|
||||||
@ -83,9 +88,8 @@ alias flush="sudo killall -HUP mDNSResponder; sudo killall mDNSResponderHelper;
|
|||||||
alias ios_sim="open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app"
|
alias ios_sim="open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app"
|
||||||
alias watchos_sim="open /Applications/Xcode.app/Contents/Developer/Applications/Simulator\ \(Watch\).app"
|
alias watchos_sim="open /Applications/Xcode.app/Contents/Developer/Applications/Simulator\ \(Watch\).app"
|
||||||
|
|
||||||
# convenient access to public key
|
# convenient access to ssh public key
|
||||||
alias pubkey="pbcopy < ~/.ssh/id_ed25519.pub && echo '=> Public key copied to clipboard.'"
|
alias pubkey="pbcopy < ~/.ssh/id_ed25519.pub && echo '=> Public key copied to clipboard.'"
|
||||||
alias pubkey_rsa="pbcopy < ~/.ssh/id_rsa.pub && echo '=> Public key copied to clipboard.'"
|
|
||||||
|
|
||||||
# workaround for lack of tailscale CLI on mac:
|
# workaround for lack of tailscale CLI on mac:
|
||||||
# https://tailscale.com/kb/1080/cli/?tab=macos#using-the-cli
|
# https://tailscale.com/kb/1080/cli/?tab=macos#using-the-cli
|
||||||
|
@ -1,76 +1,132 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
# set PATH, MANPATH, etc., for Homebrew
|
# Homebrew's location is different depending on OS...
|
||||||
if [[ -x /opt/homebrew/bin/brew ]]; then
|
# https://github.com/Homebrew/install/blob/master/install.sh#L122
|
||||||
|
if [[ -d /opt/homebrew ]]; then
|
||||||
# macOS on Apple Silicon
|
# macOS on Apple Silicon
|
||||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
BREW_BIN="/opt/homebrew/bin/brew"
|
||||||
elif [[ -x /usr/local/bin/brew ]]; then
|
|
||||||
# macOS on x86
|
|
||||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
||||||
elif [[ -d /home/linuxbrew/.linuxbrew ]]; then
|
|
||||||
# Linux, system install
|
|
||||||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
||||||
elif [[ -d "$HOME/.linuxbrew" ]]; then
|
elif [[ -d "$HOME/.linuxbrew" ]]; then
|
||||||
# Linux, user install
|
# Linux, user install
|
||||||
eval "$("$HOME/.linuxbrew/bin/brew" shellenv)"
|
# NOTE: definitely discouraged, maybe deprecated? https://github.com/Homebrew/install/pull/702
|
||||||
|
BREW_BIN="$HOME/.linuxbrew/bin/brew"
|
||||||
|
elif [[ -d /home/linuxbrew/.linuxbrew ]]; then
|
||||||
|
# Linux, system install
|
||||||
|
BREW_BIN="/home/linuxbrew/.linuxbrew/bin/brew"
|
||||||
|
else
|
||||||
|
# macOS on Intel (hopefully, or else we're kinda doomed...)
|
||||||
|
BREW_BIN="/usr/local/bin/brew"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# a lot of this file only applies to macOS
|
# set PATHs for Homebrew (if we found it)
|
||||||
if [[ "$OSTYPE" = "darwin"* ]]; then
|
if [[ -x "$BREW_BIN" ]]; then
|
||||||
# remap macOS core utils to GNU equivalents (from coreutils, findutils, gnu-*, etc.):
|
eval "$("$BREW_BIN" shellenv)"
|
||||||
# https://gist.github.com/skyzyx/3438280b18e4f7c490db8a2a2ca0b9da?permalink_comment_id=3049694#gistcomment-3049694
|
|
||||||
if command -v brew &>/dev/null; then
|
# macOS-only remedies
|
||||||
for gbin in "$(brew --prefix)"/opt/*/libexec/gnubin; do
|
if [[ "$OSTYPE" = darwin* ]]; then
|
||||||
export PATH="$gbin:$PATH"
|
# manually add VS Code 'code' command to path
|
||||||
|
# https://code.visualstudio.com/docs/setup/mac#_alternative-manual-instructions
|
||||||
|
if [[ -d "/Applications/Visual Studio Code.app/Contents/Resources/app/bin" ]]; then
|
||||||
|
path=("/Applications/Visual Studio Code.app/Contents/Resources/app/bin" $path)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remap macOS core utils to GNU equivalents without needing the 'g' prefix (e.g. ggrep -> grep):
|
||||||
|
# https://gist.github.com/skyzyx/3438280b18e4f7c490db8a2a2ca0b9da?permalink_comment_id=3049694#gistcomment-3049694
|
||||||
|
for gnubin in "$(brew --prefix)"/opt/*/libexec/gnubin; do
|
||||||
|
path=($gnubin $path)
|
||||||
done
|
done
|
||||||
# Ensure `man` refers to the new binaries:
|
|
||||||
for gman in "$(brew --prefix)"/opt/*/libexec/gnuman; do
|
# ensure man also points to the GNU manuals
|
||||||
export MANPATH="$gman:$MANPATH"
|
for gnuman in "$(brew --prefix)"/opt/*/libexec/gnuman; do
|
||||||
|
manpath=($gnuman $manpath)
|
||||||
done
|
done
|
||||||
unset gbin gman
|
|
||||||
|
|
||||||
# shellcheck disable=SC2155
|
# declare the base xcode & homebrew paths first
|
||||||
export HELPDIR="$(brew --prefix)/share/zsh/help"
|
LDFLAGS="${LDFLAGS:+"$LDFLAGS "}-L$(brew --prefix)/lib"
|
||||||
|
CFLAGS="${CPPFLAGS:+"$CPPFLAGS "}-I$(brew --prefix)/include -I$(brew --prefix openjdk)/include"
|
||||||
|
PKG_CONFIG_PATH="${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}$(brew --prefix)/lib/pkgconfig"
|
||||||
|
|
||||||
# OpenJDK
|
# tell compilers and pkg-config where to find the homebrew versions (rather than the vendored macOS versions) of the
|
||||||
# shellcheck disable=SC2155
|
# following packages:
|
||||||
export PATH="$(brew --prefix)/opt/openjdk/bin:$PATH"
|
declare -a compiler_libs=(
|
||||||
|
bzip2
|
||||||
|
curl
|
||||||
|
jemalloc
|
||||||
|
libffi
|
||||||
|
gettext
|
||||||
|
libxml2
|
||||||
|
ncurses
|
||||||
|
openssl@1.1
|
||||||
|
readline
|
||||||
|
sqlite
|
||||||
|
tcl-tk
|
||||||
|
icu4c
|
||||||
|
xz
|
||||||
|
zlib
|
||||||
|
)
|
||||||
|
|
||||||
# macOS-only fixes for rbenv/ruby below
|
# append the specific paths for each of the above libraries
|
||||||
# shellcheck disable=SC2155
|
for lib in $compiler_libs; do
|
||||||
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-jemalloc-dir=$(brew --prefix jemalloc)"
|
# TODO: 'brew --prefix' got pretty slow in Homebrew v4, so these calls should be cleaned up/optimized
|
||||||
|
# https://github.com/Homebrew/brew/commit/ca32473a672ef08be60792a921a3a1e4dcc32e13
|
||||||
|
LDFLAGS+=" -L$(brew --prefix $lib)/lib"
|
||||||
|
CFLAGS+=" -I$(brew --prefix $lib)/include"
|
||||||
|
PKG_CONFIG_PATH+=":$(brew --prefix $lib)/lib/pkgconfig"
|
||||||
|
done
|
||||||
|
|
||||||
# tell compilers where to find all of this stuff
|
# it's easier to do ruby opts separately as it needs different libraries than above in a very different format
|
||||||
# shellcheck disable=SC2155
|
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) --with-jemalloc-dir=$(brew --prefix jemalloc) --with-libffi-dir=$(brew --prefix libffi) --with-libyaml-dir=$(brew --prefix libyaml) $RUBY_CONFIGURE_OPTS"
|
||||||
export LDFLAGS="$LDFLAGS -L$(brew --prefix openssl@1.1)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix jemalloc)/lib"
|
|
||||||
# shellcheck disable=SC2155
|
# add xcode flags last
|
||||||
export CPPFLAGS="$CPPFLAGS -I$(brew --prefix openjdk)/include -I$(brew --prefix openssl@1.1)/include -I$(brew --prefix readline)/include -I$(brew --prefix jemalloc)/include"
|
if command -v xcrun &>/dev/null; then
|
||||||
|
LDFLAGS+=" -L$(xcrun --show-sdk-path)/usr/lib"
|
||||||
|
CFLAGS+=" -I$(xcrun --show-sdk-path)/usr/include"
|
||||||
|
PKG_CONFIG_PATH+=":$(brew --prefix $lib)/lib/pkgconfig"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# finally all done with this mess
|
||||||
|
export LDFLAGS CPPFLAGS PKG_CONFIG_PATH RUBY_CONFIGURE_OPTS
|
||||||
|
unset gnubin gnuman compiler_libs lib
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo "⚠️ Homebrew can't be found in any of the normal locations. Are you sure it's installed?"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# go
|
# go
|
||||||
if [[ -d "$HOME/golang" ]]; then
|
if [[ -d "$HOME/golang" ]]; then
|
||||||
export GOPATH="$HOME/golang"
|
export GOPATH="$HOME/golang"
|
||||||
export PATH="$GOPATH/bin:$PATH"
|
path=("$GOPATH/bin" $path)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# rust/cargo
|
# rust/cargo
|
||||||
if [[ -d "$HOME/.cargo" ]]; then
|
if [[ -d "$HOME/.cargo" ]]; then
|
||||||
export PATH="$HOME/.cargo/bin:$PATH"
|
path=("$HOME/.cargo/bin" $path)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# fnm
|
||||||
|
if command -v fnm &>/dev/null; then
|
||||||
|
eval "$(fnm env --use-on-cd --shell zsh)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# rbenv
|
# rbenv
|
||||||
if command -v rbenv &>/dev/null; then
|
if command -v rbenv &>/dev/null; then
|
||||||
eval "$(rbenv init --no-rehash - zsh)"
|
eval "$(rbenv init - --no-rehash zsh)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# pyenv
|
# pyenv
|
||||||
if command -v pyenv &>/dev/null; then
|
if command -v pyenv &>/dev/null; then
|
||||||
eval "$(pyenv init --no-rehash - zsh)"
|
eval "$(pyenv init - --no-rehash zsh)"
|
||||||
|
|
||||||
|
# pyenv-virtualenv
|
||||||
|
if command -v pyenv-virtualenv-init &>/dev/null; then
|
||||||
|
eval "$(pyenv virtualenv-init - zsh)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# volta
|
# docker user mode, see: https://docs.docker.com/desktop/mac/permission-requirements/#installing-symlinks
|
||||||
if [[ -d "$HOME/.volta" ]]; then
|
if [[ -d "$HOME/.docker/bin" ]]; then
|
||||||
export VOLTA_HOME="$HOME/.volta"
|
path=("$HOME/.docker/bin" $path)
|
||||||
export PATH="$VOLTA_HOME/bin:$PATH"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# let zsh sort out formatting and deduplication
|
||||||
|
typeset -aU path fpath manpath
|
||||||
|
export PATH FPATH MANPATH
|
||||||
|
@ -1,42 +1,48 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
# check for zinit and clone if not installed
|
# these custom values must be set *before* sourcing zinit
|
||||||
ZINIT_HOME="$HOME/.local/share/zinit/zinit.git"
|
export ZINIT_HOME="${ZINIT_HOME:-"${XDG_DATA_HOME:-"${HOME}/.local/share"}/zinit/zinit.git"}"
|
||||||
if [[ ! -d "$ZINIT_HOME" ]]; then
|
declare -A ZINIT=(
|
||||||
mkdir -p "$(dirname "$ZINIT_HOME")"
|
[ZCOMPDUMP_PATH]="${XDG_CACHE_HOME:-"$HOME/.cache"}/zsh/.zcompdump-$ZSH_VERSION"
|
||||||
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
)
|
||||||
|
|
||||||
|
# check for zinit
|
||||||
|
if [[ -f "$ZINIT_HOME/zinit.zsh" ]]; then
|
||||||
|
source "$ZINIT_HOME/zinit.zsh"
|
||||||
|
else
|
||||||
|
echo "zinit not found in '$ZINIT_HOME', either check the value of ZINIT_HOME or install zinit."
|
||||||
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# initialize zinit
|
# initialize zinit && ensure compinit recognizes its completions
|
||||||
# shellcheck disable=SC1091
|
|
||||||
source "$ZINIT_HOME/zinit.zsh"
|
|
||||||
|
|
||||||
# ensure compinit recognizes zinit's changes
|
|
||||||
autoload -Uz _zinit
|
autoload -Uz _zinit
|
||||||
# shellcheck disable=SC2154
|
|
||||||
(( ${+_comps} )) && _comps[zinit]=_zinit
|
(( ${+_comps} )) && _comps[zinit]=_zinit
|
||||||
|
|
||||||
|
# TODO: figure out why zinit stopped adding itself to MANPATH automatically...
|
||||||
|
if [[ -d "${ZINIT[MAN_DIR]}" ]]; then
|
||||||
|
manpath=(
|
||||||
|
"${ZINIT[MAN_DIR]}"
|
||||||
|
$manpath
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
# various zinit add-ons
|
# various zinit add-ons
|
||||||
zinit light zdharma-continuum/zinit-annex-patch-dl
|
zinit light zdharma-continuum/zinit-annex-patch-dl
|
||||||
|
|
||||||
|
# oh-my-zsh was good at setting iTerm tab titles, keep doing it pls
|
||||||
|
# https://github.com/ohmyzsh/ohmyzsh/tree/master/lib
|
||||||
|
zinit snippet OMZ::lib/functions.zsh
|
||||||
|
zinit snippet OMZ::lib/termsupport.zsh
|
||||||
|
zinit snippet OMZ::lib/compfix.zsh
|
||||||
|
|
||||||
# async support
|
# async support
|
||||||
zinit ice wait lucid \
|
zinit ice lucid depth"1" \
|
||||||
atload"async_init" \
|
atload"async_init" \
|
||||||
src"async.zsh"
|
src"async.zsh"
|
||||||
zinit light mafredri/zsh-async
|
zinit light mafredri/zsh-async
|
||||||
|
|
||||||
# z
|
|
||||||
zinit ice wait lucid blockf \
|
|
||||||
atclone"
|
|
||||||
mv -vf z.1 ${ZINIT[MAN_DIR]}/man1
|
|
||||||
" \
|
|
||||||
atpull"%atclone" \
|
|
||||||
atload"_Z_DATA=~/.zdata" \
|
|
||||||
src"z.sh"
|
|
||||||
zinit light rupa/z
|
|
||||||
|
|
||||||
# grab exa (better ls) binary
|
# grab exa (better ls) binary
|
||||||
zinit ice from"gh-r" as"command" \
|
zinit ice lucid from"gh-r" as"command" \
|
||||||
mv"bin/exa* -> exa" \
|
mv"bin/exa* -> exa" \
|
||||||
atclone"
|
atclone"
|
||||||
mv -vf completions/exa.zsh _exa
|
mv -vf completions/exa.zsh _exa
|
||||||
@ -52,7 +58,7 @@ zinit ice from"gh-r" as"command" \
|
|||||||
zinit light ogham/exa
|
zinit light ogham/exa
|
||||||
|
|
||||||
# grab bat (better cat) binary
|
# grab bat (better cat) binary
|
||||||
zinit ice from"gh-r" as"command" \
|
zinit ice lucid from"gh-r" as"command" \
|
||||||
mv"bat-*/bat -> bat" \
|
mv"bat-*/bat -> bat" \
|
||||||
atclone"
|
atclone"
|
||||||
mv -vf bat-*/autocomplete/bat.zsh _bat
|
mv -vf bat-*/autocomplete/bat.zsh _bat
|
||||||
@ -61,95 +67,121 @@ zinit ice from"gh-r" as"command" \
|
|||||||
atpull"%atclone" \
|
atpull"%atclone" \
|
||||||
atload"
|
atload"
|
||||||
export BAT_THEME='base16'
|
export BAT_THEME='base16'
|
||||||
export BAT_PAGER='less -R -F -+X --mouse'
|
|
||||||
export MANPAGER='sh -c \"col -bx | bat --color=always --style=plain --language=man\"'
|
export MANPAGER='sh -c \"col -bx | bat --color=always --style=plain --language=man\"'
|
||||||
alias cat='bat --paging=never --color=auto --style=numbers,changes'
|
alias cat='bat --paging=always --color=auto --style=numbers,changes'
|
||||||
alias cats='bat --paging=always --color=always --style=numbers,changes'
|
alias plcat='bat --paging=never --color=auto --style=plain'
|
||||||
alias catcat='\cat --paging=never --color=auto --style=plain'
|
|
||||||
"
|
"
|
||||||
zinit light sharkdp/bat
|
zinit light sharkdp/bat
|
||||||
|
|
||||||
# grab delta binary
|
# grab delta binary
|
||||||
zinit ice from"gh-r" as"command" \
|
zinit ice lucid from"gh-r" as"command" \
|
||||||
mv"delta-*/delta -> delta" \
|
mv"delta-*/delta -> delta" \
|
||||||
dl"https://github.com/dandavison/delta/raw/HEAD/etc/completion/completion.zsh -> _delta" \
|
dl"https://github.com/dandavison/delta/raw/HEAD/etc/completion/completion.zsh -> _delta"
|
||||||
atload"
|
|
||||||
# https://dandavison.github.io/delta/mouse-scrolling.html
|
|
||||||
export DELTA_PAGER='less -R -F -+X --mouse'
|
|
||||||
"
|
|
||||||
zinit light dandavison/delta
|
zinit light dandavison/delta
|
||||||
|
|
||||||
# grab fd binary
|
# grab fd binary
|
||||||
# TODO: preview commands are an absolute sh*tshow, maybe use .lessfilter?
|
zinit ice lucid from"gh-r" as"command" \
|
||||||
# https://github.com/Aloxaf/fzf-tab/wiki/Preview#show-file-contents
|
|
||||||
# shellcheck disable=SC2016
|
|
||||||
zinit ice from"gh-r" as"command" \
|
|
||||||
mv"fd-*/fd -> fd" \
|
mv"fd-*/fd -> fd" \
|
||||||
atclone"
|
atclone"
|
||||||
mv -vf fd-*/autocomplete/_fd _fd
|
mv -vf fd-*/autocomplete/_fd _fd
|
||||||
mv -vf fd-*/fd.1 ${ZINIT[MAN_DIR]}/man1
|
mv -vf fd-*/fd.1 ${ZINIT[MAN_DIR]}/man1
|
||||||
" \
|
" \
|
||||||
atpull"%atclone" \
|
atpull"%atclone"
|
||||||
atload'
|
|
||||||
FZF_FD_OPTS="--color always --hidden --follow --exclude .git --exclude node_modules"
|
|
||||||
FZF_PREVIEW_FILE_COMMAND="bat --color=always --paging=never --style=plain"
|
|
||||||
FZF_PREVIEW_DIR_COMMAND="exa -1a --color=always --icons --group-directories-first"
|
|
||||||
FZF_DEFAULT_OPTS="--no-mouse --bind \"tab:accept,ctrl-y:preview-page-up,ctrl-v:preview-page-down,ctrl-e:execute-silent(\${VISUAL:-code} {+} >/dev/null 2>&1)\""
|
|
||||||
FZF_DEFAULT_COMMAND="fd --type f $FZF_FD_OPTS"
|
|
||||||
FZF_ALT_C_OPTS="--ansi --preview \"$FZF_PREVIEW_DIR_COMMAND {} 2>/dev/null\""
|
|
||||||
FZF_ALT_C_COMMAND="fd --type d . $FZF_FD_OPTS"
|
|
||||||
FZF_CTRL_T_OPTS="--ansi --bind \"ctrl-w:execute(\${EDITOR:-nano} {1} >/dev/tty </dev/tty)+refresh-preview\" --preview \"$FZF_PREVIEW_FILE_COMMAND {} 2>/dev/null\""
|
|
||||||
FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
|
||||||
'
|
|
||||||
zinit light sharkdp/fd
|
zinit light sharkdp/fd
|
||||||
|
|
||||||
# grab fzf binary from release & other files from source
|
# grab fzf binary from release & other files from source
|
||||||
zinit ice from"gh-r" as"command" \
|
# TODO: preview commands are an absolute sh*tshow, maybe use .lessfilter?
|
||||||
|
# https://github.com/Aloxaf/fzf-tab/wiki/Preview#show-file-contents
|
||||||
|
zinit ice lucid from"gh-r" as"command" \
|
||||||
dl"https://github.com/junegunn/fzf/raw/HEAD/shell/key-bindings.zsh -> key-bindings.zsh" \
|
dl"https://github.com/junegunn/fzf/raw/HEAD/shell/key-bindings.zsh -> key-bindings.zsh" \
|
||||||
dl"https://github.com/junegunn/fzf/raw/HEAD/shell/completion.zsh -> _fzf" \
|
dl"https://github.com/junegunn/fzf/raw/HEAD/shell/completion.zsh -> _fzf" \
|
||||||
dl"https://github.com/junegunn/fzf/raw/HEAD/man/man1/fzf.1 -> ${ZINIT[MAN_DIR]}/man1/fzf.1" \
|
dl"https://github.com/junegunn/fzf/raw/HEAD/man/man1/fzf.1 -> ${ZINIT[MAN_DIR]}/man1/fzf.1" \
|
||||||
dl"https://github.com/junegunn/fzf/raw/HEAD/man/man1/fzf-tmux.1 -> ${ZINIT[MAN_DIR]}/man1/fzf-tmux.1" \
|
dl"https://github.com/junegunn/fzf/raw/HEAD/man/man1/fzf-tmux.1 -> ${ZINIT[MAN_DIR]}/man1/fzf-tmux.1" \
|
||||||
|
atload'
|
||||||
|
export FZF_FD_OPTS="--color always --hidden --follow --exclude .git --exclude node_modules"
|
||||||
|
export FZF_PREVIEW_FILE_COMMAND="bat --color=always --paging=never --style=plain"
|
||||||
|
export FZF_PREVIEW_DIR_COMMAND="exa -1a --color=always --icons --group-directories-first"
|
||||||
|
export FZF_DEFAULT_OPTS="--cycle --select-1 --exit-0 --height=60% --no-mouse --bind=\"tab:accept,ctrl-y:preview-page-up,ctrl-v:preview-page-down,ctrl-e:execute-silent(\${VISUAL:-\$EDITOR} {+} >/dev/null 2>&1)\""
|
||||||
|
export FZF_DEFAULT_COMMAND="fd --type f $FZF_FD_OPTS"
|
||||||
|
export FZF_ALT_C_OPTS="-i --ansi --preview=\"$FZF_PREVIEW_DIR_COMMAND {}\""
|
||||||
|
export FZF_ALT_C_COMMAND="fd --type d . $FZF_FD_OPTS"
|
||||||
|
export FZF_CTRL_T_OPTS="-i --ansi --bind=\"ctrl-w:execute(\$EDITOR {1} >/dev/tty </dev/tty)+refresh-preview\" --preview=\"$FZF_PREVIEW_FILE_COMMAND {} 2>/dev/null\""
|
||||||
|
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
||||||
|
' \
|
||||||
src"key-bindings.zsh"
|
src"key-bindings.zsh"
|
||||||
zinit light junegunn/fzf
|
zinit light junegunn/fzf
|
||||||
|
|
||||||
|
# zoxide
|
||||||
|
zinit ice wait"0b" lucid from"gh-r" as"command" \
|
||||||
|
atclone"
|
||||||
|
mv -vf man/man1/zoxide* ${ZINIT[MAN_DIR]}/man1
|
||||||
|
./zoxide init zsh > init.zsh
|
||||||
|
zcompile init.zsh
|
||||||
|
" \
|
||||||
|
atpull"%atclone" \
|
||||||
|
atinit'
|
||||||
|
export _ZO_DATA_DIR="${XDG_DATA_HOME:-"$HOME/.local/share"}/zoxide"
|
||||||
|
export _ZO_FZF_OPTS="$FZF_DEFAULT_OPTS --exact --no-sort --ansi --reverse --preview=\"$FZF_PREVIEW_DIR_COMMAND {2..}\""
|
||||||
|
' \
|
||||||
|
src"init.zsh"
|
||||||
|
zinit light ajeetdsouza/zoxide
|
||||||
|
|
||||||
# grab vivid binary (for all the colors)
|
# grab vivid binary (for all the colors)
|
||||||
# https://github.com/sharkdp/vivid/tree/master/themes
|
# https://github.com/sharkdp/vivid/tree/master/themes
|
||||||
# shellcheck disable=SC2016
|
# by outputting the generated LS_COLORS variable to a file and sourcing it, we only need to call vivid once on
|
||||||
zinit ice from"gh-r" as"command" \
|
# installation rather than every time a new session begins.
|
||||||
|
zinit ice lucid from"gh-r" as"command" \
|
||||||
mv"vivid-*/vivid -> vivid" \
|
mv"vivid-*/vivid -> vivid" \
|
||||||
atload'export LS_COLORS="$(vivid generate snazzy)"'
|
atclone"
|
||||||
zinit load sharkdp/vivid
|
./vivid generate snazzy | xargs printf 'export LS_COLORS=%q' > colors.zsh
|
||||||
|
" \
|
||||||
|
atpull"%atclone" \
|
||||||
|
atload"zstyle ':completion:*' list-colors \${(s.:.)LS_COLORS}" \
|
||||||
|
src"colors.zsh"
|
||||||
|
zinit light sharkdp/vivid
|
||||||
|
|
||||||
# history substring searching
|
# better Ctrl+R history searching
|
||||||
# only bind these keys once they're ready
|
zinit ice wait lucid depth"1" \
|
||||||
bindkey -r "^[[A"
|
|
||||||
bindkey -r "^[[B"
|
|
||||||
zinit ice wait lucid \
|
|
||||||
atload"
|
atload"
|
||||||
zmodload zsh/terminfo
|
zstyle ':history-search-multi-word' highlight-color 'fg=yellow,bold'
|
||||||
bindkey '^[[A' history-substring-search-up
|
zstyle ':history-search-multi-word' page-size 15
|
||||||
bindkey '^[[B' history-substring-search-down
|
zstyle ':plugin:history-search-multi-word' active 'standout'
|
||||||
"
|
zstyle ':plugin:history-search-multi-word' reset-prompt-protect 1
|
||||||
zinit light zsh-users/zsh-history-substring-search
|
" \
|
||||||
|
trackbinds
|
||||||
|
zinit light zdharma-continuum/history-search-multi-word
|
||||||
|
|
||||||
# tab completions via fzf
|
# tab completions via fzf
|
||||||
zinit ice wait"1" lucid \
|
zinit ice wait"0b" lucid depth"1" \
|
||||||
has"fzf" \
|
has"fzf" \
|
||||||
|
blockf \
|
||||||
|
atpull"zinit creinstall -q ." \
|
||||||
atload"
|
atload"
|
||||||
zstyle ':completion:*' verbose yes
|
zstyle ':completion:*' verbose true
|
||||||
zstyle ':completion:*' list-colors \${(s.:.)LS_COLORS}
|
zstyle ':completion:*' use-cache true
|
||||||
zstyle ':completion:*:descriptions' format '[%d]'
|
zstyle ':completion:*' cache-path '$(dirname ${ZINIT[ZCOMPDUMP_PATH]})/.zcompcache'
|
||||||
zstyle ':completion::complete:*:*:files' ignored-patterns '.DS_Store' 'Icon?' '.Trash'
|
zstyle ':completion:*' rehash true
|
||||||
zstyle ':completion::complete:*:*:globbed-files' ignored-patterns '.DS_Store' 'Icon?' '.Trash'
|
zstyle ':completion:*' squeeze-slashes true
|
||||||
|
zstyle ':completion:*' list-dirs-first true
|
||||||
|
zstyle ':completion:*' keep-prefix true
|
||||||
|
zstyle ':completion:*' special-dirs true
|
||||||
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||||
|
zstyle ':completion:*' menu select
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
|
||||||
|
zstyle ':completion:*:descriptions' format '%d'
|
||||||
|
zstyle ':completion:*:functions' ignored-patterns '_*'
|
||||||
|
zstyle ':completion::complete:*:*:files' ignored-patterns '.DS_Store' 'Icon?'
|
||||||
|
zstyle ':completion::complete:*:*:globbed-files' ignored-patterns '.DS_Store' 'Icon?'
|
||||||
zstyle ':completion::complete:rm:*:globbed-files' ignored-patterns
|
zstyle ':completion::complete:rm:*:globbed-files' ignored-patterns
|
||||||
zstyle ':fzf-tab:*' fzf-command fzf
|
zstyle ':fzf-tab:*' fzf-command 'fzf'
|
||||||
zstyle ':fzf-tab:*' fzf-flags '--ansi'
|
zstyle ':fzf-tab:*' fzf-flags $FZF_DEFAULT_OPTS '-i' '--ansi'
|
||||||
zstyle ':fzf-tab:*' fzf-bindings \
|
zstyle ':fzf-tab:*' fzf-bindings \
|
||||||
'tab:accept' \
|
'tab:accept' \
|
||||||
'ctrl-y:preview-page-up' \
|
'ctrl-y:preview-page-up' \
|
||||||
'ctrl-v:preview-page-down' \
|
'ctrl-v:preview-page-down' \
|
||||||
'ctrl-e:execute-silent(\${VISUAL:-code} \$realpath >/dev/null 2>&1)' \
|
'ctrl-e:execute-silent(\${VISUAL:-\$EDITOR} \$realpath >/dev/null 2>&1)' \
|
||||||
'ctrl-w:execute(\${EDITOR:-nano} \$realpath >/dev/tty </dev/tty)+refresh-preview'
|
'ctrl-w:execute(\$EDITOR \$realpath >/dev/tty </dev/tty)+refresh-preview'
|
||||||
zstyle ':fzf-tab:*' fzf-min-height 15
|
zstyle ':fzf-tab:*' fzf-min-height 15
|
||||||
zstyle ':fzf-tab:complete:git-(add|diff|restore):*' fzf-preview \
|
zstyle ':fzf-tab:complete:git-(add|diff|restore):*' fzf-preview \
|
||||||
'git diff --no-ext-diff \$word | delta --paging=never --no-gitconfig --line-numbers --file-style=omit --hunk-header-style=omit --theme=base16'
|
'git diff --no-ext-diff \$word | delta --paging=never --no-gitconfig --line-numbers --file-style=omit --hunk-header-style=omit --theme=base16'
|
||||||
@ -170,86 +202,138 @@ zinit ice wait"1" lucid \
|
|||||||
"
|
"
|
||||||
zinit light Aloxaf/fzf-tab
|
zinit light Aloxaf/fzf-tab
|
||||||
|
|
||||||
# TODO: fix git-* completions, apparently there's some conflict with brew's git
|
# fix git-* completions, apparently there's some conflict with brew's git
|
||||||
# https://github.com/Aloxaf/fzf-tab/wiki/Preview#git
|
# TODO: investigate more... https://github.com/Aloxaf/fzf-tab/wiki/Preview#git
|
||||||
# shellcheck disable=SC2016
|
zinit ice wait lucid as"null" \
|
||||||
zinit ice wait lucid as"completions" \
|
atload'zstyle ":completion:*:*:git:*" script "$(pwd)/git-completion.bash"'
|
||||||
id-as"git-completions" \
|
zinit snippet https://github.com/git/git/raw/HEAD/contrib/completion/git-completion.bash
|
||||||
has"git" \
|
|
||||||
dl"https://github.com/git/git/raw/HEAD/contrib/completion/git-completion.zsh -> _git" \
|
# grab completions as snippets from GitHub repos
|
||||||
dl"https://github.com/git/git/raw/HEAD/contrib/completion/git-completion.bash -> git-completion.bash" \
|
zinit wait lucid as"completion" \
|
||||||
atpull"zinit creinstall -q ." \
|
atpull"zinit creinstall -q ." \
|
||||||
atload'
|
nocompile \
|
||||||
zstyle ":completion:*:*:git:*" script "$PWD/git-completion.bash"
|
for \
|
||||||
' \
|
has"bundle" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_bundle \
|
||||||
nocompile
|
has"conda" https://github.com/conda-incubator/conda-zsh-completion/raw/HEAD/_conda \
|
||||||
|
has"docker" https://github.com/docker/cli/raw/HEAD/contrib/completion/zsh/_docker \
|
||||||
|
has"golang" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_golang \
|
||||||
|
has"nano" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_nano \
|
||||||
|
has"node" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_node \
|
||||||
|
has"nvm" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_nvm \
|
||||||
|
has"psql" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_pgsql_utils \
|
||||||
|
has"rails" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_rails \
|
||||||
|
has"rbenv" https://github.com/rbenv/rbenv/raw/HEAD/completions/_rbenv \
|
||||||
|
has"redis-cli" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_redis-cli \
|
||||||
|
has"shellcheck" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_shellcheck \
|
||||||
|
has"vagrant" https://github.com/hashicorp/vagrant/raw/HEAD/contrib/zsh/_vagrant \
|
||||||
|
has"yarn" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_yarn \
|
||||||
|
has"git" mv"git-completion.zsh -> _git" https://github.com/git/git/raw/HEAD/contrib/completion/git-completion.zsh \
|
||||||
|
has"pyenv" mv"pyenv.zsh -> _pyenv" https://github.com/pyenv/pyenv/raw/HEAD/completions/pyenv.zsh \
|
||||||
|
if'[[ "$OSTYPE" = linux-gnu* ]]' has"fail2ban-client" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_fail2ban-client \
|
||||||
|
if'[[ "$OSTYPE" = linux-gnu* ]]' has"ufw" https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_ufw \
|
||||||
|
if'[[ "$OSTYPE" = darwin* ]]' has"security" https://github.com/ohmyzsh/ohmyzsh/raw/HEAD/plugins/macos/_security \
|
||||||
|
|
||||||
|
# generate other completions from externally installed programs
|
||||||
|
zinit wait lucid as"completion" \
|
||||||
|
atpull"zinit creinstall -q ." \
|
||||||
|
nocompile \
|
||||||
|
for \
|
||||||
|
has"doctl" id-as"_local/completions/doctl" atclone"doctl completion zsh > _doctl" zdharma-continuum/null \
|
||||||
|
has"fnm" id-as"_local/completions/fnm" atclone"fnm completions --shell zsh > _fnm" zdharma-continuum/null \
|
||||||
|
has"gh" id-as"_local/completions/gh" atclone"gh completion -s zsh > _gh" zdharma-continuum/null \
|
||||||
|
has"glab" id-as"_local/completions/glab" atclone"glab completion -s zsh > _glab" zdharma-continuum/null \
|
||||||
|
has"helm" id-as"_local/completions/helm" atclone"helm completion zsh > _helm" zdharma-continuum/null \
|
||||||
|
has"hugo" id-as"_local/completions/hugo" atclone"hugo completion zsh > _hugo" zdharma-continuum/null \
|
||||||
|
has"kubectl" id-as"_local/completions/kubectl" atclone"kubectl completion zsh > _kubectl" zdharma-continuum/null \
|
||||||
|
has"minikube" id-as"_local/completions/minikube" atclone"minikube completion zsh > _minikube" zdharma-continuum/null \
|
||||||
|
has"ng" id-as"_local/completions/ng" atclone"ng completion script > _ng" zdharma-continuum/null \
|
||||||
|
has"op" id-as"_local/completions/op" atclone"op completion zsh > _op" zdharma-continuum/null \
|
||||||
|
has"pip" id-as"_local/completions/pip" atclone"pip completion --zsh > pip" zdharma-continuum/null \
|
||||||
|
has"pnpm" id-as"_local/completions/pnpm" atclone"pnpm completion zsh > _pnpm" zdharma-continuum/null \
|
||||||
|
has"pscale" id-as"_local/completions/pscale" atclone"pscale completion zsh > _pscale" zdharma-continuum/null \
|
||||||
|
has"rustup" id-as"_local/completions/rustup" atclone"rustup completions zsh > _rustup" zdharma-continuum/null \
|
||||||
|
has"supabase" id-as"_local/completions/supabase" atclone"supabase completion zsh > _supabase" zdharma-continuum/null \
|
||||||
|
has"tailscale" id-as"_local/completions/tailscale" atclone"tailscale completion zsh > _tailscale" zdharma-continuum/null
|
||||||
|
|
||||||
|
# fix git-* completions, apparently there's some conflict with brew's git
|
||||||
|
# TODO: investigate more... https://github.com/Aloxaf/fzf-tab/wiki/Preview#git
|
||||||
|
zinit ice wait lucid as"null" \
|
||||||
|
atload'zstyle ":completion:*:*:git:*" script "$(pwd)/git-completion.bash"'
|
||||||
|
zinit snippet https://github.com/git/git/raw/HEAD/contrib/completion/git-completion.bash
|
||||||
|
|
||||||
|
# macOS-only completion fixes
|
||||||
|
zinit ice wait lucid as"null" \
|
||||||
|
id-as"_local/extra/mac" \
|
||||||
|
if'[[ "$OSTYPE" = darwin* ]]' \
|
||||||
|
atload"
|
||||||
|
zstyle ':completion:*:*:*:*:processes' command 'ps -o comm=\"\" -w -w'
|
||||||
|
zstyle ':fzf-tab:complete:(kill|ps):argument-rest' fzf-preview \
|
||||||
|
'[[ \$group == \"process ID\" ]] && ps -p\$word -o comm=\"\" -w -w'
|
||||||
|
"
|
||||||
zinit light zdharma-continuum/null
|
zinit light zdharma-continuum/null
|
||||||
|
|
||||||
# use zinit to track completions from non-zinit programs
|
# Linux-only completion fixes
|
||||||
zinit ice wait lucid blockf as"completions" \
|
zinit ice wait lucid as"null" \
|
||||||
id-as"local-completions" \
|
id-as"_local/extra/linux" \
|
||||||
dl"https://github.com/docker/cli/raw/HEAD/contrib/completion/zsh/_docker -> _docker" \
|
if'[[ "$OSTYPE" = linux-gnu* ]]' \
|
||||||
dl"https://github.com/docker/compose/raw/master/contrib/completion/zsh/_docker-compose -> _docker-compose" \
|
atload"
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_node -> _node" \
|
zstyle ':completion:*:*:*:*:processes' command 'ps -o cmd --no-headers -w -w'
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_yarn -> _yarn" \
|
zstyle ':fzf-tab:complete:(kill|ps):argument-rest' fzf-preview \
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_bundle -> _bundle" \
|
'[[ \$group == \"process ID\" ]] && ps --pid=\$word -o cmd --no-headers -w -w'
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_rails -> _rails" \
|
zstyle ':fzf-tab:complete:systemctl-*:*' fzf-preview 'SYSTEMD_COLORS=1 systemctl status \$word'
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_golang -> _golang" \
|
"
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_shellcheck -> _shellcheck" \
|
|
||||||
dl"https://github.com/zsh-users/zsh-completions/raw/HEAD/src/_httpie -> _httpie" \
|
|
||||||
dl"https://github.com/rbenv/rbenv/raw/HEAD/completions/rbenv.zsh -> _rbenv" \
|
|
||||||
dl"https://github.com/pyenv/pyenv/raw/HEAD/completions/pyenv.zsh -> _pyenv" \
|
|
||||||
atclone"
|
|
||||||
command -v volta &>/dev/null && volta completions zsh > _volta || true
|
|
||||||
command -v npm &>/dev/null && npm completion > _npm || true
|
|
||||||
command -v gh &>/dev/null && gh completion -s zsh > _gh || true
|
|
||||||
command -v op &>/dev/null && op completion zsh > _op || true
|
|
||||||
command -v hugo &>/dev/null && hugo completion zsh > _hugo || true
|
|
||||||
" \
|
|
||||||
atpull"zinit creinstall -q ." \
|
|
||||||
nocompile
|
|
||||||
zinit light zdharma-continuum/null
|
zinit light zdharma-continuum/null
|
||||||
|
|
||||||
# additional completions
|
# autopairing of quotes, brackets, etc.
|
||||||
# zinit ice wait lucid blockf as"completion" \
|
zinit ice wait"0b" lucid depth"1" \
|
||||||
# atpull"zinit creinstall -q ."
|
atload"ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(autopair-insert)"
|
||||||
# zinit light zsh-users/zsh-completions
|
zinit light hlissner/zsh-autopair
|
||||||
|
|
||||||
|
# syntax highlighting
|
||||||
|
zinit ice wait lucid depth"1" \
|
||||||
|
atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
|
||||||
|
atload"
|
||||||
|
zle_highlight+=('paste:reverse')
|
||||||
|
zstyle ':plugin:fast-syntax-highlighting' theme ''
|
||||||
|
typeset -gA FAST_HIGHLIGHT_STYLES
|
||||||
|
FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME:-}variable]='fg=cyan,bold'
|
||||||
|
"
|
||||||
|
zinit light zdharma-continuum/fast-syntax-highlighting
|
||||||
|
|
||||||
# autosuggestions, trigger precmd hook upon load
|
# autosuggestions, trigger precmd hook upon load
|
||||||
zinit ice wait lucid \
|
zinit ice wait"0a" lucid depth"1" \
|
||||||
|
atinit"
|
||||||
|
export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
|
||||||
|
export ZSH_AUTOSUGGEST_MANUAL_REBIND=1
|
||||||
|
export ZSH_AUTOSUGGEST_USE_ASYNC=1
|
||||||
|
" \
|
||||||
atload"_zsh_autosuggest_start"
|
atload"_zsh_autosuggest_start"
|
||||||
zinit light zsh-users/zsh-autosuggestions
|
zinit light zsh-users/zsh-autosuggestions
|
||||||
|
|
||||||
# syntax highlighting
|
|
||||||
zinit ice wait lucid \
|
|
||||||
atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay"
|
|
||||||
zinit light zsh-users/zsh-syntax-highlighting
|
|
||||||
|
|
||||||
# 1Password plugins: https://developer.1password.com/docs/cli/shell-plugins/
|
# 1Password plugins: https://developer.1password.com/docs/cli/shell-plugins/
|
||||||
zinit ice wait lucid \
|
# NOTE: this needs to happen *after* generating the completions above, otherwise it'll ask for touch ID to do very
|
||||||
id-as"op-plugins" \
|
# simple tasks...
|
||||||
|
zinit ice wait"1" lucid \
|
||||||
|
id-as"_local/op-auth" \
|
||||||
has"op" \
|
has"op" \
|
||||||
if"[[ -f ~/.config/op/plugins.sh ]]"
|
if"[[ -f ~/.config/op/plugins.sh ]]" \
|
||||||
|
nocompile
|
||||||
zinit snippet ~/.config/op/plugins.sh
|
zinit snippet ~/.config/op/plugins.sh
|
||||||
|
|
||||||
# oh-my-zsh leftovers
|
|
||||||
# https://github.com/ohmyzsh/ohmyzsh/tree/master/lib
|
|
||||||
zinit snippet OMZ::lib/clipboard.zsh
|
|
||||||
zinit snippet OMZ::lib/termsupport.zsh
|
|
||||||
|
|
||||||
# iTerm2 integration
|
# iTerm2 integration
|
||||||
# shellcheck disable=SC2016
|
zinit ice lucid depth"1" \
|
||||||
zinit ice lucid \
|
|
||||||
if'[[ "$TERM_PROGRAM" = "iTerm.app" ]]' \
|
if'[[ "$TERM_PROGRAM" = "iTerm.app" ]]' \
|
||||||
pick"shell_integration/zsh" \
|
atload'path=("$(pwd)/utilities" $path)' \
|
||||||
sbin"utilities/*"
|
src"shell_integration/zsh" \
|
||||||
|
nocompile
|
||||||
zinit light gnachman/iTerm2-shell-integration
|
zinit light gnachman/iTerm2-shell-integration
|
||||||
|
|
||||||
# starship prompt
|
# starship prompt
|
||||||
zinit ice from"gh-r" as"command" \
|
zinit ice from"gh-r" as"command" \
|
||||||
atclone"
|
atclone"
|
||||||
./starship init zsh --print-full-init > init.zsh
|
|
||||||
./starship completions zsh > _starship
|
./starship completions zsh > _starship
|
||||||
|
./starship init zsh --print-full-init > init.zsh
|
||||||
|
zcompile init.zsh
|
||||||
" \
|
" \
|
||||||
atpull"%atclone" \
|
atpull"%atclone" \
|
||||||
src"init.zsh"
|
src"init.zsh"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user