Initial dotfiles: placeholders for Fish, Starship, Ghostty, Zellij

This commit is contained in:
Travis Herbranson 2026-04-23 12:38:45 -04:00
commit f56989c768
9 changed files with 241 additions and 0 deletions

8
.chezmoi.toml.tmpl Normal file
View File

@ -0,0 +1,8 @@
# Chezmoi config — prompted on first `chezmoi init`
# Values are stored in ~/.config/chezmoi/chezmoi.toml
[data]
name = "{{ promptString "Your name" }}"
email = "{{ promptString "Your email" }}"
# "workstation" for dev rig, "server" for proxmox/nas nodes
machine_type = "{{ promptChoice "Machine type" (list "workstation" "server") }}"

8
.chezmoiignore Normal file
View File

@ -0,0 +1,8 @@
# Ignore workstation-only configs on servers
{{ if eq .machine_type "server" }}
dot_config/ghostty
dot_config/zellij
{{ end }}
README.md
LICENSE

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
*.swp
*.swo
*~
.DS_Store

32
README.md Normal file
View File

@ -0,0 +1,32 @@
# Dotfiles
Managed by [Chezmoi](https://www.chezmoi.io/). Deployed by the `cli_modern` Ansible role.
## What's managed
| Config | Path | Notes |
|--------|------|-------|
| Fish shell | `~/.config/fish/config.fish` | Aliases, env vars, plugin list |
| Starship | `~/.config/starship.toml` | Prompt theme |
| Ghostty | `~/.config/ghostty/config` | Workstations only |
| Zellij | `~/.config/zellij/config.kdl` | Workstations only |
## Usage
```bash
# First time on a new machine
chezmoi init git@your-gitea:herbygitea/dotfiles.git
chezmoi apply
# After editing a config locally
chezmoi re-add
# Pull latest from repo
chezmoi update
```
## Machine types
Chezmoi prompts for `machine_type` on init:
- **workstation** — gets everything (Fish, Starship, Ghostty, Zellij)
- **server** — skips Ghostty and Zellij (no GUI needed)

View File

@ -0,0 +1,51 @@
# ┌──────────────────────────────────────────────────────────┐
# │ PLACEHOLDER — replace with your actual Fish config │
# │ This file is managed by Chezmoi. │
# │ Edit the source: chezmoi edit ~/.config/fish/config.fish
# └──────────────────────────────────────────────────────────┘
if status is-interactive
# ── Prompt ──────────────────────────────────────────────
starship init fish | source
# ── Navigation ──────────────────────────────────────────
zoxide init fish | source
# ── fzf ─────────────────────────────────────────────────
set -gx FZF_DEFAULT_OPTS "--height 40% --layout=reverse --border --info=inline"
# ── Aliases ─────────────────────────────────────────────
alias ls "eza --icons --group-directories-first"
alias ll "eza -la --icons --group-directories-first --git"
alias lt "eza --tree --level=2 --icons"
alias cat "bat --paging=never"
alias catp "bat"
# Git
alias gs "git status"
alias gd "git diff"
alias gl "git log --oneline -20"
alias gp "git pull"
# Docker
alias dc "docker compose"
alias dps "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
alias dlogs "docker compose logs -f"
# Safety nets
alias rm "rm -i"
alias mv "mv -i"
alias cp "cp -i"
# ── Environment ─────────────────────────────────────────
set -gx EDITOR vim
set -gx VISUAL vim
set -g fish_greeting
# ── System Info (login shells only) ─────────────────────
if status is-login
fastfetch
end
end

View File

@ -0,0 +1,5 @@
jorgebucaran/fisher
PatrickF1/fzf.fish
jethrokuan/z
meaningful-ooo/sponge
jorgebucaran/autopair.fish

33
dot_config/ghostty/config Normal file
View File

@ -0,0 +1,33 @@
# ┌──────────────────────────────────────────────────────────┐
# │ PLACEHOLDER — replace with your actual Ghostty config │
# │ This file is managed by Chezmoi. │
# │ Edit the source: chezmoi edit ~/.config/ghostty/config │
# └──────────────────────────────────────────────────────────┘
# Font
font-family = JetBrainsMono Nerd Font
font-size = 14
# Theme — pick one and uncomment, or paste your custom palette below
# theme = catppuccin-mocha
# theme = tokyo-night
# theme = dracula
# theme = gruvbox-dark
# Window
window-padding-x = 8
window-padding-y = 4
window-decoration = auto
# Cursor
cursor-style = block
cursor-style-blink = true
# Shell — Fish is set as login shell by Ansible, Ghostty inherits it
# shell-integration = fish
# Scrollback
scrollback-limit = 10000
# Clipboard
copy-on-select = clipboard

74
dot_config/starship.toml Normal file
View File

@ -0,0 +1,74 @@
# ┌──────────────────────────────────────────────────────────┐
# │ PLACEHOLDER — replace with your p10k-style config │
# │ This file is managed by Chezmoi. │
# │ Edit the source: chezmoi edit ~/.config/starship.toml │
# │ │
# │ NOTE: Starship reads from ~/.config/starship.toml │
# │ Chezmoi maps this file there via the directory layout. │
# └──────────────────────────────────────────────────────────┘
command_timeout = 1000
add_newline = true
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$python\
$golang\
$nodejs\
$docker_context\
$cmd_duration\
$line_break\
$character"""
[character]
success_symbol = "[](bold green)"
error_symbol = "[](bold red)"
[directory]
truncation_length = 4
truncation_symbol = "…/"
truncate_to_repo = true
style = "bold cyan"
[git_branch]
format = "[$symbol$branch(:$remote_branch)]($style) "
symbol = " "
style = "bold purple"
[git_status]
format = '([\[$all_status$ahead_behind\]]($style) )'
style = "bold red"
[python]
format = '[${symbol}(${version} )(\($virtualenv\) )]($style)'
symbol = " "
[golang]
format = "[$symbol($version )]($style)"
symbol = " "
[nodejs]
format = "[$symbol($version )]($style)"
symbol = " "
[docker_context]
format = "[$symbol$context]($style) "
symbol = " "
only_with_files = true
[cmd_duration]
min_time = 2_000
format = "[$duration]($style) "
[username]
show_always = false
format = "[$user]($style)@"
[hostname]
ssh_only = true
format = "[$ssh_symbol$hostname]($style) "
ssh_symbol = "🌐 "

View File

@ -0,0 +1,26 @@
// ┌──────────────────────────────────────────────────────────┐
// │ PLACEHOLDER — replace with your actual Zellij config │
// │ This file is managed by Chezmoi. │
// │ Edit the source: chezmoi edit ~/.config/zellij/config.kdl │
// └──────────────────────────────────────────────────────────┘
// Theme — uncomment one or define custom below
// theme "catppuccin-mocha"
// theme "dracula"
// theme "tokyo-night"
// Default shell
default_shell "fish"
// UI
pane_frames true
default_layout "compact"
// Mouse
mouse_mode true
// Copy
copy_on_select true
// Scrollback
scroll_buffer_size 10000