From 421c6179d6d33b9ba7ef1404fc255e265488b8fe Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Fri, 17 Jul 2026 09:04:27 +0000 Subject: [PATCH] manatee: Add `tmux` module --- hosts/manatee/modules/default.nix | 1 + hosts/manatee/modules/tmux/default.nix | 71 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 hosts/manatee/modules/tmux/default.nix diff --git a/hosts/manatee/modules/default.nix b/hosts/manatee/modules/default.nix index 6287e2b..c8ce23b 100644 --- a/hosts/manatee/modules/default.nix +++ b/hosts/manatee/modules/default.nix @@ -12,6 +12,7 @@ in ssh.enable = true; git.enable = true; + tmux.enable = true; nginx.enable = true; syncthing.enable = true; diff --git a/hosts/manatee/modules/tmux/default.nix b/hosts/manatee/modules/tmux/default.nix new file mode 100644 index 0000000..aa103f2 --- /dev/null +++ b/hosts/manatee/modules/tmux/default.nix @@ -0,0 +1,71 @@ +{ + pkgs, + lib, + config, + ... +}: +let + enabled = config.mod.tmux.enable; +in +{ + options = { + mod.tmux = { + enable = lib.mkEnableOption "enable tmux module"; + }; + }; + + config = lib.mkIf enabled { + home-manager.users.alex = { + programs.tmux = { + enable = true; + + baseIndex = 1; + keyMode = "vi"; + + # Allow vi mode to be enabled instantly + escapeTime = 0; + + plugins = [ pkgs.tmuxPlugins.sensible ]; + + extraConfig = '' + set -g renumber-windows on + + # https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/ + set -g default-terminal "xterm-256color" + set -ga terminal-overrides ",*256col*:Tc" + set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[ q' + set-environment -g COLORTERM "truecolor" + + set-option -g allow-rename off + + # Remove date/time etc. on the right side + set -g status-right "" + + bind r source-file ~/.config/tmux/tmux.conf \; display "Config reloaded" + + # Remove accidental `suspend-client` triggers + unbind C-z + + bind | split-window -h -c "#{pane_current_path}" + bind - split-window -v -c "#{pane_current_path}" + + # Move panes shortcuts + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + + # Resize panes + bind -r H resize-pane -L 5 + bind -r J resize-pane -D 5 + bind -r K resize-pane -U 5 + bind -r L resize-pane -R 5 + + # Move windows + bind -r Left swap-window -t -1 \; select-window -t -1 + bind -r Right swap-window -t +1 \; select-window -t +1 + ''; + }; + }; + }; +}