--- - name: Install needed Packages ansible.builtin.package: name: '{{ item }}' state: present loop: '{{ sway_packages }}' become: true - name: Copy systemd Sway target ansible.builtin.copy: src: 'sway-session.target' dest: '{{ ansible_user_dir }}/.config/systemd/user/' mode: 0640 - name: Create Sway config dirs ansible.builtin.file: path: '{{ ansible_user_dir ~ "/.config/sway/conf.d" }}' state: directory mode: 0750 owner: '{{ ansible_user_uid }}' group: '{{ ansible_user_gid }}' - name: Copy base config file ansible.builtin.copy: src: 'config' dest: '{{ ansible_user_dir }}/.config/sway/' mode: 0640 - name: Render templates for sway config files ansible.builtin.template: src: '{{ item }}.config.j2' dest: '{{ ansible_user_dir ~ "/.config/sway/conf.d/" ~ item ~ ".config" }}' owner: '{{ ansible_user_uid }}' group: '{{ ansible_user_gid }}' lstrip_blocks: true trim_blocks: true mode: 0640 validate: >- sh -c "cat {{ansible_user_dir}}/.config/sway/conf.d/* %s > /tmp/sway; \ if sway --config /tmp/sway --validate 2>&1 \ | grep -q sway/config.c; \ then \ >&2 echo \"Error validating sway configuration\"; \ rm /tmp/sway; \ exit 1; \ else rm /tmp/sway; exit 0; \ fi" loop: - 00-variables - 10-input - 20-output - 30-theme - 40-workspaces - 50-keybindings any_errors_fatal: true - name: Copy default startup Sway conf file ansible.builtin.copy: src: '90-startup.config' dest: '{{ ansible_user_dir }}/.config/sway/conf.d/' mode: 0640