users = {
    'git': {
        'home': '/var/lib/forgejo',
    },
}

directories = {
    '/var/lib/forgejo/.ssh': {
        'mode': '0700',
        'owner': 'git',
        'group': 'git',
    },
    '/var/lib/forgejo': {
        'owner': 'git',
        'mode': '0700',
        'triggers': {
            'svc_systemd:forgejo:restart',
        },
    },
}

files = {
    '/usr/local/lib/systemd/system/forgejo.service': {
        'content_type': 'mako',
        'context': node.metadata.get('forgejo'),
        'triggers': {
            'action:systemd-reload',
            'svc_systemd:forgejo:restart',
        },
    },
    '/etc/forgejo/app.ini': {
        'content_type': 'mako',
        'context': node.metadata.get('forgejo'),
        'triggers': {
            'svc_systemd:forgejo:restart',
        },
    },
    '/usr/local/bin/forgejo': {
        'content_type': 'download',
        'source': 'https://codeberg.org/forgejo/forgejo/releases/download/v{0}/forgejo-{0}-linux-amd64'.format(node.metadata.get('forgejo/version')),
        'content_hash': node.metadata.get('forgejo/sha1', None),
        'mode': '0755',
        'triggers': {
            'svc_systemd:forgejo:restart',
        },
    },
}

if node.metadata.get('forgejo/install_ssh_key', False):
    files['/var/lib/forgejo/.ssh/id_ed25519'] = {
        'content': repo.vault.decrypt_file(f'forgejo/files/ssh-keys/{node.name}.key.vault'),
        'mode': '0600',
        'owner': 'git',
        'group': 'git',
    }

svc_systemd = {
    'forgejo': {
        'needs': {
            'file:/etc/forgejo/app.ini',
            'file:/usr/local/bin/forgejo',
            'file:/usr/local/lib/systemd/system/forgejo.service',
        },
    },
}