Converted tmux from nixosModule to homeModule
This commit is contained in:
		
							parent
							
								
									27b8ea6ab3
								
							
						
					
					
						commit
						fe55849333
					
				
					 6 changed files with 133 additions and 125 deletions
				
			
		
							
								
								
									
										15
									
								
								homes/x86_64-linux/alejandro/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								homes/x86_64-linux/alejandro/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  config,
 | 
			
		||||
  osConfig ? {},
 | 
			
		||||
  format ? "unknown",
 | 
			
		||||
  namespace,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  aa = {
 | 
			
		||||
    apps = {
 | 
			
		||||
      tmux.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								modules/home/home/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/home/home/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  osConfig ? {},
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  home.stateVersion = lib.mkDefault (osConfig.system.stateVersion or "24.05");
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										108
									
								
								modules/home/tmux/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								modules/home/tmux/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,108 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  namespace,
 | 
			
		||||
  ...
 | 
			
		||||
}: let
 | 
			
		||||
  inherit (lib) mkEnableOption;
 | 
			
		||||
 | 
			
		||||
  cfg = config.${namespace}.apps.tmux;
 | 
			
		||||
in {
 | 
			
		||||
  options.${namespace}.apps.tmux = {
 | 
			
		||||
    enable = mkEnableOption "tmux";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    programs.tmux = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      keyMode = "vi";
 | 
			
		||||
      newSession = true;
 | 
			
		||||
      sensibleOnTop = true;
 | 
			
		||||
      terminal = "screen-256color";
 | 
			
		||||
 | 
			
		||||
      # TOOD: Check if neovim is enabled before config vim integrations
 | 
			
		||||
 | 
			
		||||
      plugins = [
 | 
			
		||||
        {
 | 
			
		||||
          plugin = pkgs.tmuxPlugins.resurrect;
 | 
			
		||||
          extraConfig = ''
 | 
			
		||||
            set -g @resurrect-capture-pane-contents 'on'
 | 
			
		||||
            set -g @resurrect-strategy-nvim 'session'
 | 
			
		||||
          '';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          plugin = pkgs.tmuxPlugins.continuum;
 | 
			
		||||
          extraConfig = ''
 | 
			
		||||
            set -g @continuum-restore 'on'
 | 
			
		||||
          '';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          plugin =
 | 
			
		||||
            pkgs.tmuxPlugins.mkTmuxPlugin
 | 
			
		||||
            {
 | 
			
		||||
              pluginName = "tmux-nerd-font-window-name";
 | 
			
		||||
              version = "2.1.1";
 | 
			
		||||
              src = pkgs.fetchFromGitHub {
 | 
			
		||||
                owner = "joshmedeski";
 | 
			
		||||
                repo = "tmux-nerd-font-window-name";
 | 
			
		||||
                rev = "57961cb0a99b76f20e02639d398c973d81971d05";
 | 
			
		||||
                sha256 = "sha256-8P4jFEkcJn/JbdRAC5PCrLAGTJwFxCknllOjkD+PK9w=";
 | 
			
		||||
              };
 | 
			
		||||
              nativeBuildInputs = [pkgs.makeWrapper];
 | 
			
		||||
              rtpFilePath = "tmux-nerd-font-window-name.tmux";
 | 
			
		||||
              postInstall = ''
 | 
			
		||||
                wrapProgram $target/bin/tmux-nerd-font-window-name \
 | 
			
		||||
                    --prefix PATH ${lib.makeBinPath [pkgs.yq-go]}
 | 
			
		||||
 | 
			
		||||
                # NOTE: I thought the wrapProgram above should make it so this wouldn't be needed
 | 
			
		||||
                find $target -type f -print0 | xargs -0 sed -i -e 's|yq |${pkgs.yq-go}/bin/yq |g'
 | 
			
		||||
              '';
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pkgs.tmuxPlugins.vim-tmux-navigator
 | 
			
		||||
        pkgs.tmuxPlugins.open
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        # Color fix
 | 
			
		||||
        # set-option -ga terminal-overrides ",alacritty:Tc,xterm-256color:Tc"
 | 
			
		||||
 | 
			
		||||
        # Scrolling with mouse wheel scrolls output instead of previous commands
 | 
			
		||||
        setw -g mouse on
 | 
			
		||||
 | 
			
		||||
        # Open panes in the same directory
 | 
			
		||||
        bind c new-window -c "#{pane_current_path}"
 | 
			
		||||
        bind '"' split-window -c "#{pane_current_path}"
 | 
			
		||||
        bind % split-window -h -c "#{pane_current_path}"
 | 
			
		||||
 | 
			
		||||
        # Eye Candy
 | 
			
		||||
        # set -g @plugin 'mattdavis90/base16-tmux'
 | 
			
		||||
        # set -g @colors-base16 'darktooth'
 | 
			
		||||
 | 
			
		||||
        # Smart pane switching with awareness of Vim splits.
 | 
			
		||||
        # See: https://github.com/christoomey/vim-tmux-navigator
 | 
			
		||||
        is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
 | 
			
		||||
            | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?\\.?g?(view|n?vim?x?)(-wrapped)?(diff)?$'"
 | 
			
		||||
        bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h'  'select-pane -L'
 | 
			
		||||
        bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j'  'select-pane -D'
 | 
			
		||||
        bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k'  'select-pane -U'
 | 
			
		||||
        bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l'  'select-pane -R'
 | 
			
		||||
        tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
 | 
			
		||||
        if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
 | 
			
		||||
            "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\'  'select-pane -l'"
 | 
			
		||||
        if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
 | 
			
		||||
            "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\'  'select-pane -l'"
 | 
			
		||||
 | 
			
		||||
        bind-key -T copy-mode-vi 'C-h' select-pane -L
 | 
			
		||||
        bind-key -T copy-mode-vi 'C-j' select-pane -D
 | 
			
		||||
        bind-key -T copy-mode-vi 'C-k' select-pane -U
 | 
			
		||||
        bind-key -T copy-mode-vi 'C-l' select-pane -R
 | 
			
		||||
        bind-key -T copy-mode-vi 'C-\' select-pane -l
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,118 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}: let
 | 
			
		||||
  cfg = config.aa.apps.tmux;
 | 
			
		||||
  user_cfg = config.home-manager.users.${config.aa.user.name};
 | 
			
		||||
in {
 | 
			
		||||
  options.aa.apps.tmux = {
 | 
			
		||||
    enable = lib.options.mkEnableOption "tmux";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    aa.home.extraOptions = {
 | 
			
		||||
      programs.tmux = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        keyMode = "vi";
 | 
			
		||||
        newSession = true;
 | 
			
		||||
        sensibleOnTop = true;
 | 
			
		||||
        terminal = "screen-256color";
 | 
			
		||||
 | 
			
		||||
        # TOOD: Check if neovim is enabled before config vim integrations
 | 
			
		||||
 | 
			
		||||
        plugins = [
 | 
			
		||||
          {
 | 
			
		||||
            plugin = pkgs.tmuxPlugins.resurrect;
 | 
			
		||||
            extraConfig = ''
 | 
			
		||||
              set -g @resurrect-capture-pane-contents 'on'
 | 
			
		||||
              set -g @resurrect-strategy-nvim 'session'
 | 
			
		||||
            '';
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            plugin = pkgs.tmuxPlugins.continuum;
 | 
			
		||||
            extraConfig = ''
 | 
			
		||||
              set -g @continuum-restore 'on'
 | 
			
		||||
            '';
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            plugin =
 | 
			
		||||
              pkgs.tmuxPlugins.mkTmuxPlugin
 | 
			
		||||
              {
 | 
			
		||||
                pluginName = "tmux-nerd-font-window-name";
 | 
			
		||||
                version = "2.1.1";
 | 
			
		||||
                src = pkgs.fetchFromGitHub {
 | 
			
		||||
                  owner = "joshmedeski";
 | 
			
		||||
                  repo = "tmux-nerd-font-window-name";
 | 
			
		||||
                  rev = "57961cb0a99b76f20e02639d398c973d81971d05";
 | 
			
		||||
                  sha256 = "sha256-8P4jFEkcJn/JbdRAC5PCrLAGTJwFxCknllOjkD+PK9w=";
 | 
			
		||||
                };
 | 
			
		||||
                nativeBuildInputs = [pkgs.makeWrapper];
 | 
			
		||||
                rtpFilePath = "tmux-nerd-font-window-name.tmux";
 | 
			
		||||
                postInstall = ''
 | 
			
		||||
                  wrapProgram $target/bin/tmux-nerd-font-window-name \
 | 
			
		||||
                      --prefix PATH ${lib.makeBinPath [pkgs.yq-go]}
 | 
			
		||||
 | 
			
		||||
                  # NOTE: I thought the wrapProgram above should make it so this wouldn't be needed
 | 
			
		||||
                  find $target -type f -print0 | xargs -0 sed -i -e 's|yq |${pkgs.yq-go}/bin/yq |g'
 | 
			
		||||
                '';
 | 
			
		||||
              };
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          pkgs.tmuxPlugins.vim-tmux-navigator
 | 
			
		||||
          pkgs.tmuxPlugins.open
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        extraConfig =
 | 
			
		||||
          ''
 | 
			
		||||
            # Color fix
 | 
			
		||||
            # set-option -ga terminal-overrides ",alacritty:Tc,xterm-256color:Tc"
 | 
			
		||||
 | 
			
		||||
            # Scrolling with mouse wheel scrolls output instead of previous commands
 | 
			
		||||
            setw -g mouse on
 | 
			
		||||
 | 
			
		||||
            # Open panes in the same directory
 | 
			
		||||
            bind c new-window -c "#{pane_current_path}"
 | 
			
		||||
            bind '"' split-window -c "#{pane_current_path}"
 | 
			
		||||
            bind % split-window -h -c "#{pane_current_path}"
 | 
			
		||||
 | 
			
		||||
            # Eye Candy
 | 
			
		||||
            # set -g @plugin 'mattdavis90/base16-tmux'
 | 
			
		||||
            # set -g @colors-base16 'darktooth'
 | 
			
		||||
 | 
			
		||||
            # Smart pane switching with awareness of Vim splits.
 | 
			
		||||
            # See: https://github.com/christoomey/vim-tmux-navigator
 | 
			
		||||
            is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
 | 
			
		||||
                | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?\\.?g?(view|n?vim?x?)(-wrapped)?(diff)?$'"
 | 
			
		||||
            bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h'  'select-pane -L'
 | 
			
		||||
            bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j'  'select-pane -D'
 | 
			
		||||
            bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k'  'select-pane -U'
 | 
			
		||||
            bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l'  'select-pane -R'
 | 
			
		||||
            tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
 | 
			
		||||
            if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
 | 
			
		||||
                "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\'  'select-pane -l'"
 | 
			
		||||
            if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
 | 
			
		||||
                "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\'  'select-pane -l'"
 | 
			
		||||
 | 
			
		||||
            bind-key -T copy-mode-vi 'C-h' select-pane -L
 | 
			
		||||
            bind-key -T copy-mode-vi 'C-j' select-pane -D
 | 
			
		||||
            bind-key -T copy-mode-vi 'C-k' select-pane -U
 | 
			
		||||
            bind-key -T copy-mode-vi 'C-l' select-pane -R
 | 
			
		||||
            bind-key -T copy-mode-vi 'C-\' select-pane -l
 | 
			
		||||
          ''
 | 
			
		||||
          + (
 | 
			
		||||
            if config.aa.apps.neovim.enable
 | 
			
		||||
            then ''
 | 
			
		||||
 | 
			
		||||
              # Integration with tmuxline.vim
 | 
			
		||||
              source-file ${user_cfg.xdg.dataHome}/${config.aa.apps.neovim.tmuxThemePath}
 | 
			
		||||
            ''
 | 
			
		||||
            else ""
 | 
			
		||||
          );
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,14 +1,13 @@
 | 
			
		|||
{
 | 
			
		||||
  options,
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
}: let
 | 
			
		||||
  inherit (lib) mkIf mkEnableOption;
 | 
			
		||||
  cfg = config.aa.suites.development;
 | 
			
		||||
in {
 | 
			
		||||
  options.aa.suites.development = with lib.types; {
 | 
			
		||||
  options.aa.suites.development = {
 | 
			
		||||
    enable = mkEnableOption "common configuration";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +23,6 @@ in {
 | 
			
		|||
 | 
			
		||||
      apps = {
 | 
			
		||||
        neovim.enable = true;
 | 
			
		||||
        tmux.enable = true;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,8 +18,6 @@
 | 
			
		|||
    nix.enable = true;
 | 
			
		||||
    nix.useSelfhostedCache = true;
 | 
			
		||||
 | 
			
		||||
    apps.tmux.enable = true;
 | 
			
		||||
 | 
			
		||||
    services.tailscale = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      configureClientRouting = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue