one flake containing all of my nixos configs
{
  config,
  pkgs,
  ...
}: let
  tmuxModal = with pkgs;
    tmuxPlugins.mkTmuxPlugin rec {
      pluginName = "tmux-modal";
      version = "unstable-2022-02-19";
      src = fetchFromGitHub {
        owner = "whame";
        repo = "tmux-modal";
        rev = "5ecffca7af0950e49f47a2681c9fb07ccfb9b407";
        sha256 = "sha256-pcleS1lyJQ5qV3B3actjNHJJwly6zi50FXegFMe5Iis=";
      };
      rtpFilePath = "${pluginName}.tmux";
      meta = {
        homepage = "https://github.com/whame/tmux-modal";
        description = "A modal mode for tmux.";
        longDescription = ''
          Execute complex tmux commands in just a few keystrokes with a modal mode that is designed to be efficient,
          easy to remember and comfortable.
        '';
        license = lib.licenses.mit;
        platforms = lib.platforms.unix;
        maintainers = with lib.maintainers; [];
      };
      postInstall = ''
        sed -i -e 's|KBD_CMD=M-m|KBD_CMD=C-x |g' $target/${rtpFilePath}
        sed -i -e 's|KBD_CMD_EXIT=M-m|KBD_CMD_EXIT=C-x|g' $target/${rtpFilePath}
      '';
    };
in {
  programs.tmux = {
    enable = true;

    aggressiveResize = true;
    customPaneNavigationAndResize = true;
    disableConfirmationPrompt = true;
    escapeTime = 0;
    historyLimit = 50000;
    keyMode = "vi";
    newSession = true;
    shortcut = "Space";
    terminal = "tmux-256color";

    plugins = with pkgs; [
      tmuxPlugins.extrakto
      # tmuxModal  TODO ???
    ];

    extraConfig = builtins.readFile ./tmux.conf;
  };
}