diff options
Diffstat (limited to 'pkgs/development/tools/haskell/hadrian/hadrian.nix')
-rw-r--r-- | pkgs/development/tools/haskell/hadrian/hadrian.nix | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/pkgs/development/tools/haskell/hadrian/hadrian.nix b/pkgs/development/tools/haskell/hadrian/hadrian.nix new file mode 100644 index 000000000000..1be21d6f4519 --- /dev/null +++ b/pkgs/development/tools/haskell/hadrian/hadrian.nix @@ -0,0 +1,55 @@ +# See also ./make-hadria.nix +{ mkDerivation, base, bytestring, Cabal, containers, directory +, extra, filepath, lib, mtl, parsec, shake, text, transformers +, unordered-containers, cryptohash-sha256, base16-bytestring +, writeText + # Dependencies that are not on Hackage and only used in certain Hadrian versions +, ghc-platform ? null +, ghc-toolchain ? null + # GHC source tree to build hadrian from +, ghcSrc +, ghcVersion + # Customization +, userSettings ? null +, enableHyperlinkedSource +}: + +mkDerivation { + pname = "hadrian"; + version = ghcVersion; + src = ghcSrc; + postUnpack = '' + sourceRoot="$sourceRoot/hadrian" + ''; + patches = lib.optionals (!enableHyperlinkedSource) [ + ./disable-hyperlinked-source.patch + ]; + # Overwrite UserSettings.hs with a provided custom one + postPatch = lib.optionalString (userSettings != null) '' + install -m644 "${writeText "UserSettings.hs" userSettings}" src/UserSettings.hs + ''; + configureFlags = [ + # avoid QuickCheck dep which needs shared libs / TH + "-f-selftest" + # Building hadrian with -O1 takes quite some time with little benefit. + # Additionally we need to recompile it on every change of UserSettings.hs. + # See https://gitlab.haskell.org/ghc/ghc/-/merge_requests/1190 + "-O0" + ]; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base bytestring Cabal containers directory extra filepath mtl + parsec shake text transformers unordered-containers + ] ++ lib.optionals (lib.versionAtLeast ghcVersion "9.7") [ + cryptohash-sha256 base16-bytestring + ] ++ lib.optionals (lib.versionAtLeast ghcVersion "9.9") [ + ghc-platform ghc-toolchain + ]; + passthru = { + # Expose »private« dependencies if any + inherit ghc-platform ghc-toolchain; + }; + description = "GHC build system"; + license = lib.licenses.bsd3; +} |