anchor.diff:            type = types.path;
             description = "Path grafana will watch for dashboards";
           };
  +      };
  +    };
  +  };
  +
  +  grafanaTypes.notifierConfig = types.submodule {
  +    options = {
  +      name = mkOption {
  +        type = types.str;
  +        default = "default";
  +        description = "Notifier name";
  +      };
  +      type = mkOption {
  +        type = types.enum ["dingding" "discord" "email" "googlechat" "hipchat" "kafka" "line" "teams" "opsgenie" "pagerduty" "prometheus-alertmanager" "pushover" "sensu" "sensugo" "slack" "telegram" "threema" "victorops" "webhook"];
  +        description = "Notifier type";
  +      };
  +      uid = mkOption {
  +        type = types.str;
  +        description = "Unique notifier identifier";
  +      };
  +      org_id = mkOption {
  +        type = types.int;
  +        default = 1;
  +        description = "Organization ID";
  +      };
  +      org_name = mkOption {
  +        type = types.str;
  +        default = "Main Org.";
  +        description = "Organization name";
  +      };
  +      is_default = mkOption {
  +        type = types.bool;
  +        description = "Is the default notifier";
  +        default = false;
  +      };
  +      send_reminder = mkOption {
  +        type = types.bool;
  +        default = true;
  +        description = "Should the notifier be sent reminder notifications while alerts continue to fire";
  +      };
  +      frequency = mkOption {
  +        type = types.str;
  +        default = "5m";
  +        description = "How frequently should the notifier be sent reminders";
  +      };
  +      disable_resolve_message = mkOption {
  +        type = types.bool;
  +        default = false;
  +        description = "Turn off the message that sends when an alert returns to OK";
  +      };
  +      settings = mkOption {
  +        type = types.nullOr types.attrs;
  +        default = null;
  +        description = "Settings for the notifier type";
  +      };
  +      secure_settings = mkOption {
  +        type = types.nullOr types.attrs;
  +        default = null;
  +        description = "Secure settings for the notifier type";
         };
       };
     };
  
positive.code: 
    dashboardFile = pkgs.writeText "dashboard.yaml" (builtins.toJSON dashboardConfiguration);
  
    provisionConfDir =  pkgs.runCommand "grafana-provisioning" { } ''
      mkdir -p $out/{datasources,dashboards}
      ln -sf ${datasourceFile} $out/datasources/datasource.yaml
      ln -sf ${dashboardFile} $out/dashboards/dashboard.yaml
    '';
  
    # Get a submodule without any embedded metadata:
  
negative.code:         description = "Grafana dashboard configuration";
          default = [];
          type = types.listOf grafanaTypes.dashboardConfig;
          apply = x: map _filter x;
        };
        notifiers = mkOption {
          description = "Grafana notifier configuration";
          default = [];
          type = types.listOf grafanaTypes.notifierConfig;
          apply = x: map _filter x;
        };
      };
  