1
- set -gx EDITOR vim
2
- set -gx VISUAL vim
3
- set -gx SHELL /opt/homebrew/bin/fish
4
-
5
- # Ensure XDG variables are set
1
+ # ============================================================================
2
+ # Fish Shell Global Environment Variables Configuration
3
+ # ============================================================================
4
+ # Author: Gilad Peleg
5
+ # Last Updated: June 2025
6
+ # Description: Global environment variables for Fish shell, organized by
7
+ # category and following XDG Base Directory specification
8
+ # ============================================================================
9
+
10
+ # ============================================================================
11
+ # XDG Base Directory Specification
12
+ # ============================================================================
13
+ # Standard directories for configuration, data, cache, and runtime files
6
14
set -q XDG_CONFIG_HOME; or set -gx XDG_CONFIG_HOME " $HOME /.config"
7
15
set -q XDG_DATA_HOME; or set -gx XDG_DATA_HOME " $HOME /.local/share"
8
16
set -q XDG_CACHE_HOME; or set -gx XDG_CACHE_HOME " $HOME /.cache"
17
+ set -q XDG_RUNTIME_DIR; or set -gx XDG_RUNTIME_DIR " /tmp/runtime-$USER "
9
18
19
+ # Custom directory for storing application history files
10
20
set -gx APPLICATIONS_HISTORY_PATH " $XDG_DATA_HOME /history"
11
21
12
- # Much faster than brew --prefix which depends on Ruby slow start time
13
- set -gx BREW_PREFIX /opt/homebrew/opt
14
- set -gx HOMEBREW_NO_ENV_HINTS 1
15
-
16
- set -gx GPG_TTY ( tty )
17
- set -gx SSH_KEY_PATH " $HOME /.ssh "
18
- set -gx SSH_AUTH_SOCK " $HOME /.1password/agent.sock "
22
+ # ============================================================================
23
+ # Global System Settings
24
+ # ============================================================================
25
+ # Default editors and shell configuration
26
+ set -gx EDITOR vim
27
+ set -gx VISUAL vim
28
+ set -gx SHELL /opt/homebrew/bin/fish
19
29
30
+ # Locale settings for proper character encoding
20
31
set -gx LANG en_US.UTF-8
21
32
set -gx LC_ALL en_US.UTF-8
22
33
23
- set -gx OPENSSL_PATH " $BREW_PREFIX /openssl@3"
24
-
34
+ # Default pager with syntax highlighting
25
35
set -gx PAGER bat
26
- set -gx LIBRARY_PATH " $OPENSSL_PATH /lib/"
27
-
28
- # Don't use a pager by default in AWS calls
29
- set -gx AWS_PAGER " "
30
-
31
- # Yucky brew workaround for building apps
32
- # for pkg in openssl curl readline gettext ncurses icu4c sqlite zlib mysql-client tcl-tk libxml2
33
- # set -gx CFLAGS "-I/usr/local/opt/$pkg/include" $CFLAGS
34
- # set -gx CPPFLAGS "-I/usr/local/opt/$pkg/include" $CPPFLAGS
35
- # set -gx LD_RUN_PATH "/usr/local/opt/$pkg/lib" $LD_RUN_PATH
36
- # set -gx LDFLAGS "-L/usr/local/opt/$pkg/lib" $LDFLAGS
37
- # set -gx PKG_CONFIG_PATH "/usr/local/opt/$pkg/lib/pkgconfig" $PKG_CONFIG_PATH
38
- # end
39
36
40
- # Required for tinker builds of pyenv's python
41
- # set -gx PYTHON_CONFIGURE_OPTS "--with-tcltk-includes='-I$BREW_PREFIX/tcl-tk/include' --with-tcltk-libs='-L$BREW_PREFIX/tcl-tk/lib -ltcl8.6 -ltk8.6'"
42
- # set -gx DYLD_FALLBACK_LIBRARY_PATH "$OPENSSL_PATH/lib"
37
+ # TTY setting for GPG operations
38
+ set -gx GPG_TTY (tty )
43
39
40
+ # Color configuration for grep output
44
41
set -gx GREP_COLOR " 1;37;45"
45
42
46
- # set -q JAVA_HOME; or set -gx JAVA_HOME "/Users/giladpeleg/.asdf/installs/java/adoptopenjdk-11.0.11+9"
47
- set -q GRADLE_USER_HOME; or set -gx GRADLE_USER_HOME " $XDG_DATA_HOME /gradle"
43
+ # ============================================================================
44
+ # System Paths and Libraries
45
+ # ============================================================================
46
+ # Fast access to Homebrew prefix without calling slow `brew --prefix`
47
+ set -gx BREW_PREFIX /opt/homebrew/opt
48
48
49
- # Rust - cargo
50
- set -gx CARGOBIN " $HOME /cargo/.bin"
49
+ # OpenSSL configuration for secure connections
50
+ set -gx OPENSSL_PATH " $BREW_PREFIX /openssl@3"
51
+ set -gx LIBRARY_PATH " $OPENSSL_PATH /lib/"
51
52
52
- set -gx LESSHISTFILE " $APPLICATIONS_HISTORY_PATH /less_history"
53
- set -gx LESSKEY " $XDG_CONFIG_HOME /less/keys"
53
+ # ============================================================================
54
+ # Security and Authentication
55
+ # ============================================================================
56
+ # SSH configuration
57
+ set -gx SSH_KEY_PATH " $HOME /.ssh"
58
+ set -gx SSH_AUTH_SOCK " $HOME /.1password/agent.sock"
54
59
55
- # A hack for https://github.com/gatsbyjs/gatsby/issues/6654
56
- set -gx GATSBY_CONCURRENT_DOWNLOAD 25
60
+ # Password manager configuration
61
+ set -gx PASSWORD_STORE_DIR " $XDG_DATA_HOME /password-store "
57
62
58
- set -gx POETRY_VIRTUALENVS_PATH " $HOME /.virtualenvs"
63
+ # Security settings
64
+ set -gx NOCLOBBER 1
59
65
60
- set -gx NPM_CONFIG_USERCONFIG " $XDG_CONFIG_HOME /npm/.npmrc "
61
- set -gx NPM_CONFIG_CACHE " $XDG_CACHE_HOME /npm "
66
+ # GPG Suite doesn't support a different home for gnupg :(
67
+ # set -gx GNUPGHOME "$XDG_CONFIG_HOME/gnupg "
62
68
63
- # Opt out of brew analytics
69
+ # ============================================================================
70
+ # Package Managers and Tools
71
+ # ============================================================================
72
+ # Homebrew configuration
73
+ set -gx HOMEBREW_NO_ENV_HINTS 1
64
74
set -gx HOMEBREW_NO_ANALYTICS 1
75
+ set -gx HOMEBREW_CASK_OPTS --no-quarantine
76
+
77
+ # pipx configuration
78
+ set -gx PIPX_BIN_DIR " $HOME /.local/bin"
65
79
66
- # Python
80
+ # asdf version manager
81
+ set -gx ASDF_CONFIG_FILE " $XDG_CONFIG_HOME /asdf/.asdfrc"
82
+
83
+ # mise configuration (manual control preferred)
84
+ set -gx MISE_FISH_AUTO_ACTIVATE 0
85
+
86
+ # ============================================================================
87
+ # Programming Languages and Runtimes
88
+ # ============================================================================
89
+
90
+ # --- Python ---
91
+ set -gx PYTHONIOENCODING utf-8
92
+ set -gx PYTHONDONTWRITEBYTECODE 1
93
+ set -gx PYTHONUNBUFFERED 1
67
94
set -gx PIP_REQUIRE_VIRTUALENV true
68
95
set -gx PIP_DEFAULT_TIMEOUT 30
69
96
set -gx PIP_CACHE_DIR " $XDG_CACHE_HOME /pip"
97
+ set -gx POETRY_VIRTUALENVS_PATH " $HOME /.virtualenvs"
98
+ set -gx IPYTHONDIR " $XDG_CONFIG_HOME /jupyter"
99
+ set -gx JUPYTER_CONFIG_DIR " $XDG_CONFIG_HOME /jupyter"
70
100
71
- # Set pass password store location
72
- set -gx PASSWORD_STORE_DIR " $XDG_DATA_HOME /password-store"
101
+ # --- Go ---
102
+ set -gx GOPATH " $XDG_DATA_HOME /go"
103
+ set -gx GOBIN " $GOPATH /bin"
104
+ set -gx GO111MODULE on
105
+ set -gx GOPROXY https://proxy.golang.org,direct
73
106
74
- # GPG Suite doesn't support a different home for gnupg :(
75
- # set -gx GNUPGHOME "$XDG_CONFIG_HOME/gnupg "
107
+ # --- Rust ---
108
+ set -gx CARGOBIN " $HOME /.cargo/bin "
76
109
77
- # Ruby bundler
110
+ # --- Ruby ---
111
+ set -gx GEM_HOME " $XDG_DATA_HOME /gem"
112
+ set -gx GEM_SPEC_CACHE " $XDG_CACHE_HOME /gem"
78
113
set -gx BUNDLE_USER_CACHE " $XDG_CACHE_HOME /bundle"
79
114
set -gx BUNDLE_USER_CONFIG " $XDG_CONFIG_HOME /bundle"
80
115
set -gx BUNDLE_USER_PLUGIN " $XDG_DATA_HOME /bundle"
81
-
82
- # Ruby GEM
83
- set -gx GEM_HOME " $XDG_DATA_HOME /gem"
84
- set -gx GEM_SPEC_CACHE " $XDG_CACHE_HOME /gem"
85
-
86
116
set -gx RUBY_CONFIGURE_OPTS " --with-openssl-dir=$OPENSSL_PATH --with-readline-dir=$BREW_PREFIX /readline --with-libyaml-dir=$BREW_PREFIX /libyaml"
87
- # set -gx SDKROOT (xcrun --show-sdk-path)
88
117
89
- # Docker - doesn't seem to work yet
90
- # set -gx DOCKER_CONFIG "$XDG_CONFIG_HOME/docker"
91
-
92
- # Set iPython and Jupyter paths
93
- set -gx IPYTHONDIR " $XDG_CONFIG_HOME /jupyter"
94
- set -gx JUPYTER_CONFIG_DIR " $XDG_CONFIG_HOME /jupyter"
95
-
96
- # Set NVM dir
118
+ # --- Node.js and JavaScript ---
97
119
set -gx NVM_DIR " $XDG_DATA_HOME /nvm"
98
120
set -gx NODE_REPL_HISTORY " $APPLICATIONS_HISTORY_PATH /node_repl_history"
121
+ set -gx NPM_CONFIG_USERCONFIG " $XDG_CONFIG_HOME /npm/.npmrc"
122
+ set -gx NPM_CONFIG_CACHE " $XDG_CACHE_HOME /npm"
123
+ set -gx BUN_INSTALL " $XDG_DATA_HOME /bun"
124
+ set -gx DENO_DIR " $XDG_DATA_HOME /deno"
125
+ set -gx DENO_INSTALL_ROOT " $XDG_DATA_HOME /deno/bin"
126
+ set -gx PNPM_HOME " $XDG_DATA_HOME /pnpm"
127
+ set -gx BABEL_CACHE_PATH " $XDG_CACHE_HOME /babel/babel.json"
128
+ set -gx GATSBY_CONCURRENT_DOWNLOAD 25
129
+
130
+ # --- Java and JVM Languages ---
131
+ # set -q JAVA_HOME; or set -gx JAVA_HOME "/Users/giladpeleg/.asdf/installs/java/adoptopenjdk-11.0.11+9"
132
+ set -q GRADLE_USER_HOME; or set -gx GRADLE_USER_HOME " $XDG_DATA_HOME /gradle"
133
+ set -gx LEIN_JVM_OPTS " -XX:+TieredCompilation -XX:TieredStopAtLevel=2"
99
134
100
- # Set Haskell stack dir
135
+ # --- Haskell ---
101
136
set -gx STACK_ROOT " $XDG_DATA_HOME /stack"
102
137
103
- # Httpie
104
- set -gx HTTPIE_CONFIG_DIR " $XDG_CONFIG_HOME /httpie"
138
+ # ============================================================================
139
+ # DevOps and Cloud Tools
140
+ # ============================================================================
141
+ # AWS configuration
142
+ set -gx AWS_PAGER " "
105
143
106
- # Use build enhancement for Docker
144
+ # Docker configuration
107
145
set -gx DOCKER_BUILDKIT 1
146
+ set -gx COMPOSE_DOCKER_CLI_BUILD 1
147
+ # set -gx DOCKER_CONFIG "$XDG_CONFIG_HOME/docker"
108
148
109
- set -gx REDISCLI_HISTFILE " $APPLICATIONS_HISTORY_PATH /redis_history"
110
- set -gx SQLITE_HISTORY " $APPLICATIONS_HISTORY_PATH /sqlite_history"
149
+ # Terraform configuration
150
+ set -gx TF_CLI_CONFIG_FILE " $XDG_CONFIG_HOME /terraform/.terraformrc"
151
+ set -gx TF_DATA_DIR " $XDG_DATA_HOME /terraform"
111
152
112
- set -gx BABEL_CACHE_PATH " $XDG_CACHE_HOME /babel/babel.json"
153
+ # Kubernetes configuration
154
+ set -gx KUBECONFIG " $XDG_CONFIG_HOME /kubernetes/config"
155
+ set -gx KUBECONFIGDIR " $XDG_CONFIG_HOME /kubernetes"
113
156
157
+ # ============================================================================
158
+ # CLI Tools and Utilities
159
+ # ============================================================================
160
+ # Shell and prompt configuration
114
161
set -gx STARSHIP_CONFIG " $XDG_CONFIG_HOME /starship/starship.toml"
162
+ set -gx HISTSIZE 10000
163
+ set -gx SAVEHIST 10000
115
164
116
- set -gx PIPX_BIN_DIR " $HOME /.local/bin "
117
- set -gx PATH $PATH $PIPX_BIN_DIR
165
+ # HTTP tools
166
+ set -gx HTTPIE_CONFIG_DIR " $XDG_CONFIG_HOME /httpie "
118
167
119
- # Clojure lein
120
- set -gx LEIN_JVM_OPTS " -XX:+TieredCompilation -XX:TieredStopAtLevel=2"
168
+ # Text processing and pagers
169
+ set -gx LESSHISTFILE " $APPLICATIONS_HISTORY_PATH /less_history"
170
+ set -gx LESSKEY " $XDG_CONFIG_HOME /less/keys"
121
171
122
- set -gx ASDF_CONFIG_FILE " $XDG_CONFIG_HOME /asdf/.asdfrc"
172
+ # Database CLI tools
173
+ set -gx REDISCLI_HISTFILE " $APPLICATIONS_HISTORY_PATH /redis_history"
174
+ set -gx SQLITE_HISTORY " $APPLICATIONS_HISTORY_PATH /sqlite_history"
123
175
124
- set -gx MISE_FISH_AUTO_ACTIVATE 0
176
+ # AI and Development Tools
177
+ set -gx CLAUDE_CODE_USE_BEDROCK 1
178
+
179
+ # ============================================================================
180
+ # Optional/Commented Configurations
181
+ # ============================================================================
182
+ # macOS SDK path (uncomment if needed for native compilation)
183
+ # set -gx SDKROOT (xcrun --show-sdk-path)
125
184
185
+ # Python build configuration for pyenv (uncomment if needed)
186
+ # set -gx PYTHON_CONFIGURE_OPTS "--with-tcltk-includes='-I$BREW_PREFIX/tcl-tk/include' --with-tcltk-libs='-L$BREW_PREFIX/tcl-tk/lib -ltcl8.6 -ltk8.6'"
187
+ # set -gx DYLD_FALLBACK_LIBRARY_PATH "$OPENSSL_PATH/lib"
188
+
189
+ # Homebrew build workaround (uncomment if encountering build issues)
190
+ # for pkg in openssl curl readline gettext ncurses icu4c sqlite zlib mysql-client tcl-tk libxml2
191
+ # set -gx CFLAGS "-I/usr/local/opt/$pkg/include" $CFLAGS
192
+ # set -gx CPPFLAGS "-I/usr/local/opt/$pkg/include" $CPPFLAGS
193
+ # set -gx LD_RUN_PATH "/usr/local/opt/$pkg/lib" $LD_RUN_PATH
194
+ # set -gx LDFLAGS "-L/usr/local/opt/$pkg/lib" $LDFLAGS
195
+ # set -gx PKG_CONFIG_PATH "/usr/local/opt/$pkg/lib/pkgconfig" $PKG_CONFIG_PATH
196
+ # end
126
197
198
+ # ============================================================================
199
+ # PATH Configuration
200
+ # ============================================================================
201
+ # Add binary directories to PATH in priority order
127
202
fish_add_path --path \
128
203
/usr/local/sbin \
129
204
/opt/homebrew/sbin \
@@ -134,5 +209,7 @@ fish_add_path --path \
134
209
$BREW_PREFIX /curl/bin \
135
210
$GOBIN \
136
211
$CARGOBIN \
137
- $XDG_DATA_HOME /npm-global-modules/bin
138
-
212
+ $XDG_DATA_HOME /npm-global-modules/bin \
213
+ $BUN_INSTALL /bin \
214
+ $DENO_INSTALL_ROOT \
215
+ $PNPM_HOME
0 commit comments