about summary refs log blame commit diff stats
path: root/modules/home.legacy/conf/firefox/default.nix
blob: 663c497816d3dcb2023c8f7f7ea2bfead2724666 (plain) (tree)
1
2
3
4
5
6
7
8
9


         
          
      
              
                                                                              
 
                                                                





                                                             
 
                                                                                                           
 


                                                                     
                                    
                 



















                                    
 
                    
 

                                                                        
 







                                                       
                 
                                

                       
                               

      
                                                       
            
               

                
       
                                                                 
    
       
    
















                                                         
      
    





                                                           
 
                               



                               
      





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