Skip to content

Commit db0a77a

Browse files
committed
Source location fixes
1 parent 5d8a9ad commit db0a77a

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

overlays/haskell.nix

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ final: prev: {
682682
};
683683
};
684684
callProjectResults = callCabalProjectToNix config;
685+
nixFilesDir = callProjectResults.projectNix + callProjectResults.src.origSubDir;
685686
plan-pkgs = if !builtins.pathExists (callProjectResults.projectNix + "/plan.json")
686687
then
687688
# TODO remove this once all the materialized files are updated
@@ -696,13 +697,21 @@ final: prev: {
696697
name = to-key p;
697698
value.revision =
698699
{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")
701705
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+
} // {
703711
flags = p.flags;
704712
components = getComponents cabal2nix.components hsPkgs p;
705713
package = cabal2nix.package // {
714+
isProject = false;
706715
setup-depends = map (lookupDependency hsPkgs.pkgsBuildBuild) (p.setup.depends or []);
707716
# TODO = map lookupExeDependency (p.setup.exe-depends or []);
708717
};
@@ -719,11 +728,16 @@ final: prev: {
719728
name = to-key p;
720729
value =
721730
{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+
} // {
724737
flags = p.flags;
725738
components = getComponents cabal2nix.components hsPkgs p;
726739
package = cabal2nix.package // {
740+
isProject = true;
727741
setup-depends = map (lookupDependency hsPkgs.pkgsBuildBuild) (p.setup.depends or []);
728742
# TODO = map lookupExeDependency (p.setup.exe-depends or []);
729743
};

0 commit comments

Comments
 (0)