{ lib, ... }:
rec {
  prefix = "https://git.clan.lol/clan/clan-core/src/branch/main/";
  # Strip store paths from option declarations to make docs more stable
  # This prevents documentation from rebuilding when store paths change
  # but the actual content remains the same
  stripStorePathsFromDeclarations =
    opt:
    opt
    // {
      declarations = map (
        decl:
        if lib.isString decl && lib.hasPrefix "/nix/store/" decl then
          let
            parts = lib.splitString "/" decl;
          in
          if builtins.length parts > 4 then
            (prefix + "/" + lib.concatStringsSep "/" (lib.drop 4 parts))
          else
            decl
        else
          decl
      ) opt.declarations;
    };
}
