{...}: {
  programs.firefox = {
    enable = true;
    profiles.joy = {
      userChrome = ''

        /*================== Gruvbox Theme for Firefox ==================
        Author: kmason
        Based on the color scheme of calvinchd's Gruvbox Dark Firefox Theme - https://gitlab.com/calvinchd/gruvbox-dark-firefox-theme
        */
        @namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

        :root {
        --background: #1d2021;
        --secondary: #282828;
        --foreground: #EBDBB2;

        --orange-highlight: #fe8019;
        --sound-border: #68217A;

        --separator: #665e54;

        --toolbar-bgcolor: var(--secondary) !important;

        --tab: var(--background);
        --tab-btn: var(--tab-inactive);
        --tab-inactive: var(--secondary);
        --tab-btn-inactive: var(--tab-inactive);
        --tab-hover: #32302f;
        --tab-btn-hover: #3C3836;
        --toolbar-btn-hover: #49463f;

        --url-bar: #3C3836;
        --url-focus: #504945;
        --url-bar-item-hover: #6a6257;

        --sidebar: #3C3836;
        --sidebar-button-hover: #5A544B;
        --sidebar-highlight: #458588;
        }

        /*
        SEARCH AND POPUPS/MENUS
        */

        .panel-arrowcontainer {
          background-color: var(--secondary) !important;
        }

        #PopupAutoComplete,
        #PopupSearchAutoComplete
        {
          background-color: var(--url-focus) !important;
          color: var(--foreground) !important;
        }

        panelview {
          background-color: var(--sidebar) !important;
          color: var(--foreground) !important;
        }

        panelview toolbarbutton.subviewbutton:hover {
          background-color: var(--sidebar-button-hover) !important;
        }

        panel[type="autocomplete-richlistbox"] {
          --panel-background: none !important;
          border-radius: 4px !important;
          color: var(--foreground) !important;
        }

        /*
         _____ ___   ___  _    ___   _   ___
        |_   _/ _ \ / _ \| |  | _ ) / \ | _ \
          | || (_) | (_) | |__| _ \/ = \|   /
          |_| \___/ \___/|____|___/_/ \_\_|\_\

        */

        toolbarseparator,
        menuseparator
        {
          border-color: var(--separator) !important;
          border-image: none !important;
        }

        toolbar {
          background-color: var(--secondary);
        }

        toolbar#TabsToolbar {
          background-color: var(--background);
        }
        toolbar#TabsToolbar:-moz-window-inactive {
          background-color: var(--toolbar-bgcolor) !important;
        }

        #titlebar,
        #titlebar-spacer,
        #titlebar-buttonbox-container
        {
          background-color: var(--background) !important;
          border: none !important;
        }

        #navigator-toolbox {
          --tabs-border-color: var(--orange-highlight) !important;
        }

        /* Remove border under navbar */
        #navigator-toolbox::after {
          border-bottom: 0px !important;
        }

        /* remove some borders */
        #navigator-toolbox {
          border: none !important;
        }

        /*
         _   _ ___  _    ___   _   ___
        | | | | _ \| |  | _ ) / \ | _ \
        | |_| |   /| |__| _ \/ = \|   /
         \___/|_|\_\____|___/_/ \_\_|\_\

        */

        #urlbar,
        #searchbar
        {
        	box-shadow: none !important;
        	border: none !important;
          border-radius: 4px;
        	color : var(--foreground) !important;
          background-color: var(--url-bar) !important;
          --autocomplete-popup-separator-color: var(--separator) !important;
        }

        #urlbar-input,
        #urlbar-input-container
        {
          color: var(--foreground) !important;
          background-color: var(--url-bar) !important;
        }

        #urlbar:not([open]) #urlbar-input-container:focus-within,
        #searchbar:focus-within
        {
        	border: 2px solid var(--orange-highlight) !important;
        }

        #urlbar:focus-within,
        #urlbar[open],
        #urlbar[open] #urlbar-input-container,
        #urlbar[open] #urlbar-input,
        #urlbar-input-container:focus-within,
        #urlbar-input:focus,
        #urlbar-background,
        .urlbarView,
        #searchbar:focus-within,
        menupop
        {
          background-color: var(--url-focus) !important;
        }
        #searchbar:focus-within {
          outline: none !important;
        }

        :is(panel, menupopup)::part(content) {
          background: none !important;
        }

        .urlbarView button:hover,
        #searchbar button:hover,
        .urlbarView-row:hover .urlbarView-row-inner,
        .search-autocomplete-richlistbox-popup .autocomplete-richlistitem:hover
        {
        	background-color: var(--url-bar-item-hover) !important;
        }

        .urlbarView-row[type="switchtab"] > span{
          color: var(--orange-highlight) !important;
        }

        #PopupSearchAutoComplete .autocomplete-richlistitem[selected],
        .searchbar-engine-one-off-item[selected],
        .urlbarView-row[selected],
        .urlbarView-row[aria-selected="true"],
        .urlbarView-row:not([type="tip"], [type="dynamic"])[selected] > .urlbarView-row-inner,
        .urlbarView-row-inner[selected]
        {
          color: var(--foreground) !important;
        	background-color: var(--sidebar-highlight) !important;
          border-radius: 4px !important;
        }

        /*
        BOOKMARKS BAR
        */

        #PersonalToolbar {
          background-color: var(--secondary) !important;
        }

        /*
          _____ _   ___ ___
         |_   _/ \ | _ ) __|
           | |/ = \| _ \__ \
           |_/_/ \_\___/___/

        */
        .tab-background[selected="true"] {
          background-color: transparent !important;
          background-image: none !important;
        }
        .tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected="true"]):not([multiselected]){
          background-color: transparent !important;
        }

        .tabbrowser-tab[soundplaying="true"] {
          --lwt-tab-line-color: var(--sound-border) !important;
        }
        .tab-content[selected="true"] {
          border-color: var(--orange-highlight) !important;
          --sound-border: var(--orange-highlight) !important;
        }
        .tab-text {
          color: var(--foreground);
        }

        tab,
        #tabbrowser-tabs
        {
          background-color: var(--background) !important;
          color : var(--foreground) !important;
        }
        tab:-moz-window-inactive,
        #tabbrowser-tabs:-moz-window-inactive,
        #nav-bar-customization-target
        {
          background-color: var(--secondary) !important;
        }

        .tabbrowser-tab[selected]{
          opacity: 1;
        }

        .tab-loading-burst {
          background-color: inherit;
        }

        .tab-content
        {
          border-radius: 4px;
          margin: 5px 0px 5px 0px !important;
          border: 1px solid transparent !important;
        }
        .tab-content[selected="true"]
        {
          background-color: var(--secondary) !important;
          color : var(--foreground) !important;
          border: 1px solid var(--orange-highlight) !important;
        }
        .tab-content:not([selected="true"]):hover {
          background-color: var(--tab-hover) !important;
        }

        /*
           ___ _____ ___  _  ___
          | _ )_   _|   \| |/ __|
          | _ \ | | | |\ | |\__ \
          |___/ |_| |_| \__|/___/

        */

        /*
        Toolbar buttons
        */

        toolbarbutton {
          fill: var(--foreground) !important;
          background-color: transparent !important;
        }

        /*
        TAB BAR BUTTONS
        */

        #TabsToolbar toolbarbutton {
          border-radius: 4px;
          border: 1px solid transparent !important;
        }
        #TabsToolbar toolbarbutton:-moz-window-inactive {
          opacity: 0.7 !important;
        }

        #alltabs-button > .toolbarbutton-badge-stack,
        #tabs-newtab-button > .toolbarbutton-icon {
          background-image: none;
          border-radius: 6px;
        }
        #alltabs-button:hover > .toolbarbutton-badge-stack,
        #tabs-newtab-button:hover > .toolbarbutton-icon {
          background-color: var(--tab-btn-hover) !important;
        }

        /* Firefox View button */
        #TabsToolbar #firefox-view-button > .toolbarbutton-icon
        {
          background-image: none !important;
          border-radius: 4px;
        }
        #TabsToolbar #firefox-view-button[open] > .toolbarbutton-icon
        {
          background-color: var(--secondary) !important;
          color : var(--foreground) !important;
          padding: 9px !important;
          border: 1px solid var(--orange-highlight) !important;
        }
        #TabsToolbar #firefox-view-button:not([open]):hover > .toolbarbutton-icon {
          background-color: var(--tab-hover) !important;
        }

        /*
        MIDDLE BAR (url bar) BUTTONS
        */

        #nav-bar toolbarbutton > .toolbarbutton-icon,
        #nav-bar toolbarbutton > .toolbarbutton-badge-stack {
          border-radius: 6px;
        }
        #nav-bar toolbarbutton:hover > .toolbarbutton-icon,
        #nav-bar toolbarbutton:hover > .toolbarbutton-badge-stack {
          background-color: var(--toolbar-btn-hover) !important;
        }

        #back-button {
          padding-right: 2px !important;
          padding-left: 2px !important;
          margin-left: 6px !important;
        }

        /* Hamburger Menu */
        #PanelUI-menu-button {
          background-color: var(--secondary) !important;
          padding-right: 2px !important;
          margin-right: 6px !important;
        }

        /*
        BOOKMARK BUTTONS
        */
        #PersonalToolbar toolbarbutton {
          margin: 3px 0px 3px 3px !important;
          border-radius: 4px;
        }
        #PersonalToolbar toolbarbutton:hover {
          background-color: var(--toolbar-btn-hover) !important;
        }
      '';

      userContent = ''

        :root {
          --background: #1d2021;
          --secondary: #282828;
          --newtab-body: #32302f;
          --foreground: #EBDBB2;
        }

        @-moz-document url-prefix("about:"), url-prefix("about:newtab"), url-prefix("about:home") {
          html, body {
            color: var(--foreground) !important;
            background-color: var(--newtab-body) !important;
          }
        }
      '';
    };
  };
}