summaryrefslogtreecommitdiff
path: root/modules/home-manager/personal/programs/firefox/search.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home-manager/personal/programs/firefox/search.nix')
-rw-r--r--modules/home-manager/personal/programs/firefox/search.nix195
1 files changed, 195 insertions, 0 deletions
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"
+ ];
+ };
+}