From 92ecf9711ff726b9be11bab9c9baa1bfbea90bf6 Mon Sep 17 00:00:00 2001 From: "quentin@aristote.fr" Date: Mon, 12 Oct 2026 23:31:36 +0200 Subject: home: firefox: reorganize --- .../personal/programs/firefox/search.nix | 195 +++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 modules/home-manager/personal/programs/firefox/search.nix (limited to 'modules/home-manager/personal/programs/firefox/search.nix') diff --git a/modules/home-manager/personal/programs/firefox/search.nix b/modules/home-manager/personal/programs/firefox/search.nix new file mode 100644 index 0000000..0a4178d --- /dev/null +++ b/modules/home-manager/personal/programs/firefox/search.nix @@ -0,0 +1,195 @@ +{ + config, + lib, + pkgs, + ... +}: +let + everyday = 24 * 60 * 60 * 1000; + searchTerms = "{searchTerms}"; + nixosIcon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + engines = { + disable = + engines: + lib.genAttrs engines (_: { + metaData.hidden = true; + }); + disableDefault = engines.disable [ + "google" + "Amazon.fr" + "bing" + ]; + + nix = { + inherit (engines) + "Home Manager Options" + "NixOS Options" + "NixOS Wiki" + "Nix Packages" + ; + }; + dev = engines.nix // { + inherit (engines) AlternativeTo Phind; + }; + personal = { inherit (engines) Emojipedia; }; + work = { inherit (engines) nLab; }; + all = engines.dev // engines.personal // engines.work // { inherit (engines) Searx; }; + + Emojipedia = { + urls = [ + { + template = "https://emojipedia.org/search/"; + params = [ (lib.nameValuePair "q" searchTerms) ]; + } + ]; + icon = "https://emojipedia.org/static/img/favicons/favicon-16x16.png"; + updateInterval = everyday; + definedAliases = [ + "@emojipedia" + "@emoji" + "@em" + ]; + }; + + AlternativeTo = { + urls = [ + { + template = "https://alternativeto.net/browse/search/"; + params = [ (lib.nameValuePair "q" searchTerms) ]; + } + ]; + icon = "https://alternativeto.net/static/icons/a2/favicon-16x16.png"; + updateInterval = everyday; + definedAliases = [ + "@alternativeto" + "@a2" + ]; + }; + + "Home Manager Options" = { + urls = [ + { + template = "https://search.nixos.org/options"; + params = [ + (lib.nameValuePair "channel" "unstable") + (lib.nameValuePair "source" "home_manager") + (lib.nameValuePair "query" searchTerms) + ]; + } + ]; + icon = nixosIcon; + definedAliases = [ + "@homemanager" + "@hm" + ]; + }; + + "NixOS Options" = { + urls = [ + { + template = "https://search.nixos.org/options"; + params = [ + (lib.nameValuePair "channel" "unstable") + (lib.nameValuePair "query" searchTerms) + ]; + } + ]; + icon = nixosIcon; + definedAliases = [ + "@nixos" + "@no" + ]; + }; + + "NixOS Wiki" = { + urls = [ + { + template = "https://wiki.nixos.org/w/index.php"; + params = [ (lib.nameValuePair "search" searchTerms) ]; + } + ]; + icon = nixosIcon; + definedAliases = [ + "@nixoswiki" + "@nw" + ]; + }; + + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + (lib.nameValuePair "channel" "unstable") + (lib.nameValuePair "query" searchTerms) + ]; + } + ]; + icon = nixosIcon; + definedAliases = [ + "@nixpkgs" + "@np" + ]; + }; + + nLab = { + urls = [ + { + template = "https://ncatlab.org/nlab/search"; + params = [ (lib.nameValuePair "query" searchTerms) ]; + } + ]; + icon = "https://ncatlab.org/favicon.ico"; + updateInterval = everyday; + definedAliases = [ + "@ncatlab" + "@nlab" + ]; + }; + + Searx = { + urls = [ + { + template = "https://searx.aristote.fr/search"; + params = [ (lib.nameValuePair "q" searchTerms) ]; + } + ]; + icon = "https://searx.aristote.fr/static/themes/simple/img/favicon.svg"; + updateInterval = everyday; + }; + + Phind = { + urls = [ + { + template = "https://phind.com/search"; + params = [ (lib.nameValuePair "q" searchTerms) ]; + } + ]; + icon = "https://www.phind.com/images/favicon.png"; + updateInterval = everyday; + definedAliases = [ + "@phind" + "@ph" + ]; + }; + }; +in +{ + programs.firefox.profiles.default.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" + ]; + }; +} -- cgit v1.3.1