diff options
Diffstat (limited to 'Biz/Bild/Overlay.nix')
-rw-r--r-- | Biz/Bild/Overlay.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Biz/Bild/Overlay.nix b/Biz/Bild/Overlay.nix new file mode 100644 index 0000000..b8fe269 --- /dev/null +++ b/Biz/Bild/Overlay.nix @@ -0,0 +1,56 @@ +_: pkgs: + +let + simpleCabalBuilder = self: name: + self.callCabal2nix name pkgs.sources.${name} {}; + buildCabal = self: name: subdir: + if isNull subdir then + self.callCabal2nix name pkgs.sources.${name} {} + else + self.callCabal2nix name (pkgs.sources.${name} + "/${subdir}") {}; +in rec +{ + pinnedDeps = builtins.attrNames + (builtins.removeAttrs pkgs.sources ["__functor"]); + overridePinnedDeps = builder: pkgs.lib.genAttrs pinnedDeps builder; + + # Modifies a derivation with our source and version, keeping old build + # rules. This will fail if build steps have changed, or if no build + # rules are available upstream.. + overrideSource = name: pkgs.${name}.overrideAttrs (old: old // rec { + name = "${name}-${version}"; + version = pkgs.sources.${name}.version or pkgs.sources.${name}.rev; + src = pkgs.sources.${name}; + }); + + haskell = pkgs.haskell // { + packages = pkgs.haskell.packages // { + ghc865 = pkgs.haskell.packages.ghc865.override (old: { + overrides = with pkgs.pkgs.haskell.lib; self: super: + overridePinnedDeps (simpleCabalBuilder self) // { + acid-state = dontCheck super.acid-state; # mac: "too many open files" + servant-auth = buildCabal self "servant-auth" "servant-auth"; + wai-middleware-metrics = dontCheck super.wai-middleware-metrics; + }; + }); + ghcjs = pkgs.haskell.packages.ghcjs.override (old: { + overrides = with pkgs.haskell.lib; self: super: + overridePinnedDeps (simpleCabalBuilder self) // { + Glob = dontCheck super.Glob; + QuickCheck = dontCheck super.QuickCheck; + base-compat-batteries = dontCheck super.http-types; + clay = dontCheck super.clay; + comonad = dontCheck super.comonad; + jsaddle-warp = dontCheck (self.callCabal2nix "jsaddle-warp" "${pkgs.sources.jsaddle}/jsaddle-warp" {}); + http-types = dontCheck super.http-types; + network-uri= dontCheck super.network-uri; + scientific = dontCheck super.scientific; # takes forever + servant = dontCheck super.servant; + servant-auth = buildCabal self "servant-auth" "servant-auth"; + tasty-quickcheck = dontCheck super.tasty-quickcheck; + time-compat = dontCheck super.time-compat; + }; + }); + }; + }; +} |