{ 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"; mimeType = "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"; extraDesktopEntries = { "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 ]; }; }