--- - name: Create default user user: name: "{{ default_user }}" password: "{{ default_user_password | password_hash('sha512') }}" groups: sudo create_home: yes shell: /bin/zsh generate_ssh_key: yes ssh_key_bits: 2048 ssh_key_file: .ssh/id_rsa update_password: always state: present - name: Ensure sudo group has passwordless sudo privileges lineinfile: dest: /etc/sudoers state: present regexp: "^%sudo" line: "%sudo ALL=(ALL) NOPASSWD:ALL" validate: "/usr/sbin/visudo -cf %s" - name: Upgrade apt packages apt: update_cache: yes upgrade: full - name: Install apt packages apt: name: "{{ packages_to_install }}" - name: Get default user home getent: database: passwd key: "{{ default_user }}" split: ":" - name: Set default user home set_fact: default_user_home: "{{ getent_passwd[default_user][4] }}" - name: Install .tmux.conf to default user copy: src: .tmux.conf dest: "{{ default_user_home }}/.tmux.conf" owner: "{{ default_user }}" group: "{{default_user}}" force: yes mode: 0644 - name: Create temporary install directory tempfile: path: "/home/{{ default_user }}" state: directory suffix: .tmp register: temp_install_dir changed_when: false become: true become_user: "{{ default_user }}" - name: Download oh-my-zsh get_url: url: https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh dest: "{{ temp_install_dir.path }}" mode: 0777 become: true become_user: "{{ default_user }}" - name: Install oh-my-zsh shell: "sh {{ temp_install_dir.path }}/install.sh --unattended" args: creates: "{{ default_user_home }}/.oh-my-zsh" become: true become_user: "{{ default_user }}" - name: Install powerlevel10k theme git: repo: "https://gitee.com/romkatv/powerlevel10k.git" version: master dest: "{{ default_user_home }}/.oh-my-zsh/custom/themes/powerlevel10k" depth: 1 - name: Install zsh-syntax-highlighting git: repo: "https://github.com/zsh-users/zsh-syntax-highlighting.git" version: master dest: "{{ default_user_home }}/.zsh/zsh-syntax-highlighting" clone: yes update: yes - name: Install zsh-autosuggestions git: repo: https://github.com/zsh-users/zsh-autosuggestions version: master dest: "{{ default_user_home }}/.zsh/zsh-autosuggestions" clone: yes update: yes - name: Install .zshrc to default user template: src: .zshrc.j2 dest: "{{ default_user_home }}/.zshrc" owner: "{{ default_user }}" group: "{{ default_user }}" force: yes mode: 0644 - name: Install .p10k.zsh to default user copy: src: .p10k.zsh dest: "{{ default_user_home }}/.p10k.zsh" owner: "{{ default_user }}" group: "{{default_user}}" force: yes mode: 0644 - name: Install Rustup shell: curl https://sh.rustup.rs -sSf | sh -s -- -y args: creates: "{{ default_user_home }}/.cargo/bin/rustup" environment: RUSTUP_HOME: "{{ default_user_home }}/.rustup" CARGO_HOME: "{{ default_user_home }}/.cargo" become: true become_user: "{{ default_user }}" - name: Install pyenv shell: curl https://pyenv.run | zsh args: creates: "{{ default_user_home }}/.pyenv/bin/pyenv" environment: PYENV_ROOT: "{{ default_user_home }}/.pyenv" become: true become_user: "{{ default_user }}" - name: Install pyenv version of python shell: "{{ default_user_home }}/.pyenv/bin/pyenv install {{ pyenv_python_version }}" args: creates: "{{ default_user_home }}/.pyenv/versions/{{ pyenv_python_version }}/bin/python" become: true become_user: "{{ default_user }}" - name: Install pipx command: python3 -m pip install pipx --user args: creates: "{{ default_user_home }}/.local/bin/pipx" become: true become_user: "{{ default_user }}" - name: Install poetry shell: curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 args: creates: "{{ default_user_home }}/.poetry/bin/poetry" become: true become_user: "{{ default_user }}" - name: Install poetry plugin for oh-my-zsh shell: | mkdir {{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry {{ default_user_home }}/.poetry/bin/poetry completions zsh > {{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry/_poetry args: creates: "{{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry" become: true become_user: "{{ default_user }}" - name: Configure poetry command: "{{ default_user_home }}/.poetry/bin/poetry config virtualenvs.in-project true" become: true become_user: "{{ default_user }}" - name: Install base rust programs shell: "{{ default_user_home }}/.cargo/bin/cargo install {{ item }}" loop: "{{ cargo_packages }}" become: true become_user: "{{ default_user }}"