nixos-configs/common/home-manager/tmux.nix

91 lines
3.0 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let cfg = config.within.tmux;
in {
options.within.tmux = {
enable = mkEnableOption "set up tmux";
shortcut = mkOption {
type = types.str;
description = "The tmux prefix key, default is C-s";
default = "s";
example = "a";
};
};
config = mkIf cfg.enable {
programs.tmux = {
enable = true;
shortcut = cfg.shortcut;
baseIndex = 1; # Widows numbers begin with 1
keyMode = "vi";
customPaneNavigationAndResize = true;
aggressiveResize = true;
historyLimit = 100000;
resizeAmount = 5;
escapeTime = 0;
newSession = true;
extraConfig = ''
# Fix environment variables
set-option -g update-environment "SSH_AUTH_SOCK \
SSH_CONNECTION \
DISPLAY"
# Mouse works as expected
set-option -g mouse on
# Use default shell
set-option -g default-shell ''${SHELL}
# Extra Vi friendly stuff
# y and p as in vim
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
bind-key -T copy-mode-vi 'Space' send -X halfpage-down
bind-key -T copy-mode-vi 'Bspace' send -X halfpage-up
bind-key -T copy-mode-vi 'Escape' send -X cancel
# easy-to-remember split pane commands
bind v split-window -h -c "#{pane_current_path}"
bind h split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
unbind '"'
unbind %
# default statusbar color
set-option -g status-style bg=colour237,fg=colour223 # bg=bg1, fg=fg1
# default window title colors
set-window-option -g window-status-style bg=colour214,fg=colour237 # bg=yellow, fg=bg1
# default window with an activity alert
set-window-option -g window-status-activity-style bg=colour237,fg=colour248 # bg=bg1, fg=fg3
# active window title colors
set-window-option -g window-status-current-style bg=red,fg=colour237 # fg=bg1
# pane border
set-option -g pane-active-border-style fg=colour250 #fg2
set-option -g pane-border-style fg=colour237 #bg1
# message infos
set-option -g message-style bg=colour239,fg=colour223 # bg=bg2, fg=fg1
# writing commands inactive
set-option -g message-command-style bg=colour239,fg=colour223 # bg=fg3, fg=bg1
# pane number display
set-option -g display-panes-active-colour colour250 #fg2
set-option -g display-panes-colour colour237 #bg1
# clock
set-window-option -g clock-mode-colour colour109 #blue
# bell
set-window-option -g window-status-bell-style bg=colour167,fg=colour235 # bg=red, fg=bg
'';
};
};
}