From 4c83ae81cb90603881c21b80688eea5f64f0a8f4 Mon Sep 17 00:00:00 2001 From: froppa <5844892+froppa@users.noreply.github.com> Date: Sat, 8 Aug 2026 23:58:16 +0200 Subject: [PATCH 1/3] feat: add reusable tmux prefix shortcut --- home/dot_config/ghostty/config.ghostty | 1 + test.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/home/dot_config/ghostty/config.ghostty b/home/dot_config/ghostty/config.ghostty index 6dc8fdd..55d5b5a 100644 --- a/home/dot_config/ghostty/config.ghostty +++ b/home/dot_config/ghostty/config.ghostty @@ -57,6 +57,7 @@ shell-integration-features = cursor,title,ssh-env,path command = direct:tmux new-session -A -s main # Raycast Hyper (Ctrl+Option+Command) to tmux prefix C-a plus command. +keybind = ctrl+alt+super+space=text:\x01 keybind = ctrl+alt+super+c=text:\x01c keybind = ctrl+alt+super+i=text:\x01| keybind = ctrl+alt+super+Slash=text:\x01- diff --git a/test.sh b/test.sh index acaca49..e07baab 100755 --- a/test.sh +++ b/test.sh @@ -97,6 +97,7 @@ grep -Fq "alias conftmux='chezmoi edit --apply ~/.config/tmux/tmux.conf'" home/d grep -Fq 'command = direct:tmux new-session -A -s main' home/dot_config/ghostty/config.ghostty || fail "Ghostty must resolve tmux through PATH" grep -Fq 'keybind = super+k=text:\x0c' home/dot_config/ghostty/config.ghostty || fail "missing tmux-aware Command-K binding" grep -Fq 'keybind = shift+enter=unbind' home/dot_config/ghostty/config.ghostty || fail "legacy Shift-Enter paste binding must be removed" +grep -Fq 'keybind = ctrl+alt+super+space=text:\x01' home/dot_config/ghostty/config.ghostty || fail "Hyper-Space must send the reusable tmux prefix" grep -Fq 'xterm-ghostty:RGB:extkeys' home/dot_config/tmux/tmux.conf || fail "Ghostty must advertise extended keys to tmux" grep -Fq 'set -s extended-keys on' home/dot_config/tmux/tmux.conf || fail "tmux must pass modified keys to Claude Code" grep -Fq 'set -g focus-events on' home/dot_config/tmux/tmux.conf || fail "tmux must pass focus events to Claude Code" From e6564840d214e64c8293a7e24a372e17868cb947 Mon Sep 17 00:00:00 2001 From: froppa <5844892+froppa@users.noreply.github.com> Date: Thu, 13 Aug 2026 20:28:41 +0200 Subject: [PATCH 2/3] fix: set tmux paste timing at session scope --- home/dot_config/tmux/tmux.conf | 2 +- test.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/home/dot_config/tmux/tmux.conf b/home/dot_config/tmux/tmux.conf index 595f9ec..ed6e75f 100644 --- a/home/dot_config/tmux/tmux.conf +++ b/home/dot_config/tmux/tmux.conf @@ -18,7 +18,7 @@ set -g set-clipboard on set -g history-limit 100000 # Ghostty Hyper bindings send the prefix and command in one write. -set -s assume-paste-time 0 +set -g assume-paste-time 0 # Vim copy mode setw -g mode-keys vi diff --git a/test.sh b/test.sh index e07baab..2446db9 100755 --- a/test.sh +++ b/test.sh @@ -101,6 +101,7 @@ grep -Fq 'keybind = ctrl+alt+super+space=text:\x01' home/dot_config/ghostty/conf grep -Fq 'xterm-ghostty:RGB:extkeys' home/dot_config/tmux/tmux.conf || fail "Ghostty must advertise extended keys to tmux" grep -Fq 'set -s extended-keys on' home/dot_config/tmux/tmux.conf || fail "tmux must pass modified keys to Claude Code" grep -Fq 'set -g focus-events on' home/dot_config/tmux/tmux.conf || fail "tmux must pass focus events to Claude Code" +grep -Fq 'set -g assume-paste-time 0' home/dot_config/tmux/tmux.conf || fail "tmux must disable paste timing as a global session option" if find home/private_dot_ssh -type f ! -name config -print -quit | grep -q .; then fail "SSH key material must not be managed" fi From b7fc6e8916377025b346c08eede277aa5d24de9d Mon Sep 17 00:00:00 2001 From: froppa <5844892+froppa@users.noreply.github.com> Date: Tue, 1 Sep 2026 21:57:31 +0200 Subject: [PATCH 3/3] feat: manage the shared build-storage settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two settings that make package managers and rustc stop duplicating work across checkouts were applied to this machine by hand and were not managed here, so a new machine would not get them. - ~/.bunfig.toml: bun installs by hardlinking from its own cache instead of copying every package into each node_modules. pnpm already does this by design; npm has no equivalent. - ~/.cargo/config.toml: rustc compiles through sccache, so a dependency crate is built once per machine rather than once per checkout. Deliberately not a shared [build] target-dir — cargo takes an exclusive lock on the directory it builds into, so one shared dir would serialise every build that runs in parallel. - sccache added to the brew list, which is the half that installs it. The wrapper is recorded as bare `sccache` rather than the absolute /opt/homebrew/bin path the machine had, so the file is not arm-mac-specific. Verified after applying: a scratch crate builds clean and sccache logs the compile requests, so the bare name resolves. --- home/.chezmoidata/40-packages.yml | 2 ++ home/dot_bunfig.toml | 6 ++++++ home/dot_cargo/config.toml | 11 +++++++++++ 3 files changed, 19 insertions(+) create mode 100644 home/dot_bunfig.toml create mode 100644 home/dot_cargo/config.toml diff --git a/home/.chezmoidata/40-packages.yml b/home/.chezmoidata/40-packages.yml index 714e977..76288e5 100644 --- a/home/.chezmoidata/40-packages.yml +++ b/home/.chezmoidata/40-packages.yml @@ -53,6 +53,8 @@ packages: - libtool - boost - pkgconf + # rustc wrapper; see ~/.cargo/config.toml + - sccache # DevOps & container tools # terraform was removed from homebrew-core (BSL license); use opentofu, diff --git a/home/dot_bunfig.toml b/home/dot_bunfig.toml new file mode 100644 index 0000000..2d24b79 --- /dev/null +++ b/home/dot_bunfig.toml @@ -0,0 +1,6 @@ +# ~/.bunfig.toml +# Managed by chezmoi — bun installs by hardlinking from its own cache instead +# of copying every package into each node_modules. Nothing else changes: the +# trees look and behave identically, they just stop being separate copies. +[install] +backend = "hardlink" diff --git a/home/dot_cargo/config.toml b/home/dot_cargo/config.toml new file mode 100644 index 0000000..1c58250 --- /dev/null +++ b/home/dot_cargo/config.toml @@ -0,0 +1,11 @@ +# ~/.cargo/config.toml +# Managed by chezmoi — rustc compiles through sccache, a cache keyed by +# compilation inputs, so the same dependency crate is built once per machine +# rather than once per checkout. +# +# Deliberately NOT a shared [build] target-dir: cargo takes an exclusive lock +# on the directory it builds into, so pointing several checkouts at one dir +# would serialise every build that runs in parallel today. sccache is safe for +# concurrent readers and writers; target dirs stay per-project. +[build] +rustc-wrapper = "sccache"