Blob Blame History Raw
{% set appservices = salt['pillar.get']('profile:matrix:appservices') %}

appservice_pkgs:
  pkg.installed:
    - resolve_capabilities: True
    - pkgs:
      - git
      - nodejs20
      - nodejs20-devel
      - nodejs-common
      - make
      - gcc
      - gcc-c++
      - cargo
      - yarn

{%- for dir, data in appservices.items() %}
{%- set repo = data.get('repo') %}

/var/lib/matrix-synapse/{{ dir }}:
  file.directory:
    - user: synapse

/var/log/matrix-synapse/{{ dir }}:
  file.directory:
    - user: synapse

{{ repo }}:
  git.latest:
    - branch: {{ data.get('branch', 'master') }}
    - target: /var/lib/matrix-synapse/{{ dir }}
    - rev: {{ data.get('branch', 'master') }}
    - user: synapse


{{ dir }}_conf_file:
  file.managed:
    - name: /var/lib/matrix-synapse/{{ dir }}/config.yaml
    - source: salt://profile/matrix/files/config-{{ dir }}.yaml
    - template: jinja
    - user: synapse
    - require:
      - file: /var/lib/matrix-synapse/{{ dir }}
    - watch_in:
      - service: {{ dir }}_service

{{ dir }}_appservice_file:
  file.managed:
    - name: /var/lib/matrix-synapse/{{ dir }}/{{ dir }}-registration.yaml
    - source: salt://profile/matrix/files/appservice-{{ dir }}.yaml
    - user: synapse
    - template: jinja
    - require:
      - file: /var/lib/matrix-synapse/{{ dir }}
    - watch_in:
      - service: {{ dir }}_service

synapse_appservice_{{ dir }}_file:
  file.managed:
    - name: /etc/matrix-synapse/appservices/appservice-{{ dir }}.yaml
    - source: salt://profile/matrix/files/appservice-{{ dir }}.yaml
    - template: jinja
    - require:
      - file: /var/lib/matrix-synapse/{{ dir }}
    - watch_in:
      - service: {{ dir }}_service

{{ dir }}_bootstrap:
  cmd.run:
    - name: yarn install
    - cwd: /var/lib/matrix-synapse/{{ dir }}
    - runas: synapse
    - onchanges:
      - git: {{ repo }}

{% if data.get('build') == True %}
{{ dir }}_build:
  cmd.run:
    - name: yarn run build
    - cwd: /var/lib/matrix-synapse/{{ dir }}
    - runas: synapse
    - onchanges:
      - cmd: {{ dir }}_bootstrap
{% endif %}

{{ dir }}_systemd_file:
  file.managed:
    - name: /etc/systemd/system/{{ dir }}.service
    - template: jinja
    - context:
        dir: {{ dir }}
        script: {{ data.get('script') }}
    - source: salt://profile/matrix/files/appservice.service
    - require_in:
      - service: {{ dir }}_service

{{ dir }}_service:
  service.running:
    - name: {{ dir }}
    - enable: True
    - require:
      - service: synapse_service

{% endfor %}

/var/lib/matrix-synapse/hookshot/passkey.pem:
  file.managed:
    - contents_pillar: profile:matrix:appservices:hookshot:passkey
    - mode: '0640'
    - user: synapse
    - group: synapse