@@ -682,6 +682,7 @@ final: prev: {
682
682
} ;
683
683
} ;
684
684
callProjectResults = callCabalProjectToNix config ;
685
+ nixFilesDir = callProjectResults . projectNix + callProjectResults . src . origSubDir ;
685
686
plan-pkgs = if ! builtins . pathExists ( callProjectResults . projectNix + "/plan.json" )
686
687
then
687
688
# TODO remove this once all the materialized files are updated
@@ -696,13 +697,21 @@ final: prev: {
696
697
name = to-key p ;
697
698
value . revision =
698
699
{ hsPkgs , ...} @args :
699
- let cabal2nix = ( if builtins . pathExists ( callProjectResults . projectNix + "/cabal-files/${ p . pkg-name } .nix" )
700
- then import ( callProjectResults . projectNix + "/cabal-files/${ p . pkg-name } .nix" )
700
+ let cabal2nix = (
701
+ if builtins . pathExists ( nixFilesDir + "/cabal-files/${ p . pkg-name } .nix" )
702
+ then import ( nixFilesDir + "/cabal-files/${ p . pkg-name } .nix" )
703
+ else if builtins . pathExists ( nixFilesDir + "/.plan.nix/${ p . pkg-name } .nix" )
704
+ then import ( nixFilesDir + "/.plan.nix/${ p . pkg-name } .nix" )
701
705
else ( ( ( hackage . ${ p . pkg-name } ) . ${ p . pkg-version } ) . revisions ) . default ) ( args // { hsPkgs = { } ; } ) ;
702
- in cabal2nix // {
706
+ in builtins . removeAttrs cabal2nix [ "src" ] // final . lib . optionalAttrs ( p ? pkg-src-sha256 ) {
707
+ sha256 = p . pkg-src-sha256 ;
708
+ } // final . lib . optionalAttrs ( p . pkg-src . type or "" == "source-repo" ) {
709
+ src = final . lib . lists . elemAt callProjectResults . sourceRepos ( final . lib . strings . toInt p . pkg-src . source-repo . location ) ;
710
+ } // {
703
711
flags = p . flags ;
704
712
components = getComponents cabal2nix . components hsPkgs p ;
705
713
package = cabal2nix . package // {
714
+ isProject = false ;
706
715
setup-depends = map ( lookupDependency hsPkgs . pkgsBuildBuild ) ( p . setup . depends or [ ] ) ;
707
716
# TODO = map lookupExeDependency (p.setup.exe-depends or []);
708
717
} ;
@@ -719,11 +728,16 @@ final: prev: {
719
728
name = to-key p ;
720
729
value =
721
730
{ hsPkgs , ...} @args :
722
- let cabal2nix = import ( callProjectResults . projectNix + "/.plan.nix/${ p . pkg-name } .nix" ) ( args // { hsPkgs = { } ; } ) ;
723
- in builtins . removeAttrs cabal2nix [ "src" ] // {
731
+ let cabal2nix = import ( nixFilesDir + "/.plan.nix/${ p . pkg-name } .nix" ) ( args // { hsPkgs = { } ; } ) ;
732
+ in builtins . removeAttrs cabal2nix [ "src" ] // final . lib . optionalAttrs ( p ? pkg-src-sha256 ) {
733
+ sha256 = p . pkg-src-sha256 ;
734
+ } // final . lib . optionalAttrs ( p . pkg-src . type or "" == "local" ) {
735
+ src = callProjectResults . src + final . lib . removePrefix "${ callProjectResults . src . origSubDir } /." p . pkg-src . path ;
736
+ } // {
724
737
flags = p . flags ;
725
738
components = getComponents cabal2nix . components hsPkgs p ;
726
739
package = cabal2nix . package // {
740
+ isProject = true ;
727
741
setup-depends = map ( lookupDependency hsPkgs . pkgsBuildBuild ) ( p . setup . depends or [ ] ) ;
728
742
# TODO = map lookupExeDependency (p.setup.exe-depends or []);
729
743
} ;
0 commit comments