1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-12-05 16:41:04 +01:00

progs: firefox: *.userChrome may be path or drv (#6761)

This allows `programs.firefox.profiles.*.userChrome` to be set to a:
derivation, path/path-like string to directory or file, or multiline
text to be used as content verbatim.

This allows setting, for example(s):
```nix
programs.firefox.profiles."jacob.default".userChrome = pkgs.wavefox;
programs.firefox.profiles."jacob.default".userChrome =
    "${pkgs.wavefox}/userChrome.css";
```
This commit is contained in:
Jacob Birkett 2025-04-16 09:28:18 -07:00 committed by GitHub
parent d8263c0b84
commit 7ede02c32a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -397,12 +397,19 @@ in
};
userChrome = mkOption {
type = types.oneOf [
types.lines
types.path
];
default = "";
description = "Custom ${appName} user chrome CSS.";
type = types.nullOr (
types.oneOf [
types.lines
types.path
]
);
default = null;
description = ''
Custom ${appName} user chrome CSS.
This can be a path to a file or directory in the Nix store,
or a derivation, or a verbatim multi-line string.
'';
example = ''
/* Hide tab bar in FF Quantum */
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
@ -861,21 +868,27 @@ in
]
++ lib.flip mapAttrsToList cfg.profiles (
_: profile:
let
chromePath = if lib.pathIsDirectory profile.userChrome then "chrome" else "chrome/userChrome.css";
sourcePath = if lib.types.path.check profile.userChrome then profile.userChrome else null;
in
# Merge the regular profile settings with extension settings
mkMerge (
[
(mkIf (profile.userChrome != null) {
"${profilesPath}/${profile.path}/${chromePath}" =
if sourcePath == null then
{
text = profile.userChrome;
}
else
{
source = sourcePath;
};
})
{
"${profilesPath}/${profile.path}/.keep".text = "";
"${profilesPath}/${profile.path}/chrome/userChrome.css" = mkIf (profile.userChrome != "") (
let
key = if builtins.isString profile.userChrome then "text" else "source";
in
{
"${key}" = profile.userChrome;
}
);
"${profilesPath}/${profile.path}/chrome/userContent.css" = mkIf (profile.userContent != "") (
let
key = if builtins.isString profile.userContent then "text" else "source";