nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 symlinkJoin,
3 fetchurl,
4 stdenvNoCC,
5 lib,
6 unzip,
7 patchNupkgs,
8 nugetPackageHook,
9 callPackage,
10 overrides ? callPackage ./overrides.nix { },
11}:
12lib.makeOverridable (
13 {
14 pname,
15 version,
16 sha256 ? "",
17 hash ? "",
18 url ? "https://www.nuget.org/api/v2/package/${pname}/${version}",
19 installable ? false,
20 }:
21 let
22 package = stdenvNoCC.mkDerivation rec {
23 inherit pname version;
24
25 src = fetchurl {
26 name = "${pname}.${version}.nupkg";
27 # There is no need to verify whether both sha256 and hash are
28 # valid here, because nuget-to-json does not generate a deps.nix
29 # containing both.
30 inherit
31 url
32 sha256
33 hash
34 version
35 ;
36 };
37
38 nativeBuildInputs = [
39 unzip
40 patchNupkgs
41 nugetPackageHook
42 ];
43
44 unpackPhase = ''
45 runHook preUnpack
46
47 unpackNupkg "$src" source
48 cd source
49
50 runHook postUnpack
51 '';
52
53 prePatch = ''
54 shopt -s nullglob
55 local dir
56 for dir in tools runtimes/*/native; do
57 [[ ! -d "$dir" ]] || chmod -R +x "$dir"
58 done
59 rm -rf .signature.p7s
60 '';
61
62 installPhase = ''
63 runHook preInstall
64
65 dir=$out/share/nuget/packages/${lib.toLower pname}/${lib.toLower version}
66 mkdir -p $dir
67 cp -r . $dir
68 echo {} > "$dir"/.nupkg.metadata
69
70 runHook postInstall
71 '';
72
73 preFixup = ''
74 patch-nupkgs $out/share/nuget/packages
75 '';
76
77 createInstallableNugetSource = installable;
78
79 meta = {
80 sourceProvenance = with lib.sourceTypes; [
81 binaryBytecode
82 binaryNativeCode
83 ];
84 };
85 };
86 in
87 overrides.${pname} or lib.id package
88)