--- /dev/null
+{% if grains['id'] == 'template-element' %}
+
+element--gpg-key:
+ file.managed:
+ - name: /usr/share/keyrings/element-io-archive-keyring.gpg
+ - source: salt://element/files/element-io-archive-keyring.gpg
+ - user: root
+ - group: root
+ - mode: 644
+
+element--apt-repo:
+ pkgrepo.managed:
+ - name: deb [arch=amd64 signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian default main
+ - humanname: Element Repository
+ - file: /etc/apt/sources.list.d/element-io.list
+ - refresh: True
+ - require:
+ - file: element--gpg-key
+
+{% endif %}
--- /dev/null
+{% if grains['id'] == 'dom0' %}
+
+element--create-qube:
+ qvm.vm:
+ - name: q-element
+ - present:
+ - template: template-element
+ - label: yellow
+ - prefs:
+ - label: yellow
+ - audiovm: sys-audio
+ - guivm: dom0
+ - netvm: sys-vpn-mullvad
+ - features:
+ - set:
+ - menu-items: element-desktop.desktop
+ - require:
+ - qvm: element--create-template
+
+{% endif %}
--- /dev/null
+{% import "templates/versions.jinja" as version %}
+
+include:
+ - templates.templates--install-debian-minimal
+
+{% if grains['id'] == 'dom0' %}
+
+element--create-template:
+ qvm.clone:
+ - name: template-element
+ - source: debian-{{ version.debian }}-minimal
+ - class: TemplateVM
+ - require:
+ - qvm: templates--install-debian-{{ version.debian }}-minimal
+
+element--create-template-prefs:
+ qvm.prefs:
+ - name: template-element
+ - label: yellow
+ - audiovm:
+ - guivm:
+ - netvm:
+ - require:
+ - qvm: element--create-template
+
+{% endif %}
--- /dev/null
+{% if grains['id'] == 'template-element' %}
+
+element--install-packages:
+ pkg.installed:
+ - refresh: True
+ - pkgs:
+ - qubes-core-agent-networking
+ - qubes-app-shutdown-idle
+ - element-desktop
+ - require:
+ - pkgrepo: element--apt-repo
+
+{% endif %}
--- /dev/null
+include:
+ - element.element--create-template
+ - element.element--configure-package-manager
+ - element.element--install-packages
+ - element.element--create-qube