{ config, lib, ... }: let cfg = config.programs.zen-browser; firefoxCfg = config.programs.firefox; in { programs.zen-browser = { policies = firefoxCfg.policies; # "locked" semantic from zen (doesn't seem to be doing anything, attempted for zen-twilight 1.18t) # https://github.com/0xc000022070/zen-browser-flake/tree/main#preferences # # To check which option is mapped to which about:config # - back preference file # cp .zen/default/prefs.js{,.bk} # - click the buttons # - diff it # diff .zen/default/prefs.js{.bk,} profiles.default = lib.mkMerge [ firefoxCfg.profiles.default { # Zen specific settings = { "zen.theme.content-element-separation" = 0; # Remove "borders" around window }; } ]; }; xdg.mimeApps = let associations = lib.genAttrs [ "application/x-extension-shtml" "application/x-extension-xhtml" "application/x-extension-html" "application/x-extension-xht" "application/x-extension-htm" # "x-scheme-handler/unknown" # "x-scheme-handler/mailto" "x-scheme-handler/chrome" "x-scheme-handler/about" "x-scheme-handler/https" "x-scheme-handler/http" "application/xhtml+xml" # "application/json" # "text/plain" "text/html" ] (_: cfg.package.meta.desktopFileName); in lib.mkIf cfg.enable { associations.added = associations; defaultApplications = associations; }; }