From 1f6cd35f5efa75edfcd8172f010eee71741e45ff Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 3 Sep 2024 23:33:28 -0300 Subject: [PATCH] dotnetCorePackages.fetchNupkg: add override mechanism --- .../dotnet/fetch-nupkg/default.nix | 117 +++++++++--------- .../dotnet/fetch-nupkg/overrides.nix | 9 ++ 2 files changed, 70 insertions(+), 56 deletions(-) create mode 100644 pkgs/build-support/dotnet/fetch-nupkg/overrides.nix diff --git a/pkgs/build-support/dotnet/fetch-nupkg/default.nix b/pkgs/build-support/dotnet/fetch-nupkg/default.nix index 031a8d50207a..07f1f2fc617f 100644 --- a/pkgs/build-support/dotnet/fetch-nupkg/default.nix +++ b/pkgs/build-support/dotnet/fetch-nupkg/default.nix @@ -6,6 +6,8 @@ unzip, patchNupkgs, nugetPackageHook, + callPackage, + overrides ? callPackage ./overrides.nix { }, }: { pname, @@ -15,61 +17,64 @@ url ? "https://www.nuget.org/api/v2/package/${pname}/${version}", installable ? false, }: -stdenvNoCC.mkDerivation rec { - inherit pname version; +let + package = stdenvNoCC.mkDerivation rec { + inherit pname version; - src = fetchurl { - name = "${pname}.${version}.nupkg"; - # There is no need to verify whether both sha256 and hash are - # valid here, because nuget-to-nix does not generate a deps.nix - # containing both. - inherit - url - sha256 - hash - version - ; + src = fetchurl { + name = "${pname}.${version}.nupkg"; + # There is no need to verify whether both sha256 and hash are + # valid here, because nuget-to-nix does not generate a deps.nix + # containing both. + inherit + url + sha256 + hash + version + ; + }; + + nativeBuildInputs = [ + unzip + patchNupkgs + nugetPackageHook + ]; + + unpackPhase = '' + runHook preUnpack + + unzip -nqd source $src + chmod -R +rw source + cd source + + runHook postUnpack + ''; + + prePatch = '' + shopt -s nullglob + local dir + for dir in tools runtimes/*/native; do + [[ ! -d "$dir" ]] || chmod -R +x "$dir" + done + rm -rf .signature.p7s + ''; + + installPhase = '' + runHook preInstall + + dir=$out/share/nuget/packages/${lib.toLower pname}/${lib.toLower version} + mkdir -p $dir + cp -r . $dir + echo {} > "$dir"/.nupkg.metadata + + runHook postInstall + ''; + + preFixup = '' + patch-nupkgs $out/share/nuget/packages + ''; + + createInstallableNugetSource = installable; }; - - nativeBuildInputs = [ - unzip - patchNupkgs - nugetPackageHook - ]; - - unpackPhase = '' - runHook preUnpack - - unzip -nqd source $src - chmod -R +rw source - cd source - - runHook postUnpack - ''; - - prePatch = '' - shopt -s nullglob - local dir - for dir in tools runtimes/*/native; do - [[ ! -d "$dir" ]] || chmod -R +x "$dir" - done - rm -rf .signature.p7s - ''; - - installPhase = '' - runHook preInstall - - dir=$out/share/nuget/packages/${lib.toLower pname}/${lib.toLower version} - mkdir -p $dir - cp -r . $dir - echo {} > "$dir"/.nupkg.metadata - - runHook postInstall - ''; - - preFixup = '' - patch-nupkgs $out/share/nuget/packages - ''; - - createInstallableNugetSource = installable; -} +in +overrides.${pname} or lib.id package diff --git a/pkgs/build-support/dotnet/fetch-nupkg/overrides.nix b/pkgs/build-support/dotnet/fetch-nupkg/overrides.nix new file mode 100644 index 000000000000..f00e41fb1fad --- /dev/null +++ b/pkgs/build-support/dotnet/fetch-nupkg/overrides.nix @@ -0,0 +1,9 @@ +{ autoPatchelfHook }: +{ + # e.g. + # "Package.Id" = + # package: + # package.overrideAttrs (old: { + # buildInputs = old.buildInputs or [ ] ++ [ hello ]; + # }); +}