nixos-config/home-manager/modules/firefox/default.nix

63 lines
1.8 KiB
Nix

{ 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;
};
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 ];
};
}