import { Callout } from 'nextra-theme-docs';

Once you've gotten started with a basic configuration, you'll probably want to customize the look and feel of hyperglass by changing the logo or color scheme. Fortunately, there are _a lot_ ways to customize hyperglass.

## Configuration Files

| File Name    | Purpose                                                                    |
| :----------- | :------------------------------------------------------------------------- |
| `config`     | Application-wide configuration such as logging, web UI customization, etc. |
| `devices`    | Your devices and their associated configurations.                          |
| `directives` | Custom [directives](/configuration/directives-file-reference) (commands).  |

<Callout type="info">
  **File Extensions** <br />
  All the examples in the docs are provided in [YAML](https://yaml.org/) format, but [TOML](https://toml.io/),
  JSON, and Python files are also supported.
</Callout>

### Using a Python File

When using a Python file for a hyperglass configuration, one of the following methods may be used:

#### Define a Function Named `main`

```python
def main():
  return {
    "org_name": "Your Organization Name",
    "web": {
      "theme": {
        "colors": {
          "blue": "#0000ff",
        }
      }
    }
  }

# The main function can also be an async function.
async def main():
  config = await some_function_to_fetch_config()
  return config
```

#### Define a Dictionary Named `main`

```python
main = {
    "org_name": "Your Organization Name",
    "web": {
      "theme": {
        "colors": {
          "blue": "#0000ff",
        }
      }
    }
  }
```
