{ pkgs, ... }:
{
    programs.tmux = {
        shell = "${pkgs.zsh}/bin/zsh";
        terminal = "screen-256color";
        enable = true;
        clock24 = true;
        shortcut = "a";
        escapeTime = 0;
        newSession = true;
        mouse = true;
        keyMode = "vi";
        plugins = [
            pkgs.tmuxPlugins.vim-tmux-navigator
            pkgs.tmuxPlugins.better-mouse-mode
            pkgs.tmuxPlugins.yank
            {
                plugin = pkgs.tmuxPlugins.catppuccin;
                extraConfig = ''
                    set -ogq @catppuccin_flavor "mocha"
                    set -ogq @catppuccin_window_status_style "rounded"
                    set -ogq @catppuccin_pane_border_style "fg=#181825"
                    set -ogq @catppuccin_pane_active_border_style "fg=#023269"
                    set -ogq @catppuccin_menu_selected_style "fg=#{@thm_gray},bg=#0F7FCF"
                    set -g @catppuccin_window_current_number_color "#0F7FCF"
                    set -g @catppuccin_window_current_text_color "#1F2430"
                    set -g @catppuccin_window_text_color "#1F2430"
                    set -g @catppuccin_window_number_color "#707072"
                    set -ogq status-right "#{E:@catppuccin_status_directory}"

                    # Make the status line pretty and add some modules
                    set -g status-right-length 100
                    set -g status-left-length 100
                    set -g status-left ""
                    set -g status-right "#{E:@catppuccin_status_application}"
                    set -ag status-right "#{E:@catppuccin_status_session}"
                '';
            }
        ];

        extraConfig = ''
            set -ag terminal-overrides ",screen-256color:Tc"
            set-window-option -g mode-keys vi
            bind-key -T copy-mode-vi 'v' send -X begin-selection
            bind-key -T copy-mode-vi 'y' send -X copy-selection

            bind | split-window -h -c "#{pane_current_path}"
            bind - split-window -v -c "#{pane_current_path}"
            bind c new-window -c "#{pane_current_path}"
            unbind '"'
            unbind %

            # Renumber windows starting from 1
            set -g base-index 1
            setw -g pane-base-index 1
            set-option -g renumber-windows on

            # Transparent bar
            set -g status-bg default
            set -g status-style "bg=default"
        '';
    };
}
