commit f56989c76838ef30228441f805e11b20f5841fb1 Author: Travis Herbranson Date: Thu Apr 23 12:38:45 2026 -0400 Initial dotfiles: placeholders for Fish, Starship, Ghostty, Zellij diff --git a/.chezmoi.toml.tmpl b/.chezmoi.toml.tmpl new file mode 100644 index 0000000..b255e3c --- /dev/null +++ b/.chezmoi.toml.tmpl @@ -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") }}" diff --git a/.chezmoiignore b/.chezmoiignore new file mode 100644 index 0000000..ee89430 --- /dev/null +++ b/.chezmoiignore @@ -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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..44fa520 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.swp +*.swo +*~ +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..64f6267 --- /dev/null +++ b/README.md @@ -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) diff --git a/dot_config/fish/config.fish b/dot_config/fish/config.fish new file mode 100644 index 0000000..085f178 --- /dev/null +++ b/dot_config/fish/config.fish @@ -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 diff --git a/dot_config/fish/fish_plugins b/dot_config/fish/fish_plugins new file mode 100644 index 0000000..b693777 --- /dev/null +++ b/dot_config/fish/fish_plugins @@ -0,0 +1,5 @@ +jorgebucaran/fisher +PatrickF1/fzf.fish +jethrokuan/z +meaningful-ooo/sponge +jorgebucaran/autopair.fish diff --git a/dot_config/ghostty/config b/dot_config/ghostty/config new file mode 100644 index 0000000..df2d03c --- /dev/null +++ b/dot_config/ghostty/config @@ -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 diff --git a/dot_config/starship.toml b/dot_config/starship.toml new file mode 100644 index 0000000..cf81700 --- /dev/null +++ b/dot_config/starship.toml @@ -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 = "🌐 " diff --git a/dot_config/zellij/config.kdl b/dot_config/zellij/config.kdl new file mode 100644 index 0000000..f46f5b8 --- /dev/null +++ b/dot_config/zellij/config.kdl @@ -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