defaults = { 'systemd': { 'units': {}, 'services': {}, 'logind': {}, } } @metadata_reactor.provides( 'systemd/units', ) def units(metadata): units = {} for name, config in metadata.get('systemd/units').items(): if '/' in name: continue type = name.split('.')[-1] if type not in ['timer', 'service', 'network', 'netdev', 'mount', 'swap']: raise Exception(f'unknown type {type}') if not config.get('Install/WantedBy'): if type == 'service': units[name] = { 'Install': { 'WantedBy': {'multi-user.target'}, } } elif type == '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', 'mount', 'swap']: raise Exception(f'unknown extension: {extension}') return { 'systemd': { 'services': services, } }