{ lib, stdenv, haskellPackages, haskell # “Plugins” are a fancy way of saying gitit will invoke # GHC at *runtime*, which in turn makes it pull GHC # into its runtime closure. Only enable if you really need # that feature. But if you do you’ll want to use gitit # as a library anyway. , pluginSupport ? false }: let inherit (haskell.lib.compose) enableCabalFlag disableCabalFlag justStaticExecutables overrideCabal ; base = (if pluginSupport then enableCabalFlag else disableCabalFlag) "plugins" haskellPackages.gitit; # Removes erroneous references from dead code that GHC can't eliminate aarch64DarwinFix = overrideCabal (drv: lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) { postInstall = '' ${drv.postInstall or ""} remove-references-to -t ${haskellPackages.HTTP} "$out/bin/gitit" remove-references-to -t ${haskellPackages.HTTP} "$out/bin/expireGititCache" remove-references-to -t ${haskellPackages.happstack-server} "$out/bin/gitit" remove-references-to -t ${haskellPackages.hoauth2} "$out/bin/gitit" remove-references-to -t ${haskellPackages.pandoc} "$out/bin/gitit" remove-references-to -t ${haskellPackages.pandoc-types} "$out/bin/gitit" ''; }); in if pluginSupport then base else lib.pipe (base.override { ghc-paths = null; }) [ justStaticExecutables aarch64DarwinFix ]