122 lines
3.7 KiB
Nix
122 lines
3.7 KiB
Nix
{ compiler ? "ghc863"
|
|
|
|
, doBenchmark ? false
|
|
, doTracing ? false
|
|
, doOptimize ? false # enables GHC optimizations for production use
|
|
, doProfiling ? false # enables profiling support in GHC
|
|
, doStrict ? false
|
|
|
|
, withHoogle ? false
|
|
|
|
, rev ? "120eab94e0981758a1c928ff81229cd802053158"
|
|
, sha256 ? "0qk6k8gxx5xlkyg05dljywj5wx5fvrc3dzp4v2h6ab83b7zwg813"
|
|
|
|
, pkgs ?
|
|
if builtins.compareVersions builtins.nixVersion "2.0" < 0
|
|
then abort "hnix requires at least nix 2.0"
|
|
else import (builtins.fetchTarball {
|
|
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz";
|
|
inherit sha256; }) {
|
|
config.allowUnfree = true;
|
|
config.allowBroken = false;
|
|
config.packageOverrides = pkgs: rec {
|
|
nix = pkgs.nixUnstable.overrideDerivation (attrs: {
|
|
src = data/nix;
|
|
configureFlags = attrs.configureFlags ++ [ "--disable-doc-gen" ];
|
|
buildInputs = attrs.buildInputs ++
|
|
[ pkgs.editline.dev
|
|
];
|
|
outputs = builtins.filter (s: s != "doc" && s != "man" ) attrs.outputs;
|
|
});
|
|
};
|
|
}
|
|
|
|
, mkDerivation ? null
|
|
}:
|
|
|
|
let
|
|
|
|
hnix-store-src = pkgs.fetchFromGitHub {
|
|
owner = "haskell-nix";
|
|
repo = "hnix-store";
|
|
rev = "8cc6595803872b7effc4cbf97aec0b8723068212";
|
|
sha256 = "1scm72bxn4wx9r00m0l4h4kanlgq9fw5z1nfzi11d973b5pf1nf3";
|
|
};
|
|
|
|
overlay = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [
|
|
(import "${hnix-store-src}/overlay.nix")
|
|
(self: super: with pkgs.haskell.lib; {
|
|
mono-traversable = dontCheck super.mono-traversable;
|
|
these = doJailbreak super.these;
|
|
multistate = doJailbreak super.multistate;
|
|
|
|
brittany = doJailbreak (self.callCabal2nix "brittany"
|
|
(pkgs.fetchFromGitHub {
|
|
owner = "lspitzner";
|
|
repo = "brittany";
|
|
rev = "6c187da8f8166d595f36d6aaf419370283b3d1e9";
|
|
sha256 = "0nmnxprbwws3w1sh63p80qj09rkrgn9888g7iim5p8611qyhdgky";
|
|
# date = 2018-11-30T22:13:02+01:00;
|
|
}) {});
|
|
|
|
ghc-exactprint = dontCheck (self.callCabal2nix "ghc-exactprint"
|
|
(pkgs.fetchFromGitHub {
|
|
owner = "alanz";
|
|
repo = "ghc-exactprint";
|
|
rev = "281f65324fb1fcad8f5ceec06f5ea4c7d78cfb59";
|
|
sha256 = "1d6sjy5mw0jn09sgx7zn0w1gszn3mf6lzqsfv3li50fnvwv1gwzb";
|
|
# date = 2019-03-01T17:38:18+02:00;
|
|
}) {});
|
|
} // pkgs.lib.optionalAttrs withHoogle {
|
|
ghc = super.ghc // { withPackages = super.ghc.withHoogle; };
|
|
ghcWithPackages = self.ghc.withPackages;
|
|
})
|
|
];
|
|
|
|
overrideHaskellPackages = orig: {
|
|
buildHaskellPackages =
|
|
orig.buildHaskellPackages.override overrideHaskellPackages;
|
|
overrides = if orig ? overrides
|
|
then pkgs.lib.composeExtensions orig.overrides overlay
|
|
else overlay;
|
|
};
|
|
|
|
haskellPackages = pkgs.haskell.packages.${compiler}.override
|
|
overrideHaskellPackages;
|
|
|
|
drv = haskellPackages.developPackage {
|
|
name = "hnix";
|
|
root = ./.;
|
|
|
|
modifier = drv: pkgs.haskell.lib.overrideCabal drv (attrs: {
|
|
buildTools = (attrs.buildTools or []) ++ [
|
|
haskellPackages.cabal-install
|
|
haskellPackages.brittany
|
|
];
|
|
|
|
enableLibraryProfiling = doProfiling;
|
|
enableExecutableProfiling = doProfiling;
|
|
|
|
testHaskellDepends = attrs.testHaskellDepends ++ [
|
|
pkgs.nix
|
|
haskellPackages.criterion
|
|
];
|
|
|
|
inherit doBenchmark;
|
|
|
|
configureFlags =
|
|
pkgs.stdenv.lib.optional doTracing "--flags=tracing"
|
|
++ pkgs.stdenv.lib.optional doOptimize "--flags=optimize"
|
|
++ pkgs.stdenv.lib.optional doStrict "--ghc-options=-Werror";
|
|
|
|
passthru = {
|
|
nixpkgs = pkgs;
|
|
inherit haskellPackages;
|
|
};
|
|
});
|
|
|
|
returnShellEnv = false;
|
|
};
|
|
|
|
in drv
|