|
17 | 17 | url = "github:ethereum/tests/v12.2";
|
18 | 18 | flake = false;
|
19 | 19 | };
|
| 20 | + cabal-head = { |
| 21 | + url = "github:haskell/cabal"; |
| 22 | + flake = false; |
| 23 | + }; |
20 | 24 | };
|
21 | 25 |
|
22 |
| - outputs = { self, nixpkgs, flake-utils, solidity, ethereum-tests, foundry, ... }: |
| 26 | + outputs = { self, nixpkgs, flake-utils, solidity, ethereum-tests, foundry, cabal-head, ... }: |
23 | 27 | flake-utils.lib.eachDefaultSystem (system:
|
24 | 28 | let
|
25 |
| - pkgs = nixpkgs.legacyPackages.${system}; |
| 29 | + pkgs = (import nixpkgs { inherit system; config = { allowBroken = true; }; }); |
26 | 30 | testDeps = with pkgs; [
|
27 | 31 | go-ethereum
|
28 | 32 | solc
|
|
32 | 36 | foundry.defaultPackage.${system}
|
33 | 37 | ];
|
34 | 38 |
|
| 39 | + # custom package set capable of building latest (unreleased) `cabal-install`. |
| 40 | + # This gives us support for multiple home units in cabal repl |
| 41 | + cabal-multi-pkgs = pkgs.haskell.packages.ghc94.override { |
| 42 | + overrides = with pkgs.haskell.lib; self: super: rec { |
| 43 | + cabal-install = dontCheck (self.callCabal2nix "cabal-install" "${cabal-head}/cabal-install" {}); |
| 44 | + cabal-install-solver = dontCheck (self.callCabal2nix "cabal-install-solver" "${cabal-head}/cabal-install-solver" {}); |
| 45 | + Cabal-described = dontCheck (self.callCabal2nix "Cabal-described" "${cabal-head}/Cabal-described" {}); |
| 46 | + Cabal-QuickCheck = dontCheck (self.callCabal2nix "Cabal-QuickCheck" "${cabal-head}/Cabal-QuickCheck" {}); |
| 47 | + Cabal-tree-diff = dontCheck (self.callCabal2nix "Cabal-tree-diff" "${cabal-head}/Cabal-tree-diff" {}); |
| 48 | + Cabal-syntax = dontCheck (self.callCabal2nix "Cabal-syntax" "${cabal-head}/Cabal-syntax" {}); |
| 49 | + Cabal = dontCheck (self.callCabal2nix "Cabal" "${cabal-head}/Cabal" {}); |
| 50 | + unix = dontCheck (doJailbreak super.unix_2_8_1_1); |
| 51 | + filepath = dontCheck (doJailbreak super.filepath_1_4_100_3); |
| 52 | + process = dontCheck (doJailbreak super.process_1_6_17_0); |
| 53 | + directory = dontCheck (doJailbreak (super.directory_1_3_7_1)); |
| 54 | + tasty = dontCheck (doJailbreak super.tasty); |
| 55 | + QuickCheck = dontCheck (doJailbreak super.QuickCheck); |
| 56 | + hashable = dontCheck (doJailbreak super.hashable); |
| 57 | + async = dontCheck (doJailbreak super.async); |
| 58 | + hspec-meta = dontCheck (doJailbreak super.hspec-meta); |
| 59 | + hpc = dontCheck (doJailbreak super.hpc); |
| 60 | + ghci = dontCheck (doJailbreak super.ghci); |
| 61 | + ghc-boot = dontCheck (doJailbreak super.ghc-boot); |
| 62 | + setenv = dontCheck (doJailbreak super.setenv); |
| 63 | + vector = dontCheck (doJailbreak super.vector); |
| 64 | + network-uri = dontCheck (doJailbreak super.network-uri); |
| 65 | + aeson = dontCheck (doJailbreak super.aeson); |
| 66 | + th-compat = dontCheck (doJailbreak super.th-compat); |
| 67 | + safe-exceptions = dontCheck (doJailbreak super.safe-exceptions); |
| 68 | + bifunctors = dontCheck (doJailbreak super.bifunctors); |
| 69 | + base-compat-batteries = dontCheck (doJailbreak super.base-compat-batteries); |
| 70 | + distributative = dontCheck (doJailbreak super.distributative); |
| 71 | + semialign = dontCheck (doJailbreak super.semialign); |
| 72 | + semigroupoids = dontCheck (doJailbreak super.semigroupoids); |
| 73 | + hackage-security = dontCheck (doJailbreak super.hackage-security); |
| 74 | + }; |
| 75 | + }; |
| 76 | + |
35 | 77 | secp256k1-static = stripDylib (pkgs.secp256k1.overrideAttrs (attrs: {
|
36 | 78 | configureFlags = attrs.configureFlags ++ [ "--enable-static" ];
|
37 | 79 | }));
|
|
144 | 186 | in haskellPackages.shellFor {
|
145 | 187 | packages = _: [ hevmUnwrapped ];
|
146 | 188 | buildInputs = [
|
| 189 | + # cabal from nixpkgs |
| 190 | + # haskellPackages.cabal-install |
| 191 | + cabal-multi-pkgs.cabal-install |
147 | 192 | mdbook
|
148 | 193 | yarn
|
149 |
| - haskellPackages.cabal-install |
150 | 194 | haskellPackages.eventlog2html
|
151 | 195 | haskellPackages.haskell-language-server
|
152 | 196 | ] ++ testDeps;
|
153 | 197 | withHoogle = true;
|
154 | 198 |
|
155 |
| - # NOTE: hacks for bugged cabal new-repl |
| 199 | + # NOTE: hacks for bugged cabal repl |
156 | 200 | LD_LIBRARY_PATH = libraryPath;
|
157 | 201 | HEVM_SOLIDITY_REPO = solidity;
|
158 | 202 | DAPP_SOLC = "${pkgs.solc}/bin/solc";
|
|
0 commit comments