about summary refs log tree commit diff stats
path: root/modules/home/conf/firefox/config/bookmarks
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:31:11 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:33:40 +0200
commitfd9b0ecef4142a62b45404700ba1cff488f84a73 (patch)
treeef6c1f74f05a2220a41ccff4b0890c39229f32f7 /modules/home/conf/firefox/config/bookmarks
parentrefactor(pkgs): Categorize into `by-name` shards (diff)
downloadnixos-config-fd9b0ecef4142a62b45404700ba1cff488f84a73.tar.gz
nixos-config-fd9b0ecef4142a62b45404700ba1cff488f84a73.zip
refactor(modules/home): Setup as "normal" NixOS module
Diffstat (limited to 'modules/home/conf/firefox/config/bookmarks')
-rw-r--r--modules/home/conf/firefox/config/bookmarks/default.nix31
-rw-r--r--modules/home/conf/firefox/config/bookmarks/lib.nix49
2 files changed, 80 insertions, 0 deletions
diff --git a/modules/home/conf/firefox/config/bookmarks/default.nix b/modules/home/conf/firefox/config/bookmarks/default.nix
new file mode 100644
index 00000000..c612bf4d
--- /dev/null
+++ b/modules/home/conf/firefox/config/bookmarks/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  pkgs,
+  ...
+}: let
+  bookmarks = [
+    {
+      name = "Feed - Piped";
+      url = "https://piped.video/feed";
+    }
+
+    {
+      name = "DeepL Translate";
+      url = "https://www.deepl.com/translator";
+    }
+
+    {
+      name = "Nix lib";
+      url = "https://teu5us.github.io/nix-lib.html";
+    }
+
+    {
+      name = "Nixpkgs manual";
+      url = "https://ryantm.github.io/nixpkgs/";
+    }
+  ];
+
+  mkBookmarksFile = (import ./lib.nix) {inherit lib pkgs;};
+  bookmarks_file = mkBookmarksFile bookmarks;
+in
+  bookmarks_file
diff --git a/modules/home/conf/firefox/config/bookmarks/lib.nix b/modules/home/conf/firefox/config/bookmarks/lib.nix
new file mode 100644
index 00000000..d1d89dd2
--- /dev/null
+++ b/modules/home/conf/firefox/config/bookmarks/lib.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  pkgs,
+}: 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>
+  ''