diff --git a/roles/neovim/tasks/main.yaml b/roles/neovim/tasks/main.yaml
index 3cb48cb1..15b4df9a 100644
--- a/roles/neovim/tasks/main.yaml
+++ b/roles/neovim/tasks/main.yaml
@@ -1,15 +1,52 @@
 ---
-- name: Add neovim PPA
-  apt_repository:
-    repo: "ppa:neovim-ppa/unstable"
-  become: true
-
-- name: Install Neovim
+- name: Dependencies
   ansible.builtin.package:
     name:
-      - neovim
+      - autoconf
+      - automake
+      - cmake
+      - curl
+      - doxygen
+      - g++
+      - gettext
+      - libtool
+      - libtool-bin
+      - ninja-build
+      - pkg-config
+      - unzip
     state: latest
-  become: true
+  become: yes
+
+- name: Clone
+  ansible.builtin.git:
+    clone: yes
+    depth: 1
+    dest: "{{ ansible_user_dir }}/neovim"
+    repo: https://github.com/neovim/neovim.git
+    # single_branch: yes
+    update: yes
+    version: "{{ neovim_version | default('master') }}"
+  register: clone
+
+- name: Build
+  make:
+    chdir: "{{ ansible_user_dir }}/neovim"
+    params:
+      CMAKE_BUILD_TYPE: RelWithDebInfo
+  when: clone.changed
+
+- name: Install
+  make:
+    chdir: "{{ ansible_user_dir }}/neovim"
+    target: install
+  become: yes
+  when: clone.changed
+
+- name: Remove build folder
+  ansible.builtin.file:
+    path: "{{ ansible_user_dir }}/neovim/build"
+    state: absent
+  become: yes
 
 - name: Create .config/nvim directory
   ansible.builtin.file: