ce84db593c
Adds __fish_config_op_enabled helper (master __fish_config_opinionated evaluated first via __fish_variable_check, then the category variable) and gates C1-C4 components: CachyOS surgical override, PAGER/MANPAGER, CDPATH, Vi mode, exit override, bang-bang bindings, history/cp/mv/wget/ grep aliases, cd->z alias, Fisher bootstrap and theme apply, paru/yay wrapper generation, WakaTime hook, custom key chords, puffer, autopair, starship prompt, Catppuccin colors, FZF_DEFAULT_OPTS, done notifications, and Kitty/WezTerm window-management abbreviations.
58 lines
3.0 KiB
Fish
58 lines
3.0 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# ╭──────────────────────────────────────────────────────────╮
|
|
# │ First-Run Initialization │
|
|
# ╰──────────────────────────────────────────────────────────╯
|
|
#
|
|
# Runs exactly once on the first interactive fish session after install.
|
|
# To reset for testing, run: set -Ue __fish_config_first_run_complete
|
|
|
|
# Exit early in non-interactive shells (scripts, completions, subshells)
|
|
if not status is-interactive
|
|
return
|
|
end
|
|
|
|
# Skip if this shell has already been initialized
|
|
if set -q __fish_config_first_run_complete
|
|
return
|
|
end
|
|
|
|
# Set the flag immediately — before actions — so a mid-run crash doesn't
|
|
# leave the shell in a state that re-triggers everything next session.
|
|
set -U __fish_config_first_run_complete 1
|
|
|
|
# ──────────────────────────── Welcome message ───────────────────────────
|
|
echo ""
|
|
echo " Welcome to your fish shell configuration!"
|
|
echo " Run 'help config' for offline documentation."
|
|
echo " Run 'fish-deps' to check and install dependencies."
|
|
echo ""
|
|
|
|
# ─────────────────────── Opinionated auto-exec guard ────────────────────
|
|
# Startup side-effects below (Fisher curl, fisher update, theme apply) are
|
|
# opinionated (C2 auto-execution). The first-run state variable is already
|
|
# set above either way, so disabling auto-exec never re-triggers this file.
|
|
if not __fish_config_op_enabled __fish_config_op_autoexec
|
|
return
|
|
end
|
|
|
|
# ──────────────────────────── Bootstrap Fisher ──────────────────────────
|
|
if not type -q fisher
|
|
echo " [first-run] Installing Fisher plugin manager..."
|
|
if curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source
|
|
echo " [first-run] Fisher installed."
|
|
if not fisher update 2>/dev/null
|
|
echo " [first-run] Fisher update failed — run 'fisher update' manually." >&2
|
|
end
|
|
else
|
|
echo " [first-run] Fisher install failed — run 'fisher update' manually." >&2
|
|
end
|
|
end
|
|
|
|
# ───────────────────────────── Apply theme ──────────────────────────────
|
|
# Catppuccin Mocha theme ships with this config in themes/; it is always available.
|
|
if not fish_config theme choose "Catppuccin Mocha" 2>/dev/null
|
|
echo " [first-run] Could not apply Catppuccin Mocha theme — set manually with 'fish_config theme choose'." >&2
|
|
end
|