diff --git a/modules/programs/gh.nix b/modules/programs/gh.nix index fcf0f8f32..526010a50 100644 --- a/modules/programs/gh.nix +++ b/modules/programs/gh.nix @@ -60,6 +60,12 @@ in { "settings" "git_protocol" ]) + (mkRenamedOptionModule [ "programs" "gh" "enableGitCredentialHelper" ] [ + "programs" + "gh" + "gitCredentialHelper" + "enable" + ]) ]; options.programs.gh = { @@ -91,11 +97,21 @@ in { ''; }; - enableGitCredentialHelper = - mkEnableOption "the gh git credential helper for github.com" // { + gitCredentialHelper = { + enable = mkEnableOption "the gh git credential helper" // { default = true; }; + hosts = mkOption { + type = types.listOf types.str; + default = [ "https://github.com" ]; + description = "GitHub hosts to enable the gh git credential helper for"; + example = literalExpression '' + [ "https://github.com" "https://github.example.com" ] + ''; + }; + }; + extensions = mkOption { type = types.listOf types.package; default = [ ]; @@ -112,9 +128,11 @@ in { xdg.configFile."gh/config.yml".source = yamlFormat.generate "gh-config.yml" cfg.settings; - programs.git.extraConfig.credential."https://github.com".helper = - mkIf cfg.enableGitCredentialHelper - "${cfg.package}/bin/gh auth git-credential"; + programs.git.extraConfig.credential = mkIf cfg.gitCredentialHelper.enable + (builtins.listToAttrs (map (host: + lib.nameValuePair host { + helper = "${cfg.package}/bin/gh auth git-credential"; + }) cfg.gitCredentialHelper.hosts)); xdg.dataFile."gh/extensions" = mkIf (cfg.extensions != [ ]) { source = pkgs.linkFarm "gh-extensions" (builtins.map (p: { diff --git a/tests/modules/programs/gh/credential-helper.git.conf b/tests/modules/programs/gh/credential-helper.git.conf index ea2c61ee4..529d6725a 100644 --- a/tests/modules/programs/gh/credential-helper.git.conf +++ b/tests/modules/programs/gh/credential-helper.git.conf @@ -1,2 +1,5 @@ [credential "https://github.com"] helper = "@gh@/bin/gh auth git-credential" + +[credential "https://github.example.com"] + helper = "@gh@/bin/gh auth git-credential" diff --git a/tests/modules/programs/gh/credential-helper.nix b/tests/modules/programs/gh/credential-helper.nix index 0c5ed872f..771572318 100644 --- a/tests/modules/programs/gh/credential-helper.nix +++ b/tests/modules/programs/gh/credential-helper.nix @@ -3,7 +3,10 @@ { programs.gh = { enable = true; - enableGitCredentialHelper = true; + gitCredentialHelper = { + enable = true; + hosts = [ "https://github.com" "https://github.example.com" ]; + }; }; programs.git.enable = true;