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" 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/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 acaca49..2446db9 100755 --- a/test.sh +++ b/test.sh @@ -97,9 +97,11 @@ 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" +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