From 629a2d17b7ebcb8720fe34a5fd2ba29ce388dded Mon Sep 17 00:00:00 2001 From: Mykyta Solomko Date: Tue, 19 Feb 2019 17:21:19 +0000 Subject: [PATCH] Updated nix-profile.sh --- files/nix-profile.sh | 276 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 259 insertions(+), 17 deletions(-) diff --git a/files/nix-profile.sh b/files/nix-profile.sh index 1f37d30..ae4dca1 100644 --- a/files/nix-profile.sh +++ b/files/nix-profile.sh @@ -1,31 +1,135 @@ +#!/usr/bin/env bash +__COL_RST='\033[00m' +__COL_RED='\033[01;31m' +__COL_GRN='\033[01;32m' +__COL_YLW='\033[01;33m' +__COL_BLU='\033[01;34m' -if [ "$(whoami 2>/dev/null)" == 'root' ]; then - export PS1='\[\033[01;31m\]\h\[\033[01;34m\] \w \$\[\033[00m\] ' -else - export PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' -fi +__ROOT_PS1="\[${__COL_RED}\]\h\[${__COL_BLU}\] \w #\[${__COL_RST}\] " +__USER_PS1="\[${__COL_GRN}\]\u@\h\[${__COL_BLU}\] \w \$\[${__COL_RST}\] " +__ROOT_PS2="\[${__COL_YLW}\]|\[${__COL_RST}\] " +__USER_PS2="\[${__COL_YLW}\]|\[${__COL_RST}\] " + +__which_first_found() +{ + local ___entry='' + + if [ ${#} -ne 0 ]; then + for e in "${@}"; do + ___entry=$(command -v "${e}" 2>/dev/null) + + if [ -n "${___entry}" ]; then + echo "${___entry}" + break + fi + done + fi +} + +__export_ps() +{ + if [ "${USER}" == 'root' ]; then + export PS1="${__ROOT_PS1}" + export PS2="${__ROOT_PS2}" + else + export PS1="${__USER_PS1}" + export PS2="${__USER_PS2}" + export SUDO_PS1="${__ROOT_PS1}" + export SUDO_PS2="${__ROOT_PS2}" + fi +} + +__export_pager() +{ + local ___pager='' + + # User-defined + if [ -n "${1}" ]; then + ___pager=$(command -v "${1}") + + # Guess + else + ___pager="$(__which_first_found 'less' 'most' 'more' 'cat')" + fi + + # Export existing pager + if [ -n "${___pager}" ]; then + export PAGER="${___pager}" + + export LESS='-r' + # Add colours for less + export LESS_TERMCAP_mb=$'\E[01;31m' + export LESS_TERMCAP_md=$'\E[01;31m' + export LESS_TERMCAP_me=$'\E[0m' + export LESS_TERMCAP_se=$'\E[0m' + export LESS_TERMCAP_so=$'\E[01;44;33m' + export LESS_TERMCAP_ue=$'\E[0m' + export LESS_TERMCAP_us=$'\E[01;32m' + fi +} + +__export_editor() +{ + local ___editor='' + + # User-defined + if [ -n "${1}" ]; then + ___editor=$(command -v "${1}") + + # Guess + else + ___editor="$(__which_first_found 'vim' 'emacs' 'nano' 'ee' 'vi')" + fi + + # Export existing editor + if [ -n "${___editor}" ]; then + export EDITOR="${___editor}" + fi +} + +__export_browser() +{ + local ___browser='' + + # User-defined + if [ -n "${1}" ]; then + ___browser=$(command -v "${1}") + + # Guess + else + ___browser="$(__which_first_found 'firefox' 'midori' 'lynx')" + fi + + # Export existing browser + if [ -n "${___browser}" ]; then + export BROWSER="${___browser}" + fi +} -export PAGER=/usr/bin/most -export EDITOR=/usr/bin/vim -export BROWSER=/usr/bin/firefox -export MAKEOPTS='-j 3' -export HISTCONTROL=ignoreboth:erasedups -# --- Start SSH agent --- # +# --- SSH agent --- # agent() { - case ${1} in + local __agent_env='' + case "${1}" in 'start') if [ -z "${SSH_AUTH_SOCK}" ] ; then - eval `ssh-agent -s` - ssh-add + if __agent_env="$(ssh-agent -s 2>/dev/null)" \ + && [ -n "${__agent_env}" ]; then + eval $(echo "${__agent_env}" | tee "${HOME}/.ssh/.agent") + ssh-add + fi fi ;; 'stop') - kill -TERM ${SSH_AGENT_PID} &> /dev/null + kill -TERM "${SSH_AGENT_PID}" &> /dev/null + rm "${HOME}/.ssh/.agent" 2> /dev/null + unset SSH_AUTH_SOCK SSH_AGENT_PID ;; 'term') killall -s TERM ssh-agent + rm "${HOME}/.ssh/.agent" 2> /dev/null + unset SSH_AUTH_SOCK SSH_AGENT_PID ;; 'restart') agent stop @@ -34,13 +138,149 @@ agent() 'status') ssh-add -l ;; + 'add') + if [ -r "${2}" ]; then + ssh-add "${2}" + else + echo "Can't read file ${2}" 1>&2 + return 1 + fi + ;; + *) + echo "Usage:" 1>&2 + echo " agent {start|stop|term|restart|status|add }" 1>&2 + return 1 + ;; + esac +} + +# --- MyIP resolver --- # +_myip_ip4() +{ + echo -en "${__COL_BLU}IPv4:${__COL_RST} " + curl -4 --no-keepalive \ + --silent \ + --connect-timeout "3" \ + --get "${1}" 2>/dev/null \ + || echo -e "${__COL_RED}Unable to determine${__COL_RST}" 1>&2 +} + +_myip_ip6() +{ + echo -en "${__COL_BLU}IPv6:${__COL_RST} " + curl -6 --no-keepalive \ + --silent \ + --connect-timeout "3" \ + --get "${1}" 2>/dev/null \ + || echo -e "${__COL_RED}Unable to determine${__COL_RST}" 1>&2 +} + +myip() +{ + local _myip_url='https://myip.nix.org.ua' + case "${1}" in + 4|v4|-4|-v4) _myip_ip4 "${_myip_url}" ;; + 6|v6|-6|-v6) _myip_ip6 "${_myip_url}" ;; + help) + echo 'Usage:' + echo ' myip ' + echo '' + echo 'Options:' + echo ' 4|v4|-4|-v4 - resolve only IPv4 address' + echo ' 6|v6|-6|-v6 - resolve only IPv6 address' + echo ' help - show help' + ;; + *) + _myip_ip4 "${_myip_url}" + _myip_ip6 "${_myip_url}" + ;; esac + + return 0 +} + +# Handy function to extract files +# +# Copied from http://ricecows.org/configs/bash/.bashrc +ex() +{ + if [ -r "${1}" ]; then + case "${1}" in + *.tgz | *.tar.gz) tar xzvf "${1}" ;; + *.tbz2 | *.tar.bz2) tar xjvf "${1}" ;; + *.txz | *.tar.xz) tar xJvf "${1}" ;; + *.gz) gunzip "${1}" ;; + *.bz2) bunzip2 "${1}" ;; + *.xz) unxz "${1}" ;; + *.Z) uncompress "${1}" ;; + *.7z) 7z x "${1}" ;; + *.zip) unzip "${1}" ;; + *.rar) unrar x "${1}" ;; + *.rpm) + local __dir="${1%%.rpm}" + mkdir "${__dir}" + cd "${__dir}" || return + rpm2cpio "../${1}" | cpio -vid + cd - || return + unset __dir + ;; + *.deb) + local __dir="${1%%.deb}" + mkdir "${__dir}" + ar xv "${1}" + tar -C "${__dir}" -xvf data.tar.?z* + unset __dir + ;; + *) echo "${1} is not supported" 1>&2 ;; + esac + else + echo "Missing archive" 1>&2 + fi } +################# +# Shell options # +################# + +# Re-check window size after each command +shopt -s checkwinsize + +# Append to history file +shopt -s histappend + +################################ +# Actual exporting starts here # +################################ + +# Add local directories to PATH +export PATH="${HOME}/.local/bin:${HOME}/bin:${PATH}" + +# Remove duplicates form .bash_history +export HISTCONTROL=ignoreboth:erasedups + +__export_ps +__export_pager +__export_editor +__export_browser + +if [[ -f "${HOME}/.bash_aliases" ]]; then + source "${HOME}/.bash_aliases" +fi + +if [[ -f "${HOME}/.environment" ]]; then + source "${HOME}/.environment" +fi + +# ssh-agent +if [[ -r "${HOME}/.ssh/.agent" ]]; then + source "${HOME}/.ssh/.agent" > /dev/null +fi + + alias 'x'='clear' alias 'su+'='sudo -Ei' -alias 'll'="ls $LS_OPTIONS -hl" -alias 'la'="ls $LS_OPTIONS -hla" +alias 'll'="ls ${LS_OPTIONS} -hl" +alias 'la'="ls ${LS_OPTIONS} -hla" alias 'rm'='rm --preserve-root -v -I' alias 'chown'='chown --preserve-root -v' alias 'chmod'='chmod --preserve-root -v' @@ -51,4 +291,6 @@ alias 'mv'='mv -v' alias 'emacs'='emacs -nw' alias '..'='cd ..' alias 'fucking'='sudo' +alias 'weather'='curl http://wttr.in/Kyiv?lang=uk' 2> /dev/null +alias 'KILL'='killall -s KILL' -- 2.17.6