71 lines
1.8 KiB
Nix
71 lines
1.8 KiB
Nix
|
|
{
|
||
|
|
config,
|
||
|
|
lib,
|
||
|
|
inputs,
|
||
|
|
pkgs,
|
||
|
|
...
|
||
|
|
}:
|
||
|
|
with lib; let
|
||
|
|
cfg = config.home.desktop.firefox;
|
||
|
|
inherit (pkgs.stdenv.hostPlatform) system;
|
||
|
|
zen = inputs.zen-browser.packages.${system}.default;
|
||
|
|
settingsToLines = settings:
|
||
|
|
concatStringsSep "\n" (mapAttrsToList (name: value: "set ${name} ${toString value}") settings);
|
||
|
|
in {
|
||
|
|
options.home.desktop.firefox = {
|
||
|
|
enable = mkEnableOption "enable Firefox";
|
||
|
|
useZen = mkEnableOption "use Zen instead of Firefox";
|
||
|
|
tridactyl = {
|
||
|
|
enable = mkEnableOption "enable Tridactyl";
|
||
|
|
preConfig = mkOption {
|
||
|
|
description = "Lines to add to the beginning of tridactylrc";
|
||
|
|
type = types.lines;
|
||
|
|
default = "";
|
||
|
|
};
|
||
|
|
config = mkOption {
|
||
|
|
type = with types;
|
||
|
|
attrsOf (oneOf [
|
||
|
|
int
|
||
|
|
str
|
||
|
|
bool
|
||
|
|
]);
|
||
|
|
description = "Tridactyl settings (converted to 'set key value' lines)";
|
||
|
|
default = {};
|
||
|
|
example = {
|
||
|
|
smoothscroll = true;
|
||
|
|
history = 1000;
|
||
|
|
};
|
||
|
|
};
|
||
|
|
extraConfig = mkOption {
|
||
|
|
description = "Extra lines to add to tridactylrc (for bindings, autocmds, etc)";
|
||
|
|
type = types.lines;
|
||
|
|
default = "";
|
||
|
|
};
|
||
|
|
};
|
||
|
|
};
|
||
|
|
|
||
|
|
config = mkIf cfg.enable {
|
||
|
|
programs.firefox = {
|
||
|
|
inherit (cfg) enable;
|
||
|
|
package =
|
||
|
|
if cfg.useZen
|
||
|
|
then zen
|
||
|
|
else pkgs.firefox;
|
||
|
|
nativeMessagingHosts = lists.optional cfg.tridactyl.enable pkgs.tridactyl-native;
|
||
|
|
};
|
||
|
|
xdg.configFile."tridactyl/tridactylrc" = mkIf cfg.tridactyl.enable {
|
||
|
|
text = concatStringsSep "\n" (filter (s: s != "") [
|
||
|
|
cfg.tridactyl.preConfig
|
||
|
|
(settingsToLines (cfg.tridactyl.config
|
||
|
|
// {
|
||
|
|
browser =
|
||
|
|
if cfg.useZen
|
||
|
|
then "zen"
|
||
|
|
else "firefox";
|
||
|
|
}))
|
||
|
|
cfg.tridactyl.extraConfig
|
||
|
|
]);
|
||
|
|
};
|
||
|
|
};
|
||
|
|
}
|