about summary refs log tree commit diff
path: root/pkgs/development/tools/haskell/hadrian/hadrian.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-11-10 15:18:19 +0100
committerAlyssa Ross <hi@alyssa.is>2023-11-10 15:18:19 +0100
commitafabc4a15d5ba6631bd4d865b8be37fc67d52809 (patch)
tree2342d9e8bd8b4cfbfee2b9a98c088df9f1c809ca /pkgs/development/tools/haskell/hadrian/hadrian.nix
parent9a0c85ffc5aedc46b4d81f3b9fc22d7f488e3ff9 (diff)
parent714e527a726c9613fca8e13586a1b19198d68d9b (diff)
downloadnixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.tar
nixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.tar.gz
nixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.tar.bz2
nixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.tar.lz
nixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.tar.xz
nixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.tar.zst
nixlib-afabc4a15d5ba6631bd4d865b8be37fc67d52809.zip
Merge remote-tracking branch 'origin/master' into HEAD
Conflicts:
	pkgs/development/libraries/SDL2/default.nix
Diffstat (limited to 'pkgs/development/tools/haskell/hadrian/hadrian.nix')
-rw-r--r--pkgs/development/tools/haskell/hadrian/hadrian.nix55
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;
+}