From 6b5afdbb3e9e06de68d7c44dfe78a1359d422a45 Mon Sep 17 00:00:00 2001 From: Flameopathic <64027365+Flameopathic@users.noreply.github.com> Date: Mon, 10 Mar 2025 15:36:30 -0400 Subject: [PATCH] {firefox,floorp,librewolf}: add profile warning (#963) Add warning for Firefox derivations without declared profiles, aligning with commit 485387926437 ("vscode: support arbitrary profiles (#914)"). Link: https://github.com/danth/stylix/pull/963 Reviewed-by: NAHO <90870942+trueNAHO@users.noreply.github.com> --- modules/firefox/hm.nix | 171 ++++++++++++++++++++++------------------- 1 file changed, 91 insertions(+), 80 deletions(-) diff --git a/modules/firefox/hm.nix b/modules/firefox/hm.nix index 8aacda6c..e15c802e 100644 --- a/modules/firefox/hm.nix +++ b/modules/firefox/hm.nix @@ -75,89 +75,100 @@ in # This and the below assignment aren't merged because of # https://discourse.nixos.org/t/infinite-recursion-in-module-with-mkmerge/10989 - config.programs = eachTarget ( - { target, cfg, ... }: - eachConfig (profileName: { - ${target.path}.profiles.${profileName} = lib.mkMerge [ - { - settings = { - "font.name.monospace.x-western" = config.stylix.fonts.monospace.name; - "font.name.sans-serif.x-western" = config.stylix.fonts.sansSerif.name; - "font.name.serif.x-western" = config.stylix.fonts.serif.name; - }; - } - (lib.mkIf cfg.firefoxGnomeTheme.enable { - settings = { - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - "svg.context-properties.content.enabled" = true; - }; + config = { + programs = eachTarget ( + { target, cfg, ... }: + eachConfig (profileName: { + ${target.path}.profiles.${profileName} = lib.mkMerge [ + { + settings = { + "font.name.monospace.x-western" = config.stylix.fonts.monospace.name; + "font.name.sans-serif.x-western" = config.stylix.fonts.sansSerif.name; + "font.name.serif.x-western" = config.stylix.fonts.serif.name; + }; + } + (lib.mkIf cfg.firefoxGnomeTheme.enable { + settings = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "svg.context-properties.content.enabled" = true; + }; - userChrome = - let - template = config.lib.stylix.colors { - template = ./userChrome.css.mustache; - extension = "css"; - }; - in - '' - @import "${firefox-gnome-theme}/userChrome.css"; - @import "${template}"; + userChrome = + let + template = config.lib.stylix.colors { + template = ./userChrome.css.mustache; + extension = "css"; + }; + in + '' + @import "${firefox-gnome-theme}/userChrome.css"; + @import "${template}"; + ''; + + userContent = '' + @import "${firefox-gnome-theme}/userContent.css"; ''; - - userContent = '' - @import "${firefox-gnome-theme}/userContent.css"; - ''; - }) - (lib.mkIf cfg.colorTheme.enable { - extensions = { - packages = [ nur.repos.rycee.firefox-addons.firefox-color ]; - settings."FirefoxColor@mozilla.com".settings = { - firstRunDone = true; - theme = { - title = "Stylix ${config.lib.stylix.colors.description}"; - images.additional_backgrounds = [ "./bg-000.svg" ]; - colors = { - toolbar = mkColor "base00"; - toolbar_text = mkColor "base05"; - frame = mkColor "base01"; - tab_background_text = mkColor "base05"; - toolbar_field = mkColor "base02"; - toolbar_field_text = mkColor "base05"; - tab_line = mkColor "base0D"; - popup = mkColor "base00"; - popup_text = mkColor "base05"; - button_background_active = mkColor "base04"; - frame_inactive = mkColor "base00"; - icons_attention = mkColor "base0D"; - icons = mkColor "base05"; - ntp_background = mkColor "base00"; - ntp_text = mkColor "base05"; - popup_border = mkColor "base0D"; - popup_highlight_text = mkColor "base05"; - popup_highlight = mkColor "base04"; - sidebar_border = mkColor "base0D"; - sidebar_highlight_text = mkColor "base05"; - sidebar_highlight = mkColor "base0D"; - sidebar_text = mkColor "base05"; - sidebar = mkColor "base00"; - tab_background_separator = mkColor "base0D"; - tab_loading = mkColor "base05"; - tab_selected = mkColor "base00"; - tab_text = mkColor "base05"; - toolbar_bottom_separator = mkColor "base00"; - toolbar_field_border_focus = mkColor "base0D"; - toolbar_field_border = mkColor "base00"; - toolbar_field_focus = mkColor "base00"; - toolbar_field_highlight_text = mkColor "base00"; - toolbar_field_highlight = mkColor "base0D"; - toolbar_field_separator = mkColor "base0D"; - toolbar_vertical_separator = mkColor "base0D"; + }) + (lib.mkIf cfg.colorTheme.enable { + extensions = { + packages = [ nur.repos.rycee.firefox-addons.firefox-color ]; + settings."FirefoxColor@mozilla.com".settings = { + firstRunDone = true; + theme = { + title = "Stylix ${config.lib.stylix.colors.description}"; + images.additional_backgrounds = [ "./bg-000.svg" ]; + colors = { + toolbar = mkColor "base00"; + toolbar_text = mkColor "base05"; + frame = mkColor "base01"; + tab_background_text = mkColor "base05"; + toolbar_field = mkColor "base02"; + toolbar_field_text = mkColor "base05"; + tab_line = mkColor "base0D"; + popup = mkColor "base00"; + popup_text = mkColor "base05"; + button_background_active = mkColor "base04"; + frame_inactive = mkColor "base00"; + icons_attention = mkColor "base0D"; + icons = mkColor "base05"; + ntp_background = mkColor "base00"; + ntp_text = mkColor "base05"; + popup_border = mkColor "base0D"; + popup_highlight_text = mkColor "base05"; + popup_highlight = mkColor "base04"; + sidebar_border = mkColor "base0D"; + sidebar_highlight_text = mkColor "base05"; + sidebar_highlight = mkColor "base0D"; + sidebar_text = mkColor "base05"; + sidebar = mkColor "base00"; + tab_background_separator = mkColor "base0D"; + tab_loading = mkColor "base05"; + tab_selected = mkColor "base00"; + tab_text = mkColor "base05"; + toolbar_bottom_separator = mkColor "base00"; + toolbar_field_border_focus = mkColor "base0D"; + toolbar_field_border = mkColor "base00"; + toolbar_field_focus = mkColor "base00"; + toolbar_field_highlight_text = mkColor "base00"; + toolbar_field_highlight = mkColor "base0D"; + toolbar_field_separator = mkColor "base0D"; + toolbar_vertical_separator = mkColor "base0D"; + }; }; }; }; - }; - }) - ]; - }) cfg.profileNames - ); + }) + ]; + }) cfg.profileNames + ); + warnings = eachTarget ( + { target, ... }: + lib.optional + ( + config.programs.${target.path}.enable + && config.stylix.targets.${target.path}.profileNames == [ ] + ) + ''stylix: ${target.path}: `config.stylix.targets.${target.path}.profileNames` is not set. Declare profile names with 'config.stylix.targets.${target.path}.profileNames = [ "" ];'.'' + ); + }; }