sync live config changes into chezmoi source

Re-add live edits:
- fish: gpt-5.2 model, llm.py, rewritten s/icat with ghostty support,
  new ils function, bass plugin, removed copilot-cli plugin
- karabiner: ghostty/moonlight/rdp apps, new caps rules, opt-W shortcut
- kitty: cursor_trail, font_size 14.5
- nvim: removed auto-session-nvim-tree, auto-session config update
- wezterm: scrollback 1M, border_top 2cell
- tmux-nova: local nerdfonts rendering patches
- zshrc: track file, includes LM Studio PATH

Also fix: chezmoi template error on macOS (osRelease.id without linux guard)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Anton Volnuhin 2026-03-02 18:40:51 +03:00
parent f03b8e90b2
commit dfb97eb1d0
7 changed files with 201 additions and 33 deletions

View File

@ -63,6 +63,7 @@ status_style_bg=$(get_option "@nova-status-style-bg" "#44475a")
status_style_fg=$(get_option "@nova-status-style-fg" "#f8f8f2")
status_style_active_bg=$(get_option "@nova-status-style-active-bg" "#6272a4")
status_style_active_fg=$(get_option "@nova-status-style-active-fg" "#f8f8f2")
status_style_activity_fg=$(get_option "@nova-status-activity-fg" "#ff79C6")
tmux set-option -g status-style "bg=$status_style_bg,fg=$status_style_fg"
#
@ -84,6 +85,7 @@ IFS=' ' read -r -a segments_left <<< $segments_left
tmux set-option -g status-left ""
first_left_segment=true
first_left_nerdfont=$(get_option "@nova-nerdfonts-first" "")
for segment in "${segments_left[@]}"; do
segment_content=$(get_option "@nova-segment-$segment" "mode")
segment_colors=$(get_option "@nova-segment-$segment-colors" "#282a36 #f8f8f2")
@ -92,6 +94,11 @@ for segment in "${segments_left[@]}"; do
# condition everything on the non emptiness of the evaluated segment
tmux set-option -ga status-left "#{?#{w:#{E:@nova-segment-$segment}},"
if [ $nerdfonts = true ] && [ $first_left_segment = true ]; then
tmux set-option -ga status-left "#[fg=${segment_colors[0]}#,bg=${segment_colors[1]}]"
tmux set-option -ga status-left "$first_left_nerdfont"
fi
if [ $nerdfonts = true ] && [ $first_left_segment = false ]; then
tmux set-option -ga status-left "#[bg=${segment_colors[0]}]"
tmux set-option -ga status-left "$nerdfonts_left"
@ -129,10 +136,23 @@ if [ $nerdfonts = true ]; then
tmux set-window-option -ga window-status-current-format "$nerdfonts_left"
fi
tmux set-window-option -g window-status-format "#[fg=$status_style_fg]#[bg=$status_style_bg]"
tmux set-window-option -ga window-status-format "$(padding $padding)"
tmux set-window-option -g window-status-format "#{?window_activity_flag,"
tmux set-window-option -ga window-status-format "#[bg=$status_style_activity_fg#,fg=$status_style_bg],"
tmux set-window-option -ga window-status-format "#[fg=$status_style_fg#,bg=$status_style_bg]}"
if [ $nerdfonts = true ]; then
tmux set-window-option -ga window-status-format "$(padding $(($padding + 1)))"
else
tmux set-window-option -ga window-status-format "$(padding $padding)"
fi
tmux set-window-option -ga window-status-format "$pane"
tmux set-window-option -ga window-status-format "$(padding $padding)"
if [ $nerdfonts = true ]; then
tmux set-window-option -ga window-status-format "$(padding $(($padding + 1)))"
else
tmux set-window-option -ga window-status-format "$(padding $padding)"
fi
if [ $nerdfonts = true ]; then
tmux set-window-option -ga window-status-current-format "#[fg=${status_style_active_fg}]#[bg=${status_style_active_bg}]"
@ -156,6 +176,9 @@ fi
segments_right=$(get_option "@nova-segments-0-right" "")
IFS=' ' read -r -a segments_right <<< $segments_right
last_right_nerdfont=$(get_option "@nova-nerdfonts-last" "")
last_segment=${segments_right[${#segments_right[@]}-1]}
tmux set-option -g status-right ""
for segment in "${segments_right[@]}"; do
@ -180,6 +203,11 @@ for segment in "${segments_right[@]}"; do
tmux set-option -ga status-right "$segment_content"
tmux set-option -ga status-right "$(padding $padding)"
if [ $nerdfonts = true ] && [ $segment = $last_segment ]; then
tmux set-option -ga status-right "#[fg=${segment_colors[0]}#,bg=${segment_colors[1]}]"
tmux set-option -ga status-right "$last_right_nerdfont"
fi
# set the bg color for the next nerdfonts seperator
[ $nerdfonts = true ] && tmux set-option -ga status-right "#[bg=${segment_colors[0]}]"
@ -206,7 +234,7 @@ for ((row=1; row <= rows; row++)); do
segment_colors=$(get_option "@nova-segment-$segment-colors" "#282a36 #f8f8f2")
IFS=' ' read -r -a segment_colors <<< $segment_colors
if [ "$segment_content" != "" ]; then
if [ $nerdfonts = true ] && [ "$(tmux show-option -gqv status-format[$row])" != "#[align=left]"]; then
if [ $nerdfonts = true ] && [[ "$(tmux show-option -gqv status-format[$row])" != *"#[align=left]" ]]; then
tmux set-option -ga status-format[$row] "#[fg=${nerdfonts_color},bg=#${segment_colors[0]}]"
tmux set-option -ga status-format[$row] "$nerdfonts_left"
fi

136
dot_zshrc Normal file
View File

@ -0,0 +1,136 @@
autoload -Uz compinit && compinit # keep this near the top
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="robbyrussell"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='nvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch $(uname -m)"
# Set personal aliases, overriding those provided by Oh My Zsh libs,
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
# users are encouraged to define aliases within a top-level file in
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
# - $ZSH_CUSTOM/aliases.zsh
# - $ZSH_CUSTOM/macos.zsh
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
source /opt/homebrew/share/powerlevel10k/powerlevel10k.zsh-theme
# Fish-style “ghost” history hints
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
# Real-time colourising (must be *last*)
source $(brew --prefix)/opt/zsh-fast-syntax-highlighting/share/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
eval "$(atuin init zsh --disable-up-arrow)"
# Added by LM Studio CLI (lms)
export PATH="$PATH:/Users/anton/.cache/lm-studio/bin"
# End of LM Studio CLI section

View File

@ -12,6 +12,7 @@
:arc ["^company\\.thebrowser\\.Browser$"]
:kitty ["^net\\.kovidgoyal\\.kitty$"]
:wezterm ["^com.github.wez.wezterm$"]
:ghostty ["^com.mitchellh.ghostty$"]
:webapp ["^com\\.apple\\.Safari\\.WebApp\\..+$"]
:perplexity ["^ai\\.perplexity\\.mac$"]
:gemini ["^com\\.apple\\.Safari\\.WebApp\\.1550A740-0D4C-4C62-BA9B-438AA340471C$"]
@ -29,7 +30,9 @@
:dataspell ["^com\\.jetbrains\\.dataspell$"]
:vikunja ["^com\\.Unite\\.Vikunja$"]
:tana ["^inc\\.tana\\.desktop$"]
:gfn ["^com\\.nvidia\\.gfnpc\\.mall$"]}
:gfn ["^com\\.nvidia\\.gfnpc\\.mall$"]
:moonlight ["^com\\.moonlight-stream\\.Moonlight$"]
:rdp ["^com\\.microsoft\\.rdc$"]}
:input-sources {:en {:language "en"}
:ru {:language "ru"}}
@ -71,7 +74,7 @@
{:des "Alternative language switches: Lcmd->English, Rcmd->Russian, Rshift-> Russian"
:rules [[:left_command :left_command nil {:alone {:input :en}}]
:rules [:!moonlight [:left_command :left_command nil {:alone {:input :en}}]
[:right_command :right_command nil {:alone {:input :ru}}]
;; [:right_shift :right_shift nil {:alone {:input :ru}}]
[:!Qt [:!Qt {:input :en}]]
@ -81,13 +84,21 @@
;; [:!Ctab [:!Ctab {:input :en}]]
]}
{:des "Caps->Russian, LShift->English"
:rules [[:##caps_lock ["capskey" 1] :ru {:alone {:input :en}
{:des "Caps switches languages"
:rules [:!moonlight [:##caps_lock ["capskey" 1] :ru {:alone {:input :en}
:afterup ["capskey" 0]}]
[:##caps_lock ["capskey" 1] :en {:alone {:input :ru}
:afterup ["capskey" 0]}]
]}
{:des "Caps switches languages"
:rules [:moonlight [:##caps_lock :!Cspacebar]
[:##caps_lock :!Cspacebar]
[:right_control :right_command]
[:left_command :left_control]
[:right_command :right_control]
]}
{:des "Tab as Hyper(⌘+⌥+^+⇧)"
:rules [:capskey
[:tab :!!Sleft_command]]}
@ -97,14 +108,16 @@
{:des "⌘W->⌘H in Tana"
:rules [:tana [:!Cw :!Ch]]}
{:des "Caps+↑, Caps+↓ to Control+Opt+arrow"
:rules [[:up_arrow :!QESup_arrow :capskey]
[:down_arrow :!QESdown_arrow :capskey]
[:1 :!QE1 :capskey]
[:2 :!QE2 :capskey]
[:4 :!!4 :capskey]
[:x :!TFf :capskey]
[:c :!TFc :capskey]
[:n :!!n :capskey]
[:!S1 :!QES1 :capskey]
[:!S2 :!QES2 :capskey]
[:!Sup_arrow :!QESm :capskey]
@ -118,22 +131,12 @@
{:des "Caps+T to start Kitty, Caps+B->Bing, Caps+G->Bard, Caps+O->Poe, Caps+P->ChatGPT4, Caps+␣->AllGPT"
:rules [:capskey
[:r [[:open "/Applications/kitty.app"] {:input :en}] :!kitty]
[:r [:!Ct {:input :en}] :kitty]
[:k [[:open "/Applications/WezTerm.app"] {:input :en}] :!wezterm]
[:k :!Ct :wezterm]
[:a [[:open "/Applications/Arc.app"] {:input :en}] :!arc]
[:a :!Ch :arc]
[:g [:open "/Users/anton/Applications/Gemini.app"] :!gemini]
[:g :!Ch :gemini]
[:k [[:open "/Applications/kitty.app"] {:input :en}] :!kitty]
[:k [:!Ct {:input :en}] :kitty]
[:r [[:open "/Applications/Ghostty.app"] {:input :en}] :!ghostty]
[:r :!Ct :ghostty]
[:t [:open "/Applications/Tana.app"] :!tana]
[:t :!Ch :tana]
[:c [:open "/Users/anton/Applications/Copilot.app"] :!copilot]
[:c :!Ch :copilot]
[:y [:open "/Applications/You.app"] :!youcom]
[:y :!Ch :youcom]
[:d [:open "/Applications/Claude.app"] :!claude]
[:d :!Ch :claude]
[:h [:open "/Applications/Heptabase.app"] :!hepta]
[:h :!Ch :hepta]
[:w [:open "/Applications/Setia Wiki.app"] :!wiki]
@ -147,8 +150,6 @@
[:l :!Ch :librechat]
; [:j [:open "/Applications/JupyterLab.app"] :!jupyter]
; [:j :!Ch :jupyter]
[:m [:open "/Applications/Meta.ai.app"] :!metaai]
[:m :!Ch :metaai]
[:v [:open "/Applications/Vikunja.app"] :!vikunja]
[:v :!Ch :vikunja]
]}
@ -156,6 +157,9 @@
{:des "⌘W->⌘H in Heptabase"
:rules [:hepta [:!Cw :!Ch]]}
{:des "opt-W->⌘H"
:rules [[:!Ow :!Ch]]}
{:des "⌘W->⌘H in Safari ChatGPT app"
:rules [:webapp [:!Cw :!Ch]]}

View File

@ -3,7 +3,7 @@ include ./theme.conf
#map ctrl+shift+f combine : show_scrollback : send_text normal,application /
map ctrl+f6 detach_window new-tab
map ctrl+f5 detach_window tab-left
cursor_trail 0
#: Fonts {{{
@ -72,7 +72,7 @@ font_features Menligaturized-Regular -liga
#font_family MesloLGS NF
shell .
allow_remote_control yes
font_size 15
font_size 14.5
#macos_thicken_font 1
text_composition_strategy 1.7 50

View File

@ -206,7 +206,6 @@ vim.keymap.set('n', '<leader>u', require('undotree').toggle, { noremap = true, s
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
local auto_session = require("auto-session")
local auto_session_nvim_tree = require("auto-session-nvim-tree")
auto_session.setup({
log_level = "error",
@ -220,7 +219,7 @@ auto_session.setup({
restore_upcoming_session = true, -- This is necessary!!
},
})
auto_session_nvim_tree.setup(auto_session)
-- require("auto-session-nvim-tree").setup(auto_session)
require('nvim-treesitter.configs').setup {
ensure_installed = { 'c','query','vimdoc','vim','bash', 'go', 'css', 'python', 'html', 'javascript', 'json', 'jsonc', 'lua', 'rust', 'typescript' },

View File

@ -11,3 +11,4 @@ jhillyerd/plugin-git
patrickf1/fzf.fish
lilyball/nix-env.fish
ilancosman/tide@v6
edc/bass

View File

@ -5,7 +5,7 @@ local wezterm = require 'wezterm'
local config = wezterm.config_builder()
local act = wezterm.action
config.scrollback_lines = 5000000
config.scrollback_lines = 1000000
config.enable_scroll_bar = false
config.default_cursor_style = 'BlinkingBar'
@ -120,7 +120,7 @@ config.window_frame = {
border_left_width = '1cell',
border_right_width = '0.5cell',
border_bottom_height = '0.25cell',
border_top_height = '1.2cell',
border_top_height = '2cell',
border_left_color = '#1c2836',
border_right_color = '#1c2836',
border_bottom_color = '#1c2836',