Initial import

This commit is contained in:
Mikael 2024-11-16 16:04:35 +01:00
commit eb93c34f85
Signed by: mikael
SSH key fingerprint: SHA256:21QyD2Meiot7jOUVitIR5YkGB/XuXdCvLW1hE6dsri0
4 changed files with 246 additions and 0 deletions

7
.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
# Hidden files
.*
!.git*
# Nix
/result
/result-*

27
flake.lock Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1731531548,
"narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "24f0d4acd634792badd6470134c387a3b039dace",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

70
flake.nix Normal file
View file

@ -0,0 +1,70 @@
{
description = "Custom Firefox build";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
nixConfig = {
extra-experimental-features = [ "pipe-operator" "pipe-operators" ];
extra-substituters = [ "https://cache.kyouma.net" ];
extra-trusted-public-keys = [ "cache.kyouma.net:Frjwu4q1rnwE/MnSTmX9yx86GNA/z3p/oElGvucLiZg=" ];
};
outputs = { self, nixpkgs, ... }: let
inherit (nixpkgs) lib;
in {
packages = lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: let
pkgs = nixpkgs.legacyPackages.${system}.pkgsMusl;
mimalloc = pkgs.mimalloc.override { secureBuild = true; };
in {
default = self.packages.${system}.firefox;
firefox = (pkgs.wrapFirefox self.packages.${system}.firefox-unwrapped {
extraPoliciesFiles = [ ./policy.nix ];
}).overrideAttrs (prevAttrs: {
buildCommand = prevAttrs.buildCommand + ''
sed -i \
-e '$i export MIMALLOC_PURGE_DELAY=150' \
-e '$i export MIMALLOC_PURGE_DECOMMITS=0' \
-e '$i export MIMALLOC_RESERVE_HUGE_OS_PAGES=2' \
"$out/bin/firefox"
'';
});
firefox-unwrapped = ((pkgs.buildMozillaMach {
pname = "firefox";
inherit (pkgs.firefox-beta-unwrapped)
src version meta tests;
extraConfigureFlags = [
"--enable-default-toolkit=cairo-gtk3-wayland-only"
];
extraBuildInputs = [ mimalloc ];
}).overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // {
LDFLAGS = lib.toList prevAttrs.env.LDFLAGS or [ ] ++ [ "-lmimalloc" ] |> toString;
};
})).override {
alsaSupport = false;
ffmpegSupport = true;
gssSupport = false;
jackSupport = false;
jemallocSupport = false;
ltoSupport = true;
pgoSupport = true;
pipewireSupport = true;
pulseaudioSupport = true;
sndioSupport = false;
waylandSupport = true;
crashreporterSupport = false;
googleAPISupport = false;
};
});
hydraJobs = self.packages |> lib.foldlAttrs (jobs: system: packages: lib.recursiveUpdate jobs
(lib.mapAttrs (name: package: { ${system} = package; }) packages)) { };
};
}

142
policy.nix Normal file
View file

@ -0,0 +1,142 @@
{
CaptivePortal = false;
Cookies = {
Behavior = "reject-tracker-and-partition-foreign";
BehivorPrivateBrowsing = "reject-tracker-and-partition-foreign";
};
DNSOverHTTPS.Enabled = false;
DisableEncryptedClientHello = false;
DisableFeedbackCommands = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DontCheckDefaultBrowser = true;
EnableTrackingProtection = {
Value = true;
Cryptomining = true;
Fingerprinting = true;
EmailTracking = true;
};
EncryptedMediaExtensions.Enabled = true;
ExtensionSettings = [
{
"@testpilot-containers" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi";
};
"uBlock0@raymondhill.net" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
};
"gdpr@cavi.au.dk" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi";
}
"jid1-BoFifL9Vbdl2zQ@jetpack" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi";
};
}
];
FirefoxHome = {
SponsoredTopSites = false;
SponsoredPocket = false;
};
FirefoxSuggest = {
SponsoredSuggestions = false;
ImproveSuggest = false;
};
HardwareAcceleration = true;
HomePage.StartPage = "previous-session";
HttpsOnlyMode = "force_enabled";
NewTabPage = false;
OverrideFirstRunPage = "";
OverrideFirstRunPage = "";
PDFjs = {
Enabled = true;
EnablePermissions = false;
};
Permissions.AutoPlay.Default = "block-audio-video";
PopupBlocking.Default = true;
PostQuantumKeyAgreementEnabled = true;
Preferences = let
default = value: {
Status = "default";
Value = value;
};
locked = value: {
Status = "locked";
Value = value;
};
in {
# cache
"browser.cache.memory.enable" = default true;
"browser.cache.memory.capacity" = default 262144;
"browser.cache.disk.enable" = default true;
"browser.cache.disk.capacity" = default 16777216;
# hardware acceleration
"gfx.webrender.all" = default true;
"media.ffmpeg.vaapi.enabled" = default true;
# disable Normandy
"app.normandy.enabled" = locked false;
"app.normandy.api_url" = locked "";
"app.shield.optoutstudies.enabled" = locked false;
# disable sending of file hashes
"browser.safebrowsing.downloads.remote.enabled" = default false;
"browser.safebrowsing.downloads.remote.url" = default "";
# disable accessibility
"accessibility.force_disabled" = default true;
# disable crash reporting
"browser.tabs.crashReporting.sendReport" = locked false;
"breakpad.reportURL" = locked "";
# disable beacon API
"beacon.enabled" = locked false;
# disable pings
"browser.send_pings" = locked false;
# strip crossorigin referrers
"network.http.referrer.XOriginTrimmingPolicy" = default 2;
# strip tracking query parameters
"privacy.query_stripping.enabled" = default true;
"privacy.query_stripping.enabled.pbmode" = default true;
# TLS
"security.ssl.require_safe_negotiation" = default true;
"security.tls.hello_downgrade_check" = default true;
"security.OCSP.enabled" = default 1;
"security.OCSP.require" = default true;
"security.cert_pinning.enforcement_level" = default 2;
"security.pki.crlite_mode" = default 2;
# enable ECN
"network.http.http3.ecn" = default true;
};
PromptForDownloadLocation = true;
ShowHomeButton = false;
SSLVersionMin = "tls1.3";
TranslateEnabled = true;
}