--- - name: Define user and home directory variables ansible.builtin.set_fact: config_owner: "{{ item | basename }}" home_dir: "{{ item }}" - name: Define plugins to install ansible.builtin.set_fact: tmux_plugins: - { name: 'catppuccin', repo: 'https://github.com/catppuccin/tmux.git', path: 'plugin/catppuccin', version: 'v2.1.0' } - { name: 'tmux-cpu', repo: 'https://github.com/tmux-plugins/tmux-cpu.git', path: 'plugins/tmux-plugins/tmux-cpu', version: 'master' } - { name: 'tmux-battery', repo: 'https://github.com/tmux-plugins/tmux-battery.git', path: 'plugins/tmux-plugins/tmux-battery', version: 'master' } - name: "Create plugin directories" ansible.builtin.file: path: "{{ home_dir }}/.config/tmux/{{ plugin_item.path }}" state: directory owner: "{{ config_owner }}" group: "{{ config_owner }}" mode: '0755' loop: "{{ tmux_plugins }}" loop_control: loop_var: plugin_item - name: "Add git safe.directories" ansible.builtin.command: "git config --global --add safe.directory {{ home_dir }}/.config/tmux/{{ plugin_item.path }}" changed_when: false loop: "{{ tmux_plugins }}" loop_control: loop_var: plugin_item - name: "Clone plugins" ansible.builtin.git: repo: "{{ plugin_item.repo }}" dest: "{{ home_dir }}/.config/tmux/{{ plugin_item.path }}" version: "{{ plugin_item.version }}" loop: "{{ tmux_plugins }}" loop_control: loop_var: plugin_item - name: "Set plugin ownership" ansible.builtin.file: path: "{{ home_dir }}/.config/tmux/{{ plugin_item.path }}" state: directory owner: "{{ config_owner }}" group: "{{ config_owner }}" recurse: yes loop: "{{ tmux_plugins }}" loop_control: loop_var: plugin_item - name: Set catppuccin_install_path for template ansible.builtin.set_fact: catppuccin_install_path: "{{ home_dir }}/.config/tmux/{{ (tmux_plugins | selectattr('name', 'equalto', 'catppuccin') | first).path }}" - name: Install Template ansible.builtin.template: src: "tmux.conf.j2" dest: "{{ home_dir }}/.tmux.conf" owner: "{{ config_owner }}" group: "{{ config_owner }}" mode: '0644'