dotfiles2/base/.mkshrc
2024-05-10 17:07:23 -07:00

220 lines
5.2 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# (mk)shrc
if [ -f /etc/shrc ]; then
. /etc/shrc
elif [ -f /opt/shrc ]; then
. /opt/shrc
fi
export EDITOR=nvim
export KANIDM_URL="https://idm.qalico.net"
export KANIDM_USER="$USER"
# opt out of .NET telemetry
export DOTNET_CLI_TELEMETRY_OPTOUT=true
## Extra paths
# Python packages go here
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
# Homebrew (macOS)
if [ -d "/opt/homebrew" ] ; then
PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/sbin:/usr/sbin:$PATH"
HOMEBREW_CASK_OPTS="--appdir=~/Applications"
PATH="/opt/homebrew/opt/ruby/bin:$PATH"
export HOMEBREW_CASK_OPTS
# x86 brew hack
if [ -d "$HOME/.x86_64/homebrew" ] ; then
brew86() {
PATH="$HOME/.x86_64/homebrew/bin:$PATH" arch -x86_64 $HOME/.x86_64/homebrew/bin/brew "$@"
}
fi
fi
if [ -f "$HOME/.cargo/env" ] ; then
PATH="$HOME/.cargo/bin:$PATH"
fi
# Flutter
if [ -d "$HOME/.opt/flutter" ] ; then
PATH="$HOME/.opt/flutter/bin:$PATH"
fi
# Perl local lib
if [ -d "$HOME/perl5/lib/perl5" ] ; then
eval $(perl -I ~/perl5/lib/perl5 -Mlocal::lib)
fi
# Android SDK (for VMs)
if [ -d "$HOME/Library/Android/sdk" ] ; then
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/platform-tools:$PATH"
fi
export PATH
# Force 256color term for screen
if [ "$TERM" = "screen" ] ; then
TERM="screen-256color"
export TERM
fi
export LANG=en_US.UTF-8
export LC_ALL=
## Ripped from a custom /etc/shrc, not very useful here
if [ -z "$UID" ] ; then
UID="$(id -u)"
fi
BRL="["
BRR=""
if [ -n "$BASH_VERSION" ] ; then
BRL="\\[\\\\033["
BRR="\\]"
fi
if [ "$UID" -eq "0" ] ; then
PROMPT="#"
USER_COLOR="${BRL}31m${BRR}"
else
PROMPT="$"
USER_COLOR="${BRL}96m${BRR}"
fi
getrv() {
# HACK: Since the if statement in get_ps1 will clobber the old
# return value, KSH passes a cached version of the old val along
# so we can use it here.
rv=${1:-$?}
if [ "$rv" -ne "0" -a "$rv" -ne "130" ] ; then
printf "${BRL}33m${BRR}%d${BRL}0m${BRR} » " "$rv"
fi
}
get_ps1() {
# Bash uses a static version of this, so we have to make a couple
# changes for post-processing
rv=$?
if [ -n "$BASH_VERSION" ] ; then
printf '$(getrv)'
else
getrv $rv
fi
if [ -n "$SSH_TTY" ] ; then
printf "${BRL}32m${BRR}SSH » "
fi
if _branch="$(git branch --show-current 2>/dev/null)" ; then
[ -z "${_branch}" ] && _branch="$(git rev-parse --short HEAD 2>/dev/null)"
printf "${BRL}97m${BRR}%s » " "${_branch}"
unset _branch
fi
printf "${USER_COLOR}${HOST%%.*} ${BRL}39m${BRR}";
if [ -n "$BASH_VERSION" ] ; then
printf "\w"
elif [[ "${PWD#$HOME}" != "$PWD" ]] ; then
printf "~${PWD#$HOME}"
else
printf "$PWD"
fi
printf "${USER_COLOR} \n${BRL}0m${BRR}${PROMPT} "
}
case "$-" in *i*)
# interactive mode settings go here
if /bin/test -z "${HOST}"; then
HOST="$(hostname)"
fi
PS1='$(get_ps1)'
set -o emacs
# This file is used by shells that might not support
# set -o tabcomplete, so check before trying to use it.
( set -o tabcomplete 2>/dev/null ) && set -o tabcomplete
if command -v xclip >/dev/null ; then
alias ctop='xclip -selection clipboard -out | xclip -selection primary -in'
alias ptoc='xclip -selection primary -out | xclip -selection primary -in'
fi
alias define='dict'
if command -v nvim >/dev/null ; then
alias vim='nvim'
fi
# Hack to bubble up profile, see bin/tmux-shim
alias tmux="$HOME/bin/tmux-shim"
# Alias dotfiles
alias dotfiles='git --git-dir=$HOME/.dotfiles.git/ --work-tree=$HOME'
# Set bash PS1
if [ -n "$BASH_VERSION" ] ; then
PS1="$(get_ps1)"
export PS1
elif [ "${KSH_VERSION:-notksh}" != "notksh" ] ; then
[[ "${KSH_VERSION}" == *"MIRBSD KSH"* ]] && bind '^L=clear-screen'
else
hn="$(hostname)"
PS1='${hn}:${PWD} \$ '
fi
# Tiny helper functions
calc()
{
echo "$@" | bc
}
## Bitwarden auto-unlock
if command -v bw >/dev/null ; then
if ! command -v jq >/dev/null ; then
cat <<EOF
** NOTE: jq isn't installed, default bw will be used
EOF
else
bw() {
status="$(command bw status | jq -r .status)"
if [ "$status" != "unlocked" ] ; then
export BW_SESSION="$(command bw unlock --raw)"
[ -z "$BW_SESSION" ] && return 1
fi
command bw "$@"
}
fi
fi
influx() {
real_influx="$(whereis -q influx)"
if [ -n "$real_influx" ] ; then
if [ -z "$INFLUX_TOKEN" ] && command -v bw >/dev/null ; then
export INFLUX_TOKEN="$(bw get password influx_token)"
fi
"$real_influx" "$@"
else
echo "influx not installed; not continuing"
fi
}
nconv()
{
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
echo "usage: nconv [from-base] [to-base] [num]" >&2
return 1
fi
echo "obase=$2; ibase=$1; $3" | bc
}
;;
esac