nixfiles/home/c/programs/tmux/default.nix
2025-09-16 17:04:22 +01:00

65 lines
1.6 KiB
Nix

{
pkgs,
cLib,
...
}: let
getProgFor = cLib.getProgFor pkgs;
tmux = getProgFor "tmux";
getProgFor' = cLib.getProgFor pkgs.scenics;
tmux-githop = getProgFor' "tmux-githop";
in {
programs.tmux = {
enable = true;
shortcut = "x";
baseIndex = 0;
escapeTime = 0;
clock24 = true;
mouse = true;
plugins = with pkgs.tmuxPlugins; [
sensible
yank
{
plugin = onedark-theme.overrideAttrs (_: {
patches = [./bar.patch];
});
extraConfig = "\n";
}
{
plugin = resurrect;
extraConfig = ''
set -g @resurrect-capture-pane-contents 'off'
'';
}
{
plugin = continuum;
extraConfig = ''
set -g @continuum-restore 'on'
set -g @continuum-boot 'off'
set -g @continuum-save-interval '10'
'';
}
];
extraConfig = ''
set-option -g status-position top
set-option -g default-terminal "tmux-256color"
set-option -sa terminal-features ',xterm-256color:RGB'
set-window-option -g mode-keys vi
bind / split-window -h -c "#{pane_current_path}"
bind \\ split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
bind-key -r s run-shell "${tmux} display-popup -E '${tmux-githop} -s -y'"
bind-key -r f run-shell "${tmux} display-popup -E '${tmux-githop} -p -y'"
bind-key -r m run-shell "${tmux} switch-client -t main"
bind S choose-tree
bind -r k select-pane -U
bind -r j select-pane -D
bind -r h select-pane -L
bind -r l select-pane -R
'';
};
}