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
614set -q XDG_CONFIG_HOME; or set -gx XDG_CONFIG_HOME " $HOME /.config"
715set -q XDG_DATA_HOME; or set -gx XDG_DATA_HOME " $HOME /.local/share"
816set -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 "
918
19+ # Custom directory for storing application history files
1020set -gx APPLICATIONS_HISTORY_PATH " $XDG_DATA_HOME /history"
1121
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
1929
30+ # Locale settings for proper character encoding
2031set -gx LANG en_US.UTF-8
2132set -gx LC_ALL en_US.UTF-8
2233
23- set -gx OPENSSL_PATH " $BREW_PREFIX /openssl@3"
24-
34+ # Default pager with syntax highlighting
2535set -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
3936
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 )
4339
40+ # Color configuration for grep output
4441set -gx GREP_COLOR " 1;37;45"
4542
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
4848
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/"
5152
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"
5459
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 "
5762
58- set -gx POETRY_VIRTUALENVS_PATH " $HOME /.virtualenvs"
63+ # Security settings
64+ set -gx NOCLOBBER 1
5965
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 "
6268
63- # Opt out of brew analytics
69+ # ============================================================================
70+ # Package Managers and Tools
71+ # ============================================================================
72+ # Homebrew configuration
73+ set -gx HOMEBREW_NO_ENV_HINTS 1
6474set -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"
6579
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
6794set -gx PIP_REQUIRE_VIRTUALENV true
6895set -gx PIP_DEFAULT_TIMEOUT 30
6996set -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"
70100
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
73106
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 "
76109
77- # Ruby bundler
110+ # --- Ruby ---
111+ set -gx GEM_HOME " $XDG_DATA_HOME /gem"
112+ set -gx GEM_SPEC_CACHE " $XDG_CACHE_HOME /gem"
78113set -gx BUNDLE_USER_CACHE " $XDG_CACHE_HOME /bundle"
79114set -gx BUNDLE_USER_CONFIG " $XDG_CONFIG_HOME /bundle"
80115set -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-
86116set -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)
88117
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 ---
97119set -gx NVM_DIR " $XDG_DATA_HOME /nvm"
98120set -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"
99134
100- # Set Haskell stack dir
135+ # --- Haskell ---
101136set -gx STACK_ROOT " $XDG_DATA_HOME /stack"
102137
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 " "
105143
106- # Use build enhancement for Docker
144+ # Docker configuration
107145set -gx DOCKER_BUILDKIT 1
146+ set -gx COMPOSE_DOCKER_CLI_BUILD 1
147+ # set -gx DOCKER_CONFIG "$XDG_CONFIG_HOME/docker"
108148
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"
111152
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"
113156
157+ # ============================================================================
158+ # CLI Tools and Utilities
159+ # ============================================================================
160+ # Shell and prompt configuration
114161set -gx STARSHIP_CONFIG " $XDG_CONFIG_HOME /starship/starship.toml"
162+ set -gx HISTSIZE 10000
163+ set -gx SAVEHIST 10000
115164
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 "
118167
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"
121171
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"
123175
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)
125184
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
126197
198+ # ============================================================================
199+ # PATH Configuration
200+ # ============================================================================
201+ # Add binary directories to PATH in priority order
127202fish_add_path --path \
128203 /usr/local/sbin \
129204 /opt/homebrew/sbin \
@@ -134,5 +209,7 @@ fish_add_path --path \
134209 $BREW_PREFIX /curl/bin \
135210 $GOBIN \
136211 $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