Files
NixOS-Configs/home/zsh/init.zsh
Anish Govind 8010cea0bc home: centralize theme and make home-manager feature-aware
- add home/theme.nix as the single Silicon Volt palette and pass it to
  home modules via extraSpecialArgs
- drive foot, hyprland, hyprlock, mako, fzf, starship, rofi and the
  herdr picker from that palette; raw config files use @color@ tokens
  substituted at build time
- pass my = config.my into home-manager; add my.pi.enable, my.flakeDir
- gate home/pi.nix on my.pi.enable (enabled on hades)
- route zshconf/hyprconf aliases and FLAKE_CONFIG through my.flakeDir
- rename the hyprland monitor option volt.monitors -> hypr.monitors
- fix use_auto_tmux command-substitution bug in zsh/init.zsh
- track home/nvim/config/lazy-lock.json for reproducible plugins
- document theming and toggles in the README
2026-09-19 00:48:19 -07:00

121 lines
4.1 KiB
Bash

# Path configuration
export PATH="$HOME/.local/bin:$HOME/bin:$HOME/.cargo/bin:$PNPM_HOME:$PATH"
if [ -d "$HOME/Tools/xilinx/Vivado/2023.1/bin" ]; then
export PATH="$HOME/Tools/xilinx/Vivado/2023.1/bin:$PATH"
fi
# Miniconda / conda profile hook if installed
if [ -f /opt/miniconda3/etc/profile.d/conda.sh ]; then
source /opt/miniconda3/etc/profile.d/conda.sh
fi
# Environment modules support if available
if (( ${+functions[module]} )) || [ -f /etc/modules/init/zsh ]; then
[ -f /etc/modules/init/zsh ] && source /etc/modules/init/zsh
module use --append "$HOME/.config/modulefiles" 2>/dev/null || true
fi
# Auto-tmux configuration
use_auto_tmux () {
! ([ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] || pgrep -x i3 >/dev/null || pgrep -x sway >/dev/null || pgrep -x Hyprland >/dev/null)
}
if use_auto_tmux; then
export ZSH_TMUX_AUTOSTART=true
export ZSH_TMUX_AUTOCONNECT=false
export ZSH_TMUX_AUTOQUIT=true
else
export ZSH_TMUX_AUTOSTART=false
export ZSH_TMUX_AUTOCONNECT=false
export ZSH_TMUX_AUTOQUIT=false
fi
if [[ -n "$TMUX" ]]; then
tmux-window-name() {
if [ -n "$TMUX_PLUGIN_MANAGER_PATH" ] && [ -f "$TMUX_PLUGIN_MANAGER_PATH/tmux-window-name/scripts/rename_session_windows.py" ]; then
("$TMUX_PLUGIN_MANAGER_PATH/tmux-window-name/scripts/rename_session_windows.py" &)
fi
}
autoload -Uz add-zsh-hook
add-zsh-hook chpwd tmux-window-name
fi
# Custom helper functions
rebuild () {
local action="${1:-switch}"
shift 2>/dev/null || true
local config_dir="${FLAKE_CONFIG:-$HOME/NixOS-Configs}"
local host="${REBUILD_HOST:-$(hostname)}"
local target="$config_dir#$host"
case "$action" in
switch|test|boot)
echo "==> Running: sudo nixos-rebuild $action --flake $target $*"
sudo nixos-rebuild "$action" --flake "$target" "$@"
;;
build|dry-build|dry-run|dry-activate)
local act="$action"
[[ "$action" == "dry-run" ]] && act="dry-build"
echo "==> Running: nixos-rebuild $act --flake $target $*"
nixos-rebuild "$act" --flake "$target" "$@"
;;
help|-h|--help)
echo "Usage: rebuild [switch|test|boot|build|dry-build] [extra nixos-rebuild options]"
echo ""
echo "Commands:"
echo " switch Build, activate, and make default boot entry (default)"
echo " test Build and activate without creating a boot entry"
echo " boot Build and make default boot entry without activating"
echo " build Build system to ./result without activating or sudo"
echo " dry-build Show what would be built/fetched"
;;
*)
echo "==> Running: sudo nixos-rebuild $action --flake $target $*"
sudo nixos-rebuild "$action" --flake "$target" "$@"
;;
esac
}
perlmutter_pass () {
echo -n 'bw master password: '
read -s MASTER_PASS
echo
echo -n 'Copying passkey...'
echo "$(echo "$MASTER_PASS" | bw get password iris.nersc.gov 2>/dev/null)$(echo "$MASTER_PASS" | bw get totp iris.nersc.gov 2>/dev/null)" | wl-copy
echo 'Done.'
}
compiler_explorer () {
docker run -d -p 10240:10240 --name compiler-explorer madduci/docker-compiler-explorer
}
airplay_server () {
uxplay -p 10000 -nh -n "$(hostname)" -restrict -allow 88:66:5A:76:32:F5 -allow C4:AC:AA:76:B7:80
}
zathura_md () {
cat "$1" | pandoc -f markdown -t pdf | zathura -
}
fooocus () {
if [ -f "$HOME/Tools/Fooocus/entry_with_update.py" ]; then
"$HOME/.conda/envs/fooocus/bin/python" "$HOME/Tools/Fooocus/entry_with_update.py"
else
echo "Fooocus not found at $HOME/Tools/Fooocus"
fi
}
# Per-host / system local overrides fallback
if [ -f "$HOME/.config/zsh/$(hostname)/env.sh" ]; then
source "$HOME/.config/zsh/$(hostname)/env.sh"
elif [ -f "$HOME/.zshrc.local" ]; then
source "$HOME/.zshrc.local"
fi
# Fetch / Banner on interactive terminal start
if [[ -o interactive ]] && [ -z "$TMUX" ] && command -v pfetch >/dev/null 2>&1; then
pfetch
fi