Last active 2 weeks ago

Cross-platform Zsh setup scripts and managed dotfiles with Oh My Zsh framework, Starship prompt, aliases, functions, and path configuration.

weehong revised this gist 1 month ago. Go to revision

1 file changed, 1 insertion, 1 deletion

zshrc

@@ -40,7 +40,7 @@ SPACESHIP_DOCKER_CONTEXT_SHOW=false
40 40
41 41 if [[ $(uname) == "Darwin" ]]; then
42 42 #  is the Apple logo in Nerd Fonts
43 - SPACESHIP_USER_SUFFIX="%F{cyan} [  ]%f "
43 + SPACESHIP_USER_SUFFIX="%F{cyan} [  ]%f "
44 44 elif [[ $(uname) == "Linux" ]]; then
45 45 #  is the Ubuntu logo in Nerd Fonts
46 46 SPACESHIP_USER_SUFFIX="%F{yellow} [  ]%f "

weehong revised this gist 1 month ago. Go to revision

1 file changed, 5 insertions, 1 deletion

sourcerc

@@ -35,10 +35,14 @@ fi
35 35 # =============================================================================
36 36 # GOOGLE CLOUD SDK
37 37 # =============================================================================
38 - if [[ -f "$HOME/google-cloud-sdk/path.zsh.inc" && -r "$HOME/google-cloud-sdk/path.zsh.inc" ]]; then
38 + if [[ -f "$HOME/google-cloud-sdk/path.zsh.inc" ]]; then
39 39 source "$HOME/google-cloud-sdk/path.zsh.inc"
40 40 fi
41 41
42 + if [[ -f "$HOME/google-cloud-sdk/completion.zsh.inc" ]]; then
43 + source "$HOME/google-cloud-sdk/completion.zsh.inc"
44 + fi
45 +
42 46 # =============================================================================
43 47 # NVM (Node Version Manager)
44 48 # =============================================================================

weehong revised this gist 1 month ago. Go to revision

1 file changed, 2 insertions, 2 deletions

zshrc

@@ -40,10 +40,10 @@ SPACESHIP_DOCKER_CONTEXT_SHOW=false
40 40
41 41 if [[ $(uname) == "Darwin" ]]; then
42 42 #  is the Apple logo in Nerd Fonts
43 - SPACESHIP_USER_SUFFIX="%F{cyan} [  ]%f "
43 + SPACESHIP_USER_SUFFIX="%F{cyan} [  ]%f "
44 44 elif [[ $(uname) == "Linux" ]]; then
45 45 #  is the Ubuntu logo in Nerd Fonts
46 - SPACESHIP_USER_SUFFIX="%F{yellow} [  ]%f "
46 + SPACESHIP_USER_SUFFIX="%F{yellow} [  ]%f "
47 47 else
48 48 SPACESHIP_USER_SUFFIX=" "
49 49 fi

weehong revised this gist 1 month ago. Go to revision

1 file changed, 5 insertions, 1 deletion

pathrc

@@ -17,7 +17,11 @@ append_path "$DOTNET_ROOT"
17 17 append_path "$DOTNET_ROOT/tools"
18 18 append_path "$HOME/.opencode/bin"
19 19 append_path "$HOME/Flutter/bin"
20 - append_path "/Applications/Espanso.app/Contents/MacOS"
20 +
21 + # macOS specific paths
22 + if [[ "$OSTYPE" == "darwin"* ]]; then
23 + append_path "/Applications/Espanso.app/Contents/MacOS"
24 + fi
21 25
22 26 # Finalize PATH
23 27 export PATH

weehong revised this gist 1 month ago. Go to revision

1 file changed, 2 insertions, 2 deletions

zshrc

@@ -40,10 +40,10 @@ SPACESHIP_DOCKER_CONTEXT_SHOW=false
40 40
41 41 if [[ $(uname) == "Darwin" ]]; then
42 42 #  is the Apple logo in Nerd Fonts
43 - SPACESHIP_USER_SUFFIX="%F{cyan} [ macOS]%f "
43 + SPACESHIP_USER_SUFFIX="%F{cyan} [  ]%f "
44 44 elif [[ $(uname) == "Linux" ]]; then
45 45 #  is the Ubuntu logo in Nerd Fonts
46 - SPACESHIP_USER_SUFFIX="%F{yellow} [ Ubuntu]%f "
46 + SPACESHIP_USER_SUFFIX="%F{yellow} [  ]%f "
47 47 else
48 48 SPACESHIP_USER_SUFFIX=" "
49 49 fi

weehong revised this gist 1 month ago. Go to revision

1 file changed, 6 insertions, 7 deletions

pathrc

@@ -12,13 +12,12 @@ export DOTNET_ROOT="$HOME/.dotnet"
12 12
13 13 # 3. PATH INITIALIZATION
14 14 # -----------------------------------------------------------------------------
15 - append_path \
16 - "$HOME/.local/bin" \
17 - "$DOTNET_ROOT" \
18 - "$DOTNET_ROOT/tools" \
19 - "$HOME/.opencode/bin" \
20 - "$HOME/Flutter/bin" \
21 - "/Applications/Espanso.app/Contents/MacOS"
15 + append_path "$HOME/.local/bin"
16 + append_path "$DOTNET_ROOT"
17 + append_path "$DOTNET_ROOT/tools"
18 + append_path "$HOME/.opencode/bin"
19 + append_path "$HOME/Flutter/bin"
20 + append_path "/Applications/Espanso.app/Contents/MacOS"
22 21
23 22 # Finalize PATH
24 23 export PATH

weehong revised this gist 1 month ago. Go to revision

1 file changed, 46 insertions, 39 deletions

sourcerc

@@ -1,41 +1,48 @@
1 - # =============================================================================
2 - # FILE: ~/.sourcerc
3 - # Description: Initializes third-party package managers and Oh My Zsh.
4 - # =============================================================================
5 -
6 - # Source the custom environment setup file if it exists and is not empty
7 - if [[ -f "$HOME/.local/bin/env" && -r "$HOME/.local/bin/env" ]]; then
8 - source "$HOME/.local/bin/env"
9 - fi
10 -
11 - # Source the SDKMAN initialization script if it exists and is not empty
12 - if [[ -f "$HOME/.sdkman/bin/sdkman-init.sh" && -r "$HOME/.sdkman/bin/sdkman-init.sh" ]]; then
13 - source "$HOME/.sdkman/bin/sdkman-init.sh"
14 - fi
15 -
16 - # Source the NVM initialization script if it exists and is not empty
17 - if [[ -f "$HOME/.nvm/nvm.sh" && -r "$HOME/.nvm/nvm.sh" ]]; then
18 - source "$HOME/.nvm/nvm.sh"
19 - fi
20 -
21 - # ==========================================
22 - # CLAUDE CODE / AI GATEWAY
23 - # ==========================================
24 - export ANTHROPIC_BASE_URL="https://gateway.ai.cloudflare.com/v1/9a71825e3842e918e0dff9ad84f50484/claude-code-gateway/anthropic"
25 -
26 - # ==========================================
27 - # OH MY ZSH
28 - # ==========================================
29 - if [[ -f "$HOME/.oh-my-zsh/oh-my-zsh.sh" && -r "$HOME/.oh-my-zsh/oh-my-zsh.sh" ]]; then
30 - source "$HOME/.oh-my-zsh/oh-my-zsh.sh"
31 - else
32 - echo "Warning: Oh My Zsh not found or is empty."
33 - fi
34 -
35 - # ==========================================
36 - # NVM (Node Version Manager)
37 - # ==========================================
1 + # =============================================================================
2 + # FILE: ~/.sourcerc
3 + # Description: Initializes third-party package managers and Oh My Zsh.
4 + # =============================================================================
5 +
6 + # Source the custom environment setup file if it exists and is not empty
7 + if [[ -f "$HOME/.local/bin/env" && -r "$HOME/.local/bin/env" ]]; then
8 + source "$HOME/.local/bin/env"
9 + fi
10 +
11 + # Source the SDKMAN initialization script if it exists and is not empty
12 + if [[ -f "$HOME/.sdkman/bin/sdkman-init.sh" && -r "$HOME/.sdkman/bin/sdkman-init.sh" ]]; then
13 + source "$HOME/.sdkman/bin/sdkman-init.sh"
14 + fi
15 +
16 + # Source the NVM initialization script if it exists and is not empty
17 + if [[ -f "$HOME/.nvm/nvm.sh" && -r "$HOME/.nvm/nvm.sh" ]]; then
18 + source "$HOME/.nvm/nvm.sh"
19 + fi
20 +
21 + # =============================================================================
22 + # CLAUDE CODE / AI GATEWAY
23 + # =============================================================================
24 + export ANTHROPIC_BASE_URL="https://gateway.ai.cloudflare.com/v1/9a71825e3842e918e0dff9ad84f50484/claude-code-gateway/anthropic"
25 +
26 + # =============================================================================
27 + # OH MY ZSH
28 + # =============================================================================
29 + if [[ -f "$HOME/.oh-my-zsh/oh-my-zsh.sh" && -r "$HOME/.oh-my-zsh/oh-my-zsh.sh" ]]; then
30 + source "$HOME/.oh-my-zsh/oh-my-zsh.sh"
31 + else
32 + echo "Warning: Oh My Zsh not found or is empty."
33 + fi
34 +
35 + # =============================================================================
36 + # GOOGLE CLOUD SDK
37 + # =============================================================================
38 + if [[ -f "$HOME/google-cloud-sdk/path.zsh.inc" && -r "$HOME/google-cloud-sdk/path.zsh.inc" ]]; then
39 + source "$HOME/google-cloud-sdk/path.zsh.inc"
40 + fi
41 +
42 + # =============================================================================
43 + # NVM (Node Version Manager)
44 + # =============================================================================
38 45 export NVM_DIR="$HOME/.nvm"
39 -
40 - [[ -f "$NVM_DIR/nvm.sh" && -r "$NVM_DIR/nvm.sh" ]] && \. "$NVM_DIR/nvm.sh"
46 +
47 + [[ -f "$NVM_DIR/nvm.sh" && -r "$NVM_DIR/nvm.sh" ]] && \. "$NVM_DIR/nvm.sh"
41 48 [[ -f "$NVM_DIR/bash_completion" && -r "$NVM_DIR/bash_completion" ]] && \. "$NVM_DIR/bash_completion"

weehong revised this gist 1 month ago. Go to revision

3 files changed, 29 insertions, 18 deletions

pathrc

@@ -3,7 +3,7 @@
3 3 # =============================================================================
4 4
5 5 # 1. Source functions first
6 - if [ -f "$HOME/.func" ]; then
6 + if [[ -f "$HOME/.func" && -r "$HOME/.func" ]]; then
7 7 source "$HOME/.func"
8 8 fi
9 9
@@ -12,11 +12,13 @@ export DOTNET_ROOT="$HOME/.dotnet"
12 12
13 13 # 3. PATH INITIALIZATION
14 14 # -----------------------------------------------------------------------------
15 - append_path "$HOME/.local/bin"
16 - append_path "$DOTNET_ROOT"
17 - append_path "$DOTNET_ROOT/tools"
18 - append_path "$HOME/Flutter/bin"
19 - append_path "/Applications/Espanso.app/Contents/MacOS"
15 + append_path \
16 + "$HOME/.local/bin" \
17 + "$DOTNET_ROOT" \
18 + "$DOTNET_ROOT/tools" \
19 + "$HOME/.opencode/bin" \
20 + "$HOME/Flutter/bin" \
21 + "/Applications/Espanso.app/Contents/MacOS"
20 22
21 23 # Finalize PATH
22 24 export PATH

sourcerc

@@ -4,17 +4,17 @@
4 4 # =============================================================================
5 5
6 6 # Source the custom environment setup file if it exists and is not empty
7 - if [[ -s "$HOME/.local/bin/env" ]]; then
7 + if [[ -f "$HOME/.local/bin/env" && -r "$HOME/.local/bin/env" ]]; then
8 8 source "$HOME/.local/bin/env"
9 9 fi
10 10
11 11 # Source the SDKMAN initialization script if it exists and is not empty
12 - if [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]]; then
12 + if [[ -f "$HOME/.sdkman/bin/sdkman-init.sh" && -r "$HOME/.sdkman/bin/sdkman-init.sh" ]]; then
13 13 source "$HOME/.sdkman/bin/sdkman-init.sh"
14 14 fi
15 15
16 16 # Source the NVM initialization script if it exists and is not empty
17 - if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
17 + if [[ -f "$HOME/.nvm/nvm.sh" && -r "$HOME/.nvm/nvm.sh" ]]; then
18 18 source "$HOME/.nvm/nvm.sh"
19 19 fi
20 20
@@ -26,7 +26,7 @@ export ANTHROPIC_BASE_URL="https://gateway.ai.cloudflare.com/v1/9a71825e3842e918
26 26 # ==========================================
27 27 # OH MY ZSH
28 28 # ==========================================
29 - if [[ -s "$HOME/.oh-my-zsh/oh-my-zsh.sh" ]]; then
29 + if [[ -f "$HOME/.oh-my-zsh/oh-my-zsh.sh" && -r "$HOME/.oh-my-zsh/oh-my-zsh.sh" ]]; then
30 30 source "$HOME/.oh-my-zsh/oh-my-zsh.sh"
31 31 else
32 32 echo "Warning: Oh My Zsh not found or is empty."
@@ -35,6 +35,7 @@ fi
35 35 # ==========================================
36 36 # NVM (Node Version Manager)
37 37 # ==========================================
38 - export NVM_DIR="$HOME/.nvm"
39 - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
40 - [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
38 + export NVM_DIR="$HOME/.nvm"
39 +
40 + [[ -f "$NVM_DIR/nvm.sh" && -r "$NVM_DIR/nvm.sh" ]] && \. "$NVM_DIR/nvm.sh"
41 + [[ -f "$NVM_DIR/bash_completion" && -r "$NVM_DIR/bash_completion" ]] && \. "$NVM_DIR/bash_completion"

zshrc

@@ -2,6 +2,14 @@
2 2 # 1. ZSH THEME & PLUGINS (Must be defined before Oh My Zsh loads)
3 3 # =============================================================================
4 4 export ZSH="$HOME/.oh-my-zsh"
5 +
6 + source_if_readable() {
7 + local file="$1"
8 + if [[ -f "$file" && -r "$file" ]]; then
9 + source "$file"
10 + fi
11 + }
12 +
5 13 ZSH_THEME="spaceship"
6 14
7 15 SPACESHIP_PROMPT_ORDER=(
@@ -43,24 +51,24 @@ fi
43 51 plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
44 52
45 53 # Initialize Oh My Zsh (Crucial for themes and plugins to work)
46 - source $ZSH/oh-my-zsh.sh
54 + source_if_readable "$ZSH/oh-my-zsh.sh"
47 55
48 56 # =============================================================================
49 57 # 2. THIRD-PARTY INITIALIZATION (SDKMAN, NVM, Oh My Zsh)
50 58 # =============================================================================
51 - [[ -s "$HOME/.sourcerc" ]] && source "$HOME/.sourcerc"
59 + source_if_readable "$HOME/.sourcerc"
52 60
53 61 # =============================================================================
54 62 # 3. CUSTOM OVERRIDES (Functions must load before Path Management)
55 63 # =============================================================================
56 - [[ -s "$HOME/.func" ]] && source "$HOME/.func"
64 + source_if_readable "$HOME/.func"
57 65
58 66 # =============================================================================
59 67 # 4. PATH MANAGEMENT (Relies on append_path from .func)
60 68 # =============================================================================
61 - [[ -s "$HOME/.pathrc" ]] && source "$HOME/.pathrc"
69 + source_if_readable "$HOME/.pathrc"
62 70
63 71 # =============================================================================
64 72 # 5. ALIASES (Loaded dead last so YOUR code always wins over Oh My Zsh)
65 73 # =============================================================================
66 - [[ -s "$HOME/.alias" ]] && source "$HOME/.alias"
74 + source_if_readable "$HOME/.alias"

weehong revised this gist 1 month ago. Go to revision

1 file changed, 2 insertions, 2 deletions

zshrc

@@ -34,8 +34,8 @@ if [[ $(uname) == "Darwin" ]]; then
34 34 #  is the Apple logo in Nerd Fonts
35 35 SPACESHIP_USER_SUFFIX="%F{cyan} [ macOS]%f "
36 36 elif [[ $(uname) == "Linux" ]]; then
37 - #  is the Ubuntu logo in Nerd Fonts
38 - SPACESHIP_USER_SUFFIX="%F{yellow} [ Ubuntu]%f "
37 + #  is the Ubuntu logo in Nerd Fonts
38 + SPACESHIP_USER_SUFFIX="%F{yellow} [ Ubuntu]%f "
39 39 else
40 40 SPACESHIP_USER_SUFFIX=" "
41 41 fi

weehong revised this gist 1 month ago. Go to revision

1 file changed, 34 insertions, 2 deletions

zshrc

@@ -4,15 +4,47 @@
4 4 export ZSH="$HOME/.oh-my-zsh"
5 5 ZSH_THEME="spaceship"
6 6
7 - SPACESHIP_PROMPT_ORDER=( user dir git exec_time line_sep jobs exit_code char )
7 + SPACESHIP_PROMPT_ORDER=(
8 + time # Time stamps section
9 + user # Username section
10 + dir # Current directory section
11 + git # Git section (git_branch + git_status)
12 + node # Node.js section
13 + dotnet # .NET section
14 + java # Java section
15 + kotlin # Kotlin section
16 + ruby # Ruby section
17 + xcode # Xcode section
18 + swift # Swift section
19 + golang # Go section
20 + docker # Docker section
21 + venv # virtualenv section
22 + line_sep # Line break
23 + char # Prompt character
24 + )
25 +
8 26 SPACESHIP_USER_SHOW=always
9 27 SPACESHIP_PROMPT_SEPARATE_LINE=true
10 28 SPACESHIP_PROMPT_ADD_NEWLINE=true
11 29 SPACESHIP_CHAR_SYMBOL="❯"
12 30 SPACESHIP_CHAR_SUFFIX=" "
31 + SPACESHIP_DOCKER_CONTEXT_SHOW=false
32 +
33 + if [[ $(uname) == "Darwin" ]]; then
34 + #  is the Apple logo in Nerd Fonts
35 + SPACESHIP_USER_SUFFIX="%F{cyan} [ macOS]%f "
36 + elif [[ $(uname) == "Linux" ]]; then
37 + #  is the Ubuntu logo in Nerd Fonts
38 + SPACESHIP_USER_SUFFIX="%F{yellow} [ Ubuntu]%f "
39 + else
40 + SPACESHIP_USER_SUFFIX=" "
41 + fi
13 42
14 43 plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
15 44
45 + # Initialize Oh My Zsh (Crucial for themes and plugins to work)
46 + source $ZSH/oh-my-zsh.sh
47 +
16 48 # =============================================================================
17 49 # 2. THIRD-PARTY INITIALIZATION (SDKMAN, NVM, Oh My Zsh)
18 50 # =============================================================================
@@ -31,4 +63,4 @@ plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
31 63 # =============================================================================
32 64 # 5. ALIASES (Loaded dead last so YOUR code always wins over Oh My Zsh)
33 65 # =============================================================================
34 - [[ -s "$HOME/.alias" ]] && source "$HOME/.alias"
66 + [[ -s "$HOME/.alias" ]] && source "$HOME/.alias"