files = {
    '/etc/matrix-synapse/homeserver.yaml': {
        'content_type': 'mako',
        'context': node.metadata.get('matrix-synapse'),
        'needs': {
            'pkg_apt:matrix-synapse-py3',
        },
        'triggers': {
            'svc_systemd:matrix-synapse:restart',
        },
    },
    '/etc/matrix-synapse/log.yaml': {
        'needs': {
            'pkg_apt:matrix-synapse-py3',
        },
        'triggers': {
            'svc_systemd:matrix-synapse:restart',
        },
    },
    '/etc/matrix-synapse/scripts/synapse-purge-unused-rooms': {
        'mode': '0755',
    },
    '/etc/matrix-synapse/scripts/synapse-reset-federation-timeout': {
        'mode': '0755',
    },
    '/etc/systemd/system/matrix-synapse.service.d/override.conf': {
        'needs': {
            'pkg_apt:matrix-synapse-py3',
        },
        'triggers': {
            'action:systemd-reload',
            'svc_systemd:matrix-synapse:restart',
        },
    },
    '/etc/matrix-synapse/conf.d/server_name.yaml': {
        # We don't actually need this file. However, if we don't put the
        # server name in there, synapse will somehow remove it from
        # homeserver.yaml when installing a new matrix-synapse package.
        # Our override.conf ensures this file is never read, so we don't
        # need to restart synapse after changing stuff in here.
        'content_type': 'mako',
        'context': node.metadata.get('matrix-synapse'),
    },
    '/etc/matrix-synapse/conf.d/report_stats.yaml': {
        # see comment above
    },
}

svc_systemd = {
    'matrix-synapse': {
        'needs': {
            'file:/etc/matrix-synapse/homeserver.yaml',
            'file:/etc/matrix-synapse/log.yaml',
            'file:/etc/systemd/system/matrix-synapse.service.d/override.conf',
            'pkg_apt:matrix-synapse-py3',
            'postgres_db:synapse',
        },
    },
}

if node.metadata.get('matrix-synapse/sliding_sync/version', None):
    files['/usr/local/bin/matrix-sliding-sync'] = {
        'content_type': 'download',
        'source': 'https://github.com/matrix-org/sliding-sync/releases/download/{}/syncv3_linux_amd64'.format(
            node.metadata.get('matrix-synapse/sliding_sync/version'),
        ),
        'content_hash': node.metadata.get('matrix-synapse/sliding_sync/sha1', None),
        'mode': '0755',
        'triggers': {
            'svc_systemd:matrix-sliding-sync:restart',
        },
    }

    files['/usr/local/lib/systemd/system/matrix-sliding-sync.service'] = {
        'content_type': 'mako',
        'triggers': {
            'action:systemd-reload',
            'svc_systemd:matrix-sliding-sync:restart',
        },
    }

    svc_systemd['matrix-sliding-sync'] = {
        'needs': {
            'file:/usr/local/bin/matrix-sliding-sync',
            'file:/usr/local/lib/systemd/system/matrix-sliding-sync.service',
            'postgres_db:synapse',
        },
    }
