Commit Graph

338 Commits

Author SHA1 Message Date
Anton Volnuhin
10c759e3a9 kitty fish to chezmoi 2026-04-07 23:56:28 +03:00
Anton Volnuhin
83e26550d0 wrong cursor stuff fix 2026-04-07 23:52:35 +03:00
Anton Volnuhin
5274042036 experimental fish cursor fixes 2026-04-07 23:39:17 +03:00
Anton Volnuhin
b0dbb8e0b2 working shift+enter everywhere 2026-04-07 23:34:01 +03:00
Anton Volnuhin
4bab71f9ab dark kitten icon for kitty 2026-04-06 14:46:04 +03:00
Anton Volnuhin
bfafb03296 switch tide to plttn/tide@v7, as my fix was merged in there 2026-04-05 19:42:28 +03:00
Anton Volnuhin
118666409d new tide config, cmd+N for kitty, slightly bigger font in kitty 2026-04-05 19:36:34 +03:00
Anton Volnuhin
556f26441e Modernize Neovim treesitter bootstrap 2026-03-31 01:45:02 +03:00
Anton Volnuhin
fe659f4386 mosh wrapper for kitty with forked mosh 2026-03-31 01:04:13 +03:00
Anton Volnuhin
d141d480bc remove missing git credential manager helper 2026-03-28 13:26:39 +03:00
Anton Volnuhin
074c8732f2 more tmux copy mode configs: v starts selection, square back to C-v 2026-03-28 13:25:59 +03:00
Anton Volnuhin
1fccc1e05e tmux configuration update for colors, copy and shift-enter 2026-03-28 13:25:59 +03:00
Anton Volnuhin
ce547fe18d skip atuin init when encryption key is missing or empty
Prevents panic on fresh installs where atuin has no key yet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:46:16 +03:00
Anton Volnuhin
3a429fa4b7 upgrade fish shell repos from 3.x to 4.x for Ubuntu and Debian
Fish 4.x is needed for puffer-fish plugin compatibility
(commandline --search-field).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:41:39 +03:00
Anton Volnuhin
948d862bb6 scroll past env.lat output before starting TUI
When running via env.lat, push the cursor to the bottom of the screen
before print_block sets up the TUI, so we don't overwrite env.lat output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:23:52 +03:00
Anton Volnuhin
95c88c3ce1 add tide-reset function, fix treesitter config for stable nvim
Extract tide configuration into a reusable fish function (tide-reset)
and call it from the chezmoi onchange script. Also revert treesitter
config to the stable API (nvim-treesitter.configs).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:13:21 +03:00
Anton Volnuhin
dfdd5b7dae fix Tide context in OrbStack: set SSH_TTY when SSH_CONNECTION is present
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:39:59 +03:00
Anton Volnuhin
07a50ab0a3 add .gitignore to exclude nvimlog and pycache from repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:30:32 +03:00
Anton Volnuhin
1181ef68ad revert to last working env.lat integration
Restore the dotfiles script to the state before the fold/exec
experiments that broke TUI formatting and Ctrl-C handling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:25:30 +03:00
Anton Volnuhin
34fbf49eca simplify: remove env.lat step tracking from dotfiles script
The extra step counting and summary pre-fill was causing scroll region
calculation issues. Keep ENVLAT only for TTY detection bypass.
env.lat now uses exec and quiet flags instead of piping.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:22:20 +03:00
Anton Volnuhin
411bb8604b remove ENVLAT_END sentinel, no longer needed
env.lat now splits chezmoi init (piped through pad) from chezmoi
apply (runs directly on terminal). The dotfiles script gets direct
terminal access so its TUI formatting works correctly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:16:44 +03:00
Anton Volnuhin
7509fa4440 gate env.lat summary steps on ENVLAT env var
Only add the 2 bootstrap steps (prerequisites, chezmoi install) to
the summary block when running via env.lat. Direct chezmoi apply
keeps original step counts and starts from step 1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:08:36 +03:00
Anton Volnuhin
4f49ec9f80 include env.lat bootstrap steps in summary block
Add the two env.lat steps (Installing prerequisites, Installing
dotfiles via chezmoi) as pre-completed entries in the bottom summary.
STEPS counts increased by 2, STEP starts at 3.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:07:35 +03:00
Anton Volnuhin
2e30824131 respect ENVLAT env var for TTY detection through pipe
When running via env.lat, stdout is piped through pad() but a real
terminal is behind it. The ENVLAT=1 env var tells the dotfiles script
to use interactive formatting despite the pipe.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:18:09 +03:00
Anton Volnuhin
fa3bb7b780 add env.lat sentinel to hand off formatting from bootstrap to chezmoi
env.lat pads chezmoi download/clone output in gray. When the dotfiles
script starts, it emits ##ENVLAT_END## which tells env.lat's pad() to
switch to pass-through, letting the script use its own formatting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:14:56 +03:00
Anton Volnuhin
e54f9d6dfb move welcome banner from chezmoi script to env.lat bootstrap
The banner with "Press Enter to continue" now shows early in env.lat,
right after installing prerequisites and terminfo but before cloning
chezmoi. Removes unused ASSUME_YES flag from the chezmoi script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:50:28 +03:00
Anton Volnuhin
63c58c96be refactor nvim bootstrap into nvim_run helper function
Extract repeated TERM=dumb/timeout/ANSI-stripping/pad boilerplate
into a reusable function. Each call now just specifies the wait time
and the nvim command to run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:39:48 +03:00
Anton Volnuhin
857aa4ff2e fix tic warning output and nvim padding issues
- Pipe tic stderr through pad so ghostty terminfo warning is formatted
- Strip all ANSI escapes (not just colors) and carriage returns from
  nvim output so every line goes through pad correctly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:25:13 +03:00
Anton Volnuhin
fb5964d64b fix ANSI stripping: use printf literal ESC for BSD sed compatibility
BSD sed doesn't support \x1b hex escapes. Using $(printf '\033') to
generate a literal ESC character that BSD sed can match.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:10:25 +03:00
Anton Volnuhin
bab6e3d97a fix nvim headless output: use TERM=dumb instead of sed ANSI stripping
BSD sed doesn't support \x1b hex escapes, so the previous approach
didn't actually strip color codes on OpenBSD.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:58:51 +03:00
Anton Volnuhin
43cc9ba1bd fix neovim headless output: strip ANSI colors, fix MasonUpdate error
- Strip ANSI escape codes from nvim headless output via sed so
  non-interactive mode shows clean text instead of raw color codes
- Change mason.nvim build hook from ":MasonUpdate" string to pcall()
  function to prevent E492 error on first install when Mason isn't
  loaded yet

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:33:16 +03:00
Anton Volnuhin
07d0caa733 improve OpenBSD installer output and fix neovim headless errors
- Add -v flag to pkg_add calls for verbose download/install progress
- Wrap Mason commands in pcall() to handle plugin not yet loaded
- Increase nvim headless timeout to 120s (ARM64 is slower)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:45:02 +03:00
Anton Volnuhin
d59f8f3e1b skip shell-gpt on OpenBSD, remove rust package
Rust compilation of pydantic-core/jiter takes 20+ minutes on ARM64
and the small root partition can't handle it. shell-gpt is not
essential for the OpenBSD test environment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:25:41 +03:00
Anton Volnuhin
bdda5794c1 show verbose output for shell-gpt install on OpenBSD
Rust compilation of jiter/pydantic-core takes 20+ minutes on ARM64.
Without verbose output the install appears to hang.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:09:38 +03:00
Anton Volnuhin
d85bf1b8fe fix OpenBSD installer: disambiguate fish, add Rust for shell-gpt
- Use fish%main branch selector to install fish 4.x (avoids 3.x/4.x ambiguity)
- Add rust package so jiter/pydantic-core can compile from source
- Redirect pipx/cargo/pip temp dirs to /tmp on OpenBSD (root partition too small)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 17:52:38 +03:00
Anton Volnuhin
63346456dc add gcc back to OpenBSD package list
Use gcc%11 to select GCC 11 and avoid ambiguity between versions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 12:28:01 +03:00
Anton Volnuhin
08c1ccef32 fix OpenBSD package list: disambiguate flavors, remove unavailable
Remove atuin (not in 7.5), tmux (in base), gcc (unnecessary).
Use -- suffix to select default flavor for ambiguous packages:
unzip, nnn, mtr.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 03:07:01 +03:00
Anton Volnuhin
b957dc3c90 fix $SUDO detection: skip when root, check doas.conf exists
On OpenBSD the doas binary exists but /etc/doas.conf may not, causing
'doas is not enabled' errors. Now checks: root → no sudo needed,
doas + config exists → use doas, sudo available → use sudo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:58:09 +03:00
Anton Volnuhin
9af745427e fall back to xterm-256color when terminfo is missing
Replace hardcoded kitty TERM hack with a generic check: if the current
TERM's terminfo isn't installed yet, fall back to xterm-256color. The
proper terminfo gets installed later in the script. Fixes tput errors
when SSHing from Ghostty/kitty into fresh machines.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:39:31 +03:00
Anton Volnuhin
748de2400d add OpenBSD support to installer
Uses pkg_add for package management with doas (default on OpenBSD).
Packages available natively: fish, neovim, atuin, fd, ripgrep, bat,
fzf, htop, jq, nnn, tmux, mc, ngrep, mtr, gcc, direnv, py3-pipx.
Not available: lazygit, nethogs, jump, skim, dust.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:37:01 +03:00
Anton Volnuhin
5c032ce1b9 skip neovim bootstrap in non-interactive mode
Headless nvim plugin/LSP install doesn't work well without a proper
terminal. Auto-skip it alongside non-interactive TUI detection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:23:50 +03:00
Anton Volnuhin
d6d47411e8 rename nixpkgs.du-dust to nixpkgs.dust
The du-dust package was renamed to dust in nixpkgs and the old name
now throws an error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:15:08 +03:00
Anton Volnuhin
a7f938591b auto-detect non-interactive mode when no terminal is present
chezmoi run_onchange scripts don't receive CLI arguments, so the
--non-interactive flag only works when running the script directly.
Now also checks if stdin/stdout are real terminals to auto-detect
non-interactive contexts like Vagrant provisioning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:48:07 +03:00
Anton Volnuhin
3e53d99ad2 fix non-interactive mode: skip TUI and use simple output
The fancy cursor-positioning TUI (get_line, print_block, tput) fails in
non-interactive contexts like Vagrant provisioning where there's no real
terminal. Now when --non-interactive is passed, uses simple echo-based
output instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:42:45 +03:00
Anton Volnuhin
5104a5313b fix chezmoi template escaping in embedded ghostty terminfo
The acsc capability contains literal {{||}} which chezmoi's Go template
engine tries to parse. Escape with {{ "{{" }} and {{ "}}" }} syntax.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:35:48 +03:00
Anton Volnuhin
e498f52252 add ghostty terminfo installation to all supported platforms
Embeds the xterm-ghostty terminfo definition directly in the installer
and compiles it via tic when not already present. On Arch, uses the
ghostty-terminfo package from official repos instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:32:40 +03:00
Anton Volnuhin
80bb0e07cf migrate treesitter to new API, fix tide script ordering
- Replace removed require('nvim-treesitter.configs').setup with new
  require('nvim-treesitter').setup() + .install() API
- Rename tide configure script so it sorts after the main installer
  (configure_tide → z_configure_tide), fixing fresh installs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:46:43 +03:00
Anton Volnuhin
3686b429f2 add doas support for FreeBSD, use $SUDO throughout installer
Detect doas/sudo at startup and use $SUDO variable for all
privilege escalation commands. Prefers doas when available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:39:52 +03:00
Anton Volnuhin
1c7bbf7f71 fix tide v7 configure: replace --transient flag with fish variable
--transient was removed from tide configure in v7, now controlled
via tide_prompt_transient_enabled universal variable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:06:46 +03:00
Anton Volnuhin
dfafc9bd9b split tide config into separate chezmoi script, fix context display
- Extract tide prompt configuration from heavy installer into its own
  lightweight run_onchange script keyed to fish_plugins hash
- Remove tide_context_always_display (only show user@host in SSH)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:03:20 +03:00