{
  config,
  lib,
  pkgs,
  ...
}:
let
  cfg = config.programs.pylint;
  listToValue = lib.concatMapStringsSep ", " (lib.generators.mkValueStringDefault { });
  iniFormat = pkgs.formats.ini { inherit listToValue; };
in
{
  meta.maintainers = [ lib.hm.maintainers.florpe ];
  options.programs.pylint = {
    enable = lib.mkEnableOption "the pylint Python linter";
    package = lib.mkPackageOption pkgs [ "python3Packages" "pylint" ] { };
    settings = lib.mkOption {
      type = iniFormat.type;
      default = { };
      defaultText = lib.literalExpression "{}";
      description = "The pylint configuration.";
    };
  };
  config = lib.mkIf cfg.enable {
    home.packages = [ cfg.package ];
    home.file.".pylintrc".source = iniFormat.generate "pylintrc" cfg.settings;
  };
}
