Configure minuet-ai.nvim with the OpenCode Go chat completions endpoint (deepseek-v4-flash, thinking disabled) and wire it into blink.cmp as a completion source with manual <A-y> trigger.
dotfiles
Personal dotfiles managed with chezmoi.
Per-host configuration is handled with Go templates, so the same repo works on every machine:
| Host | Type | Notes |
|---|---|---|
flow |
desktop, personal | DP-1/DP-2 outputs, pulsemeeter, teams-for-linux |
gata |
desktop, work | two monitors, teams-for-linux |
framework13pro |
laptop, personal | eDP-1, touchpad, brightness keys |
Setup on a new machine
sudo pacman -S chezmoi
chezmoi init --apply git@gitea.itspm.cc:pmcc/dotfiles
For hosts not yet covered (flow, gata), fill in the # TODO output lines:
swaymsg -t get_outputs | jq -r '.[].name'- Edit
dot_config/sway/config.d/outputs.conf.tmplin the source, replacing the TODOs with realoutputlines (one per monitor, e.g.output DP-1 mode 2560x1440@144Hz position 0 0) - For gata, also replace the
// TODOindot_config/waybar/config.jsonc.tmplwith the correct monitor names chezmoi applythenswaymsg reload
Cheatsheet
| Command | What it does |
|---|---|
chezmoi edit <path> |
Edit the source state of a managed file (chezmoi edit ~/.tmux.conf) |
chezmoi edit --apply <path> |
Edit and apply in one step |
chezmoi add <path> |
Add a new file to dotfiles |
chezmoi re-add <path> |
Pull a live-edited file back into source |
chezmoi status |
Show pending changes (target vs source) |
chezmoi diff |
Preview what apply would change |
chezmoi apply -v |
Apply source → home |
chezmoi update |
Pull latest from gitea + apply |
chezmoi cd |
Jump to the source dir (~/.local/share/chezmoi) — commit/push from here |
chezmoi managed / chezmoi unmanaged |
List managed / unmanaged files |
chezmoi data |
Show template variables (e.g. hosttype for this host) |
chezmoi doctor |
Diagnose setup issues |
Typical workflow: chezmoi cd → edit files → git commit && git push → on
other machines chezmoi update.
How per-host config works
.chezmoi.toml.tmplmaps the hostname to ahosttypedata variable (laptop/desktop) in~/.config/chezmoi/chezmoi.tomldot_config/sway/config.d/*.tmplbranch per hostname (outputs) or perhosttype(inputs, binds) — deployed into~/.config/sway/config.d/, which the base sway config includes viainclude ~/.config/sway/config.d/*dot_config/waybar/config.jsonc.tmplrenders the bar array per host; shared bar/module definitions live in.chezmoitemplates/.chezmoiignore.tmplscopes app configs to specific hosts: pulsemeeter onflowonly, teams-for-linux on desktop hosts
Template syntax
Files ending in .tmpl are rendered with Go's text/template and deployed
under the same name minus the suffix (config.jsonc.tmpl → config.jsonc).
{{ ... }} delimits template actions; anything outside them is literal text.
Variables — built-ins like .chezmoi.hostname, .chezmoi.os, and custom
ones from [data] in the generated config, here .hosttype:
{{ if eq .hosttype "laptop" }}
bindsym XF86MonBrightnessUp exec brightnessctl s +5%
{{ end }}
Conditionals:
{{ if eq .chezmoi.hostname "flow" }}...{{ else if eq .hosttype "laptop" }}...{{ end }}
Whitespace control — {{- trims whitespace before the action, -}}
trims after; this keeps conditionals from leaving stray blank lines in the
output.
Shared fragments — .chezmoitemplates/ files are included with
{{ template "name" . }}, optionally passing data:
{{ template "bar-primary" (dict "out" "eDP-1" "ws" (list "1" "2" "3" "4")) }}
Previewing without touching your home dir:
# render one template for a specific host
chezmoi execute-template --init --override-data '{"chezmoi":{"hostname":"flow"}}' < file.tmpl
# render the whole source state into a scratch dir
mkdir -p /tmp/test && chezmoi --source ~/.local/share/chezmoi apply --destination /tmp/test
Note: templates that render to empty output are not deployed — that's why
flow/gata have no inputs.conf/binds.conf.
What each chezmoi file does
| Source file | Deploys as | Purpose |
|---|---|---|
dot_zshrc, dot_tmux.conf |
~/.zshrc, ~/.tmux.conf |
plain dotfiles (dot_ → leading dot) |
dot_config/… |
~/.config/… |
config tree |
executable_install.sh |
install.sh with +x |
scripts — executability needs the executable_ prefix; chezmoi ignores the source file's own mode |
*.tmpl |
same name, rendered | per-host / templated content |
.chezmoi.toml.tmpl |
~/.config/chezmoi/chezmoi.toml (at chezmoi init) |
defines [data] variables like hosttype |
.chezmoiignore.tmpl |
(never deployed) | patterns matched against target paths to skip, template-capable |
.chezmoitemplates/* |
(never deployed) | shared template fragments, included with {{ template "name" . }} |
Package lists
~/.config/dotfiles/install.sh installs the packages from the rendered
packages.txt (official repos) and aur-packages.txt (AUR). The lists are
templates too, so host-specific software (pulsemeeter, teams-for-linux) is only
installed where it's used. The lists intentionally only cover software with
configs in this repo — the base OS install is assumed to already exist.