@@ -55,19 +55,20 @@ let
55 (builtins.map (x: lib.nameValuePair (x.name) x)
55 (builtins.map (x: lib.nameValuePair (x.name) x)
56 (haskellLib.flatLibDepends {depends = directlySelectedComponents;}));
56 (haskellLib.flatLibDepends {depends = directlySelectedComponents;}));
58+ isSelectedComponent =
59+ comp: selectedComponentsBitmap."${((haskellLib.dependToLib comp).name or null)}" or false;
58 selectedComponentsBitmap =
60 selectedComponentsBitmap =
59 lib.mapAttrs
61 lib.mapAttrs
60− (_: x: (builtins.any
62+ (_: x: (builtins.any isSelectedComponent x.config.depends))
61− (dep: selectedComponentsBitmap."${(haskellLib.dependToLib dep).name}") x.config.depends))
62 transitiveDependenciesComponents
63 transitiveDependenciesComponents
63 // builtins.listToAttrs (map (x: lib.nameValuePair x.name true) directlySelectedComponents); # base case
64 // builtins.listToAttrs (map (x: lib.nameValuePair x.name true) directlySelectedComponents); # base case
65 selectedComponents =
66 selectedComponents =
66− lib.filter (x: selectedComponentsBitmap."${x.name}") (lib.attrValues transitiveDependenciesComponents);
67+ lib.filter isSelectedComponent (lib.attrValues transitiveDependenciesComponents);
68 # Given a list of `depends`, removes those which are selected components
69 # Given a list of `depends`, removes those which are selected components
69 removeSelectedInputs =
70 removeSelectedInputs =
70− lib.filter (input: !(selectedComponentsBitmap."${((haskellLib.dependToLib input).name or null)}" or false));
71+ lib.filter (input: !(isSelectedComponent input));
72 # The configs of all the selected components
73 # The configs of all the selected components
73 selectedConfigs = map (c: c.config) selectedComponents
74 selectedConfigs = map (c: c.config) selectedComponents