| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- { pkgs
- , config
- , inputs
- , lib
- , ...
- }:
- let
- isDarwin = pkgs.stdenv.isDarwin;
- reattach-to-user-namespace = lib.getExe' pkgs.reattach-to-user-namespace "reattach-to-user-namespace";
- lazygit = lib.getExe pkgs.lazygit;
- shell = lib.getExe config.programs.fish.package;
- in
- {
- home.packages = with pkgs; [ eza ];
- programs.tmux = {
- sensibleOnTop = true;
- baseIndex = 1;
- clock24 = true;
- enable = true;
- escapeTime = 10;
- keyMode = "vi";
- mouse = true;
- prefix = "C-Space";
- shell = "${lib.getExe config.programs.fish.package}";
- terminal = "tmux-256color";
- plugins = with pkgs.tmuxPlugins; [
- tmux-select-pane-no-wrap
- vim-tmux-navigator
- yank
- {
- plugin = inputs.sessionx.packages.${pkgs.system}.default;
- extraConfig = ''
- set -g @sessionx-x-path '/Users/thomas/workspace/control/home'
- set -g @sessionx-custom-paths '/Users/thomas/workspace'
- set -g @sessionx-custom-paths-subdirectories true
- set -g @sessionx-custom-paths-subdirectories-depth 2
- set -g @sessionx-name-template '{-2}/{-1}'
- set -g @sessionx-startup-command '${builtins.concatStringsSep " && " [
- "tmux new-window -n ai -t {session}"
- "tmux rename-window -t {session}:1 editor"
- "tmux send-keys -t {session}:editor \"nvim\" Enter"
- "tmux send-keys -t {session}:ai \"nix shell nixpkgs#gemini-cli\" Enter"
- "tmux send-keys -t {session}:ai \"gemini\" Enter"
- "tmux select-window -t {session}:editor"
- ]}'
- set -g @sessionx-fzf-builtin-tmux 'off'
- '';
- }
- {
- plugin = kanagawa;
- extraConfig = ''
- set -g status-position top
- set -g @kanagawa-theme 'dragon'
- set -g @kanagawa-refresh-rate 60
- set -g @kanagawa-show-left-icon window
- set -g @kanagawa-show-battery true
- set -g @kanagawa-show-powerline true
- # set -g @kanagawa-show-left-sep
- # set -g @kanagawa-show-right-sep
- # set -g @kanagawa-show-left-sep
- # set -g @kanagawa-show-right-sep
- # set -g @kanagawa-show-left-sep
- # set -g @kanagawa-show-right-sep
- # set -g @kanagawa-show-left-sep
- # set -g @kanagawa-show-right-sep
- set -g @kanagawa-show-left-sep
- set -g @kanagawa-show-right-sep
- set -g @kanagawa-show-location false
- set -g @kanagawa-ignore-window-colors true
- '';
- }
- ];
- extraConfig = ''
- ${lib.optionalString isDarwin ''
- # sensible plugin assumes $SHELL is /bin/sh
- # --- Darwin-Specific Settings (Raw Tmux Commands) ---
- # This block is only included if the system is Darwin
- set-option -g default-command "${reattach-to-user-namespace} -l $SHELL"
- ''}
- # split windows on the current path
- unbind %
- unbind '"'
- bind-key % split-window -h -c '#{pane_current_path}'
- bind-key '"' split-window -v -c '#{pane_current_path}'
- # resize pane with vim motion keys
- bind-key -r h resize-pane -L 1
- bind-key -r l resize-pane -R 1
- bind-key -r j resize-pane -D 1
- bind-key -r k resize-pane -U 1
- # move between tmux windows
- bind-key -n C-e select-window -t :1
- bind-key -n C-a select-window -t :2
- # some display popups
- bind-key -n C-g display-popup -d "#{pane_current_path}" -w 80% -h 80% -E "${lazygit}"
- bind-key -n C-t display-popup -d "#{pane_current_path}" -w 75% -h 75% -E "${shell}"
- '';
- };
- }
|