Files
home-manager/tests/modules/programs/firefox/librewolf.nix
Austin Horstman 8695ecb389 tests/firefox: avoid building librewolf
Stub the Librewolf package in module tests so shared Firefox logic still runs without evaluating or building the insecure nixpkgs package.
2026-06-20 13:40:22 -05:00

84 lines
2.5 KiB
Nix

{ lib, ... }:
let
tests = import ./common.nix {
inherit lib;
name = "librewolf";
};
in
lib.mapAttrs (
_: test:
{ config, pkgs, ... }:
let
librewolfUnwrapped = config.lib.test.mkStubPackage {
name = "browser-unwrapped-test-stub";
extraAttrs = {
applicationName = "librewolf";
binaryName = "librewolf";
gtk3 = null;
libName = "librewolf";
meta.description = "I pretend to be LibreWolf";
meta.mainProgram = "librewolf";
};
outPath = null;
};
mkLibrewolf = lib.makeOverridable (
{
cfg ? { },
extraPolicies ? { },
pkcs11Modules ? [ ],
}:
config.lib.test.mkStubPackage {
name = "browser-test-stub";
buildScript =
let
policiesJson = pkgs.writeText "policies.json" (
builtins.seq cfg (
builtins.seq pkcs11Modules (
builtins.toJSON {
policies = config.programs.librewolf.policies // extraPolicies // { DownloadDirectory = "/foo"; };
}
)
)
);
in
''
mkdir -p "$out/bin"
mkdir -p "$out/lib/librewolf/distribution"
mkdir -p "$out/Applications/Librewolf.app/Contents/MacOS"
mkdir -p "$out/Applications/Librewolf.app/Contents/Resources/distribution"
cat > "$out/bin/librewolf" <<'EOF'
MOZ_APP_LAUNCHER=
EOF
chmod 755 "$out/bin/librewolf"
cp "$out/bin/librewolf" "$out/Applications/Librewolf.app/Contents/MacOS/librewolf"
cp ${policiesJson} "$out/lib/librewolf/distribution/policies.json"
cp ${policiesJson} "$out/Applications/Librewolf.app/Contents/Resources/distribution/policies.json"
'';
extraAttrs = {
browserName = "librewolf";
meta.mainProgram = "librewolf";
unwrapped = librewolfUnwrapped;
};
}
) { };
in
{
imports = [ test ];
# Librewolf is insecure in nixpkgs; use a small wrapper-shaped package and
# skip its generated native messaging host join so module tests do not
# evaluate or build the real browser closure.
nixpkgs.overlays = [
(_: _: {
librewolf = mkLibrewolf;
librewolf-unwrapped = librewolfUnwrapped;
})
];
mozilla.librewolfNativeMessagingHosts = lib.mkForce [ ];
programs.librewolf.package = lib.mkDefault mkLibrewolf;
}
) tests