{ options, lib, ... }:

{
  programs.gh = {
    enable = true;
    aliases = { co = "pr checkout"; };
    editor = "vim";
  };

  test.asserts.warnings.expected = [
    "The option `programs.gh.editor' defined in ${
      lib.showFiles options.programs.gh.editor.files
    } has been renamed to `programs.gh.settings.editor'."
    "The option `programs.gh.aliases' defined in ${
      lib.showFiles options.programs.gh.aliases.files
    } has been renamed to `programs.gh.settings.aliases'."
  ];
  test.asserts.warnings.enable = true;

  nmt.script = ''
    assertFileExists home-files/.config/gh/config.yml
    assertFileContent home-files/.config/gh/config.yml ${
      builtins.toFile "config-file.yml" ''
        aliases:
          co: pr checkout
        editor: vim
        git_protocol: https
        version: '1'
      ''
    }
  '';
}