mirror of
https://github.com/fscotto/infra.git
synced 2026-09-27 11:02:47 +00:00
198 lines
5.9 KiB
YAML
198 lines
5.9 KiB
YAML
---
|
|
- name: Copy Fedora dotfiles
|
|
tags: [dotfiles, dotfiles:common]
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/../dotfiles/fedora/{{ item.src }}"
|
|
dest: "{{ effective_user_home }}/{{ item.dest }}"
|
|
owner: "{{ effective_username }}"
|
|
group: "{{ effective_user_group }}"
|
|
mode: "{{ item.mode }}"
|
|
loop: "{{ fedora_dotfiles | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item.dest }}"
|
|
|
|
- name: Configure Docker repository on Fedora
|
|
tags: [packages]
|
|
ansible.builtin.yum_repository:
|
|
name: docker-ce-stable
|
|
description: Docker CE Stable - $basearch
|
|
baseurl: "https://download.docker.com/linux/fedora/$releasever/$basearch/stable"
|
|
enabled: true
|
|
gpgcheck: true
|
|
gpgkey: https://download.docker.com/linux/fedora/gpg
|
|
state: present
|
|
when:
|
|
- "'workstation_dev_fedora' in group_names"
|
|
- fedora_manage_docker_repo | default(false)
|
|
|
|
- name: Refresh dnf package metadata
|
|
tags: [packages]
|
|
ansible.builtin.dnf:
|
|
update_cache: true
|
|
|
|
- name: Install packages on Fedora
|
|
tags: [packages]
|
|
ansible.builtin.dnf:
|
|
name: >-
|
|
{{
|
|
(
|
|
(common_packages | default([]))
|
|
+ (fedora_packages_base | default([]))
|
|
+ (
|
|
(fedora_docker_packages | default([]))
|
|
if 'workstation_dev_fedora' in group_names
|
|
else []
|
|
)
|
|
+ (profile_packages | default([]))
|
|
+ (
|
|
(fedora_desktop_packages | default([]))
|
|
if 'graphical_desktop' in group_names
|
|
else []
|
|
)
|
|
+ (
|
|
(fedora_emacs_packages | default([]))
|
|
if (
|
|
emacs_enabled | default(false) | bool
|
|
)
|
|
else []
|
|
)
|
|
+ (
|
|
(fedora_dev_packages | default([]))
|
|
if 'workstation_dev_fedora' in group_names
|
|
else []
|
|
)
|
|
+ (
|
|
(workstation_dev_wsl_packages | default([]))
|
|
if 'workstation_dev_wsl' in group_names
|
|
else []
|
|
)
|
|
+ (host_packages | default([]))
|
|
)
|
|
| difference(fedora_excluded_packages | default([]))
|
|
| unique
|
|
}}
|
|
state: present
|
|
|
|
- name: Remove excluded Fedora packages
|
|
tags: [packages]
|
|
ansible.builtin.dnf:
|
|
name: "{{ fedora_removed_packages | default([]) }}"
|
|
state: absent
|
|
when: (fedora_removed_packages | default([])) | length > 0
|
|
|
|
- name: Add user to docker group
|
|
tags: [packages]
|
|
ansible.builtin.user:
|
|
name: "{{ effective_username }}"
|
|
groups: docker
|
|
append: true
|
|
when:
|
|
- "'workstation_dev_fedora' in group_names"
|
|
- (fedora_docker_packages | default([])) | length > 0
|
|
|
|
- name: Install shared AI coding agents on Fedora
|
|
tags: [packages, npm, ai_agents]
|
|
community.general.npm:
|
|
name: "{{ item.value.npm_package }}"
|
|
global: true
|
|
state: latest
|
|
loop: "{{ ai_agents | dict2items | selectattr('value.npm_package', 'defined') | list }}"
|
|
when:
|
|
- item.value.install_enabled | bool
|
|
- "'workstation_dev_fedora' not in group_names"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
|
|
- name: Uninstall shared AI coding agents on Fedora
|
|
tags: [packages, npm, ai_agents]
|
|
community.general.npm:
|
|
name: "{{ item.value.npm_package }}"
|
|
global: true
|
|
state: absent
|
|
loop: "{{ ai_agents | dict2items | selectattr('value.npm_package', 'defined') | list }}"
|
|
when:
|
|
- item.value.uninstall_enabled | bool
|
|
- "'workstation_dev_fedora' not in group_names"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
|
|
- name: Define Fedora Flatpak applications
|
|
tags: [packages]
|
|
ansible.builtin.set_fact:
|
|
packages_fedora_flatpak_packages: >-
|
|
{{
|
|
(
|
|
(fedora_flatpak_packages | default([]))
|
|
+ (host_flatpak_packages | default([]))
|
|
)
|
|
| unique
|
|
}}
|
|
|
|
- name: Ensure Flathub remote is configured on Fedora
|
|
tags: [packages]
|
|
community.general.flatpak_remote:
|
|
name: "{{ fedora_flatpak_remote_name | default('flathub') }}"
|
|
state: present
|
|
flatpakrepo_url: "{{ fedora_flatpak_remote_url | default('https://dl.flathub.org/repo/flathub.flatpakrepo') }}"
|
|
when: (packages_fedora_flatpak_packages | default([])) | length > 0
|
|
|
|
- name: Install Fedora Flatpak applications
|
|
tags: [packages]
|
|
community.general.flatpak:
|
|
name: "{{ packages_fedora_flatpak_packages }}"
|
|
state: present
|
|
remote: "{{ fedora_flatpak_remote_name | default('flathub') }}"
|
|
method: system
|
|
when: (packages_fedora_flatpak_packages | default([])) | length > 0
|
|
|
|
- name: Ensure Fedora 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"
|
|
when: (fedora_nerd_fonts | default([])) | length > 0
|
|
|
|
- name: Ensure Fedora 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"
|
|
loop: "{{ fedora_nerd_fonts | default([]) }}"
|
|
|
|
- name: Download Fedora Nerd Font archives
|
|
tags: [packages, fonts]
|
|
ansible.builtin.get_url:
|
|
url: "https://github.com/ryanoasis/nerd-fonts/releases/download/{{ fedora_nerd_fonts_version }}/{{ item }}.zip"
|
|
dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
loop: "{{ fedora_nerd_fonts | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
|
|
- name: Extract Fedora 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
|
|
loop: "{{ fedora_nerd_fonts | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
register: fedora_nerd_fonts_extract
|
|
|
|
- name: Refresh system font cache after installing Fedora Nerd Fonts
|
|
tags: [packages, fonts]
|
|
ansible.builtin.command: fc-cache -f
|
|
changed_when: false
|
|
when: fedora_nerd_fonts_extract is changed
|