Update to new tmux conf. Support mac and arch

This commit is contained in:
tblyler 2020-05-25 13:36:22 -04:00
parent d01b65def7
commit 4586b9e676
12 changed files with 428 additions and 295 deletions

View file

@ -1,4 +0,0 @@
clear Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock

View file

@ -102,9 +102,6 @@ let g:go_metalinter_command = "golangci-lint"
" Lint Go on save
let g:go_metalinter_autosave = 1
" make sure errcheck is enabled for autosave
let g:go_metalinter_autosave_enabled = ['govet', 'golint', 'errcheck', 'deadcode', 'errcheck', 'gosimple', 'ineffassign', 'staticcheck', 'structcheck', 'typecheck', 'unused', 'varcheck']
" enable autocompletion for Go
call deoplete#custom#option('omni_patterns', { 'go': '[^. *\t]\.\w*' })

View file

@ -1,11 +0,0 @@
[client]
# Turn on the LOAD DATA INFILE statement
local-infile = on
# Another local infile alias.
# Use it if the previous one clashes with other MySQL tools.
loose-local-infile = on
# Configure the pager
pager = 'vim -'

View file

@ -1,121 +0,0 @@
# vi: ft=dosini
[main]
# Enables context sensitive auto-completion. If this is disabled the all
# possible completions will be listed.
smart_completion = True
# Multi-line mode allows breaking up the sql statements into multiple lines. If
# this is set to True, then the end of the statements must have a semi-colon.
# If this is set to False then sql statements can't be split into multiple
# lines. End of line (return) is considered as the end of the statement.
multi_line = False
# Destructive warning mode will alert you before executing a sql statement
# that may cause harm to the database such as "drop table", "drop database"
# or "shutdown".
destructive_warning = True
# log_file location.
log_file = ~/.mycli.log
# Default log level. Possible values: "CRITICAL", "ERROR", "WARNING", "INFO"
# and "DEBUG". "NONE" disables logging.
log_level = INFO
# Log every query and its results to a file. Enable this by uncommenting the
# line below.
# audit_log = ~/.mycli-audit.log
# Timing of sql statments and table rendering.
timing = True
# Table format. Possible values: ascii, double, github,
# psql, plain, simple, grid, fancy_grid, pipe, orgtbl, rst, mediawiki, html,
# latex, latex_booktabs, textile, moinmoin, jira, vertical, tsv, csv.
# Recommended: ascii
table_format = ascii
# Syntax coloring style. Possible values (many support the "-dark" suffix):
# manni, igor, xcode, vim, autumn, vs, rrt, native, perldoc, borland, tango, emacs,
# friendly, monokai, paraiso, colorful, murphy, bw, pastie, paraiso, trac, default,
# fruity.
# Screenshots at http://mycli.net/syntax
syntax_style = default
# Keybindings: Possible values: emacs, vi.
# Emacs mode: Ctrl-A is home, Ctrl-E is end. All emacs keybindings are available in the REPL.
# When Vi mode is enabled you can use modal editing features offered by Vi in the REPL.
key_bindings = emacs
# Enabling this option will show the suggestions in a wider menu. Thus more items are suggested.
wider_completion_menu = False
# MySQL prompt
# \D - The full current date
# \d - Database name
# \h - Hostname of the server
# \m - Minutes of the current time
# \n - Newline
# \P - AM/PM
# \p - Port
# \R - The current time, in 24-hour military time (023)
# \r - The current time, standard 12-hour time (112)
# \s - Seconds of the current time
# \t - Product type (Percona, MySQL, MariaDB)
# \u - Username
prompt = '\t \u@\h:\d> '
prompt_continuation = '-> '
# Skip intro info on startup and outro info on exit
less_chatty = False
# Use alias from --login-path instead of host name in prompt
login_path_as_host = False
# Cause result sets to be displayed vertically if they are too wide for the current window,
# and using normal tabular format otherwise. (This applies to statements terminated by ; or \G.)
auto_vertical_output = True
# keyword casing preference. Possible values "lower", "upper", "auto"
keyword_casing = upper
# Custom colors for the completion menu, toolbar, etc.
[colors]
# Completion menus.
Token.Menu.Completions.Completion.Current = 'bg:#00aaaa #000000'
Token.Menu.Completions.Completion = 'bg:#008888 #ffffff'
Token.Menu.Completions.MultiColumnMeta = 'bg:#aaffff #000000'
Token.Menu.Completions.ProgressButton = 'bg:#003333'
Token.Menu.Completions.ProgressBar = 'bg:#00aaaa'
# Query results
Token.Output.Header = 'bold'
Token.Output.OddRow = ''
Token.Output.EvenRow = ''
# Selected text.
Token.SelectedText = '#ffffff bg:#6666aa'
# Search matches. (reverse-i-search)
Token.SearchMatch = '#ffffff bg:#4444aa'
Token.SearchMatch.Current = '#ffffff bg:#44aa44'
# The bottom toolbar.
Token.Toolbar = 'bg:#222222 #aaaaaa'
Token.Toolbar.Off = 'bg:#222222 #888888'
Token.Toolbar.On = 'bg:#222222 #ffffff'
# Search/arg/system toolbars.
Token.Toolbar.Search = 'noinherit bold'
Token.Toolbar.Search.Text = 'nobold'
Token.Toolbar.System = 'noinherit bold'
Token.Toolbar.Arg = 'noinherit bold'
Token.Toolbar.Arg.Text = 'nobold'
# Favorite queries.
[favorite_queries]
# DNS to call by -d option
[alias_dsn]
# example_dsn = mysql://[user[:password]@][netloc][:port][/dbname]

View file

@ -1,41 +0,0 @@
set-window-option -g mode-keys vi
set -g default-terminal "screen-256color"
set -g base-index 1
set -g bell-action any
set -g visual-bell on
set -g history-limit 10000
set -g renumber-windows on
set -g allow-rename off
set -g escape-time 0
set -g message-bg default
set -g message-fg green
set -g pane-active-border-bg default
set -g pane-active-border-fg green
set -g pane-border-bg default
set -g pane-border-fg white
set -g status-bg default
set -g status-fg green
set -g status-position top
set -g window-status-bg default
set -g window-status-fg green
set -g window-status-current-bg default
set -g window-status-current-fg '#5B92E5'
set -g window-status-bell-bg red
set -g window-status-bell-fg green
# List of plugins
set -g @tpm_plugins '\
tmux-plugins/tmux-pain-control \
tmux-plugins/tmux-prefix-highlight \
tmux-plugins/tmux-sensible \
tmux-plugins/tmux-yank \
tmux-plugins/tpm \
tmux-plugins/vim-tmux-focus-events \
tmux-plugins/tmux-pain-control \
'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

296
home/.tmux.conf.local Normal file
View file

@ -0,0 +1,296 @@
# https://github.com/gpakosz/.tmux
# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license,
# without any warranty.
# Copyright 2012— Gregory Pakosz (@gpakosz).
# -- navigation ----------------------------------------------------------------
# if you're running tmux within iTerm2
# - and tmux is 1.9 or 1.9a
# - and iTerm2 is configured to let option key act as +Esc
# - and iTerm2 is configured to send [1;9A -> [1;9D for option + arrow keys
# then uncomment the following line to make Meta + arrow keys mapping work
#set -ga terminal-overrides "*:kUP3=\e[1;9A,*:kDN3=\e[1;9B,*:kRIT3=\e[1;9C,*:kLFT3=\e[1;9D"
# -- windows & pane creation ---------------------------------------------------
# new window retains current path, possible values are:
# - true
# - false (default)
tmux_conf_new_window_retain_current_path=false
# new pane retains current path, possible values are:
# - true (default)
# - false
tmux_conf_new_pane_retain_current_path=true
# new pane tries to reconnect ssh sessions (experimental), possible values are:
# - true
# - false (default)
tmux_conf_new_pane_reconnect_ssh=false
# prompt for session name when creating a new session, possible values are:
# - true
# - false (default)
tmux_conf_new_session_prompt=false
# -- display -------------------------------------------------------------------
# RGB 24-bit colour support (tmux >= 2.2), possible values are:
# - true
# - false (default)
tmux_conf_theme_24b_colour=true
# window style
tmux_conf_theme_window_fg='default'
tmux_conf_theme_window_bg='default'
# highlight focused pane (tmux >= 2.1), possible values are:
# - true
# - false (default)
tmux_conf_theme_highlight_focused_pane=false
# focused pane colours:
tmux_conf_theme_focused_pane_fg='default'
tmux_conf_theme_focused_pane_bg='#0087d7' # light blue
# pane border style, possible values are:
# - thin (default)
# - fat
tmux_conf_theme_pane_border_style=thin
# pane borders colours:
tmux_conf_theme_pane_border='#444444' # gray
tmux_conf_theme_pane_active_border='#00afff' # light blue
# pane indicator colours
tmux_conf_theme_pane_indicator='#00afff' # light blue
tmux_conf_theme_pane_active_indicator='#00afff' # light blue
# status line style
tmux_conf_theme_message_fg='#000000' # black
tmux_conf_theme_message_bg='#ffff00' # yellow
tmux_conf_theme_message_attr='bold'
# status line command style (<prefix> : Escape)
tmux_conf_theme_message_command_fg='#ffff00' # yellow
tmux_conf_theme_message_command_bg='#000000' # black
tmux_conf_theme_message_command_attr='bold'
# window modes style
tmux_conf_theme_mode_fg='#000000' # black
tmux_conf_theme_mode_bg='#ffff00' # yellow
tmux_conf_theme_mode_attr='bold'
# status line style
tmux_conf_theme_status_fg='#8a8a8a' # light gray
tmux_conf_theme_status_bg='#080808' # dark gray
tmux_conf_theme_status_attr='none'
# terminal title
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_terminal_title='#h ❐ #S ● #I #W'
# window status style
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_window_status_fg='#8a8a8a' # light gray
tmux_conf_theme_window_status_bg='#080808' # dark gray
tmux_conf_theme_window_status_attr='none'
tmux_conf_theme_window_status_format='#I #W'
#tmux_conf_theme_window_status_format='#{circled_window_index} #W'
#tmux_conf_theme_window_status_format='#I #W#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}'
# window current status style
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_window_status_current_fg='#000000' # black
tmux_conf_theme_window_status_current_bg='#00afff' # light blue
tmux_conf_theme_window_status_current_attr='bold'
tmux_conf_theme_window_status_current_format='#I #W'
#tmux_conf_theme_window_status_current_format='#{circled_window_index} #W'
#tmux_conf_theme_window_status_current_format='#I #W#{?window_zoomed_flag,🔍,}'
# window activity status style
tmux_conf_theme_window_status_activity_fg='default'
tmux_conf_theme_window_status_activity_bg='default'
tmux_conf_theme_window_status_activity_attr='underscore'
# window bell status style
tmux_conf_theme_window_status_bell_fg='#ffff00' # yellow
tmux_conf_theme_window_status_bell_bg='default'
tmux_conf_theme_window_status_bell_attr='blink,bold'
# window last status style
tmux_conf_theme_window_status_last_fg='#00afff' # light blue
tmux_conf_theme_window_status_last_bg='default'
tmux_conf_theme_window_status_last_attr='none'
# status left/right sections separators
tmux_conf_theme_left_separator_main=''
tmux_conf_theme_left_separator_sub='|'
tmux_conf_theme_right_separator_main=''
tmux_conf_theme_right_separator_sub='|'
#tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline
#tmux_conf_theme_left_separator_sub='\uE0B1' # you only need fonts patched with
#tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone
#tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
# status left/right content:
# - separate main sections with '|'
# - separate subsections with ','
# - built-in variables are:
# - #{battery_bar}
# - #{battery_hbar}
# - #{battery_percentage}
# - #{battery_status}
# - #{battery_vbar}
# - #{circled_session_name}
# - #{hostname_ssh}
# - #{hostname}
# - #{loadavg}
# - #{pairing}
# - #{prefix}
# - #{root}
# - #{synchronized}
# - #{uptime_y}
# - #{uptime_d} (modulo 365 when #{uptime_y} is used)
# - #{uptime_h}
# - #{uptime_m}
# - #{uptime_s}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_status_left=' ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} '
tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #{?battery_status, #{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} '
# status left style
tmux_conf_theme_status_left_fg='#000000,#e4e4e4,#e4e4e4' # black, white , white
tmux_conf_theme_status_left_bg='#ffff00,#ff00af,#00afff' # yellow, pink, white blue
tmux_conf_theme_status_left_attr='bold,none,none'
# status right style
tmux_conf_theme_status_right_fg='#8a8a8a,#e4e4e4,#000000' # light gray, white, black
tmux_conf_theme_status_right_bg='#080808,#d70000,#e4e4e4' # dark gray, red, white
tmux_conf_theme_status_right_attr='none,none,bold'
# pairing indicator
tmux_conf_theme_pairing='👓 ' # U+1F453
tmux_conf_theme_pairing_fg='none'
tmux_conf_theme_pairing_bg='none'
tmux_conf_theme_pairing_attr='none'
# prefix indicator
tmux_conf_theme_prefix='⌨ ' # U+2328
tmux_conf_theme_prefix_fg='none'
tmux_conf_theme_prefix_bg='none'
tmux_conf_theme_prefix_attr='none'
# root indicator
tmux_conf_theme_root='!'
tmux_conf_theme_root_fg='none'
tmux_conf_theme_root_bg='none'
tmux_conf_theme_root_attr='bold,blink'
# synchronized indicator
tmux_conf_theme_synchronized='🔒' # U+1F512
tmux_conf_theme_synchronized_fg='none'
tmux_conf_theme_synchronized_bg='none'
tmux_conf_theme_synchronized_attr='none'
# battery bar symbols
tmux_conf_battery_bar_symbol_full='◼'
tmux_conf_battery_bar_symbol_empty='◻'
#tmux_conf_battery_bar_symbol_full='♥'
#tmux_conf_battery_bar_symbol_empty='·'
# battery bar length (in number of symbols), possible values are:
# - auto
# - a number, e.g. 5
tmux_conf_battery_bar_length='auto'
# battery bar palette, possible values are:
# - gradient (default)
# - heat
# - 'colour_full_fg,colour_empty_fg,colour_bg'
tmux_conf_battery_bar_palette='gradient'
#tmux_conf_battery_bar_palette='#d70000,#e4e4e4,#000000' # red, white, black
# battery hbar palette, possible values are:
# - gradient (default)
# - heat
# - 'colour_low,colour_half,colour_full'
tmux_conf_battery_hbar_palette='gradient'
#tmux_conf_battery_hbar_palette='#d70000,#ff5f00,#5fff00' # red, orange, green
# battery vbar palette, possible values are:
# - gradient (default)
# - heat
# - 'colour_low,colour_half,colour_full'
tmux_conf_battery_vbar_palette='gradient'
#tmux_conf_battery_vbar_palette='#d70000,#ff5f00,#5fff00' # red, orange, green
# symbols used to indicate whether battery is charging or discharging
#tmux_conf_battery_status_charging='↑' # U+2191
#tmux_conf_battery_status_discharging='↓' # U+2193
#tmux_conf_battery_status_charging='⚡ ' # U+26A1
tmux_conf_battery_status_charging='🔌 ' # U+1F50C
tmux_conf_battery_status_discharging='🔋 ' # U+1F50B
# clock style (when you hit <prefix> + t)
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right
tmux_conf_theme_clock_colour='#00afff' # light blue
tmux_conf_theme_clock_style='24'
# -- clipboard -----------------------------------------------------------------
# in copy mode, copying selection also copies to the OS clipboard
# - true
# - false (default)
# on macOS, this requires installing reattach-to-user-namespace, see README.md
# on Linux, this requires xsel or xclip
tmux_conf_copy_to_os_clipboard=false
# -- user customizations -------------------------------------------------------
# this is the place to override or undo settings
# increase history size
set -g history-limit 100000
# start with mouse mode enabled
#set -g mouse on
# force Vi mode
# really you should export VISUAL or EDITOR environment variable, see manual
#set -g status-keys vi
#set -g mode-keys vi
# replace C-b by C-a instead of using both prefixes
set -gu prefix2
unbind C-a
# unbind C-b
# set -g prefix C-a
# bind C-a send-prefix
# move status line to top
set -g status-position top

View file

@ -1,4 +1,7 @@
export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${PATH}"
if [ -d "${HOME}/bin" ]; then
export PATH="${HOME}/bin:${PATH}"
fi
# oh-my-zsh {
export ZSH="${HOME}/.oh-my-zsh"
@ -8,7 +11,39 @@ HYPHEN_INSENSITIVE="true"
export UPDATE_ZSH_DAYS=7
DISABLE_UPDATE_PROMPT="true"
HIST_STAMPS="mm/dd/yyyy"
plugins=(battery catimg docker fzf git go golang grunt helm kube-ps1 kubectl minikube node npm pip ssh-agent sudo tmux)
plugins=(
autojump
battery
brew
catimg
common-aliases
copydir
copyfile
docker
encode64
fzf
git
git-extras
go
golang
grunt
helm
kube-ps1
kubectl
minikube
node
npm
osx
pip
pod
ssh-agent
sudo
tmux
xcode
zsh-autosuggestions
zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
# }
@ -45,7 +80,7 @@ fi
export VISUAL="${EDITOR}"
# use reflink cp if supported (yay CoW)
if cp --help | grep -q reflink; then
if 2>&1 cp --help | grep -q reflink; then
alias cp='cp -i --reflink=auto'
else
alias cp='cp -i'
@ -59,11 +94,6 @@ alias kns='kubens'
REPOS="${HOME}/repos"
PHPCS_BIN="${REPOS}/phpcs/scripts"
if [ -d "${PHPCS_BIN}" ]; then
export PATH="${PHPCS_BIN}:${PATH}"
fi
CARGO_ENV="${HOME}/.cargo/env"
if [ -f "${CARGO_ENV}" ]; then
source "${CARGO_ENV}"
@ -109,13 +139,13 @@ export GOAPPS=(
'github.com/google/huproxy/huproxyclient'
'github.com/jedisct1/piknik'
'github.com/junegunn/fzf'
'github.com/schachmat/wego'
'github.com/tomnomnom/gron'
'github.com/wallix/awless'
'google.golang.org/grpc'
)
export GO111MODULE=on
case `uname` in
case "$(uname)" in
"Darwin")
pdf_join() {
join_py="/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py"
@ -126,21 +156,9 @@ case `uname` in
if command -v gtar &> /dev/null; then
alias tar='gtar'
fi
export VISUAL='nvim'
#archey -c
;;
"Linux")
#screenfetch
alias open="xdg-open"
# swap escape and caps lock keys if gnome
if command -v dconf &> /dev/null; then
if ! dconf read /org/gnome/desktop/input-sources/xkb-options | grep -q 'caps:swapescape'; then
dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:swapescape']"
fi
fi
;;
esac
# }

View file

@ -1,7 +1,4 @@
#!/bin/bash
export GOROOT="${HOME}/.goroot"
export PATH="${GOROOT}/bin:${PATH}"
if command -v go &> /dev/null; then
GOPATH="$(go env GOPATH)"
if [ -n "${GOPATH}" ]; then
@ -9,5 +6,5 @@ if command -v go &> /dev/null; then
export PATH="${GOPATH}/bin:${PATH}"
fi
else
>&2 echo '"go" is missing from the PATH, you should run "install.sh"'
>&2 echo '"go" is missing from the PATH'
fi

View file

@ -4,19 +4,23 @@
# if the GOAPPS environment variable is set, it is expected to be
# an array
update_go_apps() {
local APPS=("${@}")
(
cd || exit $?
if [ -z "${APPS[0]}" ]; then
if [ -z "${GOAPPS}" ]; then
return
local APPS=("${@}")
if [ -z "${APPS[0]}" ]; then
if [ -z "${GOAPPS}" ]; then
exit 0
fi
APPS=("${GOAPPS[@]}")
fi
APPS=("${GOAPPS[@]}")
fi
local APP
for APP in "${APPS[@]}"; do
echo "Updating ${APP}"
go get -u "${APP}" || return $?
done
local APP
for APP in "${APPS[@]}"; do
echo "Updating ${APP}"
go get -u "${APP}" || exit $?
done
) || return $?
}

View file

@ -1,13 +1,33 @@
#!/bin/bash
upgrade_system() {
if command -v apt &> /dev/null; then
sudo sh -c 'apt update && apt upgrade' || return $?
fi
case "$(uname | tr '[:upper:]' '[:lower:]')" in
'darwin')
if command -v brew &> /dev/null; then
brew update || return $?
brew upgrade || return $?
fi
;;
if command -v dnf &> /dev/null; then
sudo dnf upgrade || return $?
fi
'linux')
# Debian/Ubuntu
if command -v apt &> /dev/null; then
sudo sh -c 'apt update && apt upgrade' || return $?
fi
# Fedora
if command -v dnf &> /dev/null; then
sudo dnf upgrade || return $?
fi
# Arch
if command -v yay &> /dev/null; then
yay -Syu || return $?
elif command -v pacman &> /dev/null; then
sudo pacman -Syu || return $?
fi
;;
esac
if command -v update_go_apps &> /dev/null; then
update_go_apps || return $?
@ -19,17 +39,29 @@ upgrade_system() {
fi
(
cd "${HOME}/.tmux/plugins/tpm" || exit 0
if [ -x ./clean_plugins ]; then
./clean_plugins || exit $?
fi
set -e
if [ -x ./install_plugins ]; then
./install_plugins || exit $?
fi
cd "${ZSH}/custom/plugins"
if [ -x ./update_plugins ]; then
./update_plugins all || exit $?
for FILE in *; do
if ! [ -d "${FILE}" ]; then
continue
fi
(
cd "${FILE}"
[ -d .git ] || exit 0
git pull
)
done
) || return $?
(
set -e
cd "${HOME}/.tmux"
git pull
if [ -n "${TMUX}" ]; then
tmux source-file "${HOME}/.tmux.conf"
fi
) || return $?
}

View file

@ -1,17 +0,0 @@
#!/bin/bash
weather() {
if ! command -v wego &> /dev/null; then
return 1
fi
local -r LOCK_DATE="/tmp/wego-$(date '+%F-%H')"
if [ -e "${LOCK_DATE}" ]; then
return 0
fi
touch "${LOCK_DATE}"
wego
}
weather

View file

@ -1,4 +1,6 @@
#!/bin/bash
readonly HOMESHICK_DIR="${HOME}/.homesick/repos/homeshick"
check_required_cmds() {
local -r REQUIRED_CMDS=(
'curl'
@ -23,7 +25,6 @@ check_required_cmds() {
}
install_homeshick() {
local -r HOMESHICK_DIR="${HOME}/.homesick/repos/homeshick"
if [ -d "${HOMESHICK_DIR}" ]; then
echo 'homeshick is already installed'
return
@ -41,63 +42,45 @@ install_ohmyzsh() {
/bin/bash -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
}
install_tpm() {
local -r TPM="${HOME}/.tmux/plugins/tpm"
if [ -d "${TPM}" ]; then
echo 'tpm is already installed'
return
fi
install_custom_ohmyzsh_plugins() {
local REPOS=(
https://github.com/zsh-users/zsh-autosuggestions
)
git clone https://github.com/tmux-plugins/tpm "${TPM}"
local REPO
for REPO in ${REPOS[*]}; do
git clone \
"${REPO}" \
"${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" || exit $?
done
}
install_go() {
local -r GO_VERSION='1.13.5'
local -r GO_SHA256='512103d7ad296467814a6e3f635631bd35574cab3369a97a323c9a585ccaa569'
source "./home/.zshrc.d/00_go.sh"
if command -v go &> /dev/null; then
echo 'go is already installed'
install_tmux_conf() {
if [ -d "${HOME}/.tmux" ]; then
echo '.tmux already exists'
return
fi
echo 'Installing Go 1.13.5, ensure that this is the version you want'
local -r GO_TAR_FILE="$(mktemp)"
if ! [ -f "${GO_TAR_FILE}" ]; then
>&2 echo 'failed to create a file for the go tar'
return 1
fi
if ! curl -L "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" |
tee "${GO_TAR_FILE}" |
sha256sum |
grep -Fq "${GO_SHA256}"; then
>&2 echo 'failed to download go tar'
return 2
fi
mkdir -p "${GOROOT}" || return $?
(
cd "${GOROOT}" || exit $?
tar -xzf "${GO_TAR_FILE}" || exit $?
mv go/* ./ || exit $?
rmdir go || exit $?
) || return $?
rm "${GO_TAR_FILE}" || true
set -e
cd
git clone https://github.com/gpakosz/.tmux.git
)
}
check_required_cmds || exit $?
echo 'installing homeshick'
install_homeshick
echo 'installing go'
install_go || exit $?
echo 'installing tpm'
install_tpm || exit $?
install_homeshick || exit $?
echo 'installing oh-my-zsh'
install_ohmyzsh || exit $?
echo 'installing custom ohmyzsh plugins'
install_custom_ohmyzsh_plugins || exit $?
echo 'installing tmux config'
install_tmux_conf || exit $?
source "${HOMESHICK_DIR}/homeshick.sh"
homeshick clone https://github.com/tblyler/tb-dotfiles
echo 'now in zsh, run "upgrade_system"'