From b98f03214148a79786e26953b38c87e70a029169 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Wed, 2 Apr 2025 15:09:56 +0200 Subject: [PATCH] Optimized persona gamer, gnome, and refactored others --- group_vars/all/07_applications.yml | 1 + .../README.md | 2 +- .../meta/main.yml | 0 .../tasks/main.yml | 0 .../templates/caffeine.desktop.j2 | 0 .../vars/main.yml | 0 .../README.md | 0 .../meta/main.yml | 0 .../tasks/main.yml | 2 +- roles/client-gnome-extensions/vars/main.yml | 1 + .../README.md | 2 +- .../meta/main.yml | 0 .../tasks/main.yml | 0 roles/{pc-gnome => client-gnome}/README.md | 6 +-- .../{pc-gnome => client-gnome}/meta/main.yml | 6 +-- roles/client-spotify/README.md | 38 +++++++++++++++++++ roles/client-spotify/meta/main.yml | 27 +++++++++++++ .../tasks/main.yml | 2 +- roles/driver-lid-switch/README.md | 3 ++ .../handlers/main.yml | 0 .../tasks/main.yml | 0 roles/pc-games/README.md | 38 ------------------- roles/pc-games/tasks/main.yml | 14 ------- roles/pc-spotify/README.md | 33 ---------------- roles/pc-spotify/meta/main.yml | 2 - roles/persona-gamer-core/README.md | 38 +++++++++++++++++++ roles/persona-gamer-core/meta/main.yml | 28 ++++++++++++++ roles/persona-gamer-core/tasks/main.yml | 15 ++++++++ roles/persona-gamer-default/README.md | 36 ++++++++++++++++++ roles/persona-gamer-default/meta/main.yml | 25 ++++++++++++ roles/persona-gamer-default/tasks/main.yml | 5 +++ roles/persona-gamer-default/vars/main.yml | 7 ++++ roles/persona-gamer-retro/README.md | 34 +++++++++++++++++ roles/persona-gamer-retro/meta/main.yml | 25 ++++++++++++ roles/persona-gamer-retro/tasks/main.yml | 5 +++ roles/persona-gamer-retro/vars/main.yml | 4 ++ roles/persona-gamer/README.md | 37 ++++++++++++++++++ roles/persona-gamer/meta/main.yml | 31 +++++++++++++++ tasks/personal-computer.yml | 6 +-- 39 files changed, 373 insertions(+), 100 deletions(-) rename roles/{pc-gnome-caffeine => client-gnome-caffeine}/README.md (97%) rename roles/{pc-gnome-caffeine => client-gnome-caffeine}/meta/main.yml (100%) rename roles/{pc-gnome-caffeine => client-gnome-caffeine}/tasks/main.yml (100%) rename roles/{pc-gnome-caffeine => client-gnome-caffeine}/templates/caffeine.desktop.j2 (100%) rename roles/{pc-gnome-caffeine => client-gnome-caffeine}/vars/main.yml (100%) rename roles/{pc-gnome-extensions => client-gnome-extensions}/README.md (100%) rename roles/{pc-gnome-extensions => client-gnome-extensions}/meta/main.yml (100%) rename roles/{pc-gnome-extensions => client-gnome-extensions}/tasks/main.yml (87%) create mode 100644 roles/client-gnome-extensions/vars/main.yml rename roles/{pc-gnome-terminal => client-gnome-terminal}/README.md (97%) rename roles/{pc-gnome-terminal => client-gnome-terminal}/meta/main.yml (100%) rename roles/{pc-gnome-terminal => client-gnome-terminal}/tasks/main.yml (100%) rename roles/{pc-gnome => client-gnome}/README.md (78%) rename roles/{pc-gnome => client-gnome}/meta/main.yml (88%) create mode 100644 roles/client-spotify/README.md create mode 100644 roles/client-spotify/meta/main.yml rename roles/{pc-spotify => client-spotify}/tasks/main.yml (59%) create mode 100644 roles/driver-lid-switch/README.md rename roles/{pc-lid-switch => driver-lid-switch}/handlers/main.yml (100%) rename roles/{pc-lid-switch => driver-lid-switch}/tasks/main.yml (100%) delete mode 100644 roles/pc-games/README.md delete mode 100644 roles/pc-games/tasks/main.yml delete mode 100644 roles/pc-spotify/README.md delete mode 100644 roles/pc-spotify/meta/main.yml create mode 100644 roles/persona-gamer-core/README.md create mode 100644 roles/persona-gamer-core/meta/main.yml create mode 100644 roles/persona-gamer-core/tasks/main.yml create mode 100644 roles/persona-gamer-default/README.md create mode 100644 roles/persona-gamer-default/meta/main.yml create mode 100644 roles/persona-gamer-default/tasks/main.yml create mode 100644 roles/persona-gamer-default/vars/main.yml create mode 100644 roles/persona-gamer-retro/README.md create mode 100644 roles/persona-gamer-retro/meta/main.yml create mode 100644 roles/persona-gamer-retro/tasks/main.yml create mode 100644 roles/persona-gamer-retro/vars/main.yml create mode 100644 roles/persona-gamer/README.md create mode 100644 roles/persona-gamer/meta/main.yml diff --git a/group_vars/all/07_applications.yml b/group_vars/all/07_applications.yml index 40002381..8359d80b 100644 --- a/group_vars/all/07_applications.yml +++ b/group_vars/all/07_applications.yml @@ -171,6 +171,7 @@ defaults_applications: plugins: - [enable,nasa_apod@elinvention.ovh,https://github.com/Elinvention/gnome-shell-extension-nasa-apod.git] - [disable,dash-to-dock@micxgx.gmail.com,''] + - [enable, dash-to-panel@jderose9.github.com,''] ## Joomla joomla: diff --git a/roles/pc-gnome-caffeine/README.md b/roles/client-gnome-caffeine/README.md similarity index 97% rename from roles/pc-gnome-caffeine/README.md rename to roles/client-gnome-caffeine/README.md index 554bffad..4b2a136f 100644 --- a/roles/pc-gnome-caffeine/README.md +++ b/roles/client-gnome-caffeine/README.md @@ -1,4 +1,4 @@ -# GNOME Caffeine Setup +# GNOME Caffeine ## Description diff --git a/roles/pc-gnome-caffeine/meta/main.yml b/roles/client-gnome-caffeine/meta/main.yml similarity index 100% rename from roles/pc-gnome-caffeine/meta/main.yml rename to roles/client-gnome-caffeine/meta/main.yml diff --git a/roles/pc-gnome-caffeine/tasks/main.yml b/roles/client-gnome-caffeine/tasks/main.yml similarity index 100% rename from roles/pc-gnome-caffeine/tasks/main.yml rename to roles/client-gnome-caffeine/tasks/main.yml diff --git a/roles/pc-gnome-caffeine/templates/caffeine.desktop.j2 b/roles/client-gnome-caffeine/templates/caffeine.desktop.j2 similarity index 100% rename from roles/pc-gnome-caffeine/templates/caffeine.desktop.j2 rename to roles/client-gnome-caffeine/templates/caffeine.desktop.j2 diff --git a/roles/pc-gnome-caffeine/vars/main.yml b/roles/client-gnome-caffeine/vars/main.yml similarity index 100% rename from roles/pc-gnome-caffeine/vars/main.yml rename to roles/client-gnome-caffeine/vars/main.yml diff --git a/roles/pc-gnome-extensions/README.md b/roles/client-gnome-extensions/README.md similarity index 100% rename from roles/pc-gnome-extensions/README.md rename to roles/client-gnome-extensions/README.md diff --git a/roles/pc-gnome-extensions/meta/main.yml b/roles/client-gnome-extensions/meta/main.yml similarity index 100% rename from roles/pc-gnome-extensions/meta/main.yml rename to roles/client-gnome-extensions/meta/main.yml diff --git a/roles/pc-gnome-extensions/tasks/main.yml b/roles/client-gnome-extensions/tasks/main.yml similarity index 87% rename from roles/pc-gnome-extensions/tasks/main.yml rename to roles/client-gnome-extensions/tasks/main.yml index b093a95f..2877db06 100644 --- a/roles/pc-gnome-extensions/tasks/main.yml +++ b/roles/client-gnome-extensions/tasks/main.yml @@ -9,5 +9,5 @@ - name: Execute CLI GNOME Extension manager script ansible.builtin.shell: cli-gnome-extension-manager "{{ item[0] }}" "{{ item[1] }}" "{{ item[2] }}" - loop: "{{applications[application_id].plugins | dict2items }}" + loop: "{{ applications[application_id].plugins }}" become: false \ No newline at end of file diff --git a/roles/client-gnome-extensions/vars/main.yml b/roles/client-gnome-extensions/vars/main.yml new file mode 100644 index 00000000..9238e22a --- /dev/null +++ b/roles/client-gnome-extensions/vars/main.yml @@ -0,0 +1 @@ +application_id: "gnome" \ No newline at end of file diff --git a/roles/pc-gnome-terminal/README.md b/roles/client-gnome-terminal/README.md similarity index 97% rename from roles/pc-gnome-terminal/README.md rename to roles/client-gnome-terminal/README.md index 7da281b7..9681b89c 100644 --- a/roles/pc-gnome-terminal/README.md +++ b/roles/client-gnome-terminal/README.md @@ -1,4 +1,4 @@ -# GNOME Terminal Installation +# GNOME Terminal ## Description diff --git a/roles/pc-gnome-terminal/meta/main.yml b/roles/client-gnome-terminal/meta/main.yml similarity index 100% rename from roles/pc-gnome-terminal/meta/main.yml rename to roles/client-gnome-terminal/meta/main.yml diff --git a/roles/pc-gnome-terminal/tasks/main.yml b/roles/client-gnome-terminal/tasks/main.yml similarity index 100% rename from roles/pc-gnome-terminal/tasks/main.yml rename to roles/client-gnome-terminal/tasks/main.yml diff --git a/roles/pc-gnome/README.md b/roles/client-gnome/README.md similarity index 78% rename from roles/pc-gnome/README.md rename to roles/client-gnome/README.md index cc1f665c..9377b04a 100644 --- a/roles/pc-gnome/README.md +++ b/roles/client-gnome/README.md @@ -3,9 +3,9 @@ ## Description This role aggregates various GNOME desktop components to ensure a cohesive and fully functional GNOME environment on Arch Linux. It includes the installation and configuration of several sub-roles: -- **pc-gnome-caffeine:** Prevents the system from sleeping or locking automatically. -- **pc-gnome-extensions:** Manages GNOME Shell extensions and installs the CLI GNOME Extension Manager. -- **pc-gnome-terminal:** Installs GNOME Terminal, the official terminal emulator for GNOME. +- **client-gnome-caffeine:** Prevents the system from sleeping or locking automatically. +- **client-gnome-extensions:** Manages GNOME Shell extensions and installs the CLI GNOME Extension Manager. +- **client-gnome-terminal:** Installs GNOME Terminal, the official terminal emulator for GNOME. ## Purpose diff --git a/roles/pc-gnome/meta/main.yml b/roles/client-gnome/meta/main.yml similarity index 88% rename from roles/pc-gnome/meta/main.yml rename to roles/client-gnome/meta/main.yml index eacbaa4a..c64597a6 100644 --- a/roles/pc-gnome/meta/main.yml +++ b/roles/client-gnome/meta/main.yml @@ -19,6 +19,6 @@ galaxy_info: - archlinux - automation dependencies: - - pc-gnome-caffeine - - pc-gnome-extensions - - pc-gnome-terminal \ No newline at end of file + - client-gnome-caffeine + - client-gnome-extensions + - client-gnome-terminal \ No newline at end of file diff --git a/roles/client-spotify/README.md b/roles/client-spotify/README.md new file mode 100644 index 00000000..b20b7aac --- /dev/null +++ b/roles/client-spotify/README.md @@ -0,0 +1,38 @@ +# Spotify đŸŽĩ + +## Description + +This Ansible role installs the [Spotify](https://www.spotify.com/) desktop client on Arch Linux systems using the [AUR (Arch User Repository)](https://aur.archlinux.org/packages/spotify/). + +## Overview + +Spotify is a digital music streaming service that gives you access to millions of songs and podcasts. Since it is not available in the official Arch repositories, this role uses an AUR helper (like [`yay`](https://github.com/Jguer/yay)) to install the package. + +## Purpose + +To automate the installation of Spotify on Arch-based systems while ensuring proper handling of AUR-related tasks through a dedicated helper role. + +## Features + +- 🎧 Installs the official [Spotify AUR package](https://aur.archlinux.org/packages/spotify) +- 🛠 Uses `yay` (or other helper) via [`kewlfft.aur`](https://github.com/kewlfft/ansible-aur) Ansible module +- 🔗 Declares dependency on `system-aur-helper` for seamless integration + +## Requirements + +- The `system-aur-helper` role must be applied before using this role. +- An AUR helper like `yay` must be available on the system. + +## Dependencies + +This role depends on: + +- [`system-aur-helper`](../system-aur-helper) – provides and configures an AUR helper like `yay` + +## Credits 📝 + +Developed and maintained by **Kevin Veen-Birkenbach** +Learn more at [www.veen.world](https://www.veen.world) + +Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais) +License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl) diff --git a/roles/client-spotify/meta/main.yml b/roles/client-spotify/meta/main.yml new file mode 100644 index 00000000..b59799da --- /dev/null +++ b/roles/client-spotify/meta/main.yml @@ -0,0 +1,27 @@ +--- +galaxy_info: + author: "Kevin Veen-Birkenbach" + description: "Installs the Spotify client." + license: "CyMaIS NonCommercial License (CNCL)" + license_url: "https://s.veen.world/cncl" + company: | + Kevin Veen-Birkenbach + Consulting & Coaching Solutions + https://www.veen.world + min_ansible_version: "2.9" + platforms: + - name: Archlinux + versions: + - rolling + galaxy_tags: + - spotify + - aur + - music + - streaming + - archlinux + - client + repository: https://s.veen.world/cymais + issue_tracker_url: https://s.veen.world/cymaisissues + documentation: https://s.veen.world/cymais +dependencies: + - role: system-aur-helper diff --git a/roles/pc-spotify/tasks/main.yml b/roles/client-spotify/tasks/main.yml similarity index 59% rename from roles/pc-spotify/tasks/main.yml rename to roles/client-spotify/tasks/main.yml index f0a84a34..459d5268 100644 --- a/roles/pc-spotify/tasks/main.yml +++ b/roles/client-spotify/tasks/main.yml @@ -1,4 +1,4 @@ -- name: install entertainment software +- name: install spotify kewlfft.aur.aur: use: yay name: diff --git a/roles/driver-lid-switch/README.md b/roles/driver-lid-switch/README.md new file mode 100644 index 00000000..c1d17cf1 --- /dev/null +++ b/roles/driver-lid-switch/README.md @@ -0,0 +1,3 @@ +https://chatgpt.com/share/67ed14d0-4220-800f-a592-82513553fb97 +https://chatgpt.com/share/67ed1520-8a54-800f-98a5-12372413994a +https://chatgpt.com/share/67ed158b-66d4-800f-b418-e52460c225ce \ No newline at end of file diff --git a/roles/pc-lid-switch/handlers/main.yml b/roles/driver-lid-switch/handlers/main.yml similarity index 100% rename from roles/pc-lid-switch/handlers/main.yml rename to roles/driver-lid-switch/handlers/main.yml diff --git a/roles/pc-lid-switch/tasks/main.yml b/roles/driver-lid-switch/tasks/main.yml similarity index 100% rename from roles/pc-lid-switch/tasks/main.yml rename to roles/driver-lid-switch/tasks/main.yml diff --git a/roles/pc-games/README.md b/roles/pc-games/README.md deleted file mode 100644 index a69da515..00000000 --- a/roles/pc-games/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# PC-Games Role - -## Overview -This README is for the `pc-games` role, a part of the `cymais` repository. This role is designed to install a variety of popular open-source and freely available games on personal computers. - -## Role Contents -The `main.yml` file within the `pc-games` role automates the installation of several gaming titles using the `community.general.pacman` module. The games included are: - -1. **Install Gaming Software**: - - `0ad`: A free, open-source, historical real-time strategy (RTS) game. - - `warzone2100`: A 3D RTS game set in a post-apocalyptic future. - - `supertuxkart`: A free 3D kart racing game. - - `gnuchess`: The GNU chess program. - - `sauerbraten`: A first-person shooter game. - - `minetest`: An open-source voxel game engine with easy modding and game creation. - - `mari0`: A crossover between Super Mario and Portal. - - `retroarch`: A frontend for emulators, game engines, and media players. - - `retroarch-assets-xmb`: XMB menu assets for RetroArch. - - `retroarch-assets-ozone`: Ozone menu assets for RetroArch. - -## Purpose and Usage -The `pc-games` role is perfect for gamers who wish to have a variety of gaming experiences on their personal computer. It includes a range of games from different genres, providing options for players with diverse interests. The role is also suitable for setting up a gaming environment on new systems or restoring a collection of games after a system refresh. - -## Prerequisites -- **Ansible**: You must have Ansible installed on your system to use this role. -- **Arch Linux-based System**: This role uses the `pacman` package manager, indicating it is designed for Arch Linux or similar distributions. - -## Running the Role -To utilize this role: -1. Clone the `cymais` repository. -2. Navigate to the `roles/pc-games` directory. -3. Execute the role using Ansible, ensuring you have the necessary permissions for software installation. - -## Customization -You can customize this role by adding or removing games in the `main.yml` file based on your preferences or the requirements of your system. - -## Support and Contributions -For support, feedback, or contributions, such as adding more games or enhancing the setup process, please open an issue or submit a pull request in the `cymais` repository. Contributions that expand the gaming options or improve the installation process are highly welcomed. \ No newline at end of file diff --git a/roles/pc-games/tasks/main.yml b/roles/pc-games/tasks/main.yml deleted file mode 100644 index 33d69c6d..00000000 --- a/roles/pc-games/tasks/main.yml +++ /dev/null @@ -1,14 +0,0 @@ -- name: Install gaming software - community.general.pacman: - name: - - 0ad - - warzone2100 - - supertuxkart - - gnuchess - - sauerbraten - - minetest - - mari0 - - retroarch - - retroarch-assets-xmb - - retroarch-assets-ozone - state: present diff --git a/roles/pc-spotify/README.md b/roles/pc-spotify/README.md deleted file mode 100644 index 05fa9d9c..00000000 --- a/roles/pc-spotify/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# PC-Spotify Role - -## Overview -This README is for the `pc-spotify` role, part of the `cymais` repository. This role is dedicated to installing Spotify, a popular digital music streaming service, on personal computers. - -## Role Tasks -The `main.yml` file in the `pc-spotify` role includes the following task: - -1. **Install Entertainment Software**: - - Utilizes the `kewlfft.aur.aur` module with `yay` as the AUR helper to install `spotify`. Spotify offers streaming of millions of songs, podcasts, and videos from artists all around the world. - -## Dependencies -This role depends on: -- **system-aur-helper**: Ensures that an Arch User Repository (AUR) helper is available, which is necessary for installing packages like `spotify` that are not available in the standard repositories. - -## Purpose and Usage -The `pc-spotify` role is tailored for users who enjoy streaming music and wish to have Spotify readily available on their personal computer. This role simplifies the process of installing Spotify, making it accessible for listening to music, podcasts, and more. - -## Prerequisites -- **Ansible**: Required for running this role. -- **Arch Linux-based System**: The role is designed for systems that use the `pacman` package manager and AUR helpers, typically found in Arch Linux distributions. - -## Running the Role -To use this role: -1. Clone the `cymais` repository. -2. Navigate to the `roles/pc-spotify` directory. -3. Execute the role using Ansible, ensuring you have the necessary system permissions for package installation. - -## Customization -While this role is primarily focused on installing Spotify, it can be customized to include additional entertainment or media software as per user requirements. - -## Support and Contributions -For support, feedback, or contributions, such as adding more features or enhancing the role, please open an issue or submit a pull request in the `cymais` repository. Contributions that improve the entertainment software setup, including Spotify, are highly welcomed. \ No newline at end of file diff --git a/roles/pc-spotify/meta/main.yml b/roles/pc-spotify/meta/main.yml deleted file mode 100644 index f2b89588..00000000 --- a/roles/pc-spotify/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: -- system-aur-helper \ No newline at end of file diff --git a/roles/persona-gamer-core/README.md b/roles/persona-gamer-core/README.md new file mode 100644 index 00000000..230ff42d --- /dev/null +++ b/roles/persona-gamer-core/README.md @@ -0,0 +1,38 @@ +# Gamer Core 🧩 + +## Description + +This Ansible role installs core gaming utilities and performance tools on Arch Linux systems. It includes essential software like [Steam](https://store.steampowered.com/), [Lutris](https://lutris.net/), [Wine](https://www.winehq.org/), [GameMode](https://github.com/FeralInteractive/gamemode), and [MangoHUD](https://github.com/flightlessmango/MangoHud). + +## Overview + +Focused on native and Windows-compatible game support, this role equips systems with the necessary runtimes, drivers, and enhancements for high-performance gaming. It complements other persona-gamer roles such as `retro` and `default` to provide a full gaming setup. + +## Purpose + +To automate the installation of foundational gaming tools and system enhancements, ensuring consistent and fast configuration across setups. + +## Features + +- **Steam & Lutris:** Popular game launchers for Linux and Windows titles. +- **Wine Runtime:** Provides compatibility for Windows-based games. +- **GameMode & MangoHUD:** Performance tuning and live system metrics. +- **Multilib & 32-bit Support:** Required for compatibility layers. + +## Included Tools + +| Tool | Description | +|-------------|-------------| +| [Steam](https://store.steampowered.com/) | Native Linux and Proton-powered game launcher | +| [Lutris](https://lutris.net/) | Unified gaming platform for native and emulated games | +| [Wine](https://www.winehq.org/) | Compatibility layer for Windows games | +| [GameMode](https://github.com/FeralInteractive/gamemode) | Performance daemon by Feral Interactive | +| [MangoHUD](https://github.com/flightlessmango/MangoHud) | Vulkan/OpenGL performance overlay | + +## Credits 📝 + +Developed and maintained by **Kevin Veen-Birkenbach** +Learn more at [www.veen.world](https://www.veen.world) + +Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais) +License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl) diff --git a/roles/persona-gamer-core/meta/main.yml b/roles/persona-gamer-core/meta/main.yml new file mode 100644 index 00000000..f0bb8481 --- /dev/null +++ b/roles/persona-gamer-core/meta/main.yml @@ -0,0 +1,28 @@ +--- +galaxy_info: + author: "Kevin Veen-Birkenbach" + description: "Installs essential gaming utilities, launchers, and runtimes on Arch Linux." + license: "CyMaIS NonCommercial License (CNCL)" + license_url: "https://s.veen.world/cncl" + company: | + Kevin Veen-Birkenbach + Consulting & Coaching Solutions + https://www.veen.world + min_ansible_version: "2.9" + platforms: + - name: Archlinux + versions: + - rolling + galaxy_tags: + - gaming + - steam + - lutris + - wine + - gamemode + - mangohud + - archlinux + - performance + repository: https://s.veen.world/cymais + issue_tracker_url: https://s.veen.world/cymaisissues + documentation: https://s.veen.world/cymais +dependencies: [] diff --git a/roles/persona-gamer-core/tasks/main.yml b/roles/persona-gamer-core/tasks/main.yml new file mode 100644 index 00000000..63dff335 --- /dev/null +++ b/roles/persona-gamer-core/tasks/main.yml @@ -0,0 +1,15 @@ +- name: Install core gaming tools from pacman + pacman: + name: + - steam + - lutris + - gamemode + - mangohud + - lib32-mangohud + - wine + - wine-gecko + - wine-mono + - winetricks + - lib32-wine + state: present + update_cache: yes diff --git a/roles/persona-gamer-default/README.md b/roles/persona-gamer-default/README.md new file mode 100644 index 00000000..9f97672f --- /dev/null +++ b/roles/persona-gamer-default/README.md @@ -0,0 +1,36 @@ +# Gamer Default 🎮 + +## Description + +This Ansible role installs a curated collection of open source and community-friendly games on Arch Linux systems. It is ideal for setting up a fun and accessible default gaming environment. + +## Overview + +Focused on simplicity and fun, this role brings a mix of strategy, racing, action, and retro-inspired games to your system. All games are sourced from official Arch repositories and require no proprietary services. + +## Purpose + +The purpose of this role is to quickly populate a gaming system with high-quality open source titles. This is great for shared systems, offline setups, or just discovering classic FOSS games. + +## Features + +- **Installs Fun Games:** From real-time strategy to racing and chess. +- **No DRM or Accounts Needed:** All games work offline. +- **Fast Setup:** Uses the official Arch repositories via `pacman`. + +## Included Games + +- 🏛 [**0 A.D.**](https://play0ad.com) – Open-source RTS in the spirit of Age of Empires +- 🛰 [**Warzone 2100**](https://wz2100.net) – Real-time strategy with tech trees and post-apocalyptic theme +- 🏁 [**SuperTuxKart**](https://supertuxkart.net) – Cartoon kart racer with power-ups and multiplayer +- ♟ [**GNU Chess**](https://www.gnu.org/software/chess/) – Classic chess engine with CLI or GUI support +- đŸ”Ģ [**Sauerbraten**](https://sauerbraten.org) – Fast-paced old-school FPS with LAN and map editor +- 🍄 [**Mari0**](https://stabyourself.net/mari0/) – Mashup of Super Mario Bros and Portal mechanics + +## Credits 📝 + +Developed and maintained by **Kevin Veen-Birkenbach** +Learn more at [www.veen.world](https://www.veen.world) + +Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais) +License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl) diff --git a/roles/persona-gamer-default/meta/main.yml b/roles/persona-gamer-default/meta/main.yml new file mode 100644 index 00000000..465d0b96 --- /dev/null +++ b/roles/persona-gamer-default/meta/main.yml @@ -0,0 +1,25 @@ +--- +galaxy_info: + author: "Kevin Veen-Birkenbach" + description: "Installs a curated set of open source games for Arch Linux." + license: "CyMaIS NonCommercial License (CNCL)" + license_url: "https://s.veen.world/cncl" + company: | + Kevin Veen-Birkenbach + Consulting & Coaching Solutions + https://www.veen.world + min_ansible_version: "2.9" + platforms: + - name: Archlinux + versions: + - rolling + galaxy_tags: + - gaming + - open-source + - games + - archlinux + - fun + repository: https://s.veen.world/cymais + issue_tracker_url: https://s.veen.world/cymaisissues + documentation: https://s.veen.world/cymais +dependencies: [] diff --git a/roles/persona-gamer-default/tasks/main.yml b/roles/persona-gamer-default/tasks/main.yml new file mode 100644 index 00000000..73c14157 --- /dev/null +++ b/roles/persona-gamer-default/tasks/main.yml @@ -0,0 +1,5 @@ +- name: Install Default Gaming Software + community.general.pacman: + name: "{{ gamer_default_games }}" + state: present + update_cache: yes diff --git a/roles/persona-gamer-default/vars/main.yml b/roles/persona-gamer-default/vars/main.yml new file mode 100644 index 00000000..8efe8d50 --- /dev/null +++ b/roles/persona-gamer-default/vars/main.yml @@ -0,0 +1,7 @@ +gamer_default_games: + - 0ad + - warzone2100 + - supertuxkart + - gnuchess + - sauerbraten + - mari0 \ No newline at end of file diff --git a/roles/persona-gamer-retro/README.md b/roles/persona-gamer-retro/README.md new file mode 100644 index 00000000..3222855e --- /dev/null +++ b/roles/persona-gamer-retro/README.md @@ -0,0 +1,34 @@ +# RetroArch 🎮 + +## Description + +This Ansible role installs and configures [RetroArch](https://www.retroarch.com/) on Arch Linux systems. It provides all necessary packages, assets, and dependencies for a clean retro gaming experience. + +## Overview + +Designed for retro gaming enthusiasts, this role sets up RetroArch along with its core assets and themes. It ensures all UI styles ([XMB](https://en.wikipedia.org/wiki/XrossMediaBar), [Ozone](https://docs.libretro.com/guides/ozone-menu/)) are ready and provides a consistent emulator frontend interface powered by the [Libretro](https://www.libretro.com/) framework. + +## Purpose + +The purpose of this role is to automate the deployment of a full-featured RetroArch environment, reducing manual setup and improving reproducibility across gaming setups. + +## Features + +- **Installs RetroArch:** Including the main [RetroArch package](https://archlinux.org/packages/community/x86_64/retroarch/) and theme assets. +- **UI Assets Support:** Both [XMB](https://docs.libretro.com/guides/xmb-menu/) and [Ozone](https://docs.libretro.com/guides/ozone-menu/) menu styles supported out of the box. + +## ℹī¸ Further Reading + +- 🕹ī¸ [RetroArch - Official Site](https://www.retroarch.com/) +- 🧩 [Libretro - Modular Emulator Framework](https://www.libretro.com/) +- 📚 [RetroArch on ArchWiki](https://wiki.archlinux.org/title/RetroArch) +- 🧠 [RetroArch - Wikipedia](https://en.wikipedia.org/wiki/RetroArch) +- 🎨 [UI Menus: XMB, Ozone, GLUI, RGUI](https://docs.libretro.com/guides/) + +## Credits 📝 + +Developed and maintained by **Kevin Veen-Birkenbach**. +Learn more at [www.veen.world](https://www.veen.world) + +Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais) +License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl) \ No newline at end of file diff --git a/roles/persona-gamer-retro/meta/main.yml b/roles/persona-gamer-retro/meta/main.yml new file mode 100644 index 00000000..66d94be5 --- /dev/null +++ b/roles/persona-gamer-retro/meta/main.yml @@ -0,0 +1,25 @@ +--- +galaxy_info: + author: "Kevin Veen-Birkenbach" + description: "Installs and configures RetroArch." + license: "CyMaIS NonCommercial License (CNCL)" + license_url: "https://s.veen.world/cncl" + company: | + Kevin Veen-Birkenbach + Consulting & Coaching Solutions + https://www.veen.world + min_ansible_version: "2.9" + platforms: + - name: Archlinux + versions: + - rolling + galaxy_tags: + - retroarch + - emulator + - gaming + - archlinux + - assets + repository: https://s.veen.world/cymais + issue_tracker_url: https://s.veen.world/cymaisissues + documentation: https://s.veen.world/cymais +dependencies: [] \ No newline at end of file diff --git a/roles/persona-gamer-retro/tasks/main.yml b/roles/persona-gamer-retro/tasks/main.yml new file mode 100644 index 00000000..664c4930 --- /dev/null +++ b/roles/persona-gamer-retro/tasks/main.yml @@ -0,0 +1,5 @@ +- name: Install RetroArch and assets + pacman: + name: "{{ retroarch_packages }}" + state: present + update_cache: yes \ No newline at end of file diff --git a/roles/persona-gamer-retro/vars/main.yml b/roles/persona-gamer-retro/vars/main.yml new file mode 100644 index 00000000..03296ed9 --- /dev/null +++ b/roles/persona-gamer-retro/vars/main.yml @@ -0,0 +1,4 @@ +retroarch_packages: + - retroarch + - retroarch-assets-xmb + - retroarch-assets-ozone \ No newline at end of file diff --git a/roles/persona-gamer/README.md b/roles/persona-gamer/README.md new file mode 100644 index 00000000..be883ccc --- /dev/null +++ b/roles/persona-gamer/README.md @@ -0,0 +1,37 @@ +# Gamer 🎮 + +## Description + +This Ansible meta-role prepares an Arch Linux system for a complete and optimized gaming experience. It delegates the setup to modular sub-roles that install open-source games, retro emulators, and core performance tools like [Steam](https://store.steampowered.com/), [Wine](https://www.winehq.org/), [Lutris](https://lutris.net/), [GameMode](https://github.com/FeralInteractive/gamemode), and [RetroArch](https://www.retroarch.com/). + +## Overview + +This role combines several specialized gaming roles into one streamlined setup. It ensures your system is ready for modern, retro, and open-source gaming, with zero manual configuration. + +## Purpose + +To provide a modular and reproducible way to deploy a full-featured Linux gaming system, suited for both native and Windows-based titles, retro consoles, and FOSS games. + +## Features + +- ✅ **Modular Roles:** Handles separate responsibilities through sub-roles +- 🕹ī¸ **Retro Support:** Emulators and themes via [RetroArch](https://www.retroarch.com/) +- 🧩 **Core Stack:** Performance tools and runtimes (e.g. [GameMode](https://github.com/FeralInteractive/gamemode), [MangoHUD](https://github.com/flightlessmango/MangoHud)) +- 🎲 **Open Source Games:** Installed directly from official Arch repos +- ⚙ī¸ **System Integration:** Sets `gaming_ready` fact for other CyMaIS roles + +## Sub-Roles + +| Role | Responsibility | +|------|----------------| +| [`persona-gamer-retro`](../persona-gamer-retro) | Installs RetroArch and assets | +| [`persona-gamer-default`](../persona-gamer-default) | Installs open source games | +| [`persona-gamer-core`](../persona-gamer-core) | Installs Steam, Lutris, Wine, GameMode, MangoHUD | + +## Credits 📝 + +Developed and maintained by **Kevin Veen-Birkenbach** +Learn more at [www.veen.world](https://www.veen.world) + +Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais) +License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl) \ No newline at end of file diff --git a/roles/persona-gamer/meta/main.yml b/roles/persona-gamer/meta/main.yml new file mode 100644 index 00000000..734fd85a --- /dev/null +++ b/roles/persona-gamer/meta/main.yml @@ -0,0 +1,31 @@ +--- +galaxy_info: + author: "Kevin Veen-Birkenbach" + description: "Gaming setup role for Arch Linux systems." + license: "CyMaIS NonCommercial License (CNCL)" + license_url: "https://s.veen.world/cncl" + company: | + Kevin Veen-Birkenbach + Consulting & Coaching Solutions + https://www.veen.world + min_ansible_version: "2.9" + platforms: + - name: Archlinux + versions: + - rolling + galaxy_tags: + - gaming + - steam + - lutris + - gamemode + - archlinux + - performance + - wine + - graphics + repository: https://s.veen.world/cymais + issue_tracker_url: https://s.veen.world/cymaisissues + documentation: https://s.veen.world/cymais +dependencies: + - role: persona-gamer-retro + - role: persona-gamer-default + - role: persona-gamer-core \ No newline at end of file diff --git a/tasks/personal-computer.yml b/tasks/personal-computer.yml index 56179710..cc0f96f1 100644 --- a/tasks/personal-computer.yml +++ b/tasks/personal-computer.yml @@ -50,7 +50,7 @@ - name: GNOME setup when: ("gnome" in group_names) include_role: - name: pc-gnome + name: client-gnome - name: setup ssh client when: ("ssh-client" in group_names) @@ -60,12 +60,12 @@ - name: setup gaming hosts when: ("gaming" in group_names) include_role: - name: pc-games + name: persona-gamer - name: setup entertainment hosts when: ("entertainment" in group_names) include_role: - name: pc-spotify + name: client-spotify - name: setup torbrowser hosts when: ("torbrowser" in group_names)