{
  autoPatchelfHook,
  dotnetCorePackages,
  fontconfig,
  lib,
  libICE,
  libSM,
  libX11,
  stdenv,
  writeText,
}:
{
  # e.g.
  # "Package.Id" =
  #   package:
  #   package.overrideAttrs (old: {
  #     buildInputs = old.buildInputs or [ ] ++ [ hello ];
  #   });

  "Avalonia" =
    package:
    package.overrideAttrs (
      old:
      let
        # These versions have a runtime error when built with `dotnet publish --no-build`
        # When attempting to draw a window, Avalonia will throw "No precompiled XAML found"
        #
        # Introduced in https://github.com/AvaloniaUI/Avalonia/pull/13840
        # Fixed by https://github.com/AvaloniaUI/Avalonia/pull/16835
        affectedVersions = [
          "11.1.0-beta1"
          "11.1.0-beta2"
          "11.1.0-rc1"
          "11.1.0-rc2"
          "11.1.0"
          "11.1.1"
          "11.1.2-rc1"
          "11.1.2"
          "11.1.3"
          "11.2.0-beta1"
        ];
      in
      lib.optionalAttrs (builtins.elem old.version affectedVersions) {
        postPatch = ''
          substituteInPlace {build,buildTransitive}/AvaloniaBuildTasks.targets \
            --replace-fail 'BeforeTargets="CopyFilesToOutputDirectory;BuiltProjectOutputGroup"' \
                           'BeforeTargets="CopyFilesToOutputDirectory;BuiltProjectOutputGroup;ComputeResolvedFilesToPublishList"'
        '';
      }
    );

  "Avalonia.X11" =
    package:
    package.overrideAttrs (
      old:
      lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) {
        setupHook = writeText "setupHook.sh" ''
          prependToVar dotnetRuntimeDeps \
            "${lib.getLib libICE}" \
            "${lib.getLib libSM}" \
            "${lib.getLib libX11}"
        '';
      }
    );

  "SkiaSharp.NativeAssets.Linux" =
    package:
    package.overrideAttrs (
      old:
      lib.optionalAttrs stdenv.hostPlatform.isLinux {
        nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ autoPatchelfHook ];

        buildInputs = old.buildInputs or [ ] ++ [ fontconfig ];

        preInstall = old.preInstall or "" + ''
          cd runtimes
          for platform in *; do
            [[ $platform == "${dotnetCorePackages.systemToDotnetRid stdenv.hostPlatform.system}" ]] ||
              rm -r "$platform"
          done
          cd - >/dev/null
        '';
      }
    );
}
