---

 - name: Geth-Hub packages
   become: yes
   package:
     name:
       - motion
       - lirc
       - libcamera-apps
       - ir-keytable
     state: present
     update_cache: yes

 - name: Copy the SSH key
   authorized_key:
     user: "{{ ansible_user_id }}"
     state: present
     key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/geth.pub') }}"
 
 - name: Copy the motion config
   become: yes
   register: motion_config
   template:
     src: "motion.conf.j2"
     dest: "/etc/motion/motion.conf"

 - name: Create motion log folder
   become: yes
   file:
     path: "{{ item }}"
     state: directory
     owner: motion
     group: motion
     mode: 0750
   loop: 
     - "/var/log/motion"
     - "/var/run/motion"

 - name: Restart the motion service
   become: yes
   when: motion_config.changed and motion_enabled 
   service:
     name: motion
     state: started
     enabled: yes

 - name: Allow override of motion service
   become: yes
   when: not motion_enabled
   service:
     name: motion
     state: stopped
     enabled: no


 # Thanks to https://wiki.geekworm.com/Raspberry_Pi_IR_Control_Expansion_Board for instructions setting up lirc
 - name: Set the dtoverlay
   become: yes
   register: dtoverlay
   blockinfile:
     path: "/boot/config.txt"
     insertafter: EOF
     marker: "# {mark} Ubiqtorate Managed Block"
     block: |
         dtoverlay=gpio-ir,gpio_pin={{ gpio_in_pin | default('18') }}
         dtoverlay=gpio-ir-tx,gpio_pin={{ gpio_out_pin | default('17') }}
         start_x=1

 - name: Unset camera autodetect
   become: yes
   register: camera_autodetect
   lineinfile:
     path: "/boot/config.txt"
     regexp: "camera_auto_detect"
     line: "# camera_auto_detect=1"

 - name: Set the dtparam
   become: yes
   register: dtparam
   lineinfile:
     path: "/boot/config.txt"
     regexp: "^dtparam="
     line: "dtparam=gpio_in_pull={{ gpio_in_pull | default('down') }}"

 - name: Copy the modules config
   become: yes
   register: modules_config
   template:
     src: "modules.j2"
     dest: "/etc/modules"

 - name: Copy the modules config, part 2
   become: yes
   register: modules_config_2
   template:
     src: "lirc_rpi.conf.j2"
     dest: "/etc/modprobe.d/lirc_rpi.conf"

 - name: Reboot if needed
   become: yes
   when: modules_config.changed or dtparam.changed or dtoverlay.changed or modules_config_2.changed or camera_autodetect.changed
   reboot:

 - name: Wait if needed
   become: yes
   when: modules_config.changed or dtparam.changed or dtoverlay.changed or modules_config_2.changed
   wait_for_connection:

 - name: Copy lircd supplemental config
   register: lircd_supp_config
   become: yes
   copy:
     src: "{{ item }}"
     dest: "/etc/lirc/{{ item }}"
   loop:
     - hardware.conf
     - lirc_options.conf

 - name: Copy lircd remote config
   register: lircd_remote_config
   become: yes
   copy: 
     src: "lircd.conf/{{ inventory_hostname }}"
     dest: /etc/lirc/lircd.conf

 - name: Start the services
   when: lircd_supp_config.changed or lircd_remote_config.changed
   become: yes
   service:
     name: lircd
     state: restarted
     enabled: yes
