diff options
| author | aristote <quentin.aristote@irif.fr> | 2025-07-29 15:25:11 +0200 |
|---|---|---|
| committer | aristote <quentin.aristote@irif.fr> | 2025-07-29 15:25:11 +0200 |
| commit | fc019d789523ce5f89436b8dbc458cf3b79abf43 (patch) | |
| tree | ec56fd1b1ed9fc75096c0b09db48a152975e4d53 /modules/home-manager/personal/programs/firefox/default.nix | |
| parent | a3d19bc509d9f39fb41256cd55d2bd7706de202f (diff) | |
reformat everything with nixfmt
Diffstat (limited to 'modules/home-manager/personal/programs/firefox/default.nix')
| -rw-r--r-- | modules/home-manager/personal/programs/firefox/default.nix | 305 |
1 files changed, 174 insertions, 131 deletions
diff --git a/modules/home-manager/personal/programs/firefox/default.nix b/modules/home-manager/personal/programs/firefox/default.nix index d103c3d..3f1963d 100644 --- a/modules/home-manager/personal/programs/firefox/default.nix +++ b/modules/home-manager/personal/programs/firefox/default.nix @@ -4,178 +4,221 @@ pkgs, ... }: -with lib; let +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;}; + engines = import ./engines.nix { inherit lib pkgs; }; webappsWithIds = - (builtins.foldl' ({ - counter, - value, - }: {name, ...} @ next: { - counter = counter + 1; - value = - value - ++ [ - (next + (builtins.foldl' + ( + { + counter, + value, + }: + { name, ... }@next: + { + counter = counter + 1; + value = value ++ [ + ( + next // { id = counter; profileName = lib.toLower name; - }) + } + ) ]; - }) { + } + ) + { counter = 0; - value = []; + value = [ ]; } - cfg.webapps) - .value; -in { + cfg.webapps + ).value; +in +{ options.personal.firefox = { webapps = lib.mkOption { - type = with lib.types; + 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; - }; + 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 = []; + default = [ ]; }; }; config = lib.mkMerge [ { programs.firefox.profiles = - builtins.foldl' (prev: { - id, - profileName, - extraUserJS, - ... - }: - prev - // { - "${profileName}" = { - id = id + 2; + 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"; + }; + 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 = true; - engines = with engines; disableDefault // {inherit Searx;}; + 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"; - privateDefault = "Searx"; + order = [ + "Searx" + "Wikipedia" + ]; }; - extraConfig = userjs.streaming + extraUserJS; + extraConfig = userjs.default; + userChrome = ./userchrome/treestyletabs-outer.css; }; - }) { - 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; - }; - - 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"; + 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; }; - extraConfig = userjs.videoconferencing; - userChrome = ./userchrome/treestyletabs-outer.css; - }; - } - webappsWithIds; + } + 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}"; + 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" + ]; }; - }) { - videoconferences = { - name = "Video Conferences"; - genericName = "Video conference"; - comment = "Use video conferencing software in a browser."; - exec = "${firefoxInProfile "videoconferencing"}"; - categories = ["Network" "VideoConference"]; - }; - } - webappsWithIds; + } + webappsWithIds; home.shellAliases.fftmp = "firefox --profile $(mktemp -d)"; home.sessionVariables.BROWSER = "firefox"; |
