git-credential-oauth: add extraFlags option

This facilitates a legitimate use-case for browserless systems. From the
README:
> On systems without a web browser, set the -device flag to authenticate
> on another device using [OAuth device flow]:
> ```ini
  [credential]
	  helper = cache --timeout 7200	# two hours
	  helper = oauth -device
  ```

[OAuth device flow]: https://www.rfc-editor.org/rfc/rfc8628

Please note that, for the documentation about the man-page to be
accurate, https://github.com/NixOS/nixpkgs/pull/302922 must be merged.
This commit is contained in:
Tomo 2024-04-09 18:15:33 -07:00
parent b00d0e4fe9
commit 0482a66a21
1 changed files with 15 additions and 2 deletions

View File

@ -12,13 +12,26 @@ in {
enable = lib.mkEnableOption "Git authentication handler for OAuth";
package = lib.mkPackageOption pkgs "git-credential-oauth" { };
extraFlags = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
example = lib.literalExpression ''[ "-device" ]'';
description = ''
Extra command-line arguments passed to git-credential-oauth.
For valid arguments, see {manpage}`git-credential-oauth(1)`.
'';
};
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
programs.git.extraConfig.credential.helper =
[ "${cfg.package}/bin/git-credential-oauth" ];
programs.git.extraConfig.credential.helper = [
("${cfg.package}/bin/git-credential-oauth" + lib.mkIf cfg.extraFlags
" ${lib.strings.concatStringsSep " " cfg.extraFlags}")
];
};
}