mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-28 00:24:18 +00:00
57 lines
1.2 KiB
Nix
57 lines
1.2 KiB
Nix
{
|
|
list,
|
|
baseRid,
|
|
otherRids,
|
|
pkgs ? import ../../../.. { },
|
|
}:
|
|
let
|
|
inherit (pkgs) writeText;
|
|
|
|
inherit (pkgs.lib)
|
|
concatMap
|
|
concatMapStringsSep
|
|
generators
|
|
optionals
|
|
replaceStrings
|
|
sortOn
|
|
strings
|
|
unique
|
|
;
|
|
|
|
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
|
|
]) (concatMap expandPackage packages);
|
|
|
|
fetchExpr = package: " (fetchNuGet ${generators.toPretty { multiline = false; } package})";
|
|
|
|
in
|
|
writeText "deps.nix" ''
|
|
{ fetchNuGet }: [
|
|
${concatMapStringsSep "\n" fetchExpr allPackages}
|
|
]
|
|
''
|