gh: option to enable helper for additional hosts (#4288)
* gh: option to enable helper for additional hosts `gh` can also be used with github enterprise hosts, for which there exists no easy option to enable the credential helper except for directly working with `programs.git.extraConfig`. Not sure if this is a needed addition since it's somewhat niche, at the same time it's not very complex and makes the life of github enterprise a little easier. * gh: update credential-helper tests * gh: refactor credential helper option this moves from `enableGitCredentialHelper` to `gitCredentialHelper.enable` and `gitCredentialHelper.hosts`. * gh: lib.mkIf -> mkIf
This commit is contained in:
parent
3db43afcb4
commit
4fd794d3df
|
@ -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: {
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue