This commit exposes that support for compilation without systemd,
controlled by the global systemdSupport argument. This argument is
understood by many other nixpkgs expressions and can be set globally
in ~/.config/nixpkgs/config.nix.
It is normal for such a large derivation to accumulate mixed codestyles
over all those years making it harder to maintain.
By splitting up dependencies to one per line I noticed two unused
dependencies (hunspell, sqlite) that were removed in this change.
Also most lists are now sorted alphabetically, so reasoning about them
has become much easier.
Lists now use the same style for indentation and concat, and environment
variables are all defined in preConfigure as opposed to bare in the
derivation.
The object dir, firefox build directory, is now in a predictable
directory at ${pwd}/mozobj as opposed to ${pwd}/obj-@CONFIG_GUESS@,
saving us one wildcard expansion. This is also a good prepration for the
PGO build where we need to reference bits inside this directory.
Added a few comments and clarified others from what I've learned how the
firefox build works.
Since Firefox 51 the --enable-system-ffi flag was renamed to
--with-systemd-ffi when it moved to the javascript toolkit parts. Rename
the flag accordingly and reintroduce the dependency.
mozbz#1294803
Darwin support was marked broken in 2019 with Firefox 69 and has missed
therefore missed out and not been tested on the following 29 major
releases since.
It cannot be supported again without a darwin user stepping up to take
care and work on and test every major release, which hasn't happened
since I took over maintainership.
The recommendation of the people that tend to the firefox source build
is for darwin users to use firefox-bin instead.
Firefox does not support passing pipewire as a system library and
instead relies on a vendored copy it ships. We keep the flag because it
is tied into the wrapper, because we still need to have access to its
libraries at runtime.
Tied to the geolocation support flag. On Linux this uses the DBus
interface of NetworkManager to query visible accesspoints and relay them
to Mozilla location service in return for position approximation.
This is for consistency with other extra arguments that can be handed to
firefox common.nix.
Also pull the patch phase of the derivation closer together and use the
same list concat style as elsewhere.
With Firefox 98.0 the remoting name now depends on the update channel
(mozbz#1752418), which resulted in a weird app_id/wmclass of
`firefox-default`, which broke window association in GNOME and likely
other desktops.
Fixes: #165107