From ae6d5466bf3ee61f5565f1631a787a7eda68c99d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Na=C3=AFm=20Favier?= <n@monade.li>
Date: Thu, 4 May 2023 16:58:13 +0200
Subject: [PATCH] firefox: support bookmark tags (#3942)

---
 modules/programs/firefox.nix                          | 11 +++++++++++
 .../firefox/profile-settings-expected-bookmarks.html  |  4 ++--
 tests/modules/programs/firefox/profile-settings.nix   |  2 ++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix
index 656717377..91ce2c308 100644
--- a/modules/programs/firefox.nix
+++ b/modules/programs/firefox.nix
@@ -71,6 +71,9 @@ let
           }" ADD_DATE="0" LAST_MODIFIED="0"${
             lib.optionalString (bookmark.keyword != null)
             " SHORTCUTURL=\"${escapeXML bookmark.keyword}\""
+          }${
+            lib.optionalString (bookmark.tags != [ ])
+            " TAGS=\"${escapeXML (concatStringsSep "," bookmark.tags)}\""
           }>${escapeXML bookmark.name}</A>'';
 
       directoryToHTML = indentLevel: directory: ''
@@ -251,6 +254,12 @@ in {
                       description = "Bookmark name.";
                     };
 
+                    tags = mkOption {
+                      type = types.listOf types.str;
+                      default = [ ];
+                      description = "Bookmark tags.";
+                    };
+
                     keyword = mkOption {
                       type = types.nullOr types.str;
                       default = null;
@@ -300,6 +309,7 @@ in {
                 [
                   {
                     name = "wikipedia";
+                    tags = [ "wiki" ];
                     keyword = "wiki";
                     url = "https://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go";
                   }
@@ -317,6 +327,7 @@ in {
                       }
                       {
                         name = "wiki";
+                        tags = [ "wiki" "nix" ];
                         url = "https://nixos.wiki/";
                       }
                     ];
diff --git a/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html b/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html
index d60e88ff4..c65cb1b12 100644
--- a/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html
+++ b/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html
@@ -10,12 +10,12 @@
   <DL><p>
     <DT><A HREF="https://nixos.wiki/wiki/Home_Manager" ADD_DATE="0" LAST_MODIFIED="0">Home Manager</A>
   </p></DL>
-  <DT><A HREF="https://en.wikipedia.org/wiki/Special:Search?search=%s&amp;go=Go" ADD_DATE="0" LAST_MODIFIED="0" SHORTCUTURL="wiki">wikipedia</A>
+  <DT><A HREF="https://en.wikipedia.org/wiki/Special:Search?search=%s&amp;go=Go" ADD_DATE="0" LAST_MODIFIED="0" SHORTCUTURL="wiki" TAGS="wiki">wikipedia</A>
   <DT><A HREF="https://www.kernel.org" ADD_DATE="0" LAST_MODIFIED="0">kernel.org</A>
   <DT><H3>Nix sites</H3>
   <DL><p>
     <DT><A HREF="https://nixos.org/" ADD_DATE="0" LAST_MODIFIED="0">homepage</A>
-    <DT><A HREF="https://nixos.wiki/" ADD_DATE="0" LAST_MODIFIED="0">wiki</A>
+    <DT><A HREF="https://nixos.wiki/" ADD_DATE="0" LAST_MODIFIED="0" TAGS="wiki,nix">wiki</A>
     <DT><H3>Nix sites</H3>
     <DL><p>
       <DT><A HREF="https://nixos.org/" ADD_DATE="0" LAST_MODIFIED="0">homepage</A>
diff --git a/tests/modules/programs/firefox/profile-settings.nix b/tests/modules/programs/firefox/profile-settings.nix
index 3b5d6cc81..6cb1a0cbe 100644
--- a/tests/modules/programs/firefox/profile-settings.nix
+++ b/tests/modules/programs/firefox/profile-settings.nix
@@ -31,6 +31,7 @@ lib.mkIf config.test.enableBig {
         }
         {
           name = "wikipedia";
+          tags = [ "wiki" ];
           keyword = "wiki";
           url = "https://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go";
         }
@@ -47,6 +48,7 @@ lib.mkIf config.test.enableBig {
             }
             {
               name = "wiki";
+              tags = [ "wiki" "nix" ];
               url = "https://nixos.wiki/";
             }
             {