{ pkgs, ... }:
let
# Build from our own nixpkgs so DingTalk, the wayland screen-share hook it
# LD_PRELOADs, and the system binaries they spawn all share one glibc. A
# pkgsu-built (glibc 2.44) hook aborts in those children with
# `GLIBC_2.43' not found.
#
# Do NOT unset LD_PRELOAD in the hook's constructor: DingTalk's conference
# child (`tblive`) is the process that does the X11 screen capture, and it only
# starts the portal screencast (= the display picker) because of the preload.
dingtalk = pkgs.callPackage (pkgs.nur.repo-sources.yakkhini.outPath + "/pkgs/dingtalk") {
# Dropped from stable nixpkgs, but `lib/doctor` links it.
# shortcut: unstable's gtkglext expr; re-check on pkgsu bumps.
gtkglext = pkgs.callPackage (pkgs.pkgsu.path + "/pkgs/by-name/gt/gtkglext/package.nix") { };
};
in
{
home.packages = [
# As there is not dingtalk in nixpkgs, so we use dingtalk in nur.
dingtalk
];
# Cachix long-build-time packages, see ~/.local/state/nix-output-monitor/build-reports.csv
cachix_packages = (
# openssl: 3min+ build time)
builtins.filter
(p: pkgs.lib.hasInfix "openssl" p)
dingtalk.buildInputs
);
}