« get me outta code hell

dotfiles - Miscellaneous configuration files of my personal use
about summary refs log tree commit diff
path: root/.zshrc
diff options
context:
space:
mode:
Diffstat (limited to '.zshrc')
-rw-r--r--.zshrc65
1 files changed, 55 insertions, 10 deletions
diff --git a/.zshrc b/.zshrc
index f953594..198dc4c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -1,6 +1,31 @@
 # ~nebula/.zshrc, 2023 edition
 
 
+# //// per-device configuration ///////////////////////////////////////////// #
+
+# Per-device configuration is kept here in dotfiles.git too, but it won't be
+# activated just by linking .zshrc. You also need to link ~/.device_pre and
+# ~/.device_post to the relevant per-device files under `device`.
+
+# All exports in pre-config are prefixed with `DEVICE_`, and are used to toggle
+# features or identify installations in .zshrc or other scripts which are part
+# of dotfiles.git.
+
+device_preconfig() {
+  source ~/.device_pre
+}
+
+# The post-config file is intended to run commands that are so specialized to
+# the relevant device that it wouldn't make sense to include as a toggleable
+# feature in the main .zshrc.
+
+device_postconfig() {
+  source ~/.device_post
+}
+
+device_preconfig
+
+
 # //// zsh configuration //////////////////////////////////////////////////// #
 
 if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
@@ -18,27 +43,34 @@ path+=("$HOME/bin")
 
 # -- GPG --
 
-export GPG_TTY=$(tty)
+if [[ -v DEVICE_HAS_GPG ]]; then
+  export GPG_TTY=$(tty)
+fi
 
 # -- Homebrew --
 
-eval "$(/opt/homebrew/bin/brew shellenv)"
+if [[ -v DEVICE_HAS_HOMEBREW ]]; then
+  eval "$("$DEVICE_HOMEBREW_INSTALLATION"/bin/brew shellenv)"
 
-if [[ -z DEVICE_HAS_PYENV ]]; then
-  # https://github.com/pyenv/pyenv#homebrew-in-macos
-  alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
+  if [[ -z DEVICE_HAS_PYENV ]]; then
+    # https://github.com/pyenv/pyenv#homebrew-in-macos
+    alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
+  fi
 fi
 
 # -- Node Version Manager --
 
-export NVM_DIR="$HOME/.nvm"
-[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
-[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
+if [[ -v DEVICE_HAS_NVM ]]; then
+  export NVM_DIR="$DEVICE_NVM_INSTALLATION"
+  [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
+  [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
+fi
 
 # -- Python --
 
-path+=("$HOME/Library/Python/3.9/bin")
-path+=("/Applications/Sublime Text.app/Contents/SharedSupport/bin")
+if [[ -v DEVICE_HAS_PYTHON_3 ]]; then
+  PATH+=("$DEVICE_PYTHON_3_INSTALLATION/bin")
+fi
 
 # -- Python (pyenv) --
 
@@ -46,4 +78,17 @@ if [[ -z DEVICE_HAS_PYENV ]]; then
   eval "$(pyenv init -)"
 fi
 
+# -- Sublime Text --
+
+if [[ -v DEVICE_HAS_SUBLIME_TEXT ]]; then
+  PATH+=("$DEVICE_SUBLIME_TEXT_INSTALLATION)/Contents/SharedSupport/bin")
+fi
+
+
 export PATH
+
+
+# //// per-device configuration ///////////////////////////////////////////// #
+
+device_postconfig
+