feat: initial commit — Ansible Fedora KDE setup
Flyttet fra .dotfiles/fedora/kde/ansible/ til eget repo. - site.yml som hovedindgang til playbooken - tasks/ opdelt pr. ansvarsområde: rpmfusion, repos, dnf, flatpak, system - vars/ med pakkelister for nem redigering - kde_shortcuts/ med custom KDE genveje - README og installation.md fra .dotfiles
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# 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. **Tailscale login:** `sudo tailscale up`
|
||||
2. **Jottacloud login:** `run_jottad && jotta-cli login`
|
||||
3. **Firefox about:config** — se [installation.md](../installation.md#firefox-aboutconfig)
|
||||
4. **KDE Shortcuts** — System Settings → Shortcuts → Import → `kde_shortcuts/1password_shortcuts.kksrc`
|
||||
+205
@@ -0,0 +1,205 @@
|
||||
# Installations for new Fedora KDE instance
|
||||
|
||||
Setup guide for a fresh Fedora KDE install. Follow sections in order.
|
||||
|
||||
> **Automatisk installation:** De fleste trin herunder kan automatiseres via Ansible.
|
||||
> Se [ansible/README.md](ansible/README.md) for kørselsvejledning.
|
||||
> Denne guide gælder hvis du foretrækker at køre trinene manuelt.
|
||||
|
||||
## Index
|
||||
|
||||
1. [RPM Fusion Tweaks](#rpm-fusion-tweaks)
|
||||
- [Configurations](#configurations)
|
||||
- [Multimedia](#multimedia)
|
||||
- [DVD stuff](#dvd-stuff)
|
||||
- [Firmware stuff](#firmware-stuff)
|
||||
|
||||
2. [Packages](#packages)
|
||||
- [Import keys & repos](#import-keys--repos)
|
||||
- [Install packages](#install-packages)
|
||||
- [Configs](#configs)
|
||||
|
||||
3. [System Settings](#system-settings)
|
||||
- [NetworkManager & systemd-resolved](#fix-common-issues-with-networkmanager--systemd-resolved)
|
||||
|
||||
4. [KDE Shortcuts](#kde-shortcuts)
|
||||
|
||||
---
|
||||
|
||||
## RPM Fusion Tweaks
|
||||
|
||||
> [RPM Fusion](https://rpmfusion.org/) — [Configuration guide](https://rpmfusion.org/Configuration)
|
||||
|
||||
### Configurations
|
||||
|
||||
Enable RPM Fusion repos and update core:
|
||||
|
||||
```bash
|
||||
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
|
||||
sudo dnf config-manager setopt fedora-cisco-openh264.enabled=1
|
||||
sudo dnf update @core
|
||||
sudo dnf install rpmfusion-\*-appstream-data
|
||||
```
|
||||
|
||||
### Multimedia
|
||||
|
||||
> [RPM Fusion Multimedia guide](https://rpmfusion.org/Howto/Multimedia)
|
||||
|
||||
```bash
|
||||
sudo dnf swap ffmpeg-free ffmpeg --allowerasing
|
||||
sudo dnf update @multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
|
||||
```
|
||||
|
||||
#### Intel (Recent CPU)
|
||||
|
||||
```bash
|
||||
sudo dnf install intel-media-driver
|
||||
```
|
||||
|
||||
### DVD stuff
|
||||
|
||||
```bash
|
||||
sudo dnf install rpmfusion-free-release-tainted
|
||||
sudo dnf install libdvdcss
|
||||
```
|
||||
|
||||
### Firmware stuff
|
||||
|
||||
```bash
|
||||
sudo dnf install rpmfusion-nonfree-release-tainted
|
||||
sudo dnf --repo=rpmfusion-nonfree-tainted install "*-firmware"
|
||||
```
|
||||
|
||||
[↑ Index](#index)
|
||||
|
||||
---
|
||||
|
||||
## Packages
|
||||
|
||||
### Import keys & repos
|
||||
|
||||
#### 1Password
|
||||
|
||||
```bash
|
||||
sudo rpm --import https://downloads.1password.com/linux/keys/1password.asc
|
||||
sudo sh -c 'echo -e "[1password]\nname=1Password Stable Channel\nbaseurl=https://downloads.1password.com/linux/rpm/stable/\$basearch\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=\"https://downloads.1password.com/linux/keys/1password.asc\"" > /etc/yum.repos.d/1password.repo'
|
||||
sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
|
||||
sudo dnf config-manager addrepo --from-repofile=https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
|
||||
sudo dnf config-manager addrepo --from-repofile=https://repo.librewolf.net/librewolf.repo
|
||||
```
|
||||
|
||||
#### Jottacloud
|
||||
|
||||
```bash
|
||||
sudo tee /etc/yum.repos.d/JottaCLI.repo > /dev/null << 'EOF'
|
||||
[jotta-cli]
|
||||
name=Jottacloud CLI
|
||||
baseurl=https://repo.jotta.cloud/redhat
|
||||
gpgcheck=1
|
||||
gpgkey=https://repo.jotta.cloud/public.gpg
|
||||
EOF
|
||||
```
|
||||
|
||||
#### VSCodium
|
||||
|
||||
```bash
|
||||
sudo tee -a /etc/yum.repos.d/vscodium.repo << 'EOF'
|
||||
[gitlab.com_paulcarroty_vscodium_repo]
|
||||
name=gitlab.com_paulcarroty_vscodium_repo
|
||||
baseurl=https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/rpms/
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgkey=https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg
|
||||
metadata_expire=1h
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Cider
|
||||
|
||||
```bash
|
||||
sudo rpm --import https://repo.cider.sh/RPM-GPG-KEY
|
||||
sudo tee /etc/yum.repos.d/cider.repo << 'EOF'
|
||||
[cidercollective]
|
||||
name=Cider Collective Repository
|
||||
baseurl=https://repo.cider.sh/rpm/RPMS
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
gpgkey=https://repo.cider.sh/RPM-GPG-KEY
|
||||
EOF
|
||||
```
|
||||
|
||||
### Install packages
|
||||
|
||||
#### DNF
|
||||
|
||||
```bash
|
||||
sudo dnf install fastfetch stow fish steam git gh nvim tldr btop 1password sublime-text mangojuice gamemode gamescope obs-studio jotta-cli codium rpmconf Cider
|
||||
```
|
||||
|
||||
#### Flatpak
|
||||
|
||||
```bash
|
||||
flatpak install -y \
|
||||
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
|
||||
```
|
||||
|
||||
### Configs
|
||||
|
||||
#### Jottacloud
|
||||
|
||||
```bash
|
||||
run_jottad
|
||||
jotta-cli help
|
||||
```
|
||||
|
||||
#### Firefox about:config
|
||||
|
||||
Open `about:config` and set:
|
||||
|
||||
```
|
||||
accessibility.typeaheadfind.enablesound = false
|
||||
media.hardwaremediakeys.enabled = false
|
||||
clipboard.autocopy = false
|
||||
middlemouse.paste = false
|
||||
widget.gtk.native-emoji-dialog = false
|
||||
```
|
||||
|
||||
[↑ Index](#index)
|
||||
|
||||
---
|
||||
|
||||
## System Settings
|
||||
|
||||
### Fix common issues with NetworkManager + systemd-resolved
|
||||
|
||||
```bash
|
||||
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||
```
|
||||
|
||||
[↑ Index](#index)
|
||||
|
||||
---
|
||||
|
||||
## KDE Shortcuts
|
||||
|
||||
### 1Password
|
||||
|
||||
Import the shortcut file via **System Settings → Shortcuts → Import**:
|
||||
|
||||
```
|
||||
fedora/kde/kde_shortcuts/1password_shortcuts.kksrc
|
||||
```
|
||||
|
||||
[↑ Index](#index)
|
||||
@@ -0,0 +1,27 @@
|
||||
[Custom Commands][net.local.1password-2.desktop]
|
||||
Exec=1password --quick-access
|
||||
Name=1password qa
|
||||
|
||||
[Custom Commands][net.local.1password.desktop]
|
||||
Exec=1password --toggle
|
||||
Name=1password
|
||||
|
||||
[Custom Commands][net.local.kitty-2.desktop]
|
||||
Exec=kitty --override window_title="shutdown-script" bash -c "~/scripts/app_close_and_shutdown.sh; exec bash"
|
||||
Name=app_close_and_shutdown
|
||||
|
||||
[Custom Commands][net.local.kitty.desktop]
|
||||
Exec=kitty --override window_title="shutdown-script" bash -c "~/scripts/app_close_and_reboot.sh; exec bash"
|
||||
Name=app_close_and_restart.sh\s
|
||||
|
||||
[net.local.1password-2.desktop][Global Shortcuts]
|
||||
_launch=Meta+Ctrl+.
|
||||
|
||||
[net.local.1password.desktop][Global Shortcuts]
|
||||
_launch=Meta+Ctrl+,
|
||||
|
||||
[net.local.kitty-2.desktop][Global Shortcuts]
|
||||
_launch=Meta+Ctrl+Alt+S
|
||||
|
||||
[net.local.kitty.desktop][Global Shortcuts]
|
||||
_launch=Meta+Ctrl+Alt+R
|
||||
@@ -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,82 @@
|
||||
---
|
||||
# 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
|
||||
|
||||
# Tailscale
|
||||
- name: Tailscale - repo
|
||||
ansible.builtin.command:
|
||||
cmd: dnf config-manager addrepo --from-repofile=https://pkgs.tailscale.com/stable/fedora/tailscale.repo
|
||||
args:
|
||||
creates: /etc/yum.repos.d/tailscale.repo
|
||||
|
||||
# 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,13 @@
|
||||
---
|
||||
- name: Tailscale - aktiver og start tailscaled
|
||||
ansible.builtin.systemd:
|
||||
name: tailscaled
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- 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,25 @@
|
||||
---
|
||||
dnf_packages:
|
||||
- fastfetch
|
||||
- stow
|
||||
- fish
|
||||
- kitty
|
||||
- lsd
|
||||
- glow
|
||||
- tailscale
|
||||
- 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