diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/dotnet/combine-deps.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/dotnet/combine-deps.nix | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/dotnet/combine-deps.nix b/nixpkgs/pkgs/development/compilers/dotnet/combine-deps.nix new file mode 100644 index 000000000000..a7c4356b34b0 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/dotnet/combine-deps.nix @@ -0,0 +1,40 @@ +{ + list, + baseRid, + otherRids, + pkgs ? import ../../../.. {} +}: +with pkgs.lib; +let + inherit (pkgs) writeText; + + fns = map (file: import file) list; + packages = unique + (concatMap (fn: fn { fetchNuGet = package: package; }) fns); + + changePackageRid = package: rid: + let replace = replaceStrings [".${baseRid}"] [".${rid}"]; + in rec { + pname = replace package.pname; + inherit (package) version; + url = replace package.url; + sha256 = builtins.hashFile "sha256" (builtins.fetchurl url); + }; + + expandPackage = package: + [ package ] ++ + optionals (strings.match ".*\\.${baseRid}(\\..*|$)" package.pname != null) + (map (changePackageRid package) otherRids); + + allPackages = + sortOn (package: [ package.pname package.version package ]) + (concatMap expandPackage packages); + + fetchExpr = package: + " (fetchNuGet ${generators.toPretty { multiline = false; } package})"; + +in writeText "deps.nix" '' + { fetchNuGet }: [ + ${concatMapStringsSep "\n" fetchExpr allPackages} + ] +'' |