mirror of
https://github.com/fscotto/infra.git
synced 2026-07-29 16:20:01 +00:00
230 lines
6.5 KiB
YAML
230 lines
6.5 KiB
YAML
---
|
|
- name: Ensure Cinnamon user config directories exist
|
|
tags: [dotfiles, dotfiles:desktop, cinnamon]
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0755"
|
|
loop:
|
|
- "{{ user_home }}/.config"
|
|
- "{{ user_home }}/.local"
|
|
- "{{ user_home }}/.local/share"
|
|
- "{{ user_home }}/.local/bin"
|
|
- "{{ user_home }}/.local/state"
|
|
- "{{ user_home }}/.bashrc.d"
|
|
- "{{ user_home }}/.tmux"
|
|
- "{{ user_home }}/.tmux/bin"
|
|
- "{{ user_home }}/.tmux/plugins"
|
|
|
|
- name: Apply Cinnamon dconf settings
|
|
tags: [cinnamon]
|
|
community.general.dconf:
|
|
key: "{{ item.key }}"
|
|
value: "{{ item.value }}"
|
|
state: present
|
|
become: true
|
|
become_user: "{{ username }}"
|
|
environment:
|
|
HOME: "{{ user_home }}"
|
|
loop: "{{ cinnamon_dconf_settings | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
|
|
- name: Ensure Emacs config directory exists
|
|
tags: [dotfiles, dotfiles:desktop, emacs]
|
|
ansible.builtin.file:
|
|
path: "{{ user_home }}/.emacs.d"
|
|
state: directory
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0755"
|
|
when: emacs_enabled | default(false) | bool
|
|
|
|
- name: Ensure GnuPG directory exists
|
|
tags: [dotfiles, dotfiles:desktop, git]
|
|
ansible.builtin.file:
|
|
path: "{{ user_home }}/.gnupg"
|
|
state: directory
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0700"
|
|
|
|
- name: Ensure private user directories exist
|
|
tags: [dotfiles, dotfiles:desktop]
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0700"
|
|
loop:
|
|
- "{{ user_home }}/.ssh"
|
|
- "{{ user_home }}/.local/state/ssh/sockets"
|
|
|
|
- name: Copy Emacs desktop dotfiles
|
|
tags: [dotfiles, dotfiles:desktop, emacs]
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
|
dest: "{{ user_home }}/{{ item.dest }}"
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "{{ item.mode }}"
|
|
loop: "{{ desktop_emacs_dotfiles | default([]) }}"
|
|
when: emacs_enabled | default(false) | bool
|
|
loop_control:
|
|
label: "{{ item.dest }}"
|
|
|
|
- name: Copy WM-agnostic common desktop dotfiles
|
|
tags: [dotfiles, dotfiles:desktop]
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
|
dest: "{{ user_home }}/{{ item.dest }}"
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "{{ item.mode }}"
|
|
loop: >-
|
|
{{
|
|
desktop_common_dotfiles
|
|
| default([])
|
|
| rejectattr('name', 'in', cinnamon_desktop_dotfiles_exclude | default([]))
|
|
| list
|
|
}}
|
|
loop_control:
|
|
label: "{{ item.dest }}"
|
|
|
|
- name: Copy gpg-agent configuration
|
|
tags: [dotfiles, dotfiles:desktop, git]
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/../dotfiles/desktop/.gnupg/gpg-agent.conf"
|
|
dest: "{{ user_home }}/.gnupg/gpg-agent.conf"
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0600"
|
|
|
|
- name: Render git configuration with private values
|
|
tags: [dotfiles, dotfiles:desktop, git]
|
|
ansible.builtin.template:
|
|
src: desktop/.gitconfig.j2
|
|
dest: "{{ user_home }}/.gitconfig"
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0644"
|
|
|
|
- name: Bootstrap tmux plugin manager checkout
|
|
tags: [dotfiles, dotfiles:desktop, tmux]
|
|
ansible.builtin.git:
|
|
repo: https://github.com/tmux-plugins/tpm
|
|
dest: "{{ user_home }}/.tmux/plugins/tpm"
|
|
version: master
|
|
update: true
|
|
become_user: "{{ username }}"
|
|
environment:
|
|
HOME: "{{ user_home }}"
|
|
|
|
- name: Install tmux plugins through TPM
|
|
tags: [dotfiles, dotfiles:desktop, tmux]
|
|
ansible.builtin.command:
|
|
cmd: "{{ user_home }}/.tmux/plugins/tpm/bin/install_plugins"
|
|
become_user: "{{ username }}"
|
|
environment:
|
|
HOME: "{{ user_home }}"
|
|
register: cinnamon_tmux_plugin_install
|
|
changed_when: >-
|
|
(cinnamon_tmux_plugin_install.stdout | default('')) is search('download success') or
|
|
(cinnamon_tmux_plugin_install.stderr | default('')) is search('download success')
|
|
|
|
- name: Install desktop npm packages
|
|
tags: [packages, npm]
|
|
community.general.npm:
|
|
name: "{{ item.name }}"
|
|
global: true
|
|
state: "{{ item.state | default('present') }}"
|
|
become: true
|
|
loop: "{{ desktop_npm_packages | default([]) }}"
|
|
when: desktop_npm_packages | length > 0
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
|
|
- name: Ensure /usr/src is writable for source builds
|
|
tags: [packages]
|
|
ansible.builtin.file:
|
|
path: /usr/src
|
|
state: directory
|
|
owner: "{{ username }}"
|
|
group: "{{ user_group }}"
|
|
mode: "0755"
|
|
|
|
- name: Build and install the gf debugger frontend from source
|
|
tags: [packages]
|
|
ansible.builtin.include_tasks:
|
|
file: "{{ role_path }}/../profile_desktop_common/tasks/source_tool.yml"
|
|
apply:
|
|
tags: [packages]
|
|
loop: >-
|
|
{{
|
|
desktop_source_tools
|
|
| default([])
|
|
| selectattr('name', 'equalto', 'gf')
|
|
| list
|
|
}}
|
|
loop_control:
|
|
loop_var: source_tool
|
|
label: "{{ source_tool.name }}"
|
|
|
|
- name: Ensure Nerd Fonts base directory exists
|
|
tags: [packages, fonts]
|
|
ansible.builtin.file:
|
|
path: /usr/local/share/fonts/nerd-fonts
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
become: true
|
|
|
|
- name: Ensure per-font Nerd Fonts directories exist
|
|
tags: [packages, fonts]
|
|
ansible.builtin.file:
|
|
path: "/usr/local/share/fonts/nerd-fonts/{{ item }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
become: true
|
|
loop: "{{ mint_nerd_fonts | default([]) }}"
|
|
|
|
- name: Download Nerd Font archives
|
|
tags: [packages, fonts]
|
|
ansible.builtin.get_url:
|
|
url: "https://github.com/ryanoasis/nerd-fonts/releases/download/{{ mint_nerd_fonts_version }}/{{ item }}.zip"
|
|
dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
become: true
|
|
loop: "{{ mint_nerd_fonts | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
|
|
- name: Extract Nerd Font archives
|
|
tags: [packages, fonts]
|
|
ansible.builtin.unarchive:
|
|
src: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip"
|
|
dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}"
|
|
remote_src: true
|
|
owner: root
|
|
group: root
|
|
become: true
|
|
loop: "{{ mint_nerd_fonts | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
register: cinnamon_nerd_fonts_extract
|
|
|
|
- name: Refresh system font cache after installing Nerd Fonts
|
|
tags: [packages, fonts]
|
|
ansible.builtin.command: fc-cache -f
|
|
become: true
|
|
changed_when: false
|
|
when: cinnamon_nerd_fonts_extract is changed
|