Compare commits

...

2 Commits

70 changed files with 662 additions and 219 deletions

View File

@@ -12,7 +12,7 @@ Follow the installation instruction descriped [here](https://github.com/kevinvee
To setup CyMaIS execute:
```bash
pkgmgr setup cymais
pkgmgr install cymais
```
This command will setup CyMaIS on your system with the alias **cymais**.

View File

@@ -1,22 +1,100 @@
# Deploy
# 🚀 Deployment Guide
This guide explains how to deploy and manage the Cyber Master Infrastructure Solution (CyMaIS) using Ansible. CyMaIS is based on a collection of ansible tasks. The tasks use different “modes” to control behavior such as updates, backups, resets, and cleanup tasks.
This section explains how to deploy and manage the **Cyber Master Infrastructure Solution (CyMaIS)** using Ansible. CyMaIS uses a collection of Ansible tasks, which are controlled via different **"modes"** — such as **updates**, **backups**, **resets**, and **cleanup** operations.
## Prerequisites
- **Inventory File:** Have an inventory file that lists your servers and PCs. (Paths in examples are general; adjust them to your environment.)
- **Cymais Installed:** CyMaIS is installed via [Kevin's Package-Manager](https://github.com/kevinveenbirkenbach/package-manager).
- **Vault Password File (Optional):** Prepare a file with your vault password if you prefer not to enter it interactively.
---
## Deploying on Servers
To get detailled information how to use CyMaIS to deploy software to your server execute:
```sh
## ✅ Prerequisites
Before deploying, ensure the following are in place:
- **🧭 Inventory File:** A valid Ansible inventory file that defines your target systems (servers, personal computers, etc.). Adjust example paths to your environment.
- **📦 CyMaIS Installed:** Install via [Kevin's Package-Manager](https://github.com/kevinveenbirkenbach/package-manager).
- **🔐 (Optional) Vault Password File:** If you don't want to enter your vault password interactively, create a password file.
---
## 📘 Show CyMaIS Help
To get a full overview of available options and usage instructions, run:
```bash
cymais --help
```
## Using a Password File
---
## 💡 Example Deploy Command
To deploy CyMaIS on a personal computer (e.g., a laptop), you can run:
```bash
cymais playbook \
--limit hp-spectre-x360 \
--host-type personal-computer \
--update \
--password-file ~/Repositories/git.veen.world/kevinveenbirkenbach/computer-inventory/.pass/general.txt \
~/Repositories/git.veen.world/kevinveenbirkenbach/computer-inventory/pcs.yml
```
### 🧠 What does this command do?
| Parameter | Description |
|----------|-------------|
| `playbook` | Executes the playbook subcommand of CyMaIS. |
| `--limit hp-spectre-x360` | Limits execution to a specific host (`hp-spectre-x360`). |
| `--host-type personal-computer` | Defines the host type. Default is `server`; here it is set to `personal-computer`. |
| `--update` | Enables update mode to apply software or configuration updates. |
| `--password-file` | Specifies the vault password file path for decrypting sensitive values. |
| `pcs.yml` | The path to the inventory file containing host definitions. |
---
## 🔐 Using a Vault Password File
To avoid typing your vault password interactively, you can provide a file:
To avoid entering your vault password interactively every time, use the `--password-file` option:
```bash
--password-file /path/to/your/vault_pass.txt
```
Ensure the vault password file is stored securely.
> ⚠️ **Security Tip:** Ensure the password file is properly protected (e.g., `chmod 600 vault_pass.txt`).
---
## 🔍 Full Command-Line Reference
Heres a breakdown of all available parameters from `cymais playbook --help`:
| Argument | Description |
|----------|-------------|
| `inventory` *(positional)* | Path to the Ansible inventory file. |
| `--limit <HOST>` | Run the playbook only on the specified host. |
| `--host-type {server, personal-computer}` | Define the target system type (default is `server`). |
| `--reset` | Enables reset mode (restores or resets specific configurations). |
| `--test` | Enables test mode (dry-run style). No actual changes are applied. |
| `--update` | Enables update mode to upgrade packages or configs. |
| `--backup` | Triggers backup routines for data or configurations. |
| `--cleanup` | Cleans up temporary files, old data, etc. |
| `--debug` | Enables debug logging in the playbook. |
| `--password-file <PATH>` | Uses a vault password file instead of interactive prompt. |
| `-v, -vv, -vvv` | Increases output verbosity. More `v`s = more detail. |
---
## 🔧 Combine Multiple Modes
You can mix and match modes like this:
```bash
cymais playbook --update --backup --cleanup pcs.yml
```
This will update the system, create a backup, and clean up unnecessary files in one run.
---
## 📝 Footnote
> 📄 *This documentation page was generated with the help of AI.*
> 🤖 [View the original conversation (ChatGPT)](https://chatgpt.com/share/67ecfe25-3fb8-800f-923d-8cd3fc4efd2f)

View File

@@ -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:

View File

@@ -6,7 +6,7 @@ This Ansible role serves as a wrapper to install and configure multiple browsers
## Overview
The **pc-browsers** role orchestrates the deployment of two specialized roles: **pc-browser-chromium** and **pc-browser-firefox**. By executing both roles, it provides a unified solution for browser management, making it easier to maintain a secure and consistent browsing environment across your systems.
The **client-browser** role orchestrates the deployment of two specialized roles: **client-browser-chromium** and **client-browser-firefox**. By executing both roles, it provides a unified solution for browser management, making it easier to maintain a secure and consistent browsing environment across your systems.
## Purpose

View File

@@ -34,5 +34,5 @@ galaxy_info:
issue_tracker_url: https://s.veen.world/cymaisissues
documentation: https://s.veen.world/cymais
dependencies:
- pc-browser-chromium
- pc-browser-firefox
- client-browser-chromium
- client-browser-firefox

View File

@@ -1,4 +1,4 @@
# Git for Personal Computers
# Git
## Description

View File

@@ -1,4 +1,4 @@
# GNOME Caffeine Setup
# GNOME Caffeine
## Description

View File

@@ -4,6 +4,7 @@
use: yay
name:
- caffeine-ng
become: false
- name: Create autostart directory if it doesn't exist
file:

View File

@@ -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

View File

@@ -0,0 +1 @@
application_id: "gnome"

View File

@@ -1,4 +1,4 @@
# GNOME Terminal Installation
# GNOME Terminal
## Description

View File

@@ -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

View File

@@ -19,6 +19,6 @@ galaxy_info:
- archlinux
- automation
dependencies:
- pc-gnome-caffeine
- pc-gnome-extensions
- pc-gnome-terminal
- client-gnome-caffeine
- client-gnome-extensions
- client-gnome-terminal

View File

@@ -0,0 +1,28 @@
# Nextcloud Client ☁️
## Description
This Ansible role installs and configures the Nextcloud desktop client on Arch Linux systems. It also manages symbolic links from commonly used user directories (like `Documents`, `Pictures`, etc.) to the respective folders inside a cloud-synced Nextcloud directory. This ensures user data is seamlessly integrated into the synchronized cloud folder.
## Overview
Targeting user environments on Arch Linux (e.g., Manjaro), this role sets up the official `nextcloud-client` and dynamically links key directories from the user's home folder to Nextcloud. This makes it easy to use the Nextcloud client without needing to manually configure folders.
## Purpose
The purpose of this role is to automate the configuration of cloud-integrated user directories by ensuring that common folders like `Downloads`, `Music`, and `Workspaces` are transparently redirected into a centralized cloud structure. This makes it easier to maintain backup-friendly, cloud-ready setups for homelab and professional workflows.
## Features
- **Installs the Nextcloud Desktop Client:** Uses `pacman` via the `community.general.pacman` module.
- **Symbolic Linking of User Folders:** Maps home folders (e.g., `Documents`, `Videos`, `Workspaces`) into their Nextcloud equivalents.
- **Dynamic Cloud Directory Resolution:** Builds the target cloud directory path from user and cloud variables.
- **Dump Folder Mapping:** Links `InstantUpload` from the cloud to a `~/Dump` folder for quick camera/file access.
## 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)

View File

@@ -0,0 +1,27 @@
---
galaxy_info:
author: "Kevin Veen-Birkenbach"
description: "Installs and links Nextcloud desktop client folders for cloud-integrated user environments."
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:
- nextcloud
- cloud
- archlinux
- user
- desktop
- automation
repository: https://s.veen.world/cymais
issue_tracker_url: https://s.veen.world/cymaisissues
documentation: https://s.veen.world/cymais
dependencies: []

View File

@@ -10,6 +10,8 @@
owner: "{{users.client.username}}"
group: "{{users.client.username}}"
state: link
force: yes
ignore_errors: true # Just temporary @todo remove
loop:
- Templates
- Documents

View File

@@ -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)

View File

@@ -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

View File

@@ -1,4 +1,4 @@
- name: install entertainment software
- name: install spotify
kewlfft.aur.aur:
use: yay
name:

View File

@@ -0,0 +1,33 @@
# SSH Agent 🔐
## Description
This Ansible role ensures a functional and persistent SSH Agent setup on Arch Linux (Manjaro) systems running GNOME with Wayland. It manages SSH configuration by cloning a remote Git repository into the user's `~/.ssh` directory and sets up a systemd user service to start the SSH agent automatically at login.
To understand the broader context of SSH, read more on [Wikipedia SSH](https://en.wikipedia.org/wiki/Secure_Shell) or visit the official [OpenSSH project](https://www.openssh.com/).
This role was designed and validated in the context of [this discussion](https://chatgpt.com/share/67ed0e25-7240-800f-9ab2-9fffc569bc20) on configuring SSH agents for KeePassXC compatibility under Wayland sessions.
## Overview
This role is intended for Manjaro/Arch systems where `gnome-keyring` no longer reliably manages `ssh-agent` due to changes in behavior under Wayland. It works by deploying a `systemd --user` service, making SSH Agent integration predictable and independent of graphical environment quirks.
## Purpose
The purpose of this role is to automate the provisioning of SSH agent capabilities and synchronize the `.ssh` directory from a Git repository. This enables users to access private repositories or authenticate with remote servers immediately after login.
## Features
- **Clones a remote SSH config repository** into `~/.ssh` using the `client-git` role.
- **Deploys and enables a systemd user service** for `ssh-agent`.
- **Ensures environment compatibility** by injecting the `SSH_AUTH_SOCK` variable into either `.bash_profile` or `.profile`.
- **Fails gracefully** with an optional debug message if the Git repository is unreachable.
- **KeePassXC ready**: Ensures compatibility with password managers that support SSH agent integration.
## 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)

View File

@@ -0,0 +1,29 @@
---
galaxy_info:
author: "Kevin Veen-Birkenbach"
description: "Persistent SSH agent setup for GNOME Wayland sessions with SSH configuration pulled from Git."
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:
- ssh
- agent
- systemd
- gnome
- wayland
- archlinux
- keepassxc
repository: https://s.veen.world/cymais
issue_tracker_url: https://s.veen.world/cymaisissues
documentation: https://s.veen.world/cymais
dependencies:
- client-git

View File

@@ -0,0 +1,55 @@
- name: pull ssh repository from {{ssh_configuration_repository}}
git:
repo: "{{ssh_configuration_repository}}"
dest: "$HOME/.ssh"
update: yes
register: git_result
ignore_errors: true
become: false
- name: Warn if repo is not reachable
debug:
msg: "Warning: Repository is not reachable."
when: git_result.failed and enable_debug | bool
- name: Ensure systemd user directory exists
file:
path: "$HOME/.config/systemd/user"
state: directory
mode: "0700"
become: false
- name: Deploy ssh-agent systemd unit file
template:
src: ssh-agent.service.j2
dest: "$HOME/.config/systemd/user/ssh-agent.service"
mode: "0644"
become: false
- name: Enable and start ssh-agent service
systemd:
name: ssh-agent.service
scope: user
enabled: true
state: started
daemon_reload: true
become: false
- name: Set SSH_AUTH_SOCK in bash_profile or profile
block:
- name: Choose profile file
set_fact:
profile_file: "$HOME/.bash_profile"
when: ansible_facts.env.HOME is defined and lookup('file', ansible_env.HOME + '/.bash_profile', errors='ignore') is defined
- name: Fallback to .profile if .bash_profile not found
set_fact:
profile_file: "$HOME/.profile"
when: profile_file is not defined
- name: Ensure SSH_AUTH_SOCK is set in profile
lineinfile:
path: "{{ profile_file }}"
line: 'export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"'
insertafter: EOF
state: present

View File

@@ -0,0 +1,11 @@
[Unit]
Description=User SSH Agent
Before=default.target
[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
[Install]
WantedBy=default.target

View File

@@ -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

View File

@@ -1,3 +1,3 @@
dependencies:
- pc-git
- client-git
- make

View File

@@ -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.

View File

@@ -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

View File

@@ -1,41 +0,0 @@
# PC-Nextcloud Role
## Overview
This README details the `pc-nextcloud` role, part of the `cymais` repository. This role focuses on setting up the Nextcloud client on personal computers and configuring directory synchronization.
## Role Variables
The `vars/main.yml` file defines key variables used in this role:
- `user_home_directory`: The home directory of the user, typically `/home/{{users.client.username}}/`.
- `cloud_directory`: The directory path for Nextcloud cloud storage, structured as `{{user_home_directory}}Clouds/{{cloud_fqdn}}/{{users.client.username}}/`.
## Role Tasks
The `main.yml` file in the `pc-nextcloud` role comprises the following tasks:
1. **Install Nextcloud-Client**:
- Installs the Nextcloud desktop client using the `community.general.pacman` module.
2. **Link Homefolders to Cloud**:
- Creates symbolic links from various user directories (like Templates, Documents, Videos, etc.) to corresponding folders in the Nextcloud cloud directory. This ensures synchronization of these folders with the user's Nextcloud account.
3. **Link Dump Folder**:
- Specifically links a `Dump` folder in the user's home directory to the `InstantUpload` folder in the Nextcloud cloud directory for easy file dumping and syncing.
## Purpose and Usage
The `pc-nextcloud` role is designed for users who want to integrate Nextcloud, a cloud storage service, into their daily workflow. This role automates the installation of the Nextcloud client and the setup of directory synchronization, making files and documents easily accessible and syncable across devices.
## Prerequisites
- **Ansible**: Required for running this role.
- **Arch Linux-based System**: Since the role uses the `pacman` package manager, it's tailored for Arch Linux or similar distributions.
## Running the Role
To use this role:
1. Clone the `cymais` repository.
2. Navigate to the `roles/pc-nextcloud` directory.
3. Ensure that the `users.client.username` and `cloud_fqdn` variables are correctly set to match your Nextcloud account details.
4. Execute the role using Ansible, ensuring appropriate permissions are available for installations and configurations.
## Customization
You can customize this role by modifying the variables in `vars/main.yml` and adjusting the directories in the linking tasks to suit your specific Nextcloud setup and preferences.
## Support and Contributions
For support, suggestions, or contributions, such as adding additional features or improving the setup, open an issue or submit a pull request in the `cymais` repository. Contributions that enhance the integration and usability of Nextcloud on personal computers are highly welcome.

View File

@@ -1,3 +1,3 @@
dependencies:
- pc-libreoffice
- pc-browsers
- client-browser

View File

@@ -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.

View File

@@ -1,2 +0,0 @@
dependencies:
- system-aur-helper

View File

@@ -1,38 +0,0 @@
# PC-SSH Role
## Overview
Welcome to the `pc-ssh` role, a critical component of the `cymais` repository. This role is dedicated to setting up SSH (Secure Shell) on the client side, facilitating secure access to remote servers.
## Role Description
The `pc-ssh` role includes tasks to pull and update SSH configuration from a specified repository and handle potential errors:
1. **Pull SSH Repository**:
- Clones or updates the SSH configuration from a given repository (`{{ssh_configuration_repository}}`) into the `$HOME/.ssh` directory. This task ensures that your SSH configuration is synchronized with the specified repository.
2. **Warn if Repo is Not Reachable**:
- Displays a warning message if the SSH configuration repository is not reachable, indicating potential issues with the repository's availability or the network connection.
## Dependencies
This role depends on:
- **pc-git**: Ensures that Git is installed, which is necessary for cloning and updating the SSH configuration repository.
## Purpose and Usage
The `pc-ssh` role is designed for users who require SSH access to remote servers, such as developers, system administrators, or IT professionals. By automating the SSH configuration process, this role streamlines the setup and ensures a consistent and secure SSH environment.
## Prerequisites
- **Ansible**: Must be installed to run this role.
- **Git**: Required for cloning and updating the SSH configuration repository.
- **Arch Linux-based System**: While not explicitly stated, the role's compatibility with specific systems depends on the dependencies and the overall playbook configuration.
## Running the Role
To use this role:
1. Clone the `cymais` repository.
2. Navigate to the `roles/pc-ssh` directory.
3. Define the `ssh_configuration_repository` variable with the URL of your SSH configuration repository.
4. Run the role using Ansible, ensuring you have the necessary permissions for executing the tasks.
## Customization
You can customize this role by modifying the SSH configuration repository URL or by adding additional SSH-related tasks as needed.
## Support and Contributions
For support, feedback, or contributions, such as enhancing the SSH setup or adding more features, please open an issue or submit a pull request in the `cymais` repository. Contributions that improve SSH configuration and usage are highly encouraged.

View File

@@ -1,2 +0,0 @@
dependencies:
- pc-git

View File

@@ -1,13 +0,0 @@
- name: pull ssh repository from {{ssh_configuration_repository}}
git:
repo: "{{ssh_configuration_repository}}"
dest: "$HOME/.ssh"
update: yes
register: git_result
ignore_errors: true
become: false
- name: Warn if repo is not reachable
debug:
msg: "Warning: Repository is not reachable."
when: git_result.failed

View File

@@ -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)

View File

@@ -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: []

View File

@@ -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

View File

@@ -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)

View File

@@ -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: []

View File

@@ -0,0 +1,5 @@
- name: Install Default Gaming Software
community.general.pacman:
name: "{{ gamer_default_games }}"
state: present
update_cache: yes

View File

@@ -0,0 +1,7 @@
gamer_default_games:
- 0ad
- warzone2100
- supertuxkart
- gnuchess
- sauerbraten
- mari0

View File

@@ -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)

View File

@@ -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: []

View File

@@ -0,0 +1,5 @@
- name: Install RetroArch and assets
pacman:
name: "{{ retroarch_packages }}"
state: present
update_cache: yes

View File

@@ -0,0 +1,4 @@
retroarch_packages:
- retroarch
- retroarch-assets-xmb
- retroarch-assets-ozone

View File

@@ -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)

View File

@@ -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

View File

@@ -48,37 +48,37 @@
name: pc-latex
- name: GNOME setup
when: ("gnome
when: ("gnome" in group_names)
include_role:
name: pc-gnome
name: client-gnome
- name: setup ssh client
when: ("ssh" in group_names)
when: ("ssh-client" in group_names)
include_role:
name: pc-ssh
name: client-ssh
- 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)
include_role:
name: pc-torbrowser
- name: setup nextcloud
- name: setup nextcloud-client
when: ("nextcloud_client" in group_names)
include_role:
name: pc-nextcloud
name: client-nextcloud
- name: setup docker
when: ("dockerin group_names)
when: ("docker" in group_names)
include_role:
name: pc-docker