1
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs synced 2024-10-18 15:14:49 -04:00
nixpkgs/pkgs/build-support/dotnet/fetch-nupkg/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

89 lines
1.7 KiB
Nix
Raw Normal View History

{
symlinkJoin,
fetchurl,
stdenvNoCC,
lib,
unzip,
patchNupkgs,
nugetPackageHook,
callPackage,
overrides ? callPackage ./overrides.nix { },
}:
2024-09-20 21:08:12 -04:00
lib.makeOverridable (
{
pname,
version,
sha256 ? "",
hash ? "",
url ? "https://www.nuget.org/api/v2/package/${pname}/${version}",
installable ? false,
}:
let
package = stdenvNoCC.mkDerivation rec {
inherit pname version;
2024-09-20 21:08:12 -04:00
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
;
};
2024-09-20 21:08:12 -04:00
nativeBuildInputs = [
unzip
patchNupkgs
nugetPackageHook
];
2024-09-20 21:08:12 -04:00
unpackPhase = ''
runHook preUnpack
2024-09-20 21:08:12 -04:00
unpackNupkg "$src" source
cd source
2024-09-20 21:08:12 -04:00
runHook postUnpack
'';
2024-09-20 21:08:12 -04:00
prePatch = ''
shopt -s nullglob
local dir
for dir in tools runtimes/*/native; do
[[ ! -d "$dir" ]] || chmod -R +x "$dir"
done
rm -rf .signature.p7s
'';
2024-09-20 21:08:12 -04:00
installPhase = ''
runHook preInstall
2024-09-20 21:08:12 -04:00
dir=$out/share/nuget/packages/${lib.toLower pname}/${lib.toLower version}
mkdir -p $dir
cp -r . $dir
echo {} > "$dir"/.nupkg.metadata
2024-09-20 21:08:12 -04:00
runHook postInstall
'';
2024-09-20 21:08:12 -04:00
preFixup = ''
patch-nupkgs $out/share/nuget/packages
'';
2024-09-20 21:08:12 -04:00
createInstallableNugetSource = installable;
2024-09-20 21:08:12 -04:00
meta = {
sourceProvenance = with lib.sourceTypes; [
binaryBytecode
binaryNativeCode
];
};
};
2024-09-20 21:08:12 -04:00
in
overrides.${pname} or lib.id package
)