{ description = "Overlay for a policy-configurable non-ESR Firefox"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs }: let pkgs = import nixpkgs { system = "x86_64-linux"; }; in rec { packages.x86_64-linux = rec { default = firefox-patched-unwrapped; firefox-patched-unwrapped = (pkgs.firefox-unwrapped.override (prev: { buildMozillaMach = args: ((prev.buildMozillaMach args).override ({ geolocationSupport = false; googleAPISupport = false; drmSupport = false; requireSigning = false; allowAddonSideload = true; })).overrideAttrs (oldAttrs: rec { patches = oldAttrs.patches ++ [ # I want to preconfigure the search engine settings to make # DuckDuckGo the default search engine and remove most of the # others. For some reason, Mozilla is scared of allowing # managed policies to set the default search engine in non-ESR # firefox. This is a two-line patch to remove that # restriction. # https://github.com/mozilla/policy-templates/issues/484 ./allow-searchengines-policy.patch # Firefox disables about:debugging when manual addon # installation is disabled by policy, since it can be used # to sideload. I want managed addons *and* debugging. ./allow-debugging.patch ]; }); })); }; overlay = final: prev: { inherit (packages.x86_64-linux) firefox-patched-unwrapped; }; }; }