diff options
Diffstat (limited to 'modules/home-manager/personal/programs/firefox')
3 files changed, 64 insertions, 226 deletions
diff --git a/modules/home-manager/personal/programs/firefox/default.nix b/modules/home-manager/personal/programs/firefox/default.nix index 885b22a..46aaca1 100644 --- a/modules/home-manager/personal/programs/firefox/default.nix +++ b/modules/home-manager/personal/programs/firefox/default.nix @@ -6,224 +6,85 @@ }: with lib; let - cfg = config.personal.firefox; userjs = pkgs.callPackage ./userjs.nix { inherit (pkgs.personal.static.userjs) arkenfox; inherit (pkgs.lib.personal) toUserJS; }; engines = import ./engines.nix { inherit lib pkgs; }; - webappsWithIds = - (builtins.foldl' - ( - { - counter, - value, - }: - { name, ... }@next: - { - counter = counter + 1; - value = value ++ [ - ( - next - // { - id = counter; - profileName = lib.toLower name; - } - ) - ]; - } - ) - { - counter = 0; - value = [ ]; - } - cfg.webapps - ).value; in { - options.personal.firefox = { - webapps = lib.mkOption { - type = - with lib.types; - listOf (submodule { - options = - let - mkTypedOption = type: lib.mkOption { inherit type; }; - in - { - name = mkTypedOption str; - genericName = mkTypedOption str // { - default = ""; - }; - url = mkTypedOption str; - comment = mkTypedOption str // { - default = ""; - }; - extraUserJS = mkTypedOption lines // { - default = ""; - }; - categories = mkTypedOption (listOf str) // { - default = [ ]; - }; - icon = mkTypedOption path; - }; - }); - default = [ ]; - }; - }; - config = lib.mkMerge [ { - stylix.targets.firefox.profileNames = [ - "default" - "videoconferencing" - ]; - programs.firefox.profiles = - builtins.foldl' - ( - prev: - { - id, - profileName, - extraUserJS, - ... - }: - prev - // { - "${profileName}" = { - id = id + 2; - extensions.packages = with pkgs.personal.firefoxAddons; [ - clearurls - neat-url - redirector - smart-referer - ublock-origin - unpaywall - url-in-title - ]; - search = { - force = true; - engines = with engines; disableDefault // { inherit Searx; }; - default = "Searx"; - privateDefault = "Searx"; + stylix.targets.firefox = { + colorTheme.enable = true; + profileNames = [ + "default" + ]; + }; + programs.firefox = { + configPath = "${config.xdg.configHome}/mozilla/firefox"; + profiles.default = { + id = 0; # isDefault = true + extensions = { + packages = with pkgs.personal.firefoxAddons; [ + canvasblocker + clearurls + darkreader + neat-url + redirector + smart-referer + temporary-containers + ublock-origin + unpaywall + url-in-title + ]; + settings."FirefoxColor@mozilla.com" = { + force = true; + settings.theme.colors = + let + mkBgColor = lib.mkForce ( + with config.lib.stylix.colors; + { + r = base00-rgb-r; + g = base00-rgb-g; + b = base00-rgb-b; + } + ); + in + { + frame = mkBgColor; + sidebar_border = mkBgColor; + popup_border = mkBgColor; + tab_baground_separator = mkBgColor; + tab_line = mkBgColor; + toolbar_field_border_focus = mkBgColor; }; - extraConfig = userjs.streaming + extraUserJS; - }; - } - ) - { - default = { - id = 0; # isDefault = true - - extensions.packages = with pkgs.personal.firefoxAddons; [ - canvasblocker - clearurls - darkreader - neat-url - redirector - smart-referer - temporary-containers - tree-style-tab - ublock-origin - unpaywall - url-in-title - ]; - search = { - force = lib.mkDefault true; - engines = - with engines; - disableDefault - // { - inherit Searx; - } - // lib.optionalAttrs config.personal.identities.personal personal - // lib.optionalAttrs config.personal.identities.work work - // lib.optionalAttrs config.personal.profiles.dev dev; - default = "Searx"; - order = [ - "Searx" - "Wikipedia" - ]; - }; - extraConfig = userjs.default; - userChrome = ./userchrome/treestyletabs-outer.css; }; + }; + search = { + force = lib.mkDefault true; + engines = + with engines; + disableDefault + // { + inherit Searx; + } + // lib.optionalAttrs config.personal.identities.personal personal + // lib.optionalAttrs config.personal.identities.work work + // lib.optionalAttrs config.personal.profiles.dev dev; + default = "Searx"; + order = [ + "Searx" + "Wikipedia" + ]; + }; + extraConfig = userjs.default; + }; - videoconferencing = { - id = 1; - extensions.packages = with pkgs.personal.firefoxAddons; [ - clearurls - darkreader - neat-url - redirector - smart-referer - multi-account-containers - tree-style-tab - ublock-origin - unpaywall - url-in-title - ]; - search = { - force = true; - engines = with engines; disableDefault // { inherit Searx; }; - default = "Searx"; - }; - extraConfig = userjs.videoconferencing; - userChrome = ./userchrome/treestyletabs-outer.css; - }; - } - webappsWithIds; + }; } (lib.mkIf config.programs.firefox.enable { - xdg.desktopEntries = - let - firefoxProfilesDir = "${config.home.homeDirectory}/.mozilla/firefox"; - firefoxInProfile = - profile: - ''${config.programs.firefox.package}/bin/firefox --profile "${firefoxProfilesDir}/${profile}"''; - in - builtins.foldl' - ( - prev: - { - name, - profileName, - url, - genericName, - icon, - comment, - categories, - ... - }: - prev - // { - "${profileName}" = { - inherit - name - genericName - icon - comment - categories - ; - exec = "${firefoxInProfile profileName} ${url}"; - }; - } - ) - { - videoconferences = { - name = "Video Conferences"; - genericName = "Video conference"; - comment = "Use video conferencing software in a browser."; - exec = "${firefoxInProfile "videoconferencing"}"; - categories = [ - "Network" - "VideoConference" - ]; - }; - } - webappsWithIds; - home.shellAliases.fftmp = "firefox --profile $(mktemp -d)"; home.sessionVariables.BROWSER = "firefox"; }) diff --git a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css b/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css deleted file mode 100644 index f6fca37..0000000 --- a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css +++ /dev/null @@ -1,6 +0,0 @@ -/* Not working. Paste this inside TST's extra CSS rules. */ -@-moz-document regexp("moz-extension://.+/sidebar/sidebar.html.*") { - :root.sidebar #background { - background: #{{base00-hex}}; - } -} diff --git a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css b/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css deleted file mode 100644 index bee1acf..0000000 --- a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css +++ /dev/null @@ -1,17 +0,0 @@ -@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) { - /* Hide main tabs toolbar */ - #TabsToolbar { - visibility: collapse; - } - - /* Sidebar min and max width removal */ - #sidebar { - max-width: none !important; - min-width: 0px !important; - } - - /* Hide sidebar header, when using Tree Style Tab. */ - #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header { - visibility: collapse; - } -} |
