feat(firefox): add the desktop Firefox browser module (task 0032) #25

Merged
alexion merged 8 commits from task-0032-firefox-browser into main 2026-07-24 09:03:34 -04:00
2 changed files with 10 additions and 0 deletions
Showing only changes of commit e42101e08b - Show all commits

View File

@@ -32,3 +32,6 @@ The policy path gives up build-time reproducibility of the extension binaries, a
- First launch after a fresh build requires network to fetch the add-ons.
An offline first boot comes up with the extensions not yet present, populating them once online.
- Moving to a pinned-package posture later would mean changing the browser variant as well, since the two are coupled — the reason this is captured as a decision rather than a detail.
- The no-pinned-package rule scopes to the three functional extensions, which is where the signature-enforcement conflict bites.
Nord chrome theming comes from the Stylix Firefox Color add-on, a signed add-on that Stylix pins and manages, so it loads on stock mainline Firefox and adds no flake input of ours.
That is a bounded, deliberate exception, not a reversal: it is what lets the browser be themed from the shared Stylix scheme without hand-written chrome CSS.

View File

@@ -47,6 +47,10 @@ in
profiles.default = {
isDefault = true;
# The Nord chrome theme is a declared extension setting, so home-manager
# owns the extension-settings store, overwriting runtime changes to it.
extensions.force = true;
settings = {
# Sponsored surfaces the policies above do not reach.
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
@@ -75,9 +79,12 @@ in
};
# Nord chrome from the shared Stylix scheme, against the one profile.
# colorTheme recolours the toolbar and tabs, which the target does not do
# on its own, through the Stylix-managed Firefox Color add-on.
stylix.targets.firefox = {
enable = true;
profileNames = [ "default" ];
colorTheme.enable = true;
};
# Links opened from other applications land in Firefox.