NixDaemon

NixOS pentest workstation as one flake — IceBreaker's successor
git clone https://git.daemon-sec.xyz/NixDaemon.git
Log | Files | Refs | README

commit 407701642f9651ae00ab67d11b8d04ffe0f6b7ee
parent 68699146c2b976fc51448bddef08a8939ea28987
Author: DAEMON <zer0sec.xp@icloud.com>
Date:   Fri,  9 Oct 2026 00:10:27 +0100

feat(floorp): switch off Floorp's extras and put the bookmarks on the toolbar

Panel Sidebar, workspaces, SSB, tab stacks, zen mode, command palette,
mouse gestures, status bar, Floorp OS and MCP all off via user.js; the
built-in VPN button, profile switcher and tab split view likewise. The
undo-closed-tab and split-view buttons have no switch and are hidden in
shy-custom.css along with the panel sidebar boxes.

_bookmarks.nix is flat (the Favourites wrapper is gone), and a guarded
one-time activation step reshapes the existing places.sqlite to match
when Floorp is not running.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mmodules/home/floorp.nix | 47+++++++++++++++++++++++++++++++++++++++++++++++
Amodules/home/floorp/_flatten-favourites.sql | 24++++++++++++++++++++++++
Mmodules/home/floorp/_shyfox/ShyFox/shy-custom.css | 22++++++++++++++++++++++
3 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/modules/home/floorp.nix b/modules/home/floorp.nix @@ -200,6 +200,32 @@ ## Floorp "floorp.design.configs" = builtins.toJSON designConfigs; + ## Floorp extras, all off (2026-10-09). Sidebery is the only sidebar + ## wanted, so the Panel Sidebar (the icon strip on the right) goes, and + ## with it the rest of what Floorp bolts on: workspaces, the SSB/PWA + ## installer, tab stacks, zen mode, the F2 command palette, mouse + ## gestures, the status bar, Floorp OS and its MCP bridge. Toolbar + ## buttons Floorp creates without a switch (undo-closed-tab, split view) + ## are hidden in _shyfox/ShyFox/shy-custom.css instead. + "floorp.panelSidebar.enabled" = false; + "floorp.workspaces.enabled" = false; + "floorp.browser.ssb.enabled" = false; + "floorp.tabstacks.enabled" = false; + "floorp.zenmode.enabled" = false; + "floorp.commandPalette.enabled" = false; + "floorp.mousegesture.enabled" = false; + "floorp.splitView.dragToSplitCreate.enabled" = false; + "floorp.os.enabled" = false; + "floorp.mcp.enabled" = false; + "noraneko.statusbar.enable" = false; + + ## Firefox-side toolbar clutter that arrived alongside: the built-in + ## VPN button, the profile-switcher avatar and tab split view. + "browser.ipProtection.enabled" = false; + "browser.vpn_promo.enabled" = false; + "browser.profiles.enabled" = false; + "browser.tabs.splitView.enabled" = false; + ## Bookmarks — where the HTML import reads from and writes to. The pref ## that actually triggers the import is seeded once by the activation ## script below, deliberately not from here; see its comment. @@ -274,6 +300,27 @@ # and duplicate every bookmark. Seeding it into prefs.js instead, only while # the profile has no places.sqlite yet, imports once on first launch and # never again. + # One-time bookmark re-layout (2026-10-09). The first import nested the + # whole Dia tree under a "Favourites" folder on the toolbar; the tree in + # _bookmarks.nix is flat now, but places.sqlite already exists and the + # import never re-runs, so the live database is reshaped once here: the + # folder's children move onto the Bookmarks Toolbar and the folder goes. + # Guarded so it only touches the database while Floorp is not running and + # only while that folder is still there; afterwards it is a no-op and this + # block can be deleted. + home.activation.floorpFlattenFavourites = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + floorpPlaces="${config.xdg.configHome}/${profileDir}/places.sqlite" + sqlite=${pkgs.sqlite}/bin/sqlite3 + if [ -e "$floorpPlaces" ] && ! ${pkgs.procps}/bin/pgrep -x .floorp-wrapped >/dev/null \ + && [ "$($sqlite "$floorpPlaces" "SELECT COUNT(*) FROM moz_bookmarks WHERE type=2 AND title='Favourites' AND parent=(SELECT id FROM moz_bookmarks WHERE guid='toolbar_____')")" = 1 ]; then + verboseEcho "Floorp: moving the Favourites folder's bookmarks onto the toolbar" + if [ -z "''${DRY_RUN:-}" ]; then + cp -p "$floorpPlaces" "$floorpPlaces.before-flatten" + $sqlite "$floorpPlaces" < ${./floorp/_flatten-favourites.sql} + fi + fi + ''; + home.activation.floorpSeedBookmarkImport = lib.hm.dag.entryAfter [ "writeBoundary" ] '' floorpProfile="${config.xdg.configHome}/${profileDir}" floorpPrefs="$floorpProfile/prefs.js" diff --git a/modules/home/floorp/_flatten-favourites.sql b/modules/home/floorp/_flatten-favourites.sql @@ -0,0 +1,24 @@ +-- Move the children of the "Favourites" folder up onto the Bookmarks Toolbar and drop the folder. +-- Idempotent: does nothing unless Favourites sits directly under toolbar_____. +BEGIN; +CREATE TEMP TABLE fav AS + SELECT id FROM moz_bookmarks + WHERE type=2 AND title='Favourites' + AND parent=(SELECT id FROM moz_bookmarks WHERE guid='toolbar_____') LIMIT 1; +CREATE TEMP TABLE kids AS + SELECT id, ROW_NUMBER() OVER (ORDER BY position) - 1 AS pos + FROM moz_bookmarks WHERE parent=(SELECT id FROM fav); +UPDATE moz_bookmarks SET + parent=(SELECT id FROM moz_bookmarks WHERE guid='toolbar_____'), + position=(SELECT pos FROM kids WHERE kids.id=moz_bookmarks.id), + lastModified=CAST(strftime('%s','now') AS INTEGER)*1000000, + syncChangeCounter=syncChangeCounter+1 +WHERE id IN (SELECT id FROM kids); +-- shift any other toolbar siblings behind the moved ones +UPDATE moz_bookmarks SET position=position+(SELECT COUNT(*) FROM kids) +WHERE parent=(SELECT id FROM moz_bookmarks WHERE guid='toolbar_____') + AND id NOT IN (SELECT id FROM kids) AND id<>(SELECT id FROM fav); +DELETE FROM moz_bookmarks WHERE id=(SELECT id FROM fav); +UPDATE moz_bookmarks SET lastModified=CAST(strftime('%s','now') AS INTEGER)*1000000, syncChangeCounter=syncChangeCounter+1 +WHERE guid='toolbar_____'; +COMMIT; diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-custom.css b/modules/home/floorp/_shyfox/ShyFox/shy-custom.css @@ -42,3 +42,25 @@ wins. Safe to delete entirely. :root { --sdbr-wdt: 235px !important; } + + +/* Floorp's own chrome, gone (2026-10-09). + + The features themselves are switched off in modules/home/floorp.nix + (floorp.panelSidebar.enabled, floorp.workspaces.enabled and friends). Two of + Floorp's toolbar buttons have no switch: undo-closed-tab and the split-view + button are created once per profile and then left to CustomizableUI, so they + are hidden here instead. The Panel Sidebar and workspaces selectors are a + second line of defence in case a Floorp update re-enables them. */ +#undo-closed-tab, +#split-view-button, +#workspaces-toolbar-button, +#panel-sidebar-box, +#panel-sidebar-select-box, +#panel-sidebar-splitter, +#panel-sidebar-float, +#ipprotection-button, +#profile-manager-button, +#nora-statusbar { + display: none !important; +}