--- - name: Configure Zsh, Neofetch, FZF, and custom .zshrc hosts: all become: true vars: zsh_custom: "{{ ansible_env.HOME }}/.oh-my-zsh/custom" user: "{{ ansible_user }}" tasks: - name: Install necessary packages apt: name: - zsh - neofetch - fzf state: present update_cache: yes - name: Pre-create basic .zshrc to avoid the zsh-newuser-install prompt copy: dest: "/home/{{ user }}/.zshrc" content: | # Basic .zshrc to prevent zsh-newuser-install prompt # Path to your Oh My Zsh installation. export ZSH="$HOME/.oh-my-zsh" export PATH=$PATH:$HOME/.local/bin # Set theme ZSH_THEME="robbyrussell" # Plugins plugins=(git ubuntu copypath copyfile dirhistory zsh-interactive-cd docker docker-compose opentofu zsh-history-substring-search zsh-autosuggestions zsh-syntax-highlighting you-should-use) source $ZSH/oh-my-zsh.sh # Set up Oh My Posh eval "$(oh-my-posh init zsh --config https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/sonicboom_dark.omp.json)" # Custom aliases alias dcd="docker compose down" alias dcu="docker compose up -d" # Display system information neofetch owner: "{{ user }}" mode: '0644' - name: Install Oh My Zsh (unattended) shell: | RUNZSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" environment: HOME: "/home/mafyuh" args: chdir: "/home/mafyuh" creates: "/home/mafyuh/.oh-my-zsh" - name: Clone zsh-syntax-highlighting plugin git: repo: https://github.com/zsh-users/zsh-syntax-highlighting.git dest: "{{ zsh_custom }}/plugins/zsh-syntax-highlighting" update: no - name: Clone zsh-autosuggestions plugin git: repo: https://github.com/zsh-users/zsh-autosuggestions.git dest: "{{ zsh_custom }}/plugins/zsh-autosuggestions" update: no - name: Clone zsh-history-substring-search plugin git: repo: https://github.com/zsh-users/zsh-history-substring-search.git dest: "{{ zsh_custom }}/plugins/zsh-history-substring-search" update: no - name: Clone zsh-you-should-use plugin git: repo: https://github.com/MichaelAquilina/zsh-you-should-use.git dest: "{{ zsh_custom }}/plugins/you-should-use" update: no - name: Ensure .local/bin directory exists file: path: "/home/{{ user }}/.local/bin" state: directory owner: "{{ user }}" mode: '0755' - name: Download Oh My Posh binary get_url: url: https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 dest: "/home/{{ user }}/.local/bin/oh-my-posh" mode: '0755' - name: Ensure ownership of .local/bin/oh-my-posh file: path: "/home/{{ user }}/.local/bin/oh-my-posh" owner: "{{ user }}" mode: '0755' - name: Change default shell to Zsh (after setting up .zshrc) user: name: "{{ user }}" shell: /bin/zsh