prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Add `env` to Hydra's config group
  This is a follow up to #1441
  
  the `env` config group will allows users to manually change the env defaults value. (such as provides default callbacks or update run.dir )
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `hydra/conf/__init__.py`
  Content:
  ```
  1 # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
  2 from dataclasses import dataclass, field
  3 from typing import Any, Dict, List, Optional
  4 
  5 from omegaconf import MISSING
  6 
  7 from hydra.core.config_store import ConfigStore
  8 
  9 
  10 @dataclass
  11 class HelpConf:
  12     app_name: str = MISSING
  13     header: str = MISSING
  14     footer: str = MISSING
  15     template: str = MISSING
  16 
  17 
  18 @dataclass
  19 class HydraHelpConf:
  20     hydra_help: str = MISSING
  21     template: str = MISSING
  22 
  23 
  24 @dataclass
  25 class RunDir:
  26     dir: str = MISSING
  27 
  28 
  29 @dataclass
  30 class SweepDir:
  31     dir: str = MISSING
  32     subdir: str = MISSING
  33 
  34 
  35 @dataclass
  36 class OverridesConf:
  37     # Overrides for the hydra configuration
  38     hydra: List[str] = field(default_factory=lambda: [])
  39     # Overrides for the task configuration
  40     task: List[str] = field(default_factory=lambda: [])
  41 
  42 
  43 # job runtime information will be populated here
  44 @dataclass
  45 class JobConf:
  46     # Job name, populated automatically unless specified by the user (in config or cli)
  47     name: str = MISSING
  48 
  49     # Populated automatically by Hydra.
  50     # Concatenation of job overrides that can be used as a part
  51     # of the directory name.
  52     # This can be configured via hydra.job.config.override_dirname
  53     override_dirname: str = MISSING
  54 
  55     # Job ID in underlying scheduling system
  56     id: str = MISSING
  57 
  58     # Job number if job is a part of a sweep
  59     num: int = MISSING
  60 
  61     # The config name used by the job
  62     config_name: Optional[str] = MISSING
  63 
  64     # Environment variables to set remotely
  65     env_set: Dict[str, str] = field(default_factory=dict)
  66     # Environment variables to copy from the launching machine
  67     env_copy: List[str] = field(default_factory=list)
  68 
  69     # Job config
  70     @dataclass
  71     class JobConfig:
  72         @dataclass
  73         # configuration for the ${hydra.job.override_dirname} runtime variable
  74         class OverrideDirname:
  75             kv_sep: str = "="
  76             item_sep: str = ","
  77             exclude_keys: List[str] = field(default_factory=list)
  78 
  79         override_dirname: OverrideDirname = OverrideDirname()
  80 
  81     config: JobConfig = JobConfig()
  82 
  83 
  84 @dataclass
  85 class RuntimeConf:
  86     version: str = MISSING
  87     cwd: str = MISSING
  88 
  89 
  90 @dataclass
  91 class HydraConf:
  92     defaults: List[Any] = field(
  93         default_factory=lambda: [
  94             {"output": "default"},
  95             {"launcher": "basic"},
  96             {"sweeper": "basic"},
  97             {"help": "default"},
  98             {"hydra_help": "default"},
  99             {"hydra_logging": "default"},
  100             {"job_logging": "default"},
  101             {"callbacks": None},
  102         ]
  103     )
  104 
  105     # Elements to append to the config search path.
  106     # Note: This can only be configured in the primary config.
  107     searchpath: List[str] = field(default_factory=list)
  108 
  109     # Normal run output configuration
  110     run: RunDir = RunDir()
  111     # Multi-run output configuration
  112     sweep: SweepDir = SweepDir()
  113     # Logging configuration for Hydra
  114     hydra_logging: Any = MISSING
  115     # Logging configuration for the job
  116     job_logging: Any = MISSING
  117 
  118     # Sweeper configuration
  119     sweeper: Any = MISSING
  120     # Launcher configuration
  121     launcher: Any = MISSING
  122     # Callbacks configuration
  123     callbacks: Dict[str, Any] = field(default_factory=dict)
  124 
  125     # Program Help template
  126     help: HelpConf = HelpConf()
  127     # Hydra's Help template
  128     hydra_help: HydraHelpConf = HydraHelpConf()
  129 
  130     # Output directory for produced configuration files and overrides.
  131     # E.g., hydra.yaml, overrides.yaml will go here. Useful for debugging
  132     # and extra context when looking at past runs.
  133     # Setting to None will prevent the creation of the output subdir.
  134     output_subdir: Optional[str] = ".hydra"
  135 
  136     # Those lists will contain runtime overrides
  137     overrides: OverridesConf = OverridesConf()
  138 
  139     job: JobConf = JobConf()
  140 
  141     # populated at runtime
  142     runtime: RuntimeConf = RuntimeConf()
  143 
  144     # Can be a boolean, string or a list of strings
  145     # If a boolean, setting to true will set the log level for the root logger to debug
  146     # If a string, it's interpreted as a the list [string]
  147     # If a list, each element is interpreted as a logger to have logging level set to debug.
  148     # Typical command lines to manipulate hydra.verbose:
  149     # hydra.verbose=true
  150     # hydra.verbose=[hydra,__main__]
  151     # TODO: good use case for Union support in OmegaConf
  152     verbose: Any = False
  153 
  154     # Composition choices dictionary
  155     choices: Dict[str, str] = field(default_factory=lambda: {})
  156 
  157 
  158 cs = ConfigStore.instance()
  159 
  160 cs.store(
  161     group="hydra",
  162     name="config",
  163     node=HydraConf(),
  164     provider="hydra",
  165 )
  166
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/hydra/conf/__init__.py b/hydra/conf/__init__.py
  --- a/hydra/conf/__init__.py
  +++ b/hydra/conf/__init__.py
  @@ -99,6 +99,8 @@
               {"hydra_logging": "default"},
               {"job_logging": "default"},
               {"callbacks": None},
  +            # env specific overrides
  +            {"env": "default"},
           ]
       )
  
verification_info: {"golden_diff": "diff --git a/hydra/conf/__init__.py b/hydra/conf/__init__.py\n--- a/hydra/conf/__init__.py\n+++ b/hydra/conf/__init__.py\n@@ -99,6 +99,8 @@\n             {\"hydra_logging\": \"default\"},\n             {\"job_logging\": \"default\"},\n             {\"callbacks\": None},\n+            # env specific overrides\n+            {\"env\": \"default\"},\n         ]\n     )\n", "issue": "Add `env` to Hydra's config group\nThis is a follow up to #1441\r\n\r\nthe `env` config group will allows users to manually change the env defaults value. (such as provides default callbacks or update run.dir )\r\n\n", "before_files": [{"content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\nfrom dataclasses import dataclass, field\nfrom typing import Any, Dict, List, Optional\n\nfrom omegaconf import MISSING\n\nfrom hydra.core.config_store import ConfigStore\n\n\n@dataclass\nclass HelpConf:\n    app_name: str = MISSING\n    header: str = MISSING\n    footer: str = MISSING\n    template: str = MISSING\n\n\n@dataclass\nclass HydraHelpConf:\n    hydra_help: str = MISSING\n    template: str = MISSING\n\n\n@dataclass\nclass RunDir:\n    dir: str = MISSING\n\n\n@dataclass\nclass SweepDir:\n    dir: str = MISSING\n    subdir: str = MISSING\n\n\n@dataclass\nclass OverridesConf:\n    # Overrides for the hydra configuration\n    hydra: List[str] = field(default_factory=lambda: [])\n    # Overrides for the task configuration\n    task: List[str] = field(default_factory=lambda: [])\n\n\n# job runtime information will be populated here\n@dataclass\nclass JobConf:\n    # Job name, populated automatically unless specified by the user (in config or cli)\n    name: str = MISSING\n\n    # Populated automatically by Hydra.\n    # Concatenation of job overrides that can be used as a part\n    # of the directory name.\n    # This can be configured via hydra.job.config.override_dirname\n    override_dirname: str = MISSING\n\n    # Job ID in underlying scheduling system\n    id: str = MISSING\n\n    # Job number if job is a part of a sweep\n    num: int = MISSING\n\n    # The config name used by the job\n    config_name: Optional[str] = MISSING\n\n    # Environment variables to set remotely\n    env_set: Dict[str, str] = field(default_factory=dict)\n    # Environment variables to copy from the launching machine\n    env_copy: List[str] = field(default_factory=list)\n\n    # Job config\n    @dataclass\n    class JobConfig:\n        @dataclass\n        # configuration for the ${hydra.job.override_dirname} runtime variable\n        class OverrideDirname:\n            kv_sep: str = \"=\"\n            item_sep: str = \",\"\n            exclude_keys: List[str] = field(default_factory=list)\n\n        override_dirname: OverrideDirname = OverrideDirname()\n\n    config: JobConfig = JobConfig()\n\n\n@dataclass\nclass RuntimeConf:\n    version: str = MISSING\n    cwd: str = MISSING\n\n\n@dataclass\nclass HydraConf:\n    defaults: List[Any] = field(\n        default_factory=lambda: [\n            {\"output\": \"default\"},\n            {\"launcher\": \"basic\"},\n            {\"sweeper\": \"basic\"},\n            {\"help\": \"default\"},\n            {\"hydra_help\": \"default\"},\n            {\"hydra_logging\": \"default\"},\n            {\"job_logging\": \"default\"},\n            {\"callbacks\": None},\n        ]\n    )\n\n    # Elements to append to the config search path.\n    # Note: This can only be configured in the primary config.\n    searchpath: List[str] = field(default_factory=list)\n\n    # Normal run output configuration\n    run: RunDir = RunDir()\n    # Multi-run output configuration\n    sweep: SweepDir = SweepDir()\n    # Logging configuration for Hydra\n    hydra_logging: Any = MISSING\n    # Logging configuration for the job\n    job_logging: Any = MISSING\n\n    # Sweeper configuration\n    sweeper: Any = MISSING\n    # Launcher configuration\n    launcher: Any = MISSING\n    # Callbacks configuration\n    callbacks: Dict[str, Any] = field(default_factory=dict)\n\n    # Program Help template\n    help: HelpConf = HelpConf()\n    # Hydra's Help template\n    hydra_help: HydraHelpConf = HydraHelpConf()\n\n    # Output directory for produced configuration files and overrides.\n    # E.g., hydra.yaml, overrides.yaml will go here. Useful for debugging\n    # and extra context when looking at past runs.\n    # Setting to None will prevent the creation of the output subdir.\n    output_subdir: Optional[str] = \".hydra\"\n\n    # Those lists will contain runtime overrides\n    overrides: OverridesConf = OverridesConf()\n\n    job: JobConf = JobConf()\n\n    # populated at runtime\n    runtime: RuntimeConf = RuntimeConf()\n\n    # Can be a boolean, string or a list of strings\n    # If a boolean, setting to true will set the log level for the root logger to debug\n    # If a string, it's interpreted as a the list [string]\n    # If a list, each element is interpreted as a logger to have logging level set to debug.\n    # Typical command lines to manipulate hydra.verbose:\n    # hydra.verbose=true\n    # hydra.verbose=[hydra,__main__]\n    # TODO: good use case for Union support in OmegaConf\n    verbose: Any = False\n\n    # Composition choices dictionary\n    choices: Dict[str, str] = field(default_factory=lambda: {})\n\n\ncs = ConfigStore.instance()\n\ncs.store(\n    group=\"hydra\",\n    name=\"config\",\n    node=HydraConf(),\n    provider=\"hydra\",\n)\n", "path": "hydra/conf/__init__.py"}], "after_files": [{"content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\nfrom dataclasses import dataclass, field\nfrom typing import Any, Dict, List, Optional\n\nfrom omegaconf import MISSING\n\nfrom hydra.core.config_store import ConfigStore\n\n\n@dataclass\nclass HelpConf:\n    app_name: str = MISSING\n    header: str = MISSING\n    footer: str = MISSING\n    template: str = MISSING\n\n\n@dataclass\nclass HydraHelpConf:\n    hydra_help: str = MISSING\n    template: str = MISSING\n\n\n@dataclass\nclass RunDir:\n    dir: str = MISSING\n\n\n@dataclass\nclass SweepDir:\n    dir: str = MISSING\n    subdir: str = MISSING\n\n\n@dataclass\nclass OverridesConf:\n    # Overrides for the hydra configuration\n    hydra: List[str] = field(default_factory=lambda: [])\n    # Overrides for the task configuration\n    task: List[str] = field(default_factory=lambda: [])\n\n\n# job runtime information will be populated here\n@dataclass\nclass JobConf:\n    # Job name, populated automatically unless specified by the user (in config or cli)\n    name: str = MISSING\n\n    # Populated automatically by Hydra.\n    # Concatenation of job overrides that can be used as a part\n    # of the directory name.\n    # This can be configured via hydra.job.config.override_dirname\n    override_dirname: str = MISSING\n\n    # Job ID in underlying scheduling system\n    id: str = MISSING\n\n    # Job number if job is a part of a sweep\n    num: int = MISSING\n\n    # The config name used by the job\n    config_name: Optional[str] = MISSING\n\n    # Environment variables to set remotely\n    env_set: Dict[str, str] = field(default_factory=dict)\n    # Environment variables to copy from the launching machine\n    env_copy: List[str] = field(default_factory=list)\n\n    # Job config\n    @dataclass\n    class JobConfig:\n        @dataclass\n        # configuration for the ${hydra.job.override_dirname} runtime variable\n        class OverrideDirname:\n            kv_sep: str = \"=\"\n            item_sep: str = \",\"\n            exclude_keys: List[str] = field(default_factory=list)\n\n        override_dirname: OverrideDirname = OverrideDirname()\n\n    config: JobConfig = JobConfig()\n\n\n@dataclass\nclass RuntimeConf:\n    version: str = MISSING\n    cwd: str = MISSING\n\n\n@dataclass\nclass HydraConf:\n    defaults: List[Any] = field(\n        default_factory=lambda: [\n            {\"output\": \"default\"},\n            {\"launcher\": \"basic\"},\n            {\"sweeper\": \"basic\"},\n            {\"help\": \"default\"},\n            {\"hydra_help\": \"default\"},\n            {\"hydra_logging\": \"default\"},\n            {\"job_logging\": \"default\"},\n            {\"callbacks\": None},\n            # env specific overrides\n            {\"env\": \"default\"},\n        ]\n    )\n\n    # Elements to append to the config search path.\n    # Note: This can only be configured in the primary config.\n    searchpath: List[str] = field(default_factory=list)\n\n    # Normal run output configuration\n    run: RunDir = RunDir()\n    # Multi-run output configuration\n    sweep: SweepDir = SweepDir()\n    # Logging configuration for Hydra\n    hydra_logging: Any = MISSING\n    # Logging configuration for the job\n    job_logging: Any = MISSING\n\n    # Sweeper configuration\n    sweeper: Any = MISSING\n    # Launcher configuration\n    launcher: Any = MISSING\n    # Callbacks configuration\n    callbacks: Dict[str, Any] = field(default_factory=dict)\n\n    # Program Help template\n    help: HelpConf = HelpConf()\n    # Hydra's Help template\n    hydra_help: HydraHelpConf = HydraHelpConf()\n\n    # Output directory for produced configuration files and overrides.\n    # E.g., hydra.yaml, overrides.yaml will go here. Useful for debugging\n    # and extra context when looking at past runs.\n    # Setting to None will prevent the creation of the output subdir.\n    output_subdir: Optional[str] = \".hydra\"\n\n    # Those lists will contain runtime overrides\n    overrides: OverridesConf = OverridesConf()\n\n    job: JobConf = JobConf()\n\n    # populated at runtime\n    runtime: RuntimeConf = RuntimeConf()\n\n    # Can be a boolean, string or a list of strings\n    # If a boolean, setting to true will set the log level for the root logger to debug\n    # If a string, it's interpreted as a the list [string]\n    # If a list, each element is interpreted as a logger to have logging level set to debug.\n    # Typical command lines to manipulate hydra.verbose:\n    # hydra.verbose=true\n    # hydra.verbose=[hydra,__main__]\n    # TODO: good use case for Union support in OmegaConf\n    verbose: Any = False\n\n    # Composition choices dictionary\n    choices: Dict[str, str] = field(default_factory=lambda: {})\n\n\ncs = ConfigStore.instance()\n\ncs.store(\n    group=\"hydra\",\n    name=\"config\",\n    node=HydraConf(),\n    provider=\"hydra\",\n)\n", "path": "hydra/conf/__init__.py"}]}