0xc000022070/zen-browser-flake: Declarative Zen Browser for NixOS and Home Manager
Community-driven Nix Flake for the Zen browser
At a glance
- What is it?
- A community Nix flake that packages Zen Browser for NixOS and Home Manager, with declarative policies, spaces, shortcuts, mods and extensions. It suits people already running Nix who want browser state stored in their configuration, and it offers little value outside that setup.
- Who is it for?
- Adopt it if you already manage a NixOS or Home Manager configuration and want Zen Browser settings, spaces, shortcuts and mods declared in code. Skip it if you are not on Nix, or if you need the official upstream artifact hash to stay stable, because twilight-official can break when upstream replaces release artifacts.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly Nix, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What problem this flake solves
Zen Browser is a Firefox-derived browser with its own release cadence. Installing it by hand on a Nix system means tracking tarballs, hashes and updates yourself. This flake turns that into a flake input and exposes both packages and a Home Manager module, so the browser and its configuration become part of the same declarative system as the rest of the machine. The audience is NixOS and Home Manager users who want browser state in version control rather than clicks in a settings panel. It is not an installer for macOS or Linux users outside Nix: the README gives no non-Nix installation path, and every integration example assumes a flake-based configuration.
How the flake exposes Zen Browser
The README shows two integration surfaces. The first is a Home Manager module imported as inputs.zen-browser.homeModules.beta, .twilight or .twilight-official, which enables programs.zen-browser with options such as enable and setAsDefaultBrowser. The second is a package attribute per platform, inputs.zen-browser.packages."${pkgs.stdenv.hostPlatform.system}".beta, .twilight, .twilight-official or .default, for use in environment.systemPackages or home.packages. The flake declares nixpkgs and home-manager as inputs, and the installation instructions tell you to make them follow your own inputs for compatibility with the latest Firefox version. Updates are described as fast and automatic through GitHub Actions, and browser update checks are disabled by default, so the flake rather than Zen's own updater controls which version runs. Top-level repository entries include hm-module, wrap-zen.nix, sources.json and examples, which indicates the module and packaging logic live in the repository rather than being generated elsewhere. The README does not document how the GitHub Actions workflow selects or pins upstream artifacts beyond the statement that twilight artifacts are re-uploaded for reproducibility.
Installing and first run
Add the flake input first.
inputs = {
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs = {
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
};
};Then choose an integration. For Home Manager, import the module and enable the program.
{
imports = [
inputs.zen-browser.homeModules.beta
];
programs.zen-browser = {
enable = true;
setAsDefaultBrowser = true;
};
}Build the configuration.
home-manager switchAlternatively, add a package attribute to environment.systemPackages or home.packages and rebuild.
inputs.zen-browser.packages."${pkgs.stdenv.hostPlatform.system}".twilightsudo nixos-rebuild switchStart the browser with the command matching the chosen variant.
zen-betaPolicy overrides can be applied at package level.
inputs.zen-browser.packages."${pkgs.stdenv.hostPlatform.system}".default.override {
extraPolicies = {
DisableAppUpdate = true;
DisableTelemetry = true;
};
}The README's policy example sets DisableAppUpdate and DisableTelemetry to true. A note in the README also gives a beta-only input URL for keeping the flake input in sync with beta updates only: inputs.zen-browser.url = "github:0xc000022070/zen-browser-flake/beta".
Choosing twilight, beta or twilight-official
The three variants differ in where their artifacts come from. twilight is the recommended choice for reproducibility, because its artifacts are re-uploaded to this repository. twilight-official uses the official Zen artifacts instead, but the README warns that those artifacts are always replaced upstream, causing hash mismatches. beta tracks the beta branch and can be selected either through homeModules.beta or the beta package. The practical split is between a pinned, reproducible twilight build and a fresher but potentially hash-breaking official build. If you need a build that evaluates cleanly in CI or on another machine weeks later, twilight is the safer default; if you specifically want upstream's own artifacts, twilight-official carries that risk. The README does not state how often beta updates land or how long old twilight artifacts remain available.
Declarative configuration surface
Beyond the browser binary, the flake advertises a large declarative surface. The features list includes declarative workspaces with themes, icons and containers; declarative keyboard shortcuts with version protection; declarative mods installation from the Zen theme store; and declarative extension buttons pinned to the toolbar. The examples directory contains numbered configuration files covering basic Home Manager setup, policies and preferences, extensions and rycee.nix integration, mods, search engines, bookmarks, containers, spaces and themes, pinned tabs, keyboard shortcuts, userChrome CSS, complete setups, native messaging hosts, joined tabs, environment variables, live folders, space routing, extension buttons and Sine mods. Example 13 is described as a full real-world configuration, which is the best starting point for copying a working setup. Example 20 is Linux only, so Sine mods are not portable to macOS.
Where this flake is the wrong tool
There are several clear limits. It only helps Nix users: the supported platforms are x86_64-linux, aarch64-linux and aarch64-darwin, so Intel macOS and Windows are outside the stated support. It depends on nixpkgs and home-manager inputs staying compatible, and the README explicitly recommends nixpkgs-unstable for the latest Firefox version. The twilight-official variant can fail at evaluation time because upstream replaces release artifacts. Browser update checks are disabled by default, so a user who expects Zen to update itself will not get that behaviour unless policies are changed, and the README does not document the exact policy for re-enabling updates. The README does not document rollback, uninstall steps or migration between variants. Finally, the license field for the repository is unknown, so anyone redistributing or embedding the flake should check the repository files first.
Maintenance, licensing and upgrade cost
The repository is not archived. Its last push was on 2026-10-15, and recent releases are 1.24t-1792029325 on 2026-10-15, 1.24t-1791944801 on 2026-10-14 and 1.24t-1791769725 on 2026-10-12. That release cadence matches the claim of fast updates through GitHub Actions. Upgrade cost is mostly rebuild time and input drift: you follow or pin nixpkgs and home-manager, then rebuild with home-manager switch or nixos-rebuild switch. The main failure mode during upgrades is the twilight-official hash mismatch, which is a property of upstream artifact replacement rather than this flake's code. On licensing, the repository's license is listed as unknown, so read its license file before relying on it. Maintenance signals beyond the push date and archived flag are not available here.
Adoption judgement
Adopt this flake if you already manage a NixOS or Home Manager configuration and want Zen Browser, its policies, workspaces, shortcuts and mods declared in code and rebuilt with the rest of the system. Do not adopt it if you are not on Nix, if you need Intel macOS or Windows support, or if your workflow depends on twilight-official staying hash-stable across upstream artifact replacements. Before adopting, read the license file in the repository, choose twilight unless you specifically need upstream artifacts, and start from examples/13-complete-setup.nix to see a full configuration. Verify that your nixpkgs input is unstable if you need the latest Firefox version, because the README recommends that for compatibility.
Editorial conclusion
Adopt it if you already manage a NixOS or Home Manager configuration and want Zen Browser settings, spaces, shortcuts and mods declared in code. Skip it if you are not on Nix, or if you need the official upstream artifact hash to stay stable, because twilight-official can break when upstream replaces release artifacts. Before adopting, check the license file in the repository and pick twilight or beta according to whether you value reproducibility or newer builds.
Frequently asked questions
How do I set Zen Browser as my default browser with this flake?
The Home Manager example imports the module and sets programs.zen-browser.enable = true alongside setAsDefaultBrowser = true. After that, build with home-manager switch.
Which Zen Browser build should I choose for reproducible installs?
The README recommends the twilight package for reproducibility because its artifacts are re-uploaded to this repository. twilight-official uses upstream artifacts instead and can break when those are replaced.
Does this flake work on macOS and Apple Silicon?
Yes. The README lists Linux and macOS support and package options for x86_64-linux, aarch64-linux and aarch64-darwin.
Where can I find full configuration examples?
The examples directory contains numbered Nix files covering policies, extensions, mods, spaces, shortcuts and more. Example 13 is described as a full real-world configuration.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/0xc000022070-zen-browser-flake)Was this useful?