nix

configuration files that power my machines
Log | Files | Refs | README | LICENSE

prompt-functions (1586B)


      1 # vim: ft=sh
      2 _SNOWFLAKE=$(printf '\342\235\204')
      3 _C_RESET=$(tput sgr0)
      4 _C_1=$(tput setaf 1)
      5 _C_2=$(tput setaf 7)
      6 _C_3=$(tput setaf 244)
      7 _C_4=$(tput setaf 2)
      8 _C_6=$(tput setaf 6)
      9 
     10 colour_part() {
     11 	colour_val=''
     12 	msg="$2"
     13 	delim="${3- }"
     14 	[ "$msg" ] || return 1
     15 	case $1 in
     16 	1) colour_val=$_C_1 ;;
     17 	2) colour_val=$_C_2 ;;
     18 	3) colour_val=$_C_3 ;;
     19 	4) colour_val=$_C_4 ;;
     20 	6) colour_val=$_C_6 ;;
     21 	esac
     22 	if [ "$BASH" ]; then
     23 		printf '%s ' "$msg"
     24 	elif [ "$ZSH_VERSION" ]; then
     25 		printf '%%{%s%%}%s%%{%s%%}'"${delim}" "$colour_val" "$msg" "$_C_RESET"
     26 	fi
     27 }
     28 
     29 _virt_prompt() {
     30 	if [ "$_VIRT" ]; then
     31 		:
     32 	elif [ "${JUNEST_ENV:-0}" -eq 1 ]; then
     33 		_VIRT=junest
     34 	else
     35 		_VIRT=$(systemd-detect-virt 2>/dev/null)
     36 		[ "$_VIRT" = none ] && unset _VIRT
     37 	fi
     38 	colour_part 6 "$_VIRT"
     39 }
     40 
     41 _hostname_prompt() {
     42 	[ "$SSH_CLIENT" ] || return
     43 	if ! [ "$_HOSTNAME" ]; then
     44 		_HOSTNAME=$(hostname)
     45 		_HOSTNAME="${_HOSTNAME%%.*}"
     46 	fi
     47 	colour_part 3 "$_HOSTNAME"
     48 }
     49 
     50 _devshell_prompt() {
     51 	[ "$IN_NIX_SHELL" ] || [ "$DEVSHELL_ROOT" ] || return
     52 	colour_part 6 " $_SNOWFLAKE"
     53 }
     54 
     55 _user_prompt() {
     56 	if ! [ "${_USER+x}" ]; then
     57 		user=$(id -un)
     58 		case $user in
     59 		miro) _USER='' ;;
     60 		*) _USER=$user ;;
     61 		esac
     62 	fi
     63 	colour_part 3 "${_USER:+"$_USER@"}" ''
     64 }
     65 
     66 _pwd_prompt() {
     67 	[ "$PWD" = "$HOME" ] && return
     68 	colour_part 4 "${PWD##*/}"
     69 }
     70 
     71 _get_ps1() {
     72 	if [ "$ZSH_VERSION" ]; then
     73 		prompt_ender="%(?:%%:%{${_C_1}%}%%%{${_C_RESET}%})"
     74 	else
     75 		prompt_ender=%
     76 	fi
     77 	printf '%s%s%s%s%s%s ' \
     78 		"$(_devshell_prompt)" \
     79 		"$(_user_prompt)" \
     80 		"$(_hostname_prompt)" \
     81 		"$(_pwd_prompt)" \
     82 		"$(_virt_prompt)" \
     83 		"$prompt_ender"
     84 }