about summary refs log tree commit diff stats
path: root/home-manager/config/firefox
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--home-manager/config/firefox/default.nix73
1 files changed, 62 insertions, 11 deletions
diff --git a/home-manager/config/firefox/default.nix b/home-manager/config/firefox/default.nix
index d07895a6..a5201388 100644
--- a/home-manager/config/firefox/default.nix
+++ b/home-manager/config/firefox/default.nix
@@ -9,6 +9,63 @@
   system,
   ...
 }: let
+  bookmarks = [
+    {
+      name = "Feed - Piped";
+      url = "https://piped.video/feed";
+    }
+
+    {
+      name = "DeepL Translate";
+      url = "https://www.deepl.com/translator#en/de/test";
+    }
+  ];
+  firefoxBookmarksFile = bookmarks: let
+    indent = level:
+      lib.concatStringsSep "" (map (lib.const "  ") (lib.range 1 level));
+
+    bookmarkToHTML = indentLevel: bookmark: ''
+      ${indent indentLevel}<DT><A HREF="${
+        lib.escapeXML bookmark.url
+      }" ADD_DATE="0" LAST_MODIFIED="0">${lib.escapeXML bookmark.name}</A>'';
+
+    directoryToHTML = indentLevel: directory: ''
+      ${indent indentLevel}<DT>${
+        if directory.toolbar
+        then ''<H3 PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar''
+        else "<H3>${lib.escapeXML directory.name}"
+      }</H3>
+      ${indent indentLevel}<DL><p>
+      ${allItemsToHTML (indentLevel + 1) directory.bookmarks}
+      ${indent indentLevel}</p></DL>'';
+
+    itemToHTMLOrRecurse = indentLevel: item:
+      if item ? "url"
+      then bookmarkToHTML indentLevel item
+      else directoryToHTML indentLevel item;
+
+    allItemsToHTML = indentLevel: bookmarks:
+      lib.concatStringsSep "\n"
+      (map (itemToHTMLOrRecurse indentLevel) bookmarks);
+
+    bookmarkEntries = allItemsToHTML 1 bookmarks;
+  in
+    pkgs.writeText "firefox-bookmarks.html" ''
+      <!DOCTYPE NETSCAPE-Bookmark-file-1>
+      <!-- This is an automatically generated file.
+        It will be read and overwritten.
+        DO NOT EDIT! -->
+      <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+      <TITLE>Bookmarks</TITLE>
+      <H1>Bookmarks Menu</H1>
+
+      <DL><p>
+          <DT><H3 ADD_DATE="0" LAST_MODIFIED="0" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3>
+          <DL><p>
+          ${bookmarkEntries}
+          </DL><p>
+      </p></DL>
+    '';
   userChrome = builtins.readFile ./chrome/userChrome.css;
 
   user_js_override = pkgs.writeText "user.override.js" (builtins.readFile ./settings/override.js);
@@ -18,6 +75,10 @@
     cat "${user_js_override}" >> $out/user.js;
 
     cat << EOF >> $out/user.js;
+    // My bookmarks
+    user_pref("browser.bookmarks.file", "${toString (firefoxBookmarksFile bookmarks)}");
+    user_pref("browser.places.importBookmarksHTML", true);
+
     // Allow my custom css
     user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
 
@@ -208,17 +269,7 @@ in {
         };
       };
 
-      bookmarks = [
-        {
-          name = "Feed - Piped";
-          url = "https://piped.video/feed";
-        }
-
-        {
-          name = "DeepL Translate";
-          url = "https://www.deepl.com/translator#en/de/test";
-        }
-      ];
+      bookmarks = [];
       inherit settings;
       extraConfig = builtins.readFile "${user_js_nix}/user.js";
     };