From 54fb4d3262d36443c411b4913ac1885f645e64f0 Mon Sep 17 00:00:00 2001 From: Felix Nehrke Date: Sat, 13 Sep 2025 02:45:44 +0200 Subject: [PATCH] Add role to install dotfiles and apply them --- main.yml | 2 ++ roles/dotfiles/files/pre-commit-hook.sh | 8 ++++++++ roles/dotfiles/tasks/main.yml | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 roles/dotfiles/files/pre-commit-hook.sh create mode 100644 roles/dotfiles/tasks/main.yml diff --git a/main.yml b/main.yml index 14b4704..633969c 100644 --- a/main.yml +++ b/main.yml @@ -9,6 +9,8 @@ when: ansible_os_family == 'Debian' - role: roles/ssh tags: [ssh] + - role: roles/dotfiles + tags: [dotfiles] tasks: - name: Dump hostvars tags: [never, dump] diff --git a/roles/dotfiles/files/pre-commit-hook.sh b/roles/dotfiles/files/pre-commit-hook.sh new file mode 100644 index 0000000..c4f0b41 --- /dev/null +++ b/roles/dotfiles/files/pre-commit-hook.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -e + +git status --short | grep -E '^D|^R' | sed 's/...//;s/ -> .*//' | while read f +do + test -L "$HOME/$f" && rm "$HOME/$f" +done diff --git a/roles/dotfiles/tasks/main.yml b/roles/dotfiles/tasks/main.yml new file mode 100644 index 0000000..79db792 --- /dev/null +++ b/roles/dotfiles/tasks/main.yml @@ -0,0 +1,18 @@ +- name: Ensure dotfiles directory + git: + repo: git@gitea.nehrke.info:nemoinho/dotfiles.git + dest: "{{ lookup('env', 'HOME') ~ '/dotfiles' }}" + +- name: Ensure pre-commit hook to automatically remove links of deleted dotfiles + copy: + src: pre-commit-hook.sh + dest: "{{ lookup('env', 'HOME') ~ '/dotfiles/.git/hooks/pre-commit' }}" + mode: u=rwx,g=rx,o=r + +- name: Ensure dotfiles are up-to-date + shell: | + stow --adopt . + [ -n "$(git status --short)" ] && git stash || true + args: + chdir: "{{ lookup('env', 'HOME') ~ '/dotfiles' }}" + executable: /bin/bash