summaryrefslogtreecommitdiffstats
path: root/roles/obs/tasks/main.yml
blob: 5df7d564f0b5c8f2f4e253b99e6d6a7d5ade931e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
- name: Load icecast vars
  tags: obs-profile, wip
  include_vars:
    file: ../../stream/defaults/main.yml
- name: Add repo
  apt_repository:
    repo: ppa:obsproject/obs-studio
  when: ansible_distribution == "Ubuntu"
- name: Add nodesource key
  apt_key:
    id: 2F59B5F99B1BE0B4
    keyserver: keyserver.ubuntu.com
    state: present
- name: Add nodesource repository
  ansible.builtin.apt_repository:
    repo: deb https://deb.nodesource.com/node_20.x nodistro main
    update_cache: yes
- name: Add packages
  apt:
    name:
      - xserver-xorg-video-dummy
      - i3
      - inkscape  # OBS overlaying PNG is prettier than SVG
      - socat
      - ffmpeg
      - pulseaudio
      - jackd2
      - kitty
      - kitty-terminfo
      - alsa-utils
      - nodejs
      - dbus-x11
      - obs-studio
      - mumble
      - xserver-xorg-dev
      - xdotool
    update_cache: yes
- name: Add Firefox
  apt:
    name: firefox-esr
  when: ansible_distribution == "Debian"
- name: Add Firefox
  apt:
    name: firefox-esr
  when: ansible_distribution == "Ubuntu"
- name: Copy X11 config
  template:
    src: xorg.conf
    dest: /etc/X11/xorg.conf
- name: Set up MPV and MPVC
  tags: mpv
  include_tasks: mpv.yml
- name: Set up track-specific things
  include_tasks: track.yml
  loop: "{{ emacsconf_tracks }}"
- debug:
    var: emacsconf_home
- name: Add packages
  apt:
    name:
      - tigervnc-standalone-server
      - tigervnc-common
  tags: vnc
- name: Allow SSH for the users
  replace:
    dest: /etc/ssh/sshd_config.d/emacsconf_ssh.conf
    regexp: '(AllowUsers(?!.*\b{{ emacsconf_id }}-{{ item.id }}\b).*)$'
    replace: \1 {{ emacsconf_id }}-{{ item.id }}
  loop: "{{ emacsconf_tracks }}"
- name: Set system timezone
  tags: tz
  community.general.timezone:
    name: "{{ emacsconf_timezone }}"
- name: Restart cron
  tags: tz
  ansible.builtin.service:
    name: cron
    state: restarted
- name: Set emacsconf_user timezone
  tags: tz
  lineinfile:
    line: export TZ={{ emacsconf_timezone }}
    dest: "/home/{{ emacsconf_user }}/.bashrc"
- name: Allow sudo from {{ emacsconf_user }} to the stream users
  tags: obs-sudo
  become: true
  become_user: root
  community.general.sudoers:
    name: "{{ emacsconf_user }}-{{ emacsconf_id }}-{{ item.id }}"
    user: "{{ emacsconf_user }}"
    runas: "{{emacsconf_id }}-{{ item.id }}"
    commands: ALL
    nopassword: true
  with_items:
    - "{{ emacsconf_tracks }}"
- name: Allow sudo from the stream users to the {{ emacsconf_user }}
  tags: obs-sudo
  become: true
  become_user: root
  community.general.sudoers:
    name: "{{ emacsconf_id }}-{{ item.id }}-{{ emacsconf_user }}"
    user: "{{emacsconf_id }}-{{ item.id }}"
    runas: "{{ emacsconf_user }}"
    commands: ALL
    nopassword: true
  with_items:
    - "{{ emacsconf_tracks }}"
- name: Create directories
  file:
    owner: "{{ emacsconf_user }}"
    group: "{{ emacsconf_group }}"
    path: "{{ emacsconf_asset_dir }}"
    state: directory
    mode: 0775
- name: Set up scripts
  tags: wip, obs-scripts
  template:
    src: "{{ item }}"
    dest: /usr/local/bin
    mode: 0755
  loop:
    - overlay
    - music
    - stop-music
    - play
    - play-with-intro
    - intro
    - bbb
    - pad
    - handle-qa
    - handle-session
    - reset-state
    - rebroadcast