@@ -650,13 +650,24 @@ final: prev: {
650
650
builtins . unsafeDiscardStringContext (
651
651
builtins . readFile ( callProjectResults . projectNix + "/plan.json" ) ) ) ;
652
652
by-id = final . lib . listToAttrs ( map ( x : { name = x . id ; value = x ; } ) plan-json . install-plan ) ;
653
- to-key = p : if p . type == "pre-existing"
654
- then p . pkg-name
655
- else p . id ;
653
+ lookupPreExisting = depends :
654
+ final . lib . concatMap ( d : builtins . attrNames pre-existing-depends . ${ d } ) depends ;
655
+ pre-existing-depends =
656
+ final . lib . listToAttrs ( map ( p : {
657
+ name = p . id ;
658
+ value = final . lib . optionalAttrs ( p . type == "pre-existing" ) { ${ p . pkg-name } = null ; } //
659
+ final . lib . listToAttrs (
660
+ map ( dname : { name = dname ; value = null ; } ) ( lookupPreExisting ( p . depends or p . components . lib . depends ) ) ) ;
661
+ } ) plan-json . install-plan ) ;
662
+ to-key = p : p . id ;
656
663
lookupDependency = hsPkgs : d :
657
- if by-id . ${ d } . component-name or "lib" == "lib"
658
- then hsPkgs . ${ to-key by-id . ${ d } } or hsPkgs . ${ by-id . ${ d } . pkg-name }
659
- else hsPkgs . ${ to-key by-id . ${ d } } . components . sublibs . ${ final . lib . removePrefix "lib:" by-id . ${ d } . component-name } ;
664
+ final . lib . optional ( by-id . ${ d } . type != "pre-existing" ) (
665
+ if by-id . ${ d } . component-name or "lib" == "lib"
666
+ then hsPkgs . ${ to-key by-id . ${ d } } or hsPkgs . ${ by-id . ${ d } . pkg-name }
667
+ else hsPkgs . ${ to-key by-id . ${ d } } . components . sublibs . ${ final . lib . removePrefix "lib:" by-id . ${ d } . component-name } ) ;
668
+ lookupDependencies = hsPkgs : depends :
669
+ final . lib . concatMap ( lookupDependency hsPkgs ) depends
670
+ ++ lookupPreExisting depends ;
660
671
lookupExeDependency = hsPkgs : d :
661
672
# Try to lookup by ID, but if that fails use the name (currently a different plan is used by pkgsBuildBuild when cross compiling)
662
673
( hsPkgs . pkgsBuildBuild . ${ to-key by-id . ${ d } } or hsPkgs . pkgsBuildBuild . ${ by-id . ${ d } . pkg-name } ) . components . exes . ${ final . lib . removePrefix "exe:" by-id . ${ d } . component-name } ;
@@ -670,7 +681,7 @@ final: prev: {
670
681
name = final . lib . removePrefix "${ prefix } :" n ;
671
682
value = ( if cabal2nixComponents == null then { } else cabal2nixComponents . ${ collectionName } . ${ name } ) // {
672
683
buildable = true ;
673
- depends = map ( lookupDependency hsPkgs ) c . depends ;
684
+ depends = lookupDependencies hsPkgs c . depends ;
674
685
build-tools = map lookupExeDependency c . exe-depends ;
675
686
} ;
676
687
in { inherit name value ; }
@@ -680,7 +691,7 @@ final: prev: {
680
691
// final . lib . optionalAttrs ( components ? lib ) {
681
692
library = ( if cabal2nixComponents == null then { } else cabal2nixComponents . library ) // {
682
693
buildable = true ;
683
- depends = map ( lookupDependency hsPkgs ) components . lib . depends ;
694
+ depends = lookupDependencies hsPkgs components . lib . depends ;
684
695
build-tools = map ( lookupExeDependency hsPkgs ) components . lib . exe-depends ;
685
696
} ;
686
697
} ;
@@ -721,7 +732,7 @@ final: prev: {
721
732
package = cabal2nix . package // {
722
733
identifier = { name = p . pkg-name ; version = p . pkg-version ; } ;
723
734
isProject = false ;
724
- setup-depends = map ( lookupDependency hsPkgs . pkgsBuildBuild ) ( p . components . setup . depends or [ ] ) ;
735
+ setup-depends = lookupDependencies hsPkgs . pkgsBuildBuild ( p . components . setup . depends or [ ] ) ;
725
736
# TODO = map (lookupExeDependency hsPkgs.pkgsBuildBuild) (p.components.setup.exe-depends or []);
726
737
} ;
727
738
} ;
@@ -751,16 +762,14 @@ final: prev: {
751
762
package = cabal2nix . package // {
752
763
identifier = { name = p . pkg-name ; version = p . pkg-version ; } ;
753
764
isProject = true ;
754
- setup-depends = map ( lookupDependency hsPkgs . pkgsBuildBuild ) ( p . components . setup . depends or [ ] ) ;
765
+ setup-depends = lookupDependencies hsPkgs . pkgsBuildBuild ( p . components . setup . depends or [ ] ) ;
755
766
# TODO = map (lookupExeDependency hsPkgs.pkgsBuildBuild) (p.components.setup.exe-depends or []);
756
767
} ;
757
768
} ;
758
769
} ) plan-json . install-plan ) ;
759
770
} ) ;
760
771
modules = [ {
761
- preExistingPkgs =
762
- final . lib . concatMap ( p :
763
- final . lib . optional ( p . type == "pre-existing" ) p . pkg-name ) plan-json . install-plan ;
772
+ preExistingPkgs = [ ] ;
764
773
}
765
774
( { config , ...} : {
766
775
packages = final . lib . listToAttrs ( map ( p : {
0 commit comments