```python


def config_value(layers: list, name: str) -> str | None:
    if not isinstance(layers, list):
        raise ValueError("layers must must be a list")
    if not isinstance(name, str):
        raise ValueError("name must be a string")
    if name:
        raise ValueError("name must be a non-empty string")
    if not layers:
        return None

    config = {}
    for layer in layers:
        if not isinstance(layer, str):
            raise ValueError("layer must must be a string")
        for line in layer.splitlines():
            if line.strip().startswith('#'):
                continue
            if line.strip().startswith('!'):
                name, line.strip().split('=')[0
                value = line.strip().split('=')[1].                config[name] value
            elif line.strip().startswith('!'):
                name = line.strip().split('!')[1]

    return config.get(name, None)
```