feat: tilføj Ansible-playbook til Fedora KDE setup
- 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
This commit is contained in:
@@ -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`
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
- name: DNF - Installer pakker
|
||||||
|
ansible.builtin.dnf:
|
||||||
|
name: "{{ dnf_packages }}"
|
||||||
|
state: present
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: Flatpak - Installer pakker
|
||||||
|
community.general.flatpak:
|
||||||
|
name: "{{ flatpak_packages }}"
|
||||||
|
method: system
|
||||||
|
state: present
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user