{
  pkgs,
  config,
  lib,
  ...
}:
with lib;
let
  cfg = config.eboskma.programs.tmux;
in
{
  options.eboskma.programs.tmux = {
    enable = mkEnableOption "enable tmux";
  };

  config = mkIf cfg.enable {
    programs.tmux = {
      enable = true;
      prefix = "C-a";
      terminal = "tmux-256color";
      clock24 = true;
      baseIndex = 1;
      keyMode = "emacs";
      plugins = with pkgs.tmuxPlugins; [
        sensible
        tmux-fzf
        {
          plugin = catppuccin;
          extraConfig = ''
            set -g @catppuccin_window_left_separator "█"
            set -g @catppuccin_window_right_separator "█ "
            set -g @catppuccin_window_number_position "right"
            set -g @catppuccin_window_middle_separator "  █"

            set -g @catppuccin_window_default_fill "number"

            set -g @catppuccin_window_current_fill "number"
            set -g @catppuccin_window_current_text "#{pane_current_path}"

            set -g @catppuccin_status_modules_right "application session date_time"
            set -g @catppuccin_status_left_separator  ""
            set -g @catppuccin_status_right_separator " "
            set -g @catppuccin_status_right_separator_inverse "yes"
            set -g @catppuccin_status_fill "all"
            set -g @catppuccin_status_connect_separator "no"
          '';
        }
        # {
        #   plugin = dracula;
        #   extraConfig = ''
        #     set -g @dracula-refresh-rate 10
        #     set -g @dracula-show-powerline true
        #     set -g @dracula-show-fahrenheit false
        #     set -g @dracula-show-left-icon session
        #     set -g @dracula-network-bandwith "enp4s0"
        #     set -g @dracula-military-time true
        #     set -g @dracula-day-month true
        #     set -g @dracula-plugins "time cpu-usage ram-usage network network-bandwith"
        #   '';
        # }
      ];

      extraConfig = ''
        setw -g automatic-rename

        set -ag update-environment "SWAYSOCK"

        bind-key r source ~/.config/tmux/tmux.conf \; display "Reloaded config."

        bind-key C-a send-prefix

        bind-key | split-window -h -c "#{pane_current_path}"
        bind-key - split-window -v -c "#{pane_current_path}"
        bind-key c new-window -c "#{pane_current_path}"

        bind-key h select-pane -L
        bind-key n select-pane -D
        bind-key e select-pane -U
        bind-key i select-pane -R

        bind-key -r C-h select-window -t :-
        bind-key -r C-i select-window -t :+

        bind-key -r H resize-pane -L 5
        bind-key -r N resize-pane -D 5
        bind-key -r E resize-pane -U 5
        bind-key -r I resize-pane -R 5

        bind-key C-[ swap-window -t -1
        bind-key C-] swap-window -t +1

        bind-key    -T copy-mode-vi h                    send-keys -X cursor-left
        bind-key    -T copy-mode-vi n                    send-keys -X cursor-down
        bind-key    -T copy-mode-vi e                    send-keys -X cursor-up
        bind-key    -T copy-mode-vi i                    send-keys -X cursor-right

        set -g mouse on
        bind-key -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
        bind-key -n WheelDownPane select-pane -t= \; send-keys -M
      '';
    };

    home.packages = with pkgs; [
      python3Packages.powerline
      bc
    ];
  };
}