haskellPackages.Agda: Split outputs to reduce closure size

After enabling a separate binary output for the `Agda` Haskell package,
the new `bin` output measures ~100MiB, compared to the ~4.5GiB before.
Using it in `agdaWithPackages` reduces the closure size of an Agda
installation from ~5GiB to ~3GiB. The remaining space is taken up
mostly by the GHC backend.

With this change, derivations depending on `haskellPackages.Agda`
directly need to pick the right (binary) output. This concerns in
particular `emacsPackages.agda2-mode`.

+13 -8
+7 -5
pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda2-mode/default.nix
··· 1 1 { trivialBuild 2 2 , haskellPackages 3 3 }: 4 - 5 - trivialBuild rec { 4 + let 5 + Agda = haskellPackages.Agda.bin; 6 + in 7 + trivialBuild { 6 8 pname = "agda-mode"; 7 - version = haskellPackages.Agda.version; 9 + version = Agda.version; 8 10 9 11 dontUnpack = true; 10 12 11 13 # already byte-compiled by Agda builder 12 14 buildPhase = '' 13 - agda=`${haskellPackages.Agda}/bin/agda-mode locate` 15 + agda=`${Agda}/bin/agda-mode locate` 14 16 cp `dirname $agda`/*.el* . 15 17 ''; 16 18 17 19 meta = { 18 - inherit (haskellPackages.Agda.meta) homepage license; 20 + inherit (Agda.meta) homepage license; 19 21 description = "Agda2-mode for Emacs extracted from Agda package"; 20 22 longDescription = '' 21 23 Wrapper packages that liberates init.el from `agda-mode locate` magic.
+4 -3
pkgs/build-support/agda/default.nix
··· 40 40 allPackages = withPackages (filter self.lib.isUnbrokenAgdaPackage (attrValues self)); 41 41 }; 42 42 }; 43 - inherit (Agda) meta; 43 + # Agda is a split package with multiple outputs; do not inherit them here. 44 + meta = removeAttrs Agda.meta [ "outputsToInstall" ]; 44 45 } '' 45 46 mkdir -p $out/bin 46 - makeWrapper ${Agda}/bin/agda $out/bin/agda \ 47 + makeWrapper ${Agda.bin}/bin/agda $out/bin/agda \ 47 48 --add-flags "--with-compiler=${ghc}/bin/ghc" \ 48 49 --add-flags "--library-file=${library-file}" 49 - ln -s ${Agda}/bin/agda-mode $out/bin/agda-mode 50 + ln -s ${Agda.bin}/bin/agda-mode $out/bin/agda-mode 50 51 ''; 51 52 52 53 withPackages = arg: if isAttrs arg then withPackages' arg else withPackages' { pkgs = arg; };
+2
pkgs/development/haskell-modules/configuration-nix.nix
··· 1073 1073 # very useful. 1074 1074 # Flag added in Agda 2.6.4.1, was always enabled before 1075 1075 (enableCabalFlag "debug") 1076 + # Split outputs to reduce closure size 1077 + enableSeparateBinOutput 1076 1078 ]; 1077 1079 1078 1080 # ats-format uses cli-setup in Setup.hs which is quite happy to write