From fc019d789523ce5f89436b8dbc458cf3b79abf43 Mon Sep 17 00:00:00 2001 From: aristote Date: Tue, 29 Jul 2025 15:25:11 +0200 Subject: reformat everything with nixfmt --- .../personal/programs/firefox/default.nix | 305 ++++++++++++--------- .../personal/programs/firefox/engines.nix | 87 ++++-- .../personal/programs/firefox/userjs.nix | 15 +- 3 files changed, 245 insertions(+), 162 deletions(-) (limited to 'modules/home-manager/personal/programs/firefox') 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"; diff --git a/modules/home-manager/personal/programs/firefox/engines.nix b/modules/home-manager/personal/programs/firefox/engines.nix index cc6a318..ddd5f3b 100644 --- a/modules/home-manager/personal/programs/firefox/engines.nix +++ b/modules/home-manager/personal/programs/firefox/engines.nix @@ -1,44 +1,67 @@ { lib, pkgs, -}: let +}: +let everyday = 24 * 60 * 60 * 1000; searchTerms = "{searchTerms}"; nixosIcon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; self = { - disable = engines: lib.genAttrs engines (_: {metaData.hidden = true;}); - disableDefault = self.disable ["google" "Amazon.fr" "bing"]; + disable = + engines: + lib.genAttrs engines (_: { + metaData.hidden = true; + }); + disableDefault = self.disable [ + "google" + "Amazon.fr" + "bing" + ]; nix = { - inherit (self) "Home Manager Options" "NixOS Options" "NixOS Wiki" "Nix Packages"; + inherit (self) + "Home Manager Options" + "NixOS Options" + "NixOS Wiki" + "Nix Packages" + ; }; - dev = self.nix // {inherit (self) AlternativeTo Phind;}; - personal = {inherit (self) Emojipedia;}; - work = {inherit (self) nLab;}; - all = self.dev // self.personal // self.work // {inherit (self) Searx;}; + dev = self.nix // { + inherit (self) AlternativeTo Phind; + }; + personal = { inherit (self) Emojipedia; }; + work = { inherit (self) nLab; }; + all = self.dev // self.personal // self.work // { inherit (self) Searx; }; Emojipedia = { urls = [ { template = "https://emojipedia.org/search/"; - params = [(lib.nameValuePair "q" searchTerms)]; + params = [ (lib.nameValuePair "q" searchTerms) ]; } ]; icon = "https://emojipedia.org/static/img/favicons/favicon-16x16.png"; updateInterval = everyday; - definedAliases = ["@emojipedia" "@emoji" "@em"]; + definedAliases = [ + "@emojipedia" + "@emoji" + "@em" + ]; }; AlternativeTo = { urls = [ { template = "https://alternativeto.net/browse/search/"; - params = [(lib.nameValuePair "q" searchTerms)]; + params = [ (lib.nameValuePair "q" searchTerms) ]; } ]; icon = "https://alternativeto.net/static/icons/a2/favicon-16x16.png"; updateInterval = everyday; - definedAliases = ["@alternativeto" "@a2"]; + definedAliases = [ + "@alternativeto" + "@a2" + ]; }; "Home Manager Options" = { @@ -48,7 +71,10 @@ } ]; icon = nixosIcon; - definedAliases = ["@homemanager" "@hm"]; + definedAliases = [ + "@homemanager" + "@hm" + ]; }; "NixOS Options" = { @@ -62,18 +88,24 @@ } ]; icon = nixosIcon; - definedAliases = ["@nixos" "@no"]; + definedAliases = [ + "@nixos" + "@no" + ]; }; "NixOS Wiki" = { urls = [ { template = "https://wiki.nixos.org/w/index.php"; - params = [(lib.nameValuePair "search" searchTerms)]; + params = [ (lib.nameValuePair "search" searchTerms) ]; } ]; icon = nixosIcon; - definedAliases = ["@nixoswiki" "@nw"]; + definedAliases = [ + "@nixoswiki" + "@nw" + ]; }; "Nix Packages" = { @@ -87,26 +119,32 @@ } ]; icon = nixosIcon; - definedAliases = ["@nixpkgs" "@np"]; + definedAliases = [ + "@nixpkgs" + "@np" + ]; }; nLab = { urls = [ { template = "https://ncatlab.org/nlab/search"; - params = [(lib.nameValuePair "query" searchTerms)]; + params = [ (lib.nameValuePair "query" searchTerms) ]; } ]; icon = "https://ncatlab.org/favicon.ico"; updateInterval = everyday; - definedAliases = ["@ncatlab" "@nlab"]; + definedAliases = [ + "@ncatlab" + "@nlab" + ]; }; Searx = { urls = [ { template = "https://searx.aristote.fr/search"; - params = [(lib.nameValuePair "q" searchTerms)]; + params = [ (lib.nameValuePair "q" searchTerms) ]; } ]; icon = "https://searx.aristote.fr/static/themes/simple/img/favicon.svg"; @@ -117,13 +155,16 @@ urls = [ { template = "https://phind.com/search"; - params = [(lib.nameValuePair "q" searchTerms)]; + params = [ (lib.nameValuePair "q" searchTerms) ]; } ]; icon = "https://www.phind.com/images/favicon.png"; updateInterval = everyday; - definedAliases = ["@phind" "@ph"]; + definedAliases = [ + "@phind" + "@ph" + ]; }; }; in - self +self diff --git a/modules/home-manager/personal/programs/firefox/userjs.nix b/modules/home-manager/personal/programs/firefox/userjs.nix index 8c17fa6..3f2b6bd 100644 --- a/modules/home-manager/personal/programs/firefox/userjs.nix +++ b/modules/home-manager/personal/programs/firefox/userjs.nix @@ -1,7 +1,8 @@ { arkenfox, toUserJS, -}: let +}: +let self = { arkenfox = builtins.readFile "${arkenfox}"; default = @@ -14,8 +15,8 @@ "dom.allow_cut_copy" = true; # 2404 "dom.battery.enabled" = false; # 2502 "permissions.default.xr" = 2; # 2521 - "browser.search.separatePrivateDefault" = false; #0830 - "browser.search.separatePrivateDefault.ui.enabled" = false; #0830 + "browser.search.separatePrivateDefault" = false; # 0830 + "browser.search.separatePrivateDefault.ui.enabled" = false; # 0830 # Personal ## Warnings @@ -57,12 +58,10 @@ "media.peerconnection.enabled" = true; "media.peerconnection.ice.no_host" = false; # may or may not be required "webgl.min_capability_mode" = true; - "media.autoplay.blocking_policy" = - 0; # optional (otherwise add site exceptions) - "javascript.options.wasm" = - true; # optional (some platforms may require this) + "media.autoplay.blocking_policy" = 0; # optional (otherwise add site exceptions) + "javascript.options.wasm" = true; # optional (some platforms may require this) "dom.webaudio.enabled" = true; }; }; in - self +self -- cgit v1.2.3