- name: Check if neovim is installed command: cmd: "which nvim" failed_when: false changed_when: false register: which_nvim - name: Check local neovim version command: cmd: "nvim --version" changed_when: false check_mode: false register: current_neovim_version when: which_nvim.rc == 0 - name: Set local nvim version as fact if present set_fact: current_neovim_version: "{{ current_neovim_version.stdout_lines | default(['no version']) | first }}" when: which_nvim.rc == 0 - name: Set local nvim version as fact if not present set_fact: current_neovim_version: "error" when: which_nvim.rc != 0 - name: Get latest release version uri: url: "https://api.github.com/repos/neovim/neovim/releases/latest" changed_when: false check_mode: false register: latest_stable_neovim_version - name: Set latest nvim stable version as fact set_fact: latest_stable_neovim_version: "{{ latest_stable_neovim_version.json.body.splitlines()[1] }}" - name: Diff latest release and currently installed ansible.builtin.set_fact: neovim_up_to_date: "{{ latest_stable_neovim_version == current_neovim_version }}" - name: Build neovim when: not neovim_up_to_date block: - name: Pull neovim github repository git: repo: "https://github.com/neovim/neovim.git" dest: "$HOME/repos/neovim" update: true version: stable - name: Compile neovim from source make: chdir: "$HOME/repos/neovim" target: all params: CMAKE_BUILD_TYPE: RelWithDebInfo - name: Install neovim from source make: chdir: "/home/{{ ansible_user_id }}/repos/neovim" target: install become: true - name: Remove neovim git repo file: path: "$HOME/repos/neovim" state: absent - name: Create configuration directory file: path: ~/.config/nvim state: directory - name: Copy init.lua copy: src: "{{ role_path }}/files/init.lua" dest: ~/.config/nvim/init.lua - name: Create plugin directory file: path: ~/.config/nvim/plugin state: directory recurse: true - name: Copy plugin configuration files copy: src: "{{ role_path }}/files/plugin/" dest: ~/.config/nvim/plugin - name: Create lua directory file: path: ~/.config/nvim/lua state: directory recurse: true - name: Copy lua files copy: src: "{{ role_path }}/files/lua/" dest: ~/.config/nvim/lua - name: Install python-lsp-server pip: name: - "python-lsp-server[all]" - name: Clone packer repository git: repo: https://github.com/wbthomason/packer.nvim depth: 1 dest: ~/.local/share/nvim/site/pack/packer/start/packer.nvim - name: Install terraform-ls become: true apt: pkg: terraform-ls - name: Set default applications ini_file: path: ~/.config/mimeapps.list section: "Default Applications" option: "{{ item }}" value: "nvim.desktop" no_extra_spaces: true loop: "{{ default_apps }}" - name: Copy neovim.bashrc copy: src: "{{ role_path }}/files/neovim.bashrc" dest: ~/.bashrc.d/neovim.bashrc