Something went wrong. Try again.
flake for building a declarative fusesoc dev environment
Something went wrong. Try again.
1.4 kB · 46 lines
Nix
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647{ lib, parseDependency, unique,}:let parseDeps = coreDrv: map parseDependency ( builtins.concatLists (lib.mapAttrsToList (n: v: v.depend or [ ]) (coreDrv.core.filesets or { })) );
fetchDepsShallow = coreDrv: coreSet: builtins.filter (x: !(isNull x)) ( map ( req: let existing = builtins.filter ( dep: ({ inherit (dep.parsed) vendor library name; } == { inherit (req) vendor library name; }) && (req.condition dep.version) ) coreDrv.dependencies; in if existing != [ ] then # Use existing dependency if already set (builtins.head existing) else (lib.findFirst (dep: req.condition dep.version) null ( coreSet.${req.vendor}.${req.library}.${req.name}.list or (lib.warn "unable to find suitable dependency ${req.vendor}:${req.library}:${req.name} for core ${coreDrv.parsed.vendor}:${coreDrv.parsed.library}:${coreDrv.parsed.name}:${coreDrv.version}" [ ] ) )) ) (parseDeps coreDrv) );
fetchDepsRecursive = coreDrv: coreSet: let deps = fetchDepsShallow coreDrv coreSet; in deps ++ (builtins.concatMap (dep: fetchDepsRecursive dep coreSet) deps);
incoreDrv: coreSet: unique (fetchDepsRecursive coreDrv coreSet)