{ config, lib, pkgs, ... }:
let
  cfg = config.my.home.firefox;
in
{
  imports = [
    ./tridactyl
  ];

  options.my.home.firefox = with lib; {
    enable = mkEnableOption "firefox configuration";

    tridactyl = {
      enable = mkOption {
        type = types.bool;
        description = "tridactyl configuration";
        example = false;
        default = config.my.home.firefox.enable;
      };
    };

    ff2mpv = {
      enable = mkOption {
        type = types.bool;
        description = "ff2mpv configuration";
        example = false;
        default = config.my.home.mpv.enable;
      };
    };
  };

  config.programs.firefox = lib.mkIf cfg.enable {
    enable = true;

    package = pkgs.firefox.override {
      cfg = {
        enableTridactylNative = cfg.tridactyl.enable;
      };

      extraNativeMessagingHosts = with pkgs; ([ ]
        # Watch videos using mpv
        ++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go
      );
    };

    profiles = {
      default = {
        id = 0;

        settings = {
          "browser.bookmarks.showMobileBookmarks" = true; # Mobile bookmarks
          "browser.download.useDownloadDir" = false; # Ask for download location
          "browser.in-content.dark-mode" = true; # Dark mode
          "browser.newtabpage.activity-stream.feeds.section.topstories" = false; # Disable top stories
          "browser.newtabpage.activity-stream.feeds.sections" = false;
          "browser.newtabpage.activity-stream.feeds.system.topstories" = false; # Disable top stories
          "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket
          "extensions.pocket.enabled" = false; # Disable pocket
          "media.eme.enabled" = true; # Enable DRM
          "media.gmp-widevinecdm.visible" = true; # Enable DRM
          "media.gmp-widevinecdm.enabled" = true; # Enable DRM
          "signon.autofillForms" = false; # Disable built-in form-filling
          "signon.rememberSignons" = false; # Disable built-in password manager
          "ui.systemUsesDarkTheme" = true; # Dark mode
        };
      };
    };

    extensions = with pkgs.nur.repos.rycee.firefox-addons; ([
      bitwarden
      form-history-control
      https-everywhere
      i-dont-care-about-cookies
      reddit-comment-collapser
      reddit-enhancement-suite
      refined-github
      sponsorblock
      ublock-origin
    ]
    ++ lib.optional (cfg.tridactyl.enable) tridactyl
    ++ lib.optional (cfg.ff2mpv.enable) ff2mpv
    );
  };
}