---
# Create users for all machines.

## Variables ##

- name: General | Account Management | Users | use BASH (Default)
  set_fact:
    ling_shell: "{{ bash_exec.stdout }}"

- name: General | Account Management | Users | Use ZSH (Arch+Manjaro)
  set_fact:
    ling_shell: "{{ zsh_exec.stdout }}"
  when: ansible_distribution == "Archlinux"


## Root ##

- name: General | Account Management | Users | Root
  user:
    name: root
    shell: "{{ bash_exec.stdout }}"
    create_home: yes
    generate_ssh_key: yes
  register: user_root


## Scheduler ##

- name: General | Account Management | Users | Ansible
  user:
    name: ansible
    comment: Ansible
    system: yes


## Superuser ##

- name: General | Account Management | Users | Hyperling
  user:
    name: ling
    comment: Hyperling
    groups: 
      - sudo
      - video
      - render
    append: yes
    shell: "{{ ling_shell }}"
    create_home: yes
    generate_ssh_key: yes
  register: user_ling

- name: General | Account Management | Users | Hyperling | Test Logging In
  shell: "echo SUCCESS"
  args:
    executable: "{{ ling_shell }}"
  become_user: ling


## Folders ##

- name: General | Account Management | Users | Folders | Root | Create bin, Downloads, TRASH
  file: 
    path: "{{ item }}"
    state: directory
    mode: '0755'
  loop:
    - "{{ user_root.home }}/bin"
    - "{{ user_root.home }}/Downloads"
    - "{{ user_root.home }}/TRASH"
  when: user_root.home != ""

- name: General | Account Management | Users | Folders | Hyperling | Create bin, LBRY, TRASH
  file: 
    path: "{{ item }}"
    state: directory
    mode: '0755'
  loop:
    - "{{ user_ling.home }}/bin"
    - "{{ user_ling.home }}/LBRY"
    - "{{ user_ling.home }}/TRASH"
  become_user: ling
  when: user_ling.home != ""

- name: General | Account Management | Users | Folders | Home Directories 700
  shell: "chmod 700 {{ user_ling.home }}/../*"


## Files ##

- name: General | Account Management | Users | Files | .bashrc
  blockinfile:
    path: "{{ item }}/.bashrc"
    block: |
      alias cp='cp -v'
      alias mv='mv -v'
      alias rm='echo "Use mv ~/TRASH/ instead!"'
      export PATH="~/bin:$PATH"
    marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
    state: present
    create: yes
    backup: yes
  loop:
    - "{{ user_root.home }}"
    - "{{ user_ling.home }}"
  ignore_errors: yes
  when: user_root.home != "" and user_ling.home != ""