{ lib, src, version, nameSuffix, stdenv, unzip, zlib, icu, extensions ? [ ], extraLibraries ? [ ], features ? { }, featureFlags ? [ ], enableInteractive ? false, ... }: stdenv.mkDerivation (finalAttrs: { pname = "sqlite-amalgamation${nameSuffix}"; inherit version src; nativeBuildInputs = [ unzip ]; buildInputs = [ zlib ] ++ lib.optional features.ENABLE_ICU [ icu ]; # required for aarch64 but applied for all arches for simplicity preConfigure = '' patchShebangs configure ''; # sqlite relies on autosetup now; so many of the # previously-understood flags are gone. They should instead be set # on a per-output basis. setOutputFlags = false; configureFlags = lib.optional features.ENABLE_ICU [ "--enable-icu-collations" "--with-icu-config=${lib.getExe' icu.dev "icu-config"}" ]; env.NIX_CFLAGS_COMPILE = lib.concatStringsSep " " featureFlags; env.NIX_CFLAGS_LINK = lib.optionalString features.ENABLE_FTS5 "-lm"; env.CC_FOR_BUILD = "${stdenv.cc.targetPrefix}cc"; makeFlags = [ "sqlite3.c" "sqlite3.h" ]; installPhase = '' runHook preInstall install -Dm444 sqlite3.{c,h} -t "$out" runHook postInstall ''; })