Tmux configuration defaults with Nix Home Manager

When enabling the tmux program, Home manager creates the following configuration:

cat ~/.config/tmux/tmux.conf
# ============================================= #
# Start with defaults from the Sensible plugin  #
# --------------------------------------------- #
run-shell /nix/store/j1g9s4wyq38gjrxp1jic360s5vscr7kf-tmuxplugin-sensible-unstable-2017-09-05/share/tmux-plugins/sensible/sensible.tmux
# ============================================= #

set  -g default-terminal "screen"
set  -g base-index      0
setw -g pane-base-index 0





set -g status-keys emacs
set -g mode-keys   emacs







setw -g aggressive-resize off
setw -g clock-mode-style  12
set  -s escape-time       500
set  -g history-limit     2000

Including tmux-sensible is reasonable, but unneeded. I’ve been doing fine on vanilla tmux for years, with just an updated escape-time. To remove that, unset sensibleOnTop:

programs.tmux = {
  enable = true;
  sensibleOnTop = false;
};

This leaves the following tmux.conf which still overrides some of tmux’s options for backwards compatibility, I presume:

cat ~/.config/tmux/tmux.conf

set  -g default-terminal "screen"
set  -g base-index      0
setw -g pane-base-index 0





set -g status-keys emacs
set -g mode-keys   emacs







setw -g aggressive-resize off
setw -g clock-mode-style  12
set  -s escape-time       500
set  -g history-limit     2000

I’d prefer to have an empty configuration file to start with1, but I haven’t found a way to do that yet.


  1. For example, tmux’s default value for the default-terminal option is tmux-256color but Home Manager sets it to screen. I don’t know what that option does, so I’d rather have it set to whatever tmux thinks is a good default so I don’t have to figure that out.

    ↩︎