Modularize Fedora playbook

Now, it is one step closer into a NixOS-like setup. Apparently, there is
a list of directories to be searched to get the various roles which you
can configure through ~ansible.cfg~.
This commit is contained in:
Gabriel Arazas 2022-03-17 19:25:13 +08:00
parent 7581863a4f
commit 509acd047c
5 changed files with 107 additions and 241 deletions

3
ansible.cfg Normal file
View File

@ -0,0 +1,3 @@
[defaults]
inventory = inventory/inventory
roles_path = roles/

8
inventory/inventory Normal file
View File

@ -0,0 +1,8 @@
---
# vim:set ft=yaml:
workstation:
hosts:
127.0.0.1:
vars:
ansible_connection: local

View File

@ -0,0 +1,96 @@
# TODO:
# * Configure GNOME extensions
# * Configure the Fedora host with custom systemd units
# * Custom session variables
---
- name: foo-dogsquared's Fedora workstation
hosts: workstation
become: yes
roles:
- role: system/base
tags:
- dev_minimal
- dev_extra
- flatpak_desktop_apps
- i18n
- fonts
- apps/emacs
tasks:
- name: Install Flatpak development tools
dnf:
state: present
name:
- flatpak
- flatpak-builder
- name: Enable copr repositories
community.general.copr:
state: enabled
name: "{{ item }}"
loop:
- cappyishihara/opentabletdriver
- atim/lazygit
- fale/gopass
- peterwu/iosevka
# Package installations.
- name: Install packages from enabled copr repositories
dnf:
state: present
name:
- lazygit
- opentabletdriver
- golang-github-gopasspw-gopass
- iosevka-fonts
- iosevka-curly-fonts
- iosevka-curly-slab-fonts
- iosevka-slab-fonts
- iosevka-etoile-fonts
- name: Install RPM development tools
dnf:
state: present
name:
- rpm-build
- go-rpm-macros
- name: Install web-related tools
dnf:
state: present
name:
- thunderbird
- chromium
- firefox
- name: Install Fedora COPR dev't tools
dnf:
state: present
name:
- copr-cli
- dnf-plugins-core
- name: Install Ansible
dnf:
state: present
name:
- ansible
- ansible-doc
- ansible-collection-community-general
- python3-psutil
# Configure desktop environment.
- name: Install dconf keyfiles
copy:
src: ./files/dconf/
dest: /etc/dconf/db/a-happy-gnome.d
- name: Set 'user' dconf profile with the custom GNOME config
ansible.builtin.shell: echo "system-db:a-happy-gnome" >> /etc/dconf/profile/user
- name: Enable night light in GNOME
dconf:
state: present
key: /org/gnome/settings-daemon/plugins/color/night-light-enabled
value: "true"

View File

@ -1,241 +0,0 @@
---
- hosts: localhost
become: yes
become_user: root
tasks:
- name: Install Flatpak development tools
dnf:
state: present
name:
- flatpak
- flatpak-builder
- name: Add Flatpak remotes
flatpak_remote:
state: present
name: "{{ item.name }}"
flatpakrepo_url: "{{ item.repo }}"
loop:
- name: flathub
repo: "https://flathub.org/repo/flathub.flatpakrepo"
- name: flathub-beta
repo: "https://flathub.org/beta-repo/flathub-beta.flatpakrepo"
- name: gnome-nightly
repo: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
- name: kdeapps
repo: "https://distribute.kde.org/kdeapps.flatpakrepo"
- name: Enable copr repositories
community.general.copr:
state: enabled
name: "{{ item }}"
loop:
- cappyishihara/opentabletdriver
- atim/lazygit
- fale/gopass
- peterwu/iosevka
# Package installations.
- name: Install packages from enabled copr repositories
dnf:
state: present
name:
- lazygit
- opentabletdriver
- golang-github-gopasspw-gopass
- iosevka-fonts
- iosevka-curly-fonts
- iosevka-curly-slab-fonts
- iosevka-slab-fonts
- iosevka-etoile-fonts
- name: Set minimal development environment
dnf:
state: present
name:
- neovim
- python-neovim
- git
- kitty
- kitty-doc
- kitty-terminfo
- man-db
- man-pages
- name: Install additional development tools
dnf:
state: present
name:
- tealdeer
- bat
- fzf
- exa
- ripgrep
- sqlite
- zoxide
- direnv
- name: Install RPM development tools
dnf:
state: present
name:
- rpm-build
- go-rpm-macros
- name: Setup container development tools
dnf:
state: present
name:
- podman
- toolbox
- openssl
- name: Install backup tools
dnf:
state: present
name:
- borgbackup
- borgmatic
- name: Install (Doom) Emacs with its required dependencies
dnf:
state: present
name:
- emacs
- libvterm
- aspell
- aspell-en
- wordnet
- zstd
- name: Install web-related tools
dnf:
state: present
name:
- thunderbird
- chromium
- firefox
- name: Install extra dependencies
dnf:
state: present
name:
- editorconfig
- ImageMagick
- ImageMagick-doc
- ImageMagick-libs
- hyperfine
- libtree-sitter
- recoll
- recoll-gssp
- recoll-kio
- starship
- name: Install Fedora COPR dev't tools
dnf:
state: present
name:
- copr-cli
- dnf-plugins-core
- name: Install i18n tools
dnf:
state: present
name:
- fcitx5
- fcitx5-configtool
- fcitx5-gtk4
- fcitx5-lua
- fcitx5-mozc
- fcitx5-rime
- librime
- librime-tools
- mozc
- name: Install Ansible
dnf:
state: present
name:
- ansible
- ansible-doc
- ansible-collection-community-general
- python3-psutil
- name: Install fonts
dnf:
state: present
name:
- adobe-source-code-pro-fonts
- adobe-source-sans-pro-fonts
- adobe-source-serif-pro-fonts
- google-noto-cjk-fonts
- google-noto-cjk-fonts-common
- google-noto-emoji-fonts
- google-noto-sans-fonts
- google-noto-serif-fonts
# Install applications from Flatpak
- name: Install applications from 'flathub' Flatpak remote
flatpak:
state: present
name: "{{ item }}"
remote: flathub
loop:
- com.github.tchx84.Flatseal
- com.github.wwmm.easyeffects
- com.obsproject.Studio
- com.play0ad.zeroad
- com.remnantsoftheprecursors.ROTP
- com.usebottles.bottles
- com.valvesoftware.Steam
- io.github.lainsce.Emulsion
- org.blender.Blender
- org.inkscape.Inkscape
- org.kde.krita
- org.musescore.MuseScore
- org.pipewire.Helvum
- org.zrythm.Zrythm
- re.sonny.Junction
- re.sonny.Tangram
- name: Install applications from 'kdeapps' Flatpak remote
flatpak:
state: present
name: "{{ item }}"
remote: kdeapps
loop:
- org.kde.krita-nightly
- name: Install applications from 'flathub-beta' Flatpak remote
flatpak:
state: present
name: "{{ item }}"
remote: flathub-beta
loop:
- net.lutris.Lutris
- name: Install applications from 'gnome-nightly' Flatpak remote
flatpak:
state: present
name: "{{ item }}"
remote: gnome-nightly
loop:
- org.gimp.GIMP
# Configure desktop environment.
- name: Install dconf keyfiles
copy:
src: ./files/dconf/
dest: /etc/dconf/db/a-happy-gnome.d
- name: Set 'user' dconf profile with the custom GNOME config
ansible.builtin.shell: echo "system-db:a-happy-gnome" >> /etc/dconf/profile/user
- name: Enable night light in GNOME
dconf:
state: present
key: /org/gnome/settings-daemon/plugins/color/night-light-enabled
value: "true"
# TODO:
# * Configure GNOME extensions