{ config, pkgs, lib, user_js, ... }: let extensions = builtins.fromJSON (builtins.readFile ./config/extensions/extensions.json); userChrome = builtins.readFile ./config/chrome/userChrome.css; bookmarks = (import ./config/bookmarks/default.nix) { inherit pkgs lib ; }; engines = (import ./config/search/engines) {inherit pkgs;}; native_messaging_hosts = (import ./config/extensions/native_messaging_hosts/default.nix) {inherit pkgs;}; policies = (import ./config/policies) {inherit config extensions;}; search = { default = "Brave Search"; privateDefault = "Brave Search"; force = true; order = [ # DEFAULT "Brave Search" # NIX "Nix Packages" "Nix Options" "Nixpkgs issues" "Homemanager Options" "NixOS Wiki" "Nixpkgs Pull Request Tracker" # RUST "Rust std" "Rust tokio" # OTHER "Google Scholar" "Wikipedia" "Arch Wiki" ]; inherit engines; }; prefConfig = builtins.readFile "${ (import ./config/prefs) {inherit pkgs lib config bookmarks user_js;} }/user.js"; # Package {{{ package = import ./package.nix { inherit config lib pkgs; extraPolicies = policies; extraNativeMessagingHosts = native_messaging_hosts; }; # }}} # Profiles {{{ profiles = { "default" = { inherit search userChrome; isDefault = true; id = 0; name = "default"; extraConfig = prefConfig; }; }; taskwarriorProfiles = import ../taskwarrior/firefox { inherit config lib # options prefConfig search userChrome ; profile_size = builtins.length (builtins.attrNames profiles); }; # }}} in { options.soispha.firefox = { package = lib.mkOption { type = lib.types.package; default = pkgs.firefox; description = "Firefox package to use."; defaultText = lib.literalExpression "pkgs.firefox"; relatedPackages = [ "firefox" "firefox-beta-bin" "firefox-bin" "firefox-devedition-bin" "firefox-esr" ]; }; package_version = lib.mkOption { type = lib.types.str; default = pkgs.firefox.version; description = "Firefox version to use"; }; }; config = { soispha.firefox.package = package; soispha.firefox.package_version = pkgs.firefox.version; home.sessionVariables = { # improve touch input & make scrolling smother MOZ_USE_XINPUT2 = "1"; # improve wayland support MOZ_ENABLE_WAYLAND = 1; # tell gtk to use portals GTK_USE_PORTAL = 1; BROWSER = "firefox"; }; programs.firefox = { enable = true; inherit (config.soispha.firefox) package; profiles = profiles // taskwarriorProfiles; }; }; }