summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2025-11-09 01:43:24 +0100
committerAhmed Abdelhalim <[email protected]>2025-11-09 01:47:01 +0100
commitde990dbbb6d0b852b73046e1f8c8875ae0849403 (patch)
tree9396a5471430a6288a27342b2e92bc0e79a4bc12
parentaa8d8855e0a153245f2ad0832ebeea80af57cbfb (diff)
Add vim role w/testing
-rw-r--r--configure.yml3
-rw-r--r--group_vars/all.ymlbin3723 -> 3766 bytes
-rw-r--r--group_vars/all.yml.example1
-rw-r--r--molecule/archlinux/converge.yml2
-rw-r--r--molecule/debian/converge.yml2
-rw-r--r--molecule/raspberrypi/converge.yml2
-rw-r--r--molecule/ubuntu/converge.yml2
-rw-r--r--roles/vim/meta/argument_specs.yml10
-rw-r--r--roles/vim/meta/main.yml19
-rw-r--r--roles/vim/tasks/main.yml32
10 files changed, 73 insertions, 0 deletions
diff --git a/configure.yml b/configure.yml
index cbbff425..c6d78f08 100644
--- a/configure.yml
+++ b/configure.yml
@@ -18,6 +18,7 @@
- role: "gpg"
- role: "dotfiles"
- role: "password_store"
+ - role: "vim"
- name: "Ubuntu configure"
gather_facts: true
@@ -39,6 +40,7 @@
- role: "gpg"
- role: "dotfiles"
- role: "password_store"
+ - role: "vim"
- name: "Raspberry Pi configure"
gather_facts: true
@@ -58,3 +60,4 @@
- role: "gpg"
- role: "dotfiles"
- role: "password_store"
+ - role: "vim"
diff --git a/group_vars/all.yml b/group_vars/all.yml
index c23828a6..05b241ca 100644
--- a/group_vars/all.yml
+++ b/group_vars/all.yml
Binary files differ
diff --git a/group_vars/all.yml.example b/group_vars/all.yml.example
index 166fee3c..d5c63849 100644
--- a/group_vars/all.yml.example
+++ b/group_vars/all.yml.example
@@ -47,6 +47,7 @@ dotfiles_setup_script: |
git remote set-url origin [email protected]:~a14m/.rc
password_store_repo_url: "[email protected]:a14m/.pass"
+vimrc_repo_url: "[email protected]:~a14m/.vim"
wireguard_autostart_connection: "wg-vpn0"
wireguard_connections:
diff --git a/molecule/archlinux/converge.yml b/molecule/archlinux/converge.yml
index b091f109..d24e0530 100644
--- a/molecule/archlinux/converge.yml
+++ b/molecule/archlinux/converge.yml
@@ -19,6 +19,7 @@
python_global_version: "3.13"
python_versions:
- "3.13"
+ vimrc_repo_url: "https://git.sr.ht/~a14m/.vim"
roles:
- role: "hostname"
- role: "network"
@@ -41,3 +42,4 @@
- role: "rsync"
- role: "gpg"
- role: "dotfiles"
+ - role: "vim"
diff --git a/molecule/debian/converge.yml b/molecule/debian/converge.yml
index 8d6dd739..38e93194 100644
--- a/molecule/debian/converge.yml
+++ b/molecule/debian/converge.yml
@@ -30,6 +30,7 @@
datasource_mappings:
- key: "000000001"
value: "prometheus"
+ vimrc_repo_url: "https://git.sr.ht/~a14m/.vim"
roles:
- role: "hostname"
- role: "network"
@@ -52,3 +53,4 @@
- role: "rsync"
- role: "gpg"
- role: "dotfiles"
+ - role: "vim"
diff --git a/molecule/raspberrypi/converge.yml b/molecule/raspberrypi/converge.yml
index 1784bd62..fc59e9bc 100644
--- a/molecule/raspberrypi/converge.yml
+++ b/molecule/raspberrypi/converge.yml
@@ -23,6 +23,7 @@
datasource_mappings:
- key: "000000001"
value: "prometheus"
+ vimrc_repo_url: "https://git.sr.ht/~a14m/.vim"
roles:
- role: "hostname"
- role: "network"
@@ -42,3 +43,4 @@
- role: "rsync"
- role: "gpg"
- role: "dotfiles"
+ - role: "vim"
diff --git a/molecule/ubuntu/converge.yml b/molecule/ubuntu/converge.yml
index 66d2a208..2112f974 100644
--- a/molecule/ubuntu/converge.yml
+++ b/molecule/ubuntu/converge.yml
@@ -19,6 +19,7 @@
python_global_version: "3.13"
python_versions:
- "3.13"
+ vimrc_repo_url: "https://git.sr.ht/~a14m/.vim"
roles:
- role: "hostname"
- role: "network"
@@ -41,3 +42,4 @@
- role: "rsync"
- role: "gpg"
- role: "dotfiles"
+ - role: "vim"
diff --git a/roles/vim/meta/argument_specs.yml b/roles/vim/meta/argument_specs.yml
new file mode 100644
index 00000000..71533908
--- /dev/null
+++ b/roles/vim/meta/argument_specs.yml
@@ -0,0 +1,10 @@
+---
+argument_specs:
+ main:
+ short_description: "Install and configure vim"
+ description: "Install and configure vim"
+ options:
+ vimrc_repo_url:
+ type: "str"
+ description: "The vimrc git repo URL"
+ required: true
diff --git a/roles/vim/meta/main.yml b/roles/vim/meta/main.yml
new file mode 100644
index 00000000..50f6e28c
--- /dev/null
+++ b/roles/vim/meta/main.yml
@@ -0,0 +1,19 @@
+---
+dependencies:
+ - role: "git"
+galaxy_info:
+ author: "a14m"
+ description: "Install and configure vim"
+ company: "kartoffeln.work GmbH."
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
+ - name: "Ubuntu"
+ versions:
+ - "noble"
+ - name: "Debian"
+ versions:
+ - "bookworm"
diff --git a/roles/vim/tasks/main.yml b/roles/vim/tasks/main.yml
new file mode 100644
index 00000000..a0859f5c
--- /dev/null
+++ b/roles/vim/tasks/main.yml
@@ -0,0 +1,32 @@
+---
+- name: "Ensure vim is installed"
+ become: true
+ ansible.builtin.package:
+ name: "vim"
+ state: "present"
+
+- name: "Clone vimrc git repo"
+ ansible.builtin.git:
+ repo: "{{ vimrc_repo_url }}"
+ dest: "{{ ansible_env.HOME }}/.vim"
+ clone: true
+ update: false
+ single_branch: true
+ version: main
+
+- name: "Ensure .vimrc is linked"
+ ansible.builtin.file:
+ src: "{{ ansible_env.HOME }}/.vim/.vimrc"
+ dest: "{{ ansible_env.HOME }}/.vimrc"
+ state: "link"
+
+# NOTE: based on https://stackoverflow.com/a/33734425/1769515
+- name: "Setup vim plugins"
+ ansible.builtin.command:
+ cmd: vim -E -s -u ~/.vimrc +PlugInstall +qall
+ creates: "{{ ansible_env.HOME }}/.vim/bundle/"
+ environment:
+ TERM: dumb
+ # We don't care much if vim failed to install all plugins
+ # this can be manually fixed later when needed
+ failed_when: false