From bcb3a62673f9f6b8e047320c255f4195fc1e09ae Mon Sep 17 00:00:00 2001 From: Ian-Woo Kim Date: Wed, 25 May 2022 18:25:48 -0700 Subject: [PATCH] correct stdenv replacement for ghc build. --- flake.nix | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index 81212b9..a73416b 100644 --- a/flake.nix +++ b/flake.nix @@ -140,12 +140,31 @@ overlayGHC = final: prev: { haskellPackages = let ps = prev.haskell.packages.${ghcVer}; in if useClang then - ps.override { + let + newLlvmPackages = if ghcVer == "ghc901" then + prev.llvmPackages_9 + else + prev.llvmPackages_12; + newStdenv = newLlvmPackages.stdenv; + in ps.override { ghc = - final.buildPackages.haskell.compiler.${ghcVer}.override { + prev.buildPackages.haskell.compiler.${ghcVer}.override { useLLVM = true; + llvmPackages = newLlvmPackages; + targetPackages = prev.targetPackages.extend + (self: super: { stdenv = newStdenv; }); + pkgsHostTarget = prev.pkgsHostTarget.extend + (self: super: { + targetPackages = super.targetPackages.extend + (sself: super: { stdenv = newStdenv; }); + }); + pkgsBuildTarget = prev.pkgsBuildTarget.extend + (self: super: { + targetPackages = super.targetPackages.extend + (sself: super: { stdenv = newStdenv; }); + }); }; - stdenv = prev.clangStdenv; + stdenv = newStdenv; } else ps; @@ -177,10 +196,20 @@ mkUserShell = { ghcVer, useClang ? false }: let pkgs = mkPkgs { inherit ghcVer useClang; }; + newStdenv = if useClang then + let + newLlvmPackages = if ghcVer == "ghc901" then + pkgs.llvmPackages_9 + else + pkgs.llvmPackages_12; + in newLlvmPackages.stdenv + else + pkgs.stdenv; + hsenv = pkgs.haskellPackages.ghcWithPackages (ps: builtins.map (name: ps.${name}) categorifierCPackageNames); mkShell_ = if useClang then - pkgs.mkShell.override { stdenv = pkgs.clangStdenv; } + pkgs.mkShell.override { stdenv = newStdenv; } else pkgs.mkShell; in mkShell_ {