mirror of
https://github.com/nix-community/home-manager.git
synced 2025-12-06 00:51: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:
parent
d8263c0b84
commit
7ede02c32a
1 changed files with 28 additions and 15 deletions
|
|
@ -397,12 +397,19 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
userChrome = mkOption {
|
userChrome = mkOption {
|
||||||
type = types.oneOf [
|
type = types.nullOr (
|
||||||
types.lines
|
types.oneOf [
|
||||||
types.path
|
types.lines
|
||||||
];
|
types.path
|
||||||
default = "";
|
]
|
||||||
description = "Custom ${appName} user chrome CSS.";
|
);
|
||||||
|
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 = ''
|
example = ''
|
||||||
/* Hide tab bar in FF Quantum */
|
/* Hide tab bar in FF Quantum */
|
||||||
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
|
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
|
||||||
|
|
@ -861,21 +868,27 @@ in
|
||||||
]
|
]
|
||||||
++ lib.flip mapAttrsToList cfg.profiles (
|
++ lib.flip mapAttrsToList cfg.profiles (
|
||||||
_: profile:
|
_: 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
|
# Merge the regular profile settings with extension settings
|
||||||
mkMerge (
|
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}/.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 != "") (
|
"${profilesPath}/${profile.path}/chrome/userContent.css" = mkIf (profile.userContent != "") (
|
||||||
let
|
let
|
||||||
key = if builtins.isString profile.userContent then "text" else "source";
|
key = if builtins.isString profile.userContent then "text" else "source";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue