dotfiles/.bashrc
Andrei Jiroh Halili ab3e569190
chore(bash): update shellrc files as usual
Signed-off-by: Andrei Jiroh Halili <ajhalili2006@andreijiroh.xyz>
2024-07-07 17:46:25 +08:00

80 lines
3.1 KiB
Bash

#!/usr/bin/env bash
# This is my meta bashrc file, with oh-my-posh instead of zsh-specific
# oh-my-zsh, although I still use zsh as my default shell. Sorry for a
# lot of personal commentary and links hellscape here, it's there for
# in-code docs and for future me to not dig through 'git log' hell.
# SPDX-License-Identifier: MIT AND MPL-2.0
## Stage 0: Init keychain + GPG_TTY for pinentry hellscapes in TUI. ##
## This stage also initalizes oh-my-posh or custom
## PSI here. ##
if [[ $TERMUX ]]; then
export SSH_AGENT_=todo
elif command -v keychain >> /dev/null; then
# shellcheck disable=SC2155
export KEYCHAIN_PATH=$(command -v keychain)
eval $(keychain --agents gpg,ssh --eval)
fi
# shellcheck disable=SC2155
export GPG_TTY=$(tty)
# how about detecting local configs
if [ -f "$HOME/.config/localconfig.env" ]; then
. "$HOME/.config/localconfig.env"
fi
if command -v oh-my-posh >>/dev/null && [[ $FF_USE_OHMYPOSH != "false" ]]; then
eval "$(oh-my-posh init bash)"
else
if [[ $PROMPT_THEME == "disabled" ]]; then
true
elif [[ -f "$HOME/.config/bash/shell-prompts/${PROMPT_THEME}.bashrc" ]]; then
# shellcheck disable=SC1090
source "$HOME/.config/bash/shell-prompts/${PROMPT_THEME}.bashrc"
else
source "$HOME/.config/bash/shell-prompts/vern.bashrc"
fi
fi
## Stage 1: Init custom vars and shortcuts before anything else ##
## Note that ~/.env and ~/.env.local should be loaded eariler on ##
# Dotfiles stuff, maybe should be on ~/.env?
#export DOTFILES_HOME="$HOME/.dotfiles"
export DOTFILES_BIN="$DOTFILES_HOME/bin"
# gopath should be on ~/.local/share/go to not fuck up with local install
# at ~/go if exists
export GOPATH="$HOME/.local/share/go"
# Shut up, VS Code (not the OSS distributions off github:microsoft/vscode).
# Don't let me pay for JetBrains IDEs or go nuts with nvim (or emacs, since
# I'm both a bit neutral and off the rails at Vim vs Emacs debate). Also RIP
# to my first editor after Notepad that started my web dev + Linux journey,
# Atom (https://github.com/atom).
export EDITOR=nano
# Context: https://git.sr.ht/~sircmpwn/dotfiles/tree/master/item/.profile#L13-15
# and https://drewdevault.com/2021/08/06/goproxy-breaks-go.html
export GOPROXY=direct GOSUMDB=off
# nix profile install nixpkgs#glibcLocale
export LOCALE_ARCHIVE="$HOME/.nix-profile/lib/locale/locale-archive"
## Stage 2: Source literally everything else ##
if [[ -d "$HOME/.bashbox" ]]; then
# shellcheck disable=SC1091
source "$HOME/.bashbox/env"
fi
# Formerly: handle hostname generation for importing host-specific configs
# TODO: Handle detection across distributions without chaos, especially where
# Nix is installed (not NixOS)
if [[ $WSL_DISTRO_NAME ]] && [[ $WSL_INTEROP ]]; then
HOSTNAME_BASH="$(cat /etc/hostname)-wsl-${WSL_DISTRO_NAME}"
export WSL=1 # similar to CODESPACES and GITPOD_WORKSPACE_ID vars
else
HOSTNAME_BASH="$(cat /etc/hostname)"
fi
export HOSTNAME_BASH
for file in "$HOME/.config/bash/hosts/${HOSTNAME_BASH}.bashrc" "${HOME}/.config/bash/bashrc"; do
# shellcheck disable=SC1090
[ -f "$file" ] && . "$file"
done