{ lib, ... }:
{
  name = "Firefox and its derivatives";
  homepage = {
    Firefox = "http://www.mozilla.com/en-US/firefox";
    Floorp = "https://floorp.app";
    LibreWolf = "https://librewolf.net";
  };
  maintainers = with lib.maintainers; [
    Flameopathic
    danth
    naho
  ];
  description = ''
    This module supports [Firefox](https://www.mozilla.org/firefox), in addition
    to [Floorp](https://floorp.app) and [LibreWolf](https://librewolf.net),
    which are Firefox derivatives.

    The same implementation is shared between all of these browsers, but they don't
    share option values.

    > [!IMPORTANT]
    >
    > For any theming to be applied, you need to tell this module which
    > [profiles](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data)
    > you're using:
    >
    > ```nix
    > {
    >   programs.firefox = {
    >     enable = true;
    >
    >     profiles = {
    >       my-profile = {
    >         # bookmarks, extensions, search engines...
    >       };
    >       my-friends-profile = {
    >         # bookmarks, extensions, search engines...
    >       };
    >     };
    >   };
    >
    >   stylix.targets.firefox.profileNames = [ "my-profile" "my-friends-profile" ];
    > }
    > ```
    >
    > This is necessary due to a limitation of the module system: we can either
    > detect the list of profiles, or change their configuration, but we can't do
    > both without infinite recursion.
  '';
}
