#!/bin/bash set -eux ## Requires kal-script ## ## More shell configurations (prompt, functions) ## mkdir -p /etc/prompt cat < /etc/prompt/prompt.1.rc PROMPT_COMMAND="" parse_git_branch() { ref=\$(git symbolic-ref HEAD 2> /dev/null) || return echo -en ' (\033[0;32m'\${ref#refs/heads/}'\033[0m)' } export PS1="\[\033[0;37m\][\[\033[1;30m\]\u\[\033[0;37m\]@\[\033[1;30m\]\H\[\033[0;37m\]]-[\[\033[1;34m\]\w\[\033[0;37m\]]\\\$(parse_git_branch)\n\[\033[1;37m\]\\$ \[\033[0;37m\]" EOF protect_pre_install() { local filename="$1" if [ -f "$filename".pre-install ]; then cp "$filename".pre-install "$filename" else if ! [ -e "$filename" ]; then touch "$filename" fi cp "$filename" "$filename".pre-install fi } protect_pre_install "/root/.bashrc" if ! type -p fzf; then ## Required to get fzf case $(lsb_release -is) in Debian) case $(lsb_release -rs) in 9|9.*) backports_list="/etc/apt/sources.list.d/backports.list" protect_pre_install /etc/apt/sources.list.d/backports.list echo "deb http://archive.debian.org/debian stretch-backports main" > \ "$backports_list" ## Update only this repo: apt-get update -o Dir::Etc::sourcelist="sources.list.d/backports.list" \ -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" ;; esac ;; esac apt-get install fzf > /root/.bashrc ## History management export HISTCONTROL=ignoreboth export HISTSIZE=500000 export HISTIGNORE="&:[bf]g:exit:ls:history" export HISTFILESIZE= export HISTTIMEFORMAT="%Y-%m-%d %T " shopt -s histappend ## Prompt easy management prompt() { prompt_name="prompt.\$1.rc" for i in /etc/prompt ~/.prompt; do [ -f "\$i/\$prompt_name" ] && . "\$i/\$prompt_name" done } ## Git log command function glog() { git log --graph --pretty=tformat:%C\(yellow\ normal\)%h%Creset\ %C\(blue\ normal\)%an%Creset\ %s\ %Cgreen%d%Creset -n 20 "\$@" } prompt 1 PROMPT_COMMAND='history -a' ## after prompt setting as it resets it ## ## fzf (apt-get install fzf) and fd (apt-get install fd-find) ## if [ -e /usr/share/doc/fzf/examples/key-bindings.bash ]; then . /usr/share/doc/fzf/examples/key-bindings.bash fi if [ -e /usr/share/doc/fzf/examples/completion.bash ]; then . /usr/share/doc/fzf/examples/completion.bash fi #export FZF_DEFAULT_OPTS="--color 'fg:#bbccdd,fg+:#ddeeff,bg:#111820,preview-bg:#223344,border:#778899'" export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' export FZF_CTRL_T_COMMAND="\$FZF_DEFAULT_COMMAND" EOF protect_pre_install "/root/.bash_profile" cat <> /root/.bash_profile ## XXXvlab: ## http://stackoverflow.com/questions/9652126/bashrc-profile-is-not-loaded-on-new-tmux-session-or-window-why ## Including ``.bashrc`` if it exists (tmux don't load bashrc, and bashrc ## don't load profile... so not recursive call) if [ -f ~/.bashrc ]; then . ~/.bashrc fi EOF protect_pre_install /root/.vimrc cat <> /root/.vimrc syntax on filetype plugin indent on "Get the 2-space YAML as the default when hit carriage return after the colon autocmd FileType yaml,yml setlocal ts=2 sts=2 sw=2 expandtab indentkeys= set is hlsearch ai ic scs nnoremap :nohls EOF