nixos/user/modules/tmux/default.nix
2026-03-14 16:04:05 -04:00

44 lines
1.1 KiB
Nix

{ pkgs, lib, config, ... }:
with lib;
let
cfg = config.modules.user.tmux;
gui = config.modules.user.gui.wm;
wm = {
enable = builtins.any (mod: mod.enable or false) (builtins.attrValues gui);
};
in
{ options.modules.user.tmux = { enable = mkEnableOption "Enable tmux module"; };
config = mkIf cfg.enable {
programs.tmux = {
enable = true;
newSession = true;
disableConfirmationPrompt = true;
keyMode = "vi";
mouse = if wm.enable then true else false;
prefix = "M";
#shell = "\${pkgs.bash}/bin/bash";
plugins = with pkgs.tmuxPlugins; [
{
plugin = tilish;
extraConfig = ''
set -g @tilish-default 'tiled'
'';
}
];
extraConfig = import ./config/tmux.nix;
};
# Auto-start tmux only on local TTY (not SSH, not in tmux already)
programs.bash.profileExtra = mkIf (!wm.enable) ''
if [ -t 0 ] && [[ $- == *i* ]] && [ -z "$DISPLAY" ] && [ -z "$TMUX" ] && [ -z "$SSH_TTY" ] && [ -z "$SSH_CONNECTION" ]; then
exec tmux
fi
'';
};
}