From 49c21c9fb87197f8aa9ffe901b0cbd4bb5ea29a1 Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Sat, 10 Feb 2024 22:28:49 +0100 Subject: [PATCH] nix: Minimize withTools dependencies --- default.nix | 1 + nix/overlays/default.nix | 1 + nix/overlays/minimal.nix | 61 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 nix/overlays/minimal.nix diff --git a/default.nix b/default.nix index c8a92431e3..d34a9c2662 100644 --- a/default.nix +++ b/default.nix @@ -47,6 +47,7 @@ let allOverlays.postgresql-future (allOverlays.haskell-packages { inherit compiler; }) allOverlays.slocat + (allOverlays.minimal { inherit compiler; }) ]; # Evaluated expression of the Nixpkgs repository. diff --git a/nix/overlays/default.nix b/nix/overlays/default.nix index 7d913d1ae5..8f2c5ff4c7 100644 --- a/nix/overlays/default.nix +++ b/nix/overlays/default.nix @@ -3,6 +3,7 @@ checked-shell-script = import ./checked-shell-script; gitignore = import ./gitignore.nix; haskell-packages = import ./haskell-packages.nix; + minimal = import ./minimal.nix; postgresql-libpq = import ./postgresql-libpq.nix; postgresql-legacy = import ./postgresql-legacy.nix; postgresql-future = import ./postgresql-future.nix; diff --git a/nix/overlays/minimal.nix b/nix/overlays/minimal.nix new file mode 100644 index 0000000000..0996b936b7 --- /dev/null +++ b/nix/overlays/minimal.nix @@ -0,0 +1,61 @@ +# This overlay reduces the closure size of our nix tooling to as much as possible. +# This makes rebuilding, downloading from cachix and thus CI faster. +{ compiler }: +self: super: +let + haskellLib = super.haskell.lib; + + minimizePostgresql = drv: drv.overrideAttrs (finalAttrs: prevAttrs: { + buildInputs = [ + self.readline + self.zlib + self.openssl + self.libxml2 + ]; + + configureFlags = [ + "--libdir=$(lib)/lib" + "--sysconfdir=/etc" + "--with-libxml" + "--with-openssl" + "--with-system-tzdata=${self.tzdata}/share/zoneinfo" + "--without-icu" + ]; + }); +in +{ + haskell = super.haskell // { + packages = super.haskell.packages // { + "${compiler}" = super.haskell.packages."${compiler}".override (prev: { + ghc = prev.ghc.override { + enableDocs = false; + enableHaddockProgram = false; + enableProfiledLibs = false; + enableRelocatedStaticLibs = true; + enableShared = false; + libffi = null; + }; + + overrides = self.lib.composeExtensions prev.overrides (self: super: { + mkDerivation = args: super.mkDerivation (args // { + doCheck = false; + doHaddock = false; + doHoogle = false; + enableExecutableProfiling = false; + enableLibraryProfiling = false; + }); + + # TODO: Remove once https://github.com/NixOS/nixpkgs/pull/287794 is done. + aeson = haskellLib.dontCheck super.aeson; + }); + }); + }; + }; + + postgresql_16 = minimizePostgresql super.postgresql_16; + postgresql_15 = minimizePostgresql super.postgresql_15; + postgresql_14 = minimizePostgresql super.postgresql_14; + postgresql_13 = minimizePostgresql super.postgresql_13; + postgresql_12 = minimizePostgresql super.postgresql_12; + postgresql_11 = minimizePostgresql super.postgresql_11; +}