bootstrap-scripts/scripts/zsh-setup.sh

101 lines
3.4 KiB
Bash

#!/usr/bin/env bash
## Setup ZSH and ohmyzsh theme
# cd ~/
USRDIR=$(echo ~)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
# echo y|sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sed -i'' -e 's@ZSH_THEME="robbyrussell"@ZSH_THEME="pygmalion"@' $USRDIR/.zshrc
## Just install sentry DSN server info here.
function ae_sentry() {
# https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3
echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3' >> $USRDIR/.zshrc
}
## DigitalOcean's API for obtaining server metadata.
function digitalocean() {
echo 'export PUBLIC_IPV4=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address)' >> $USRDIR/.zshrc
echo 'export PUBLIC_IPV6=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/address)' >> $USRDIR/.zshrc
}
## Add anything for OVH here.
function ovh() {
echo Nothing to see here at the moment.
}
## Choose which DC provider sepecifics need installed.
case $1 in
digitalocean )
digitalocean
;;
ovh )
ovh
;;
none )
echo Nothing special going to be done here.
;;
* )
echo zsh-setup.sh options are:
echo zsh-setup.sh ovh
echo zsh-setup.sh digitalocean
echo zsh-setup.sh none
;;
esac
case $2 in
ae-sentry )
ae_sentry
;;
my-sentry )
echo "buy a server for this you poor old sodd"
;;
none )
echo You have elected to not add a Sentry server.
;;
* )
echo No sentry option chosen however one must be chosen. The options are:
echo "zsh-setup.sh hosting-provider ae-sentry"
echo "zsh-setup.sh hosting-provider my-sentry"
echo "zsh-setup.sh hosting-provider none"
;;
esac
## Docker build fast
export DOCKER_BUILDKIT=1 # or configure in daemon.json
export COMPOSE_DOCKER_CLI_BUILD=1
## Install Plugins
## Auto Suggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
## Syntax Highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
## History Substring search.
git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
## ZSH Command Execution Time
git clone https://github.com/popstas/zsh-command-time.git ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/command-time
## Configure plugins and envvars.
cat <<EOF >> ~/.zshrc
# If command execution time above min. time, plugins will not output time.
ZSH_COMMAND_TIME_MIN_SECONDS=3
# Message to display (set to "" for disable).
ZSH_COMMAND_TIME_MSG="Execution time: %s"
# Message color.
ZSH_COMMAND_TIME_COLOR="cyan"
# Exclude some commands
ZSH_COMMAND_TIME_EXCLUDE=(vim mcedit nano ctop ssh)
EOF
## Enable plugins
sed -i'' -e 's@plugins=(git)@plugins=(git cp colored-man-pages docker docker-compose extract iterm2 python rsync safe-paste transfer ubuntu zsh-navigation-tools zsh-autosuggestions zsh-syntax-highlighting zsh-history-substring-search command-time universalarchive)@' $USRDIR/.zshrc
## Cleanup
sed -i'' -e 's@bash $USRDIR/zsh-setup.sh@@' $USRDIR/.profile
#rm -f $USRDIR/zsh-setup.sh
echo "Relog into terminal finished bootstrapping server"
chsh -s $(which zsh)
zsh
source $USRDIR/.zshrc