---
# Harmonize my systems rather than doing everything manually. :)

# Setup of any device connected to this repo.
- name: Main | Default Setup
  hosts: localhost
  connection: local
  become: true  

  pre_tasks:
    - include: facts/general/system.yml
    - include: facts/general/package.yml
    - include: facts/general/service.yml
    - include: facts/general/user.yml

    - include: tasks/general/start.yml

  tasks:
    - include: tasks/general/software/packages.yml
    - include: tasks/general/software/services.yml
      ignore_errors: yes

    - include: facts/general/gather.yml

    - include: tasks/general/acct_mgmt/groups.yml
    - include: tasks/general/acct_mgmt/users.yml
    - include: tasks/general/acct_mgmt/sudo.yml
    - include: tasks/general/acct_mgmt/keys.yml
    - include: tasks/general/acct_mgmt/mounts.yml

    - include: tasks/general/cron/ansible.yml
    
    - include: tasks/freebsd/cron/ansible.yml
      when: ansible_system == "FreeBSD"


# Additional setup for systems with GUI.
- name: Main | Workstation UI Setup
  hosts: workstation
  connection: local
  become: true

  pre_tasks:
    - include: facts/workstation/package.yml

  tasks:
    # Set up any systems that do not come with Desktop Environments
    - include: tasks/freebsd/software/gui.yml
      when: ansible_system == "FreeBSD"

    # Additional tasks to configure Desktop Environments
    - include: tasks/linux/software/flatpaks.yml
      when: ansible_system == "Linux" and flatpak_distro

    - name: Workstation | Linux | Packages | Not Implemented
      shell: echo "Not implemented yet. :("
      when: ansible_system == "Linux" and not flatpak_distro
  
  post_tasks:
    - include: tasks/general/software/gnome.yml


# Create reports to analyze security.
- name: Main | Hardness Tests
  hosts: localhost
  connection: local
  become: true

  tasks:
    - include: tasks/general/tests/nmap.yml
    - include: tasks/general/tests/lynis.yml

  post_tasks:
    - include: tasks/general/finish.yml