---
- name: Copy workstation WSL dotfiles
  tags: [dotfiles, dotfiles:workstation, wsl]
  ansible.builtin.copy:
    src: "{{ playbook_dir }}/../dotfiles/workstation_dev_wsl/{{ item.src }}"
    dest: "{{ user_home }}/{{ item.dest }}"
    owner: "{{ username }}"
    group: "{{ user_group }}"
    mode: "{{ item.mode }}"
  loop: "{{ workstation_dev_wsl_dotfiles | default([]) }}"
  loop_control:
    label: "{{ item.dest }}"

- name: Ensure WSL boot configuration file exists
  tags: [packages, services]
  ansible.builtin.file:
    path: /etc/wsl.conf
    state: touch
    owner: root
    group: root
    mode: "0644"
  when: workstation_wsl_systemd_enabled | default(false)

- name: Enable systemd in WSL
  tags: [packages, services]
  community.general.ini_file:
    path: /etc/wsl.conf
    section: boot
    option: systemd
    value: 'true'
    mode: "0644"
  register: workstation_wsl_systemd_config
  when: workstation_wsl_systemd_enabled | default(false)

- name: Install WSL Python packages for Windows remoting
  tags: [packages]
  ansible.builtin.pip:
    name: "{{ workstation_dev_wsl_python_packages | default([]) }}"
    executable: pip3
    extra_args: --break-system-packages
    state: present
  when: (workstation_dev_wsl_python_packages | default([])) | length > 0

- name: Note when WSL must be restarted
  tags: [packages, services]
  ansible.builtin.debug:
    msg: "Restart the WSL distro with 'wsl --shutdown' from Windows to apply /etc/wsl.conf changes."
  changed_when: false
  when:
    - workstation_wsl_systemd_enabled | default(false)
    - workstation_wsl_systemd_config is changed
