# My personal ZSH plugin with custom aliases and functions. # It might not be very useful to you. # **** zsh options **** set -o shwordsplit setopt HIST_IGNORE_SPACE # **** am i macos? **** #if [ "$(uname)" == "Darwin" ]; then #else #fi # **** variables **** if $(command -v helix > /dev/null); then export EDITOR=helix elif $(command -v hx > /dev/null); then export EDITOR=hx else export EDITOR=vim fi export VISUAL=$EDITOR if [[ $LANG = '' ]]; then export LANG=en_US.UTF-8 fi # **** aliases **** alias c="clear" alias s="ssh" alias m="mosh --family=prefer-inet6" alias g="git" alias zz='source $HOME/.zshrc' alias vz='$EDITOR $HOME/.zshrc && source $HOME/.zshrc' alias vp='$EDITOR $ZPREZTODIR/contrib/david/zsh-david.plugin.zsh && source $ZPREZTODIR/contrib/*/*.zsh' alias {v,vi,vim,e}='$EDITOR' alias vv='$EDITOR $HOME/.vimrc' alias vh="sudo $EDITOR /etc/hosts; echo hosts updated" alias vs="$EDITOR ~/.ssh/config" alias serve="python2 -m SimpleHTTPServer" alias push="git push origin main" alias pull="git pull origin main" alias commit="git commit -a" #alias aec="sshuttle -vvr 90.146.8.233 192.168.6.0/24 90.146.8.0/26 10.9.0.0/26 10.12.0.0/16 10.2.0.0/26 192.168.3.0/24 10.12.4.0/22 192.168.42.0/24" #alias home="sshuttle -vvr stargazer.socialnerds.org:2222 10.1.0.0/16" #alias dmz="sshuttle -vvr 90.146.8.9 90.146.8.0/26" alias cleardnscache="sudo killall -HUP mDNSResponder; sudo dscacheutil -flushcache; say DNS cache has been cleared" alias vc="code -n ." alias {systemctl,sc}='sudo systemctl' alias {journalctl,jc}='sudo journalctl' alias {myip,myip4}="curl http://4.ifconfig.pro" alias myip6="curl http://6.ifconfig.pro" alias wg='sudo wg' alias {p,pacman}='sudo pacman' alias {pu,pacu}='sudo pacman -Syu --noconfirm' alias {pi,paci}='sudo pacman -S --noconfirm' alias {a,apt}="sudo apt" alias {ai,apti}="sudo apt install" alias {au,aptu}="sudo apt update" alias {u,ufw}="sudo ufw" alias dc="docker compose" alias d="docker" alias {vanity,vanity-address}="docker run --rm -it socialnerds/wg-vanity-address:latest --in 5" # Multipass alias mp="multipass" alias {phobos,pho}="multipass shell phobos" # **** function definitions **** ## output handling log() { case $1 in "error") level="\033[31m✗\033[0m" ;; "warn") level="\033[33m!\033[0m" ;; "debug") level="\033[2md\033[0m" ;; "success") level="\033[32m✓\033[0m" ;; "info") level="i" ;; *) level="\033[31mLoglevel unknown. Programming error? ($1)\033[0m" ;; esac sleep 0.5; echo -e "[$level] ${@:2}" } ## Update systems packages update() { bold=$(tput bold) normal=$(tput sgr0) if [ "$(uname)" = "Darwin" ]; then log info "macOS detected. Using ${bold}brew${normal} to update packages." brew update && brew upgrade if [ $? -eq 0 ]; then log success "All packages up-to-date." else log error "Something went wrong while running brew." fi else #if not Darwin then its probably Linux systems="ubuntu arch raspbian antergos elementary manjaro" issue="$(cat /etc/issue)" for item in $systems; do echo $issue | grep -i $item >> /dev/null if [ $? -eq 0 ]; then system=$item fi done case $system in ubuntu|debian|raspbian|elementary) log info "Debian based system detected. Using ${bold}apt${normal} to update packages." sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y if [ $? -eq 0 ]; then log success "All packages up-to-date." else log error "Something went wrong while running ${bold}apt${normal}." fi ;; arch|antergos|manjaro) log info "Arch Linux detected. Using ${bold}pacman${normal} to update packages." sudo pacman -Syu --noconfirm if [ $? -eq 0 ]; then log success "All packages up-to-date." else log error "Something went wrong while running ${bold}pacman${normal}." fi ;; ?) log error "Unknown system. Aborting." return 1 ;; esac if [ $? -ne 0 ]; then echo "error: something went wrong." return 1 fi fi } ## update authorized_keys update-keys() { local SSH_PATH="$HOME/.ssh" local SSH_KEYS="$SSH_PATH/authorized_keys" local KEYS_URL="https://public.socialnerds.org/ssh/$USER.pub" if [ ! -d $SSH_PATH ]; then mkdir -p $SSH_PATH log warn "Created new config folder [$SSH_PATH]" fi chmod 700 $SSH_PATH log info "Downloading updated authorized_keys file. [$SSH_KEYS]" curl -s -u "$USER" -o "$SSH_KEYS" "$KEYS_URL" if [ $? -eq 0 ]; then chmod 600 $SSH_KEYS log success "Successfully updated authorized_keys file. [$SSH_KEYS]" else log error "Something went wrong while updating authorized_keys file. [$SSH_KEYS]" fi }