--- - name: Install fish, neovim, modern CLI tools and set fish as default shell hosts: proxmox_vms gather_facts: true become: true vars: target_user: vrubel packages: - fish - neovim - lsd - bat - grc - zoxide - curl - git tasks: - name: Install packages ansible.builtin.package: name: "{{ packages }}" state: present - name: Symlink batcat -> bat (Debian workaround) ansible.builtin.file: src: /usr/bin/batcat dest: /usr/local/bin/bat state: link when: ansible_facts["os_family"] == "Debian" ignore_errors: true - name: Create ~/.config/fish directory ansible.builtin.file: path: "/home/{{ target_user }}/.config/fish" state: directory mode: "0755" owner: "{{ target_user }}" group: "{{ target_user }}" - name: Deploy fish config ansible.builtin.copy: src: ../files/config.fish dest: "/home/{{ target_user }}/.config/fish/config.fish" owner: "{{ target_user }}" group: "{{ target_user }}" mode: "0644" - name: Deploy fish_plugins ansible.builtin.copy: src: ../files/fish_plugins dest: "/home/{{ target_user }}/.config/fish/fish_plugins" owner: "{{ target_user }}" group: "{{ target_user }}" mode: "0644" - name: Install fisher become_user: "{{ target_user }}" ansible.builtin.shell: cmd: > curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher executable: /usr/bin/fish creates: "/home/{{ target_user }}/.config/fish/functions/fisher.fish" - name: Run fisher update to install plugins become_user: "{{ target_user }}" ansible.builtin.shell: cmd: fisher update executable: /usr/bin/fish changed_when: true - name: Clone LazyVim starter become_user: "{{ target_user }}" ansible.builtin.git: repo: https://github.com/LazyVim/starter dest: "/home/{{ target_user }}/.config/nvim" force: true - name: Remove .git from nvim config ansible.builtin.file: path: "/home/{{ target_user }}/.config/nvim/.git" state: absent - name: Set fish as default shell ansible.builtin.user: name: "{{ target_user }}" shell: /usr/bin/fish