{ config, lib, pkgs, ... }: let cfg = config.programs.git-credential-oauth; in { meta.maintainers = [ lib.maintainers.tomodachi94 ]; options = { programs.git-credential-oauth = { 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 = lib.mkAfter [ ("${cfg.package}/bin/git-credential-oauth" + lib.optionalString (cfg.extraFlags != [ ]) " ${lib.strings.concatStringsSep " " cfg.extraFlags}") ]; }; }