- Modified 'roles/tmux/tasks/main.yml' to explicitly filter out
the root directory ('/') as a valid home directory.
- Modified 'roles/tmux/tasks/tmux_config.yml' by adding a conditional
check () to all tasks. This prevents the
tasks from running for users with invalid home directories, which
resolves the 'chown failed' error.
70 lines
2.3 KiB
YAML
70 lines
2.3 KiB
YAML
---
|
|
- 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
|
|
when: home_dir != '/'
|
|
|
|
- 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
|
|
when: home_dir != '/'
|
|
|
|
- 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
|
|
when: home_dir != '/'
|
|
|
|
- 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
|
|
when: home_dir != '/'
|
|
|
|
- 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 }}"
|
|
when: home_dir != '/'
|
|
|
|
- name: Install Template
|
|
ansible.builtin.template:
|
|
src: "tmux.conf.j2"
|
|
dest: "{{ home_dir }}/.tmux.conf"
|
|
owner: "{{ config_owner }}"
|
|
group: "{{ config_owner }}"
|
|
mode: '0644'
|
|
when: home_dir != '/'
|
|
|