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

105 lines
2.2 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;
"security.tls.enable_0rtt_data" = false;
"media.ffmpeg.vaapi.enabled" = true;
"media.rdd-ffmpeg.enabled" = true;
"gfx.webrender.all" = 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 ];
};
}