Unlike wrapQtAppsHook, wrapQtAppsNoGuiHook does not propagate qtwayland,
to reduce closure size for CLI or other non-GUI applications.
Co-authored-by: eclairevoyant <contactmeongithubinstead@proton.me>
qtwayland client side is the wayland platform plugin, provides a way to run Qt applications as Wayland clients
without this, Qt applications only work on x11/xwayland
Co-authored-by: Artturin <Artturin@artturin.com>
As of Qt 6.8, the macOS 15 SDK is supported for building, and support
for targeting macOS 11 has been dropped. (Another good reason for
supporting only 3 to 4 macOS releases.)
Previously the build and target SDKs were swapped, probably because the
dependency lists are in a confusing order. Move them into a central
place to reduce duplication and keep macOS platform support in one
prominent location.
Fixes: 830b9fe572
Qt Multimediate is being built with a newer SDK that has the new
definition, so don’t bother to patch it out anymore. The symbol is
defined in a backwards compatible way, so it will still work on older
releases that don’t have it in their SDKs.
Per upstream’s supported Darwin versions, built with the 14.4 SDK
(corresponding to Xcode 15) and a 11.0 deployment target. To ensure that
users of Qt have a compatible SDK and deployment target, propagate the
11.3 SDK and a 11.0 minimum version. Users that need a newer version can
opt into using it by adding the SDK package to their build inputs.
In preparation for the deprecation of `stdenv.isX`.
These shorthands are not conducive to cross-compilation because they
hide the platforms.
Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way
One example of why this is bad and especially affects compiler packages
https://www.github.com/NixOS/nixpkgs/pull/343059
There are too many files to go through manually but a treewide should
get users thinking when they see a `hostPlatform.isX` in a place where it
doesn't make sense.
```
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is"
fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is"
```
Per the adjusted FFmpeg pinning advice, packages that work on the
default version should use the unversioned variants to ease the
migration to future versions and reduce the number of packages that
end up referencing old versions.
I have left HandBrake pinned as it builds a custom patched FFmpeg.
Always specify the postPhases attribute as a list instead of a string.
Append elements to the postPhases Bash variable using appendToVar
instead of string or Bash array concatenation.
Always specify the prePhases attribute as a list instead of a string.
Append elements to the prePhases Bash variable using appendToVar
instead of string or Bash array concatenation.
For some reason qtwayland doesn't fail to configure if it can't find wayland-scanner,
and instead just builds nothing, so this wasn't noticed before.
Propagating wayland-scanner both ways because we need both the tool in /bin and
the protocols in cmake's search path.
Thank you to the Arch package maintainer for incorporating the WebRTC
patches (which I had previously manually added) the day before I went
to clean this up for PRing!