Zen Browser: Difference between revisions
Appearance
Squawkykaka (talk | contribs) This page discusses on how to install the zen browser |
Added an example for configurating Zen |
||
| (2 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
{{Infobox application | |||
| name = Zen | |||
| type = Native | |||
| image = Zen-logo-black.png | |||
| website = https://zen-browser.app/ | |||
| bugTracker = https://github.com/zen-browser/desktop/issues | |||
| github = https://github.com/zen-browser/desktop | |||
| programmingLanguage = C++ | |||
}} | |||
'''Zen''' is a firefox based browser that promises a calmer internet, and features a sideways based tab system. | '''Zen''' is a firefox based browser that promises a calmer internet, and features a sideways based tab system. | ||
| Line 30: | Line 39: | ||
} | } | ||
</syntaxhighlight>After rebuilding, Zen will be installed system-wide. | </syntaxhighlight>After rebuilding, Zen will be installed system-wide. | ||
{{ | |||
== Configuration == | |||
This is an example of a pure, declarative, wrapper-based configuration independent of NixOS and home-manager (though it is presented as a NixOS module for convenience). Extensions are not packaged through Nix, but are installed by the browser upon startup. It should also work on any Firefox based browser.<syntaxhighlight lang="nix"> | |||
{ | |||
inputs, | |||
pkgs, | |||
lib, | |||
... | |||
}} | }: | ||
let | |||
extension = shortId: guid: { | |||
name = guid; | |||
value = { | |||
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; | |||
installation_mode = "normal_installed"; | |||
}; | |||
}; | |||
prefs = { | |||
# Check these out at about:config | |||
"extensions.autoDisableScopes" = 0; | |||
"extensions.pocket.enabled" = false; | |||
# ... | |||
}; | |||
extensions = [ | |||
# To add additional extensions, find it on addons.mozilla.org, find | |||
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/) | |||
# Then go to https://addons.mozilla.org/api/v5/addons/addon/!SHORT_ID!/ to get the guid | |||
(extension "ublock-origin" "uBlock0@raymondhill.net") | |||
# ... | |||
]; | |||
in | |||
{ | |||
environment.systemPackages = [ | |||
(pkgs.wrapFirefox | |||
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped | |||
{ | |||
extraPrefs = lib.concatLines ( | |||
lib.mapAttrsToList ( | |||
name: value: ''lockPref(${lib.strings.toJSON name}, ${lib.strings.toJSON value});'' | |||
) prefs | |||
); | |||
extraPolicies = { | |||
DisableTelemetry = true; | |||
ExtensionSettings = builtins.listToAttrs extensions; | |||
SearchEngines = { | |||
Default = "ddg"; | |||
Add = [ | |||
{ | |||
Name = "nixpkgs packages"; | |||
URLTemplate = "https://search.nixos.org/packages?query={searchTerms}"; | |||
IconURL = "https://wiki.nixos.org/favicon.ico"; | |||
Alias = "@np"; | |||
} | |||
{ | |||
Name = "NixOS options"; | |||
URLTemplate = "https://search.nixos.org/options?query={searchTerms}"; | |||
IconURL = "https://wiki.nixos.org/favicon.ico"; | |||
Alias = "@no"; | |||
} | |||
{ | |||
Name = "NixOS Wiki"; | |||
URLTemplate = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; | |||
IconURL = "https://wiki.nixos.org/favicon.ico"; | |||
Alias = "@nw"; | |||
} | |||
{ | |||
Name = "noogle"; | |||
URLTemplate = "https://noogle.dev/q?term={searchTerms}"; | |||
IconURL = "https://noogle.dev/favicon.ico"; | |||
Alias = "@ng"; | |||
} | |||
]; | |||
}; | |||
}; | |||
} | |||
) | |||
]; | |||
} | |||
</syntaxhighlight> | |||
Latest revision as of 08:13, 30 November 2025
Zen is a firefox based browser that promises a calmer internet, and features a sideways based tab system.
Installation
Shell (Flakes)
nix shell github:youwen5/zen-browser-flake
The command above makes zen available in your current shell.
System setup (Flakes)
First add the zen flake to your flake.nix
{
...
inputs = {
...
zen-browser = {
url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
}
}
Then add zen to your environment.systemPackages
{
inputs,
...
}: {
environment.systemPackages = [
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default
];
}
After rebuilding, Zen will be installed system-wide.
Configuration
This is an example of a pure, declarative, wrapper-based configuration independent of NixOS and home-manager (though it is presented as a NixOS module for convenience). Extensions are not packaged through Nix, but are installed by the browser upon startup. It should also work on any Firefox based browser.
{
inputs,
pkgs,
lib,
...
}:
let
extension = shortId: guid: {
name = guid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "normal_installed";
};
};
prefs = {
# Check these out at about:config
"extensions.autoDisableScopes" = 0;
"extensions.pocket.enabled" = false;
# ...
};
extensions = [
# To add additional extensions, find it on addons.mozilla.org, find
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
# Then go to https://addons.mozilla.org/api/v5/addons/addon/!SHORT_ID!/ to get the guid
(extension "ublock-origin" "uBlock0@raymondhill.net")
# ...
];
in
{
environment.systemPackages = [
(pkgs.wrapFirefox
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped
{
extraPrefs = lib.concatLines (
lib.mapAttrsToList (
name: value: ''lockPref(${lib.strings.toJSON name}, ${lib.strings.toJSON value});''
) prefs
);
extraPolicies = {
DisableTelemetry = true;
ExtensionSettings = builtins.listToAttrs extensions;
SearchEngines = {
Default = "ddg";
Add = [
{
Name = "nixpkgs packages";
URLTemplate = "https://search.nixos.org/packages?query={searchTerms}";
IconURL = "https://wiki.nixos.org/favicon.ico";
Alias = "@np";
}
{
Name = "NixOS options";
URLTemplate = "https://search.nixos.org/options?query={searchTerms}";
IconURL = "https://wiki.nixos.org/favicon.ico";
Alias = "@no";
}
{
Name = "NixOS Wiki";
URLTemplate = "https://wiki.nixos.org/w/index.php?search={searchTerms}";
IconURL = "https://wiki.nixos.org/favicon.ico";
Alias = "@nw";
}
{
Name = "noogle";
URLTemplate = "https://noogle.dev/q?term={searchTerms}";
IconURL = "https://noogle.dev/favicon.ico";
Alias = "@ng";
}
];
};
};
}
)
];
}
