From 745188c3cff67d76c29394cc5cde7d9f62671fad Mon Sep 17 00:00:00 2001 From: Emma Thorpe Date: Tue, 9 Jun 2026 21:14:00 +0100 Subject: [PATCH] feat(firefox): theme with the Catppuccin Mocha add-on Firefox draws its own chrome and ignores the GTK theme, so theme it at the browser level. Add the rycee firefox-addons flake input and, in the home-manager desktop layer, manage the Firefox profile (package = null -- the system programs.firefox in user.nix still provides the binary): - install the Catppuccin Mocha theme add-on (catppuccin-mocha-mauve; only the mauve accent is packaged upstream, so it differs slightly from the blue accent used elsewhere), - autoDisableScopes = 0 so it applies on first launch, - ui.systemUsesDarkTheme + prefers-color-scheme override for dark chrome and page content. Verified the XPI fetches, user.js renders the prefs, finalPackage is null (no duplicate Firefox), all Sway hosts eval, and EDaaS is unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) --- flake.lock | 23 +++++++++++++++++++++++ flake.nix | 5 +++++ lyrathorpe/home/desktop.nix | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/flake.lock b/flake.lock index a3ed534..1696d7f 100644 --- a/flake.lock +++ b/flake.lock @@ -17,6 +17,28 @@ "type": "github" } }, + "firefox-addons": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "dir": "pkgs/firefox-addons", + "lastModified": 1780977789, + "narHash": "sha256-UFJfQlvInbsVaTK5XC2lafdqWlwiNP5LuQFYfDKq6Dc=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "0b627f105ea3baa2fa10308a6a67a8f8cbbb3e2a", + "type": "gitlab" + }, + "original": { + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" + } + }, "flake-compat": { "locked": { "lastModified": 1761640442, @@ -204,6 +226,7 @@ }, "root": { "inputs": { + "firefox-addons": "firefox-addons", "flake-parts": "flake-parts", "home-manager": "home-manager", "nix-darwin": "nix-darwin", diff --git a/flake.nix b/flake.nix index c860a3e..07ee130 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,11 @@ # Provides mkFlake: the systems/perSystem scaffolding used below. flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; + # Declarative Firefox add-ons (e.g. the Catppuccin theme); see lyrathorpe/user.nix. + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = diff --git a/lyrathorpe/home/desktop.nix b/lyrathorpe/home/desktop.nix index 0bfddf4..da6f757 100644 --- a/lyrathorpe/home/desktop.nix +++ b/lyrathorpe/home/desktop.nix @@ -2,7 +2,13 @@ # Imported only on hosts that run Sway (MBP, T400, Mac Pro); never pulled onto # the headless WSL host. Login (and the Sway session launch) is handled by the # greetd/ReGreet greeter -- see ../swaywm.nix -- so there is no tty1 autostart. -{ pkgs, config, ... }: +{ + pkgs, + config, + inputs, + username, + ... +}: { imports = [ ./sway.nix @@ -57,4 +63,31 @@ name = "Adwaita"; size = 24; }; + + # Firefox is themed at the browser level (it does not follow the GTK theme). + # The system installs the binary (programs.firefox in ../user.nix); here + # home-manager owns only the profile, hence package = null. Apply the + # Catppuccin Mocha theme add-on (only the mauve accent is packaged upstream; + # the rest of the desktop uses blue) and make content + UI dark. + programs.firefox = { + enable = true; + package = null; + profiles.${username} = { + id = 0; + isDefault = true; + extensions = { + force = true; + packages = [ + inputs.firefox-addons.packages.${pkgs.system}.catppuccin-mocha-mauve + ]; + }; + settings = { + # Enable bundled add-ons automatically so the theme applies on first run. + "extensions.autoDisableScopes" = 0; + # Dark chrome + dark page content. + "ui.systemUsesDarkTheme" = 1; + "layout.css.prefers-color-scheme.content-override" = 0; + }; + }; + }; }