52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
let
|
|
inherit (lib) getExe optionalString;
|
|
|
|
cfg = config.snowhawk.tmux;
|
|
sessionizer = cfg.sessionizer;
|
|
in
|
|
{
|
|
options.snowhawk.tmux = {
|
|
enable = lib.mkEnableOption "tmux";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
programs.tmux = {
|
|
enable = true;
|
|
shell = getExe pkgs.fish;
|
|
mouse = true;
|
|
baseIndex = 1;
|
|
terminal = "screen-256color";
|
|
newSession = true;
|
|
escapeTime = 0;
|
|
|
|
plugins = with pkgs; [
|
|
{
|
|
plugin = tmuxPlugins.rose-pine;
|
|
extraConfig = ''
|
|
set -g @rose_pine_variant 'main' # Options are 'main', 'moon' or 'dawn'
|
|
set -g @rose_pine_host 'on'
|
|
set -g @rose_pine_date_time '%c' # %c is a good value but
|
|
'';
|
|
}
|
|
{ plugin = tmuxPlugins.vim-tmux-navigator; }
|
|
];
|
|
|
|
extraConfig = ''
|
|
set-option -g renumber-windows on
|
|
set-option -g focus-events on
|
|
|
|
bind '"' split-window -v -c "#{pane_current_path}"
|
|
bind % split-window -h -c "#{pane_current_path}"
|
|
'' + optionalString sessionizer.enable ''
|
|
bind-key -r f run-shell "tmux neww ${getExe sessionizer.pkg}"
|
|
'';
|
|
};
|
|
|
|
programs.fish.shellAbbrs = {
|
|
a = "tmux a";
|
|
};
|
|
};
|
|
}
|