Skip to content

provision: kitty desktop integration; pinned rust + source-built tree-sitter CLI#5

Open
krishna-bala wants to merge 2 commits into
mainfrom
claude/dotfile-system-critique-0hpl5e
Open

provision: kitty desktop integration; pinned rust + source-built tree-sitter CLI#5
krishna-bala wants to merge 2 commits into
mainfrom
claude/dotfile-system-critique-0hpl5e

Conversation

@krishna-bala

@krishna-bala krishna-bala commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Two provisioning follow-ups to #4.

kitty desktop integration

#4 installed the kitty bundle and bin symlinks but skipped the desktop-integration steps from kitty's install docs. The kitty install block now also:

  • Copies kitty.desktop and kitty-open.desktop into ~/.local/share/applications/, rewriting Exec= and Icon= to the bundle's absolute paths. The shipped entries assume kitty is on the system-wide PATH, which launchers spawned outside a login shell can't rely on. Both Exec variants are rewritten, including kitty +open %U.
  • Writes kitty.desktop to ~/.config/xdg-terminals.list so xdg-terminal-exec (and desktop environments that support it) use kitty.

The ln -sf step from the docs was already covered by install_release_bundle. The generated files embed $HOME, so they belong to provisioning rather than dotbot symlinks, keeping the repo's no-templating rule.

pinned rust toolchain + source-built tree-sitter CLI

Fixes the fresh-machine nvim failure where every parser install died with tree-sitter: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.39' not found. Root cause: nvim-treesitter (main) requires the tree-sitter CLI >= 0.26.1, and every upstream prebuilt since 0.25.0 is compiled on Ubuntu 24.04 runners (glibc 2.39), so no official prebuilt can run on 22.04 (glibc 2.35).

The CLI is therefore built from source at a pinned version: rustup-init downloaded at a pinned version and verified against rust-lang.org's published sha256, a pinned toolchain (1.96.1; rustup verifies its own signed manifests), then cargo install tree-sitter-cli --version 0.26.10 --locked with every crate checksummed against the crates.io registry. Built against the local glibc, the same pinned version runs on both 22.04 and 24.04.

bashrc has always sourced ~/.cargo/env with the comment "cargo is used in nvim via mason", so a rust toolchain was already an unprovisioned assumption of this setup; it is now pinned and provisioned like everything else. rustup-init runs with --no-modify-path so it can never edit the repo-symlinked shell files.

Verified separately: the nvim, kitty, lsd, and glab artifacts this repo pins need at most glibc 2.34, so all pinned binaries are 22.04-safe; the tree-sitter CLI was the only glibc-2.39 dependency.

Test plan

  • kitty integration replayed against a scratch $HOME with the real 0.47.4 bundle: both .desktop files land with absolute Exec/Icon paths, the referenced icon exists, xdg-terminals.list contains kitty.desktop.
  • rust/tree-sitter recipe run end-to-end in a scratch CARGO_HOME: rustup 1.29.0 sha256 verified, rust 1.96.1 installed, tree-sitter-cli 0.26.10 built from source in under 2 minutes and reports its pinned version.
  • shellcheck -S warning clean.
  • Note for the 22.04 machine: if the broken glibc-2.39 tree-sitter came from mason or a manual install, remove that copy (e.g. :MasonUninstall tree-sitter-cli or delete the binary) so the cargo-built one on PATH wins inside nvim.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SnU9EQrAZfjjhTTTt1PFAr

claude added 2 commits July 2, 2026 19:24
Per kitty's install docs: copy kitty.desktop and kitty-open.desktop
into ~/.local/share/applications with Exec/Icon rewritten to the
bundle's absolute paths (the shipped entries assume kitty is on the
system PATH), and register kitty for xdg-terminal-exec via
~/.config/xdg-terminals.list. Generated by provisioning rather than
symlinked by dotbot because the paths embed $HOME.
nvim-treesitter (main branch) requires the tree-sitter CLI >= 0.26.1,
but every upstream prebuilt since 0.25.0 is compiled on Ubuntu 24.04
runners and dies on 22.04 with:

    tree-sitter: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.39'
    not found (required by tree-sitter)

No official prebuilt can satisfy both machines, so the CLI is built
from source at a pinned version instead: rustup-init is downloaded at
a pinned version and verified against rust-lang.org's published
sha256, installs a pinned toolchain (rustup verifies its own signed
manifests), and cargo install --locked builds tree-sitter-cli with
every crate checksummed against the crates.io registry. Built against
the local glibc, the same pinned version runs on 22.04 and 24.04.

bashrc has always sourced ~/.cargo/env ('cargo is used in nvim via
mason'), so a rust toolchain was already an unprovisioned assumption
of this setup; it is now pinned and provisioned like everything else.
rustup-init runs with --no-modify-path so it can never edit the
repo-symlinked shell files.

Validated end-to-end in a scratch CARGO_HOME: rustup 1.29.0 sha256
verified, rust 1.96.1 installed, tree-sitter-cli 0.26.10 built in
under 2 minutes and reports its pinned version.
@krishna-bala krishna-bala changed the title provision: add kitty desktop integration provision: kitty desktop integration; pinned rust + source-built tree-sitter CLI Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants