IaC for the livestreaming pc at our church
  • Shell 40.6%
  • Jinja 39.6%
  • Python 19.8%
Find a file
2026-08-30 10:08:12 +02:00
assets add manual steps 2026-07-27 17:45:29 +02:00
group_vars feat: use pipewire wiring to use firewire main out to retire behringer xenxy 302 usb 2026-08-30 01:46:24 +02:00
roles fix: make scrits for homeassistant immune against timeouts 2026-08-30 10:08:12 +02:00
templates feat: set inital channel & subgroup mute options on VulcanBoard startup 2026-08-30 01:54:50 +02:00
.gitignore chore: simplify ansible config 2026-07-23 02:30:52 +02:00
ansible.cfg chore: simplify ansible config 2026-07-23 02:30:52 +02:00
hosts update host + replace geary with thunderbird + add udev rules 2026-07-23 03:28:00 +02:00
LICENSE LICENSE: Set to BSD 2022-01-08 19:57:23 -06:00
playbook.yml move away from layered pkg's to toolbox 2025-06-19 01:57:27 +02:00
README.md feat: use pipewire wiring to use firewire main out to retire behringer xenxy 302 usb 2026-08-30 01:46:24 +02:00
requirements.txt requirements.txt: Version bumps 2023-08-28 08:21:17 -05:00
requirements.yml Update requirements 2022-01-08 19:10:31 -06:00

livestreaming-pc-infra

IaC (Infrastructre-as-Code) for the Livestreaming PC at our Church.

This repository is a fork of github.com/j1mc/ansible-silverblue.

It configures a computer that is setup with the Linux Distribution Fedora Silverblue.

⚠️ IMPORTANT: ⚠️ Please read this entire document before proceeding with the setup. Pay special attention to the Manual Setup Steps section, as the Ansible playbook does not automate everything.

Included Roles

The main parts of this project can be seen in the 'roles' directory. Each role included there contains a README file that explains what the role is and how to use it. For starters, here is a brief summary of each role:

  • layered_packages: Install or remove packages into / from the base rpm-ostree image.
  • flatpaks: Install desired flatpak applications.
  • fonts: Install custom fonts (this role is under the GPLv3 License).
  • gnome_settings: Set various GNOME desktop settings. The role makes these changes via dconf.
  • os_updates: Configure the auto-update policy for the host.

Variables

I've consolidated the project's variables into the group_vars/all file. This makes it easy to update the project's variables from a single location. You should customize the values in that file to set what changes get applied in the various roles.

Setup

Clone this repository with:

git clone https://git.mennoniten-basel.ch/noah/livestreaming-pc-infra.git

Install needed dependencies with:

cd livestreaming-pc-infra
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
ansible-galaxy collection install -r requirements.yml

Note: Before running the playbook, you need to retrieve the Ansible vault password from the password manager and save it to a file named .ansible_vault_pass in the root of this repository.

To run, issue the following command:

ansible-playbook playbook.yml`

Manual Setup Steps

The following configurations must be set manually through GNOME Settings or other apps after the initial setup:

  1. Auto-Login: Go to Settings > System > Users, unlock the panel, and enable Automatic Login for the livestream user. Auto Login

  2. Keyring Password: Open the Passwords and Keys app (Seahorse), right-click on the Login keyring, and select Change Password. Set it to a blank password so it doesn't prompt you upon automatic login. Passwords and Keys

  3. Power Settings: Go to Settings > Power. Set Power Mode to Performance. Turn OFF both Automatic Screen Blank and Automatic Suspend. Power Settings

  4. Multitasking / Workspaces: Go to Settings > Multitasking. Under Workspaces, select Fixed Number of Workspaces and set the number to 1. Multitasking

  5. Enable SSH: Go to Settings > System > Secure Shell and toggle it ON. Secure Shell

  6. Add Printer: Go to Settings > Printers, click Add Printer, and add the ET-2550 printer. Add Printer

  7. Online Accounts: Go to Settings > Online Accounts and add the Nextcloud account. Nextcloud Account

  8. GNOME Extensions: Open the Extensions app. Enable Dash to Dock. (Note: Do not enable Smart Auto Move). Extensions

  9. Hostname: Go to Settings > System > About and set the Device Name to livestreaming_pc. Additionally, run hostnamectl set-hostname toolbx inside the toolbox. Device Name

  10. Touchscreen Mapping: Find the touchscreen USB ID using lsusb (e.g., 27c0:0859) and map it to the correct monitor output by running the gsettings command. Touchscreen Mapping

  11. Date & Time (Top Bar): Go to Settings > System > Date & Time, and under the "Clock & Calendar" section, turn ON the toggles for Date, Seconds, and Week Numbers to display them in GNOME's top bar. Date & Time Settings

  12. Thunderbird Email: Open the Thunderbird application and manually set it up with the email account gottesdienst@mennoniten-basel.ch.

  13. Audio-Routing (PreSonus StudioLive zu OBS): Damit das Audio verlustfrei und rein digital in OBS ankommt, muss das Mischpult über FireWire eingebunden werden.

    • Audio-Profil umstellen: Gehe in die GNOME-Einstellungen -> Audio (oder öffne das Programm pavucontrol). Wähle beim StudioLive-Mischpult das Profil Pro Audio aus, damit alle 32 Kanäle freigeschaltet werden.
    • OBS-Einrichtung: Füge in OBS eine neue Audio-Eingabe (PipeWire) hinzu und wähle dort das Mikrofon StudioLive Main Mix aus.
    • Hinweis: Durch das Ansible-Skript wird dieses virtuelle Mikrofon permanent im System erzeugt und greift vollautomatisch die richtigen FireWire-Kanäle (25/26) vom Mischpult ab. Es wird keine Patchbay-Software mehr benötigt.

License

This project is primarily licensed under the BSD License. However, please note that individual roles may be subject to different licenses:

  • Main Project & most Roles: BSD License (Copyright © 2022 Jim Campbell)
  • Fonts Role: GPLv3 License (Copyright © Tiago M. Vieira)
  • URWGothic Fonts (roles/sw_setup/files/share/custom_fonts): AGPLv3 with Font Exception (Copyright © 2017 URW++ Design & Development GmbH)

Please check the README.md and meta/main.yml files within each role directory for specific licensing details and author information.