From 7d1de3ad8edeb3bd48c5a487fbe0e0767dd7f801 Mon Sep 17 00:00:00 2001 From: GlennIgen Date: Fri, 22 May 2026 18:13:05 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20tilf=C3=B8j=20Ansible-playbook=20til=20?= =?UTF-8?q?Fedora=20KDE=20setup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Opret site.yml som hovedindgang til playbooken - Opdel tasks i separate filer: rpmfusion, repos, dnf, flatpak, system - Pakkelister i vars/ for nem redigering uden at røre logikken - Auto-detektér Fedora-version og Intel CPU via Ansible facts - Tilføj README med kørselsvejledning og manuelle trin --- fedora/kde/ansible/README.md | 63 ++++++++++++++++ fedora/kde/ansible/site.yml | 15 ++++ fedora/kde/ansible/tasks/dnf_packages.yml | 5 ++ fedora/kde/ansible/tasks/flatpak_packages.yml | 6 ++ fedora/kde/ansible/tasks/repos.yml | 75 +++++++++++++++++++ fedora/kde/ansible/tasks/rpmfusion.yml | 60 +++++++++++++++ fedora/kde/ansible/tasks/system.yml | 7 ++ fedora/kde/ansible/vars/dnf_packages.yml | 21 ++++++ fedora/kde/ansible/vars/flatpak_packages.yml | 14 ++++ 9 files changed, 266 insertions(+) create mode 100644 fedora/kde/ansible/README.md create mode 100644 fedora/kde/ansible/site.yml create mode 100644 fedora/kde/ansible/tasks/dnf_packages.yml create mode 100644 fedora/kde/ansible/tasks/flatpak_packages.yml create mode 100644 fedora/kde/ansible/tasks/repos.yml create mode 100644 fedora/kde/ansible/tasks/rpmfusion.yml create mode 100644 fedora/kde/ansible/tasks/system.yml create mode 100644 fedora/kde/ansible/vars/dnf_packages.yml create mode 100644 fedora/kde/ansible/vars/flatpak_packages.yml diff --git a/fedora/kde/ansible/README.md b/fedora/kde/ansible/README.md new file mode 100644 index 0000000..ddd7c4b --- /dev/null +++ b/fedora/kde/ansible/README.md @@ -0,0 +1,63 @@ +# Fedora KDE — Ansible Setup + +Ansible-playbook der automatiserer installationsguiden i [installation.md](../installation.md). + +## Struktur + +``` +ansible/ +├── site.yml ← Kør denne +├── vars/ +│ ├── dnf_packages.yml ← Liste over DNF-pakker +│ └── flatpak_packages.yml ← Liste over Flatpak-pakker +└── tasks/ + ├── rpmfusion.yml ← RPM Fusion repos, multimedia, DVD, firmware + ├── repos.yml ← GPG-nøgler og .repo-filer + ├── dnf_packages.yml ← Installer DNF-pakker fra vars/ + ├── flatpak_packages.yml ← Installer Flatpaks fra vars/ + └── system.yml ← NetworkManager/systemd-resolved fix +``` + +## Forudsætninger + +Installer Ansible og `community.general`-samlingen (kræves til Flatpak-modulet): + +```bash +sudo dnf install ansible +ansible-galaxy collection install community.general +``` + +## Kør + +```bash +ansible-playbook -K site.yml +``` + +`-K` prompter for sudo-password. Playbooken kører kun på `localhost`. + +## Tilføj eller fjern pakker + +- **DNF-pakke:** tilføj/fjern en linje i [vars/dnf_packages.yml](vars/dnf_packages.yml) +- **Flatpak:** tilføj/fjern en linje i [vars/flatpak_packages.yml](vars/flatpak_packages.yml) +- **Repo:** tilføj en task-blok i [tasks/repos.yml](tasks/repos.yml) + +## Spring et modul over + +Kommenter den relevante linje ud i `site.yml`: + +```yaml + tasks: + - import_tasks: tasks/rpmfusion.yml + # - import_tasks: tasks/repos.yml ← springes over + - import_tasks: tasks/dnf_packages.yml + - import_tasks: tasks/flatpak_packages.yml + - import_tasks: tasks/system.yml +``` + +## Manuelle trin + +Disse kan ikke automatiseres og skal gøres manuelt efter kørsel: + +1. **Jottacloud login:** `run_jottad && jotta-cli login` +2. **Firefox about:config** — se [installation.md](../installation.md#firefox-aboutconfig) +3. **KDE Shortcuts** — System Settings → Shortcuts → Import → `kde_shortcuts/1password_shortcuts.kksrc` diff --git a/fedora/kde/ansible/site.yml b/fedora/kde/ansible/site.yml new file mode 100644 index 0000000..1433257 --- /dev/null +++ b/fedora/kde/ansible/site.yml @@ -0,0 +1,15 @@ +--- +- name: Fedora KDE Setup + hosts: localhost + connection: local + become: true + gather_facts: true + vars_files: + - vars/dnf_packages.yml + - vars/flatpak_packages.yml + tasks: + - import_tasks: tasks/rpmfusion.yml + - import_tasks: tasks/repos.yml + - import_tasks: tasks/dnf_packages.yml + - import_tasks: tasks/flatpak_packages.yml + - import_tasks: tasks/system.yml diff --git a/fedora/kde/ansible/tasks/dnf_packages.yml b/fedora/kde/ansible/tasks/dnf_packages.yml new file mode 100644 index 0000000..a1cf862 --- /dev/null +++ b/fedora/kde/ansible/tasks/dnf_packages.yml @@ -0,0 +1,5 @@ +--- +- name: DNF - Installer pakker + ansible.builtin.dnf: + name: "{{ dnf_packages }}" + state: present diff --git a/fedora/kde/ansible/tasks/flatpak_packages.yml b/fedora/kde/ansible/tasks/flatpak_packages.yml new file mode 100644 index 0000000..f1c29c1 --- /dev/null +++ b/fedora/kde/ansible/tasks/flatpak_packages.yml @@ -0,0 +1,6 @@ +--- +- name: Flatpak - Installer pakker + community.general.flatpak: + name: "{{ flatpak_packages }}" + method: system + state: present diff --git a/fedora/kde/ansible/tasks/repos.yml b/fedora/kde/ansible/tasks/repos.yml new file mode 100644 index 0000000..bbed81d --- /dev/null +++ b/fedora/kde/ansible/tasks/repos.yml @@ -0,0 +1,75 @@ +--- +# 1Password +- name: 1Password - GPG nøgle + ansible.builtin.rpm_key: + key: https://downloads.1password.com/linux/keys/1password.asc + state: present + +- name: 1Password - repo + ansible.builtin.yum_repository: + name: 1password + description: 1Password Stable Channel + baseurl: https://downloads.1password.com/linux/rpm/stable/$basearch + enabled: true + gpgcheck: true + repo_gpgcheck: true + gpgkey: https://downloads.1password.com/linux/keys/1password.asc + state: present + +# Sublime Text +- name: Sublime Text - GPG nøgle + ansible.builtin.rpm_key: + key: https://download.sublimetext.com/sublimehq-rpm-pub.gpg + state: present + +- name: Sublime Text - repo + ansible.builtin.command: + cmd: dnf config-manager addrepo --from-repofile=https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo + args: + creates: /etc/yum.repos.d/sublime-text.repo + +# LibreWolf +- name: LibreWolf - repo + ansible.builtin.command: + cmd: dnf config-manager addrepo --from-repofile=https://repo.librewolf.net/librewolf.repo + args: + creates: /etc/yum.repos.d/librewolf.repo + +# Jottacloud +- name: Jottacloud - repo + ansible.builtin.yum_repository: + name: jotta-cli + description: Jottacloud CLI + baseurl: https://repo.jotta.cloud/redhat + gpgcheck: true + gpgkey: https://repo.jotta.cloud/public.gpg + state: present + +# VSCodium +- name: VSCodium - repo + ansible.builtin.yum_repository: + name: gitlab.com_paulcarroty_vscodium_repo + description: gitlab.com_paulcarroty_vscodium_repo + baseurl: https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/rpms/ + enabled: true + gpgcheck: true + repo_gpgcheck: true + gpgkey: https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg + metadata_expire: 1h + state: present + +# Cider +- name: Cider - GPG nøgle + ansible.builtin.rpm_key: + key: https://repo.cider.sh/RPM-GPG-KEY + state: present + +- name: Cider - repo + ansible.builtin.yum_repository: + name: cidercollective + description: Cider Collective Repository + baseurl: https://repo.cider.sh/rpm/RPMS + enabled: true + gpgcheck: true + gpgkey: https://repo.cider.sh/RPM-GPG-KEY + state: present diff --git a/fedora/kde/ansible/tasks/rpmfusion.yml b/fedora/kde/ansible/tasks/rpmfusion.yml new file mode 100644 index 0000000..79a0faf --- /dev/null +++ b/fedora/kde/ansible/tasks/rpmfusion.yml @@ -0,0 +1,60 @@ +--- +- name: RPM Fusion - Installer free og nonfree repos + ansible.builtin.dnf: + name: + - "https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm" + - "https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-{{ ansible_distribution_major_version }}.noarch.rpm" + state: present + +- name: RPM Fusion - Aktiver Cisco OpenH264 + ansible.builtin.command: + cmd: dnf config-manager setopt fedora-cisco-openh264.enabled=1 + changed_when: false + +- name: RPM Fusion - Opdater @core + ansible.builtin.dnf: + name: "@core" + state: latest + +- name: RPM Fusion - Installer appstream data + ansible.builtin.dnf: + name: "rpmfusion-*-appstream-data" + state: present + +- name: Multimedia - Swap ffmpeg-free til ffmpeg + ansible.builtin.command: + cmd: dnf swap -y ffmpeg-free ffmpeg --allowerasing + register: ffmpeg_swap + changed_when: "'Nothing to do' not in ffmpeg_swap.stdout" + failed_when: ffmpeg_swap.rc != 0 and 'already installed' not in ffmpeg_swap.stderr | default('') + +- name: Multimedia - Opdater @multimedia + ansible.builtin.command: + cmd: dnf update -y @multimedia --setopt=install_weak_deps=False --exclude=PackageKit-gstreamer-plugin + changed_when: false + +- name: Multimedia - Intel media driver (kun Intel CPU) + ansible.builtin.dnf: + name: intel-media-driver + state: present + when: ansible_processor | join(' ') | lower is search('intel') + +- name: DVD - rpmfusion-free-release-tainted + ansible.builtin.dnf: + name: rpmfusion-free-release-tainted + state: present + +- name: DVD - libdvdcss + ansible.builtin.dnf: + name: libdvdcss + state: present + +- name: Firmware - rpmfusion-nonfree-release-tainted + ansible.builtin.dnf: + name: rpmfusion-nonfree-release-tainted + state: present + +- name: Firmware - installer nonfree firmware + ansible.builtin.command: + cmd: dnf --repo=rpmfusion-nonfree-tainted install -y "*-firmware" + changed_when: false diff --git a/fedora/kde/ansible/tasks/system.yml b/fedora/kde/ansible/tasks/system.yml new file mode 100644 index 0000000..febcebc --- /dev/null +++ b/fedora/kde/ansible/tasks/system.yml @@ -0,0 +1,7 @@ +--- +- name: System - resolv.conf symlink (NetworkManager + systemd-resolved fix) + ansible.builtin.file: + src: /run/systemd/resolve/stub-resolv.conf + dest: /etc/resolv.conf + state: link + force: true diff --git a/fedora/kde/ansible/vars/dnf_packages.yml b/fedora/kde/ansible/vars/dnf_packages.yml new file mode 100644 index 0000000..cf7562d --- /dev/null +++ b/fedora/kde/ansible/vars/dnf_packages.yml @@ -0,0 +1,21 @@ +--- +dnf_packages: + - fastfetch + - stow + - fish + - steam + - git + - gh + - nvim + - tldr + - btop + - 1password + - sublime-text + - mangojuice + - gamemode + - gamescope + - obs-studio + - jotta-cli + - codium + - rpmconf + - Cider diff --git a/fedora/kde/ansible/vars/flatpak_packages.yml b/fedora/kde/ansible/vars/flatpak_packages.yml new file mode 100644 index 0000000..ed247b5 --- /dev/null +++ b/fedora/kde/ansible/vars/flatpak_packages.yml @@ -0,0 +1,14 @@ +--- +flatpak_packages: + - com.discordapp.Discord + - io.github.Faugus.faugus-launcher + - com.adamcake.Bolt + - com.notesnook.Notesnook + - com.saivert.pwvucontrol + - com.github.tchx84.Flatseal + - org.kde.kdenlive + - it.mijorus.gearlever + - com.github.Matoking.protontricks + - com.vysp3r.ProtonPlus + - org.musicbrainz.Picard + - io.github.lullabyX.sone