-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathshell.env
More file actions
131 lines (110 loc) · 3.59 KB
/
shell.env
File metadata and controls
131 lines (110 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Gemini CLI
source $HOME/.config/gemini.env
#################
#### ALIASES ####
#################
# General
alias nf='neofetch'
alias ff='fastfetch'
alias uf='uwufetch'
# CLI Utility
alias ls='eza --color=always --group-directories-first --icons'
alias ll='eza -l --color=always --group-directories-first --icons --git --time-style=long-iso'
alias la='eza -a --color=always --group-directories-first --icons'
alias l='eza -lah --color=always --group-directories-first --icons --git --time-style=long-iso'
alias lt='eza -aT --color=always --group-directories-first --icons'
alias l.='eza -a | grep -E "^\."' # Show only dotfiles
alias q='exit'
alias h='history'
alias c='clear'
alias reload='source ~/.config/shell.env'
# Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
# Git
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gcl='git clone'
alias gl='git log --oneline'
alias gd='git diff'
alias gpush='git push'
alias gpull='git pull'
# System
alias wifi='nmtui'
alias install='yay -S'
alias update='yay -Syu'
alias search='yay -Ss'
alias lsearch='yay -Qs'
alias remove='yay -Rns'
alias update-grub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
alias backup='sudo timeshift --create --comments "archbtw-backup-$(date +%Y%m%d)"'
alias shutdown='systemctl poweroff'
alias du='dust'
###############################
#### Environment Variables ####
###############################
export SHELL_CONFIG_DIR="$HOME/.config"
# Development paths
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
export CARGO_HOME="$HOME/.cargo"
export PATH="$CARGO_HOME/bin:$PATH"
# NVM - Lazy-loaded for faster shell startup
export NVM_DIR="$HOME/.nvm"
# Android cmdline tools & Flutter SDK
export ANDROID_HOME="$HOME/Android"
export ANDROID_SDK_ROOT="$ANDROID_HOME/sdk"
export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH"
export PATH="$ANDROID_SDK_ROOT/platform-tools:$PATH"
export FLUTTER_HOME="$ANDROID_HOME/flutter"
export PATH="$FLUTTER_HOME/bin:$PATH"
export CHROME_EXECUTABLE="/usr/bin/google-chrome-stable"
##########################
#### CUSTOM FUNCTIONS ####
##########################
# Utility
mkcd() {
mkdir -p "$1" && cd "$1"
}
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# Lazy Loading NVM (for faster shell startup)
# Centralized list of commands to be lazy-loaded.
_lazy_nvm_commands=("nvm" "node" "npm" "npx" "pnpm" "ng" "gemini" "tailwind" "vsce")
# Lazy-loader function for NVM
lazy_load_nvm() {
unset -f lazy_load_nvm
for cmd in "${_lazy_nvm_commands[@]}"; do
unset -f "$cmd" 2>/dev/null # Use 2>/dev/null to suppress errors if function doesn't exist
done
unset _lazy_nvm_commands
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
"$@"
}
# Dynamically create a lazy-loading function for each command in the list.
for cmd in "${_lazy_nvm_commands[@]}"; do
eval "$cmd() { lazy_load_nvm \"$cmd\" \"\$@\"; }"
done
unset cmd