edit: for the solution, see my comment below
I need/want to build aeson and its subproject attoparsec-aeson from source (it’s a fork of the “official” aeson), but I’m stuck… can you help out?
The sources of attoparsec-aeson live in a subdirectory of the aeson ones, so I have the sources:
aeson-src = fetchFromGitHub {
...
};
and the “main” aeson library:
aeson = haskellPackages.mkDerivation {
pname = "aeson";
src = aeson-src;
...
};
When I get to attoparsec-aeson however I run into a wall: I tried to follow the documentation about sourceRoot
:
attoparsec-aeson = haskellPackages.mkDerivation {
pname = "attoparsec-aeson";
src = aeson-src;
sourceRoot = "./attoparsec-aeson"; # maybe this should be "${aeson-src}/attoparsec-aeson"?
# (it doesn't work either way)
...
};
but I get
error: function 'anonymous lambda' called with unexpected argument 'sourceRoot'
Did I fail to spot some major blunder (I am nowhere near an expert)?
Does sourceRoot
not apply to haskellPackages.mkDerivation
? What should I do to make it work?
BTW:
IDK if this may cause issues, but the attoparsec-aeson
sources include symlinks to files in the “main” attoparsec
sources:
~/git-clone-of-attoparsec-sources $ tree attoparsec-aeson/
attoparsec-aeson/
├── src
│ └── Data
│ └── Aeson
│ ├── Internal
│ │ ├── ByteString.hs -> ../../../../../src/Data/Aeson/Internal/ByteString.hs
│ │ ├── Text.hs -> ../../../../../src/Data/Aeson/Internal/Text.hs
│ │ └── Word8.hs -> ../../../../../src/Data/Aeson/Internal/Word8.hs
│ ├── Parser
│ │ └── Internal.hs
│ └── Parser.hs
├── attoparsec-aeson.cabal
└── LICENSE
I agree: flakes are great for development (and not only)!
Unfortunately I still need to build that third party project from source :)
Maybe I should look into disregarding the whole haskellPackages infrastructure and just build with cabal via a shell script… IDK if that would be accepted in nixpkgs though :/
True! I wonder if the same is true for deriving via cabal2nix.
cabal2nix doesn’t care about any
source-repository-package
incabal.project
(I think it doesn’t even read that file?).In my case, it generated a project that depended on the aeon from nixpkgs (which IIUC in turn comes from hackage) rather than the forked version.