init commit

This commit is contained in:
2025-09-28 18:02:09 -07:00
commit 01b88d4c07
10 changed files with 418 additions and 0 deletions

93
tasks/autologin.yaml Normal file
View File

@ -0,0 +1,93 @@
---
###############################################
# Install packages and set up autologin
# Stop SDDM if running
- name: autologin - stop sddm
ignore_errors: yes
systemd:
name: sddm
state: stopped
- name: autologin - purge user account
ignore_errors: yes
shell: "rm -R /home/{{ local_user }}"
- name: Autologin - run once section
when: not refresh_special | bool
block:
# Install Packages
- name: autologin - Install Packages
apt:
name: "{{ kiosk_package_items }}"
state: present
loop: "{{ kiosk_packages }}"
loop_control:
loop_var: kiosk_package_items
# Remove Packages
- name: autologin - Remove Packages
apt:
name: "{{ kiosk_package_remove_items }}"
state: absent
loop: "{{ kiosk_package_remove }}"
loop_control:
loop_var: kiosk_package_remove_items
# Set sddm as def
- name: autologin - enable sddm in xdm
debconf:
name: sddm
question: shared/default-x-display-manager
value: sddm
vtype: select
# sddm_method, should always run
- name: Display cpu_architecture
debug:
msg: "cpu_architecture: {{ cpu_architecture }}"
- name: check OS name
shell: cat /etc/os-release | grep VERSION_CODENAME | cut -d '=' -f 2
register: debian_codename
- name: Set sddm_method if needed
when: "'amd' in cpu_architecture and 'bookworm' in debian_codename.stdout"
set_fact:
sddm_method: "plasmawayland.desktop"
- name: Set sddm_method for x11
when: force_x11 | bool
set_fact:
sddm_method: "plasmax11"
# Configure Autologin
- name: autologin - configure autologin et. al.
template:
src: sddm.conf
dest: /etc/sddm.conf
mode: 0644
- name: autologin - check sddm config
shell: cat /etc/sddm.conf
register: sddm_check
- debug:
msg: "{{ sddm_check.stdout_lines }}"
###############################################
# Apply Profile in separate file to keep things tidy
# Create account and configure other settings like power and stuff
- name: autologin - apply user profile settings
include_tasks: user_profile.yaml
# Restart sddm to initialize user profile
- name: autologin - restart sddm
systemd:
enabled: yes
name: sddm
state: started
...

30
tasks/chrome.yaml Normal file
View File

@ -0,0 +1,30 @@
---
###############################################
# Install Chromium
- name: chrome - Install Chromium
when: not refresh_special | bool
apt:
name: chromium
state: present
- name: Chrome - fine chromium binary
shell: "find /usr/bin/chromium*"
register: find_chromium
- name: Chrome - change var if chromium
# when: armcpu_check | bool
set_fact:
browser_binary: "{{ find_chromium.stdout_lines[0] }}"
###############################################
# Configure Kiosks
- name: Set up Chrome Kiosk Services
include_tasks: kiosk.yaml
loop: "{{ kiosk_service_templates }}"
loop_control:
loop_var: kiosk_service_items
...

50
tasks/kiosk.yaml Normal file
View File

@ -0,0 +1,50 @@
---
###############################################
# Chrome Kiosk Config
# intended to be called in a loop
###############################################
- name: Chrome Kiosk - display kiosk_service_items
debug:
msg: "{{ kiosk_service_items }}"
# - "Chrome Kiosk Configuring: {{ kiosk_service_items.service_description }}"
# - "Kiosk Service Name: {{ kiosk_service_items.service_name }}"
# - "Kiosk Service Options:"
# - "{{ kiosk_service_items.extra_service_configs }}"
# - "Chrome Website: {{ kiosk_service_items.chrome_website }}"
# - "Chrome App Extra Configs:"
# - "{{ kiosk_service_items.extra_chrome_configs }}"
# Create user data dir Folder
- name: Chrome Kiosk - create working folder
when: create_data_dir | bool
file:
path: "{{ kiosk_service_items.user_data_dir }}"
state: directory
mode: '0777'
owner: "{{ local_user }}"
group: "{{ local_user }}"
- name: Chrome Kiosk - user stop service if running
command: "systemctl --user -M {{ local_user }}@ stop {{ kiosk_service_items.service_name }}.service"
ignore_errors: true
- name: Chrome Kiosk - Copy chrome service file
template:
src: chrome-app.service
dest: "/home/{{ local_user }}/.config/systemd/user/{{ kiosk_service_items.service_name }}.service"
owner: "{{ local_user }}"
group: "{{ local_user }}"
mode: 0600
- name: Chrome Kiosk - user daemon reload
command: "systemctl --user -M {{ local_user }}@ daemon-reload"
register: user_daemon_reload
- name: Chrome Kiosk - user enable service
command: "systemctl --user -M {{ local_user }}@ enable {{ kiosk_service_items.service_name }}.service"
- name: Chrome Kiosk - user start service
command: "systemctl --user -M {{ local_user }}@ start {{ kiosk_service_items.service_name }}.service"
...

47
tasks/main.yaml Normal file
View File

@ -0,0 +1,47 @@
---
- name: check arch if needed
when: refresh_special | bool
block:
- name: Video Capture - Check CPU Arch
shell: "dpkg --print-architecture"
register: cpu_architecture_output
- name: Set cpu_architecture variable
set_fact:
cpu_architecture: "{{ cpu_architecture_output.stdout_lines[0] }}"
- name: kiosk variable handler
block:
# when coming from jenkins overwrite the variable
- name: include jenkins vars
when: jenkins_kiosk | bool
block:
- name: import jenkins var file
include_vars:
file: "{{ kiosk_yaml }}"
name: kiosk_vars
- debug:
msg: "{{ kiosk_vars.kiosk_service_templates }}"
- name: overwrite kiosk_service_templates
set_fact:
kiosk_service_templates: "{{ kiosk_vars.kiosk_service_templates }}"
- name: check if multiple and set create_data_dir, force_x11 accordingly
when: kiosk_service_templates | length > 1
set_fact:
create_data_dir: true
force_x11: true
- debug:
msg: "{{ 'Multiple Services Requested, data directories will be created and X11 will be forced.' if kiosk_service_templates | length > 1 else 'Single page requested; no data directory and wayland may be used.' }}"
- name: Autologin Setup
include_tasks: autologin.yaml
- name: Install KDE + Kiosk Services
include_tasks: chrome.yaml
...

63
tasks/user_profile.yaml Normal file
View File

@ -0,0 +1,63 @@
---
########################################
# Apply KDE settings to user profile
########################################
#- name: autologin - create local user profile folder
# file:
# path: "/home/{{ local_user }}"
# owner: "{{ local_user }}"
# group: "{{ local_user }}"
# state: directory
# mode: '0700'
- name: autologin - Create User Service Folder and parents
file:
path: "/home/{{ local_user }}/.config/systemd/user"
state: directory
owner: "{{ local_user }}"
group: "{{ local_user }}"
mode: '0700'
- name: autologin - Disable kwallet
copy:
dest: "/home/{{ local_user }}/.config/kwalletrc"
content: |
[Wallet]
Enabled=false
owner: "{{ local_user }}"
group: "{{ local_user }}"
mode: '0700'
- name: autologin - configure power options
copy:
dest: "/home/{{ local_user }}/.config/powerdevilrc"
content: |
[AC][Display]
DimDisplayIdleTimeoutSec=-1
DimDisplayWhenIdle=false
TurnOffDisplayIdleTimeoutSec=-1
TurnOffDisplayWhenIdle=false
[AC][SuspendAndShutdown]
AutoSuspendAction=0
LidAction=0
PowerButtonAction=0
owner: "{{ local_user }}"
group: "{{ local_user }}"
mode: '0700'
- name: autologin - configure screen locking
copy:
dest: "/home/{{ local_user }}/.config/kscreenlockerrc"
content: |
[Daemon]
Autolock=false
LockOnResume=false
Timeout=0
owner: "{{ local_user }}"
group: "{{ local_user }}"
mode: '0700'
...