bundlewrap/bundles/navidrome/items.py
2025-04-16 18:10:26 +02:00

59 lines
1.5 KiB
Python

users = {
'navidrome': {
'home': '/opt/navidrome',
},
}
directories = {
'/opt/navidrome': {},
'/var/opt/navidrome': {
'owner': 'navidrome',
},
}
svc_systemd = {
'navidrome': {
'needs': {
'file:/etc/systemd/system/navidrome.service',
'file:/opt/navidrome/config.toml',
'action:navidrome_install',
},
},
}
actions['navidrome_install'] = {
'command': ' && '.join([
'tar -C /opt/navidrome -xf /opt/navidrome/navidrome.tar.gz',
]),
'after': {
'pkg_apt:',
},
'triggered': True,
'triggers': {
'svc_systemd:navidrome:restart',
},
}
files = {
'/opt/navidrome/config.toml': {
'content': repo.libs.faults.dict_as_toml(node.metadata.get('navidrome/config')),
'triggers': {
'svc_systemd:navidrome:restart',
},
},
'/etc/systemd/system/navidrome.service': {
'triggers': {
'action:systemd-reload',
'svc_systemd:navidrome:restart',
},
},
'/opt/navidrome/navidrome.tar.gz': {
'content_hash': node.metadata.get('navidrome/sha1', None),
'content_type': 'download',
'mode': '0755',
'source': f'https://github.com/navidrome/navidrome/releases/download/v{node.metadata.get('navidrome/version')}/navidrome_{node.metadata.get('navidrome/version')}_linux_amd64.tar.gz',
'triggers': {
'action:navidrome_install',
'svc_systemd:navidrome:restart',
},
},
}