from os import listdir from os.path import join actions = { 'fc-cache_flush': { 'command': 'fc-cache -f', 'triggered': True, 'needs': { 'pkg_pacman:fontconfig', }, }, 'i3pystatus_create_virtualenv': { 'command': '/usr/bin/python3 -m virtualenv -p python3 /opt/i3pystatus/venv/', 'unless': 'test -d /opt/i3pystatus/venv/', 'needs': { 'directory:/opt/i3pystatus/src', }, }, 'i3pystatus_install': { 'command': ' && '.join([ 'cd /opt/i3pystatus/src', '/opt/i3pystatus/venv/bin/pip install --upgrade pip {}'.format(' '.join(sorted(node.metadata.get('arch-with-gui/i3pystatus/deps', set())))), '/opt/i3pystatus/venv/bin/pip install --upgrade -e .', ]), 'needs': { 'action:i3pystatus_create_virtualenv', }, 'triggered': True, }, } directories = { '/etc/sddm.conf.d': { 'purge': True, }, '/opt/i3pystatus/src': {}, '/usr/share/fonts/bundlewrap': { 'purge': True, 'triggers': { 'action:fc-cache_flush', }, }, } svc_systemd = { 'sddm': { 'needs': { 'pkg_pacman:sddm', }, }, } git_deploy = { '/opt/i3pystatus/src': { 'repo': 'https://github.com/enkore/i3pystatus.git', 'rev': 'current', 'triggers': { 'action:i3pystatus_install', }, }, } for filename in listdir(join(repo.path, 'data', 'arch-with-gui', 'files', 'fonts')): if filename.startswith('.'): continue if filename.endswith('.vault'): font_name = filename[:-6] attrs = { 'content': repo.vault.decrypt_file_as_base64(join('arch-with-gui', 'files', 'fonts', filename)), 'content_type': 'base64', } else: font_name = filename attrs = { 'source': join('fonts', filename), 'content_type': 'binary', } files[f'/usr/share/fonts/bundlewrap/{font_name}'] = { 'triggers': { 'action:fc-cache_flush', }, **attrs, } if node.metadata.get('arch-with-gui/autologin', {}): files['/etc/sddm.conf.d/autologin.conf'] = { 'context': node.metadata.get('arch-with-gui/autologin'), 'content_type': 'mako', 'before': { 'svc_systemd:sddm', }, }