defaults = { 'systemd': { 'units': {}, 'services': {}, } } @metadata_reactor.provides( 'systemd/units', ) def units(metadata): units = {} for name, config in metadata.get('systemd/units').items(): extension = name.split('.')[-1] if extension not in ['timer', 'service', 'network', 'netdev']: raise Exception(f'unknown extension {extension}') if not config.get('Install/WantedBy'): if extension == 'service': units[name] = { 'Install': { 'WantedBy': ['multi-user.target'], } } elif extension == 'timer': units[name] = { 'Install': { 'WantedBy': ['timers.target'], } } return { 'systemd': { 'units': units, } } @metadata_reactor.provides( 'systemd/services', ) def services(metadata): services = {} for name, config in metadata.get('systemd/services').items(): extension = name.split('.')[-1] if extension not in ['timer', 'service']: raise Exception(f'unknown extension {extension}') return { 'systemd': { 'services': services, } }