anchor.diff:            Once set, changing the interval will require deletion or migration of all
             the collected data.'';
         };
  -      alertConfig = mkOption {
  -        type = types.string;
  -        default = ''
  -          to = root@localhost
  -          from = smokeping@localhost
  -        '';
  -        example = literalExample ''
  -          to = alertee@address.somewhere
  -          from = smokealert@company.xy
  -
  -          +someloss
  -          type = loss
  -          # in percent
  -          pattern = >0%,*12*,>0%,*12*,>0%
  -          comment = loss 3 times  in a row;
  -        '';
  -        description = "Configuration for alerts.";
  -      };
  -      presentationTemplate = mkOption {
  -        type = types.string;
  -        default = "${pkgs.smokeping}/etc/basepage.html.dist";
  -        description = "Default page layout for the web UI.";
  -      };
  -
  +      extraConfig = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = "Any additional customization not already included.";
  +      };
  +      hostName = mkOption {
  +        type = types.string;
  +        default = config.networking.hostName;
  +        example = "somewhere.example.com";
  +        description = "DNS name for the urls generated in the cgi.";
  +      };
  +      imgUrl = mkOption {
  +        type = types.string;
  +        default = "http://${cfg.hostName}:${builtins.toString cfg.port}/cache";
  +        example = "https://somewhere.example.com/cache";
  +        description = "Base url for images generated in the cgi.";
  +      };
  +      linkStyle = mkOption {
  +        type = types.enum ["original" "absolute" "relative"];
  +        default = "relative";
  +        example = "absolute";
  +        description = "DNS name for the urls generated in the cgi.";
  +      };
  +      mailHost = mkOption {
  +        type = types.string;
  +        default = "";
  +        example = "localhost";
  +        description = "Use this SMTP server to send alerts";
  +      };
  +      owner = mkOption {
  +        type = types.string;
  +        default = "nobody";
  +        example = "Joe Admin";
  +        description = "Real name of the owner of the instance";
  +      };
  +      ownerEmail = mkOption {
  +        type = types.string;
  +        default = "no-reply@${cfg.hostName}";
  +        example = "no-reply@yourdomain.com";
  +        description = "Email contact for owner";
  +      };
  +      package = mkOption {
  +        type = types.package;
  +        default = pkgs.smokeping;
  +        defaultText = "pkgs.smokeping";
  +        description = "Specify a custom smokeping package";
  +      };
  +      port = mkOption {
  +        type = types.int;
  +        default = 8081;
  +        example = 8081;
  +        description = "TCP port to use for the web server.";
  +      };
         presentationConfig = mkOption {
           type = types.string;
           default = ''
  
positive.code:         '';
          description = "presentation graph style";
        };
        probeConfig = mkOption {
          type = types.string;
          default = ''
  
negative.code:           binary = ${config.security.wrapperDir}/fping
          '';
          description = "Probe configuration";
        };
        sendmail = mkOption {
          type = types.nullOr types.path;
          default = null;
          example = "/var/setuid-wrappers/sendmail";
          description = "Use this sendmail compatible script to deliver alerts";
        };
        smokeMailTemplate = mkOption {
          type = types.string;
          default = "${cfg.package}/etc/smokemail.dist";
          description = "Specify the smokemail template for alerts.";
        };
        targetConfig = mkOption {
          type = types.string;
  