{ config, lib, pkgs, ... }:
let
  cfg = config.my.system.documentation;
in
{
  options.my.system.documentation = with lib; {
    enable = my.mkDisableOption "Documentation integration";

    dev.enable = my.mkDisableOption "Documentation aimed at developers";

    info.enable = my.mkDisableOption "Documentation aimed at developers";

    man = {
      enable = my.mkDisableOption "Documentation aimed at developers";

      linux = my.mkDisableOption "Linux man pages (section 2 & 3)";
    };

    nixos.enable = my.mkDisableOption "NixOS documentation";
  };

  config = lib.mkIf cfg.enable {
    documentation = {
      enable = true;

      dev.enable = cfg.dev.enable;

      info.enable = cfg.info.enable;

      man = {
        enable = cfg.man.enable;
        generateCaches = true;
      };

      nixos.enable = cfg.nixos.enable;
    };

    environment.systemPackages = with pkgs; lib.optionals cfg.man.linux [
      man-pages
      man-pages-posix
    ];
  };
}