From 0edffd088e42fdc48598b37d88eb5345e2ca3937 Mon Sep 17 00:00:00 2001 From: xaltsc <41400742+xaltsc@users.noreply.github.com> Date: Mon, 16 Jun 2025 22:51:11 +0200 Subject: [PATCH] firefox: allow separators in bookmarks (#7284) Allow users to create separators in their Firefox bookmarks. Co-authored-by: xaltsc --- modules/programs/firefox/profiles/bookmark-types.nix | 8 +++++++- modules/programs/firefox/profiles/bookmarks.nix | 10 +++++++++- .../programs/firefox/profiles/bookmarks/default.nix | 1 + .../firefox/profiles/bookmarks/expected-bookmarks.html | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/programs/firefox/profiles/bookmark-types.nix b/modules/programs/firefox/profiles/bookmark-types.nix index 43eca566..a5a58359 100644 --- a/modules/programs/firefox/profiles/bookmark-types.nix +++ b/modules/programs/firefox/profiles/bookmark-types.nix @@ -50,6 +50,8 @@ rec { bookmarkType = types.addCheck bookmarkSubmodule (x: x ? "url"); + separatorType = types.enum [ "separator" ]; + directoryType = types.submodule ( { name, ... }: @@ -83,5 +85,9 @@ rec { description = "directory submodule"; }; - nodeType = types.either bookmarkType directoryType; + nodeType = types.oneOf [ + bookmarkType + directoryType + separatorType + ]; } diff --git a/modules/programs/firefox/profiles/bookmarks.nix b/modules/programs/firefox/profiles/bookmarks.nix index a0cfafa7..4b94cba8 100644 --- a/modules/programs/firefox/profiles/bookmarks.nix +++ b/modules/programs/firefox/profiles/bookmarks.nix @@ -45,9 +45,16 @@ let ${allItemsToHTML (indentLevel + 1) directory.bookmarks} ${indent indentLevel}

''; + separatorToHTML = indentLevel: "${indent indentLevel}


"; + itemToHTMLOrRecurse = indentLevel: item: - if item ? "url" then bookmarkToHTML indentLevel item else directoryToHTML indentLevel item; + if item ? "url" then + bookmarkToHTML indentLevel item + else if item == "separator" then + separatorToHTML indentLevel + else + directoryToHTML indentLevel item; allItemsToHTML = indentLevel: bookmarks: lib.concatStringsSep "\n" (map (itemToHTMLOrRecurse indentLevel) bookmarks); @@ -106,6 +113,7 @@ in name = "kernel.org"; url = "https://www.kernel.org"; } + "separator" { name = "Nix sites"; toolbar = true; diff --git a/tests/modules/programs/firefox/profiles/bookmarks/default.nix b/tests/modules/programs/firefox/profiles/bookmarks/default.nix index 9f48a58d..19655368 100644 --- a/tests/modules/programs/firefox/profiles/bookmarks/default.nix +++ b/tests/modules/programs/firefox/profiles/bookmarks/default.nix @@ -38,6 +38,7 @@ in name = "kernel.org"; url = "https://www.kernel.org"; } + "separator" { name = "Nix sites"; bookmarks = [ diff --git a/tests/modules/programs/firefox/profiles/bookmarks/expected-bookmarks.html b/tests/modules/programs/firefox/profiles/bookmarks/expected-bookmarks.html index 4f22e86c..0c64bf67 100644 --- a/tests/modules/programs/firefox/profiles/bookmarks/expected-bookmarks.html +++ b/tests/modules/programs/firefox/profiles/bookmarks/expected-bookmarks.html @@ -11,6 +11,7 @@
Home Manager

kernel.org +

Nix sites

homepage