diff --git a/home-manager/opdavies/PW05CH3L.nix b/home-manager/opdavies/PW05CH3L.nix index 7ad4743b..fd76689d 100644 --- a/home-manager/opdavies/PW05CH3L.nix +++ b/home-manager/opdavies/PW05CH3L.nix @@ -13,7 +13,6 @@ notes.enable = true; ranger.enable = true; starship.enable = true; - tmux.enable = true; tmux-sessionizer.enable = true; tmux-sessionizer.searchPaths = diff --git a/home-manager/opdavies/t480.nix b/home-manager/opdavies/t480.nix index ea2a7404..b822897a 100644 --- a/home-manager/opdavies/t480.nix +++ b/home-manager/opdavies/t480.nix @@ -21,7 +21,6 @@ ranger.enable = true; sxhkd.enable = true; starship.enable = true; - tmux.enable = true; tmux-sessionizer.enable = true; tmux-sessionizer.searchPaths = diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index dffcb5fc..2a9f1366 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -24,7 +24,6 @@ ./starship.nix ./sxhkd.nix ./tmux-sessionizer.nix - ./tmux.nix ./zsh ]; } diff --git a/modules/home-manager/tmux.nix b/modules/home-manager/tmux.nix deleted file mode 100644 index 3bc46547..00000000 --- a/modules/home-manager/tmux.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -with lib; - -let - cfg = config.features.cli.tmux; -in -{ - options.features.cli.tmux.enable = mkEnableOption "Enable tmux"; - - config = mkIf cfg.enable { - programs.tmux = { - enable = true; - - terminal = "tmux-256color"; - - extraConfig = '' - set-option -g status-keys "vi" - set-option -sa terminal-features "''${TERM}:RGB" - - bind -n S-Left resize-pane -L 2 - bind -n S-Right resize-pane -R 2 - bind -n S-Down resize-pane -D 1 - bind -n S-Up resize-pane -U 1 - - bind -n C-Left resize-pane -L 10 - bind -n C-Right resize-pane -R 10 - bind -n C-Down resize-pane -D 5 - bind -n C-Up resize-pane -U 5 - - # Status line customisation - set-option -g status-left "" - set-option -g status-right " #{session_name}" - set-option -g status-right-length 100 - set-option -g status-style "fg=#7C7D83 bg=default" - set-option -g window-status-activity-style none - set-option -g window-status-current-style "fg=#E9E9EA" - - bind c new-window -c "#{pane_current_path}" - - set -g base-index 1 - set -g pane-base-index 1 - set -g renumber-windows on - - # Break a pane into a new window. - bind-key b break-pane -d - bind-key J command-prompt -p "join pane from: " "join-pane -h -s '%%'" - - bind-key C-j choose-tree - - set-window-option -g mode-keys vi - bind -T copy-mode-vi v send-keys -X begin-selection - bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' - - bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" - - bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session' - - # Allow clearing screen with ctrl-l by using C-l - bind C-l send-keys "C-l" - bind C-k send-keys "C-k" - - # Enable mouse support. - setw -g mouse on - - # Remove delay when switching Vim modes. - set -sg escape-time 0 - - set-option -g pane-active-border-style "fg=#1f2335" - set-option -g pane-border-style "fg=#1f2335" - - # Vim-like pane navigation. - bind ^ last-window - bind h select-pane -L - bind j select-pane -D - bind k select-pane -U - bind l select-pane -R - - bind-key -r f run-shell "tmux new-window tmux-sessionizer" - - bind-key -r D new-window -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/Documents/wiki/todo.txt" - bind-key -r N new-window "notes" - bind-key -r W split-window -h -c ~/Documents/wiki "nvim '+Telescope find_files'" - ''; - - plugins = with pkgs.tmuxPlugins; [ - resurrect - yank - ]; - }; - }; -} diff --git a/modules2/tmux/enable.nix b/modules2/tmux/enable.nix new file mode 100644 index 00000000..a4a47b08 --- /dev/null +++ b/modules2/tmux/enable.nix @@ -0,0 +1,3 @@ +{ + flake.modules.homeManager.base.programs.tmux.enable = true; +} diff --git a/modules2/tmux/extra-config.nix b/modules2/tmux/extra-config.nix new file mode 100644 index 00000000..caca2674 --- /dev/null +++ b/modules2/tmux/extra-config.nix @@ -0,0 +1,70 @@ +{ + flake.modules.homeManager.base.programs.tmux.extraConfig = '' + set-option -g status-keys "vi" + set-option -sa terminal-features "''${TERM}:RGB" + + bind -n S-Left resize-pane -L 2 + bind -n S-Right resize-pane -R 2 + bind -n S-Down resize-pane -D 1 + bind -n S-Up resize-pane -U 1 + + bind -n C-Left resize-pane -L 10 + bind -n C-Right resize-pane -R 10 + bind -n C-Down resize-pane -D 5 + bind -n C-Up resize-pane -U 5 + + # Status line customisation + set-option -g status-left "" + set-option -g status-right " #{session_name}" + set-option -g status-right-length 100 + set-option -g status-style "fg=#7C7D83 bg=default" + set-option -g window-status-activity-style none + set-option -g window-status-current-style "fg=#E9E9EA" + + bind c new-window -c "#{pane_current_path}" + + set -g base-index 1 + set -g pane-base-index 1 + set -g renumber-windows on + + # Break a pane into a new window. + bind-key b break-pane -d + bind-key J command-prompt -p "join pane from: " "join-pane -h -s '%%'" + + bind-key C-j choose-tree + + set-window-option -g mode-keys vi + bind -T copy-mode-vi v send-keys -X begin-selection + bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' + + bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" + + bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session' + + # Allow clearing screen with ctrl-l by using C-l + bind C-l send-keys "C-l" + bind C-k send-keys "C-k" + + # Enable mouse support. + setw -g mouse on + + # Remove delay when switching Vim modes. + set -sg escape-time 0 + + set-option -g pane-active-border-style "fg=#1f2335" + set-option -g pane-border-style "fg=#1f2335" + + # Vim-like pane navigation. + bind ^ last-window + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + + bind-key -r f run-shell "tmux new-window tmux-sessionizer" + + bind-key -r D new-window -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/Documents/wiki/todo.txt" + bind-key -r N new-window "notes" + bind-key -r W split-window -h -c ~/Documents/wiki "nvim '+Telescope find_files'" + ''; +} diff --git a/modules2/tmux/plugins.nix b/modules2/tmux/plugins.nix new file mode 100644 index 00000000..d5d9e0b5 --- /dev/null +++ b/modules2/tmux/plugins.nix @@ -0,0 +1,10 @@ +{ + flake.modules.homeManager.base = + { pkgs, ... }: + { + programs.tmux.plugins = with pkgs.tmuxPlugins; [ + resurrect + yank + ]; + }; +} diff --git a/modules2/tmux/terminal.nix b/modules2/tmux/terminal.nix new file mode 100644 index 00000000..0edf3248 --- /dev/null +++ b/modules2/tmux/terminal.nix @@ -0,0 +1,3 @@ +{ + flake.modules.homeManager.base.programs.tmux.terminal = "tmux-256color"; +}