Files
fish-config/docs/manual/10-personalization.md
T
rootiest 625a58fa9f docs(site): title Examples fences and auto-title file-scoped snippets
Function EXAMPLE blocks now render as their own fish fence titled
"Examples" (matching the existing "Usage" title on the Synopsis fence),
triggered by a flat Example: label line mirroring the Synopsis: prefix.

Prose pages get two new generic titling signals in _render_para: a bare
indented path ending in a known extension is titled by its basename, and
a leading "# in <file>" / "# <file>" comment on a shell paragraph is
promoted to the fence title and stripped from the body. This picks up
local.fish/secrets.fish path displays and override examples in
07-customization.md for free, plus a bonus .logging_disabled hit.

10-personalization.md's secrets.fish block gets an explicit "# secrets.fish"
comment to title it the same way. The four local.fish examples keep their
existing descriptive comments rather than a redundant local.fish title.
2026-07-26 05:27:26 -04:00

2.2 KiB

title, manTitle, sidebar, helpKeywords
title manTitle sidebar helpKeywords
Personalization 10. PERSONALIZATION
order
14
personalization
personalize

Sensitive credentials and machine-specific settings are kept out of version control in a private directory. The path defaults to ~/.config/.user-dots/fish/ but can be overridden:

set -U __fish_user_dots_path /path/to/your/dots/fish

Or use the interactive TUI — run config-settings and navigate to the "Dots Path" row (last row). Press Enter to type a new path, or ← / h to reset to the default.

config.fish sources local.fish from that directory on every interactive session. local.fish is responsible for sourcing its own secrets.fish:

$__fish_user_dots_path/
├── secrets.fish   API keys, tokens, passwords, personal identifiers
└── local.fish     Machine-specific paths, env vars, and sourcing secrets

fish_variables (auto-managed by fish) is excluded from this repo via .gitignore. Do not commit it.

secrets.fish

Store anything you would not commit to a public repo: API keys, auth tokens, passwords, and personal identifiers.

# secrets.fish
set -gx MY_NAME "Your Name"
set -gx MY_EMAIL "you@example.com"
set -gx GPG_RECIPIENT "you@example.com"
set -gx GITHUB_TOKEN ghp_yourTokenHere
set -gx OPENAI_API_KEY sk-proj-yourKeyHere
set -gx GITEA_TOKEN yourGiteaTokenHere
set -gx GITEA_CHOSEN_LOGIN your.gitea.instance
set -gx KOPIA_PASSWORD yourKopiaPassword

local.fish

Store paths and variables specific to one machine — things that would be wrong on any other system.

# CDPATH — directories searched by cd
set -gx CDPATH . /home/youruser/projects /home/youruser

# Path to your shared .gitignore boilerplate
set -gx GITIGNORE_BOILERPLATE ~/.config/git/gitignore_boilerplate

# SSH shortcuts
abbr -a sshr 'ssh you@your-server.local'
abbr -a sshw 'ssh you@work-server.example.com'

# Docker context shortcuts
abbr -a dcr 'docker context use my-remote-server'
abbr -a dcw 'docker context use work-server'

local.fish is sourced at the end of config.fish with an existence check so the public config works cleanly on any machine without the private repo. local.fish in turn sources secrets.fish when it exists.