{ pkgs, config, lib, ... }: with lib; let cfg = config.eboskma.programs.firefox; profileSettings = { "devtools.theme" = "dark"; "widget.content.allow-gtk-dark-theme" = true; "ui.key.menuAccessKeyFocuses" = false; "image.avif.enabled" = true; "image.webp.enabled" = true; "privacy.webrtc.allowSilencingNotifications" = true; "privacy.webrtc.legacyGlobalIndicator" = false; "browser.shell.checkDefaultBrowser" = false; "security.tls.enable_0rtt_data" = false; "media.ffmpeg.vaapi.enabled" = true; "media.rdd-ffmpeg.enabled" = true; }; nonDefaultDesktop = pkgs.makeDesktopItem { name = "firefox-" + (if cfg.work then "private" else "horus"); desktopName = "Firefox (" + (if cfg.work then "Private" else "Horus") + ")"; exec = "firefox -P " + (if cfg.work then "private" else "horus") + " %u"; icon = "firefox"; categories = ["GNOME" "GTK" "Network" "WebBrowser"]; mimeTypes = [ "text/html" "text/xml" "application/xhtml+xml" "application/xml" "application/rss+xml" "application/rdf+xml" "image/gif" "image/jpeg" "image/png" "x-scheme-handler/http" "x-scheme-handler/https" "x-scheme-handler/ftp" "x-scheme-handler/chrome" "video/webm" "application/x-xpinstall" ]; startupNotify = true; extraConfig = { "X-MultipleArgs" = "false"; }; }; in { options.eboskma.programs.firefox = { enable = mkEnableOption "enable firefox"; work = mkOption { description = "whether this is a work config"; type = types.bool; default = false; }; }; config = mkIf (cfg.enable) { programs.firefox = { enable = true; package = pkgs.firefox-bin; profiles = { private = { id = 0; isDefault = !cfg.work; settings = profileSettings; }; horus = { id = 1; isDefault = cfg.work; settings = profileSettings; }; }; }; home.packages = [nonDefaultDesktop]; }; }