{
  config,
  lib,
  pkgs,
  ...
}:

let
  cfg = config.programs.grep;

in
{

  meta.maintainers = [ lib.maintainers.bmrips ];

  options.programs.grep = {
    enable = lib.mkEnableOption "{command}`grep`.";
    package = lib.mkPackageOption pkgs "grep" {
      default = "gnugrep";
      nullable = true;
    };
    colors = lib.mkOption {
      type = with lib.types; attrsOf str;
      default = { };
      description = "Settings for {env}`GREP_COLORS`";
      example.error = "01;31";
    };
  };

  config = lib.mkIf cfg.enable {
    home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
    home.sessionVariables = lib.mkIf (cfg.colors != { }) {
      GREP_COLORS = lib.concatStringsSep ":" (lib.mapAttrsToList (n: v: "${n}=${v}") cfg.colors);
    };
  };

}
