{ pkgs, ... }: {

  # home.file.".mozilla/firefox/nix-user-profile/chrome/firefox-gnome-theme".source = inputs.firefox-gnome-theme;

  programs.firefox = {
    enable = true;

    profiles.default = {
      isDefault = true;
      name = "default";
      extraConfig =  builtins.readFile ./firefox/arkenfox-user.js;
      # userChrome =  ''@import "firefox-gnome-theme/userChrome.css";'';
      # userContent = ''@import "firefox-gnome-theme/userContent.css";'';

      # https://discourse.nixos.org/t/anyone-using-firefox-gnome-theme-successfully-with-nixos-home-manager/19248/3
      settings = {
        ## Firefox gnome theme ## - https://github.com/rafaelmardojai/firefox-gnome-theme/blob/7cba78f5216403c4d2babb278ff9cc58bcb3ea66/configuration/user.js
        # (copied into here because home-manager already writes to user.js)
        "toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Enable customChrome.cs
        "browser.uidensity" = 0; # Set UI density to normal
        "svg.context-properties.content.enabled" = true; # Enable SVG context-propertes
        "browser.theme.dark-private-windows" = false; # Disable private window dark theme
      };

      # https://nur.nix-community.org/repos/rycee/
      extensions =  with pkgs.nur.repos.rycee.firefox-addons; [
        darkreader
        ublock-origin
        privacy-redirect
        link-cleaner
        adnauseam
        sponsorblock
        multi-account-containers
        kagi-search
        consent-o-matic
        bitwarden
        copy-selection-as-markdown
      ];

      containersForce = true;
      containers = {
        "Personal" = {
          color = "orange";
          icon = "circle";
          id = 1;
        };
        "Google"  = {
          color = "blue";
          icon = "fingerprint";
          id = 2;
        };
        "Amazon"  = {
          color = "yellow";
          icon = "cart";
          id = 3;
        };
        "Shopping" = {
          color = "pink";
          icon = "cart";
          id = 4;
        };
        "Banking" = {
          color = "red";
          icon = "dollar";
          id = 5;
        };
        "Other" = {
          color = "green";
          icon = "fingerprint";
          id = 6;
        };
      };

      search = { 
        default = "Kagi";
        privateDefault = "Kagi";
        force = true;
        order = [ "Kagi" ];
        engines = {
          "Kagi" = {
            urls = [{
              template = "https://kagi.com/search";
              params = [
                { name = "q"; value = "{searchTerms}"; }
              ];
            }];
            definedAliases = [ "@k" ];
          };
          "Nix Packages" = {
            urls = [{
              template = "https://search.nixos.org/packages";
              params = [
                { name = "type"; value = "packages"; }
                { name = "query"; value = "{searchTerms}"; }
              ];
            }];
            icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
            definedAliases = [ "@np" ];
          };

          "NixOS Options" = {
            urls = [{
              template = "https://search.nixos.org/options";
              params = [
                { name = "type"; value = "options"; }
                { name = "query"; value = "{searchTerms}"; }
              ];
            }];
            icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
            definedAliases = [ "@no" ];
          };

          "NixOS Wiki" = {
            urls = [{ template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; }];
            iconUpdateURL = "https://wiki.nixos.org/favicon.png";
            updateInterval = 24 * 60 * 60 * 1000; # every day
            definedAliases = [ "@nw" ];
          };

          "Home Manager Options" = {
            urls = [{ template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master"; }];
            icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
            definedAliases = [ "@hm" ];
          };
        };
      };
    };
  };
}