{ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs }: let inherit (nixpkgs) lib; systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: lib.genAttrs systems (system: f system nixpkgs.legacyPackages.${system}); in { mkSqlite = import ./src/mk-sqlite.nix { inherit lib; }; packages = forAllSystems (system: pkgs: let productVars = { enableMinimal = [ true false ]; enableDebug = [ true false ]; enableInteractive = [ true false ]; }; in lib.mergeAttrsList (lib.mapCartesianProduct ({ enableMinimal, enableDebug, enableInteractive, }: let result = self.mkSqlite { inherit pkgs enableMinimal enableDebug enableInteractive; }; in { "sqlite${result._suffix}" = result.sqlite; "sqlite-amalgamation${result._suffix}" = result.amalgamation; "sqlite-cli${result._suffix}" = result.sqlite-cli; "sqlite-static${result._suffix}" = result.sqlite-static; }) productVars)); checks = forAllSystems (system: pkgs: let sqlite-example-exts-static = pkgs.stdenv.mkDerivation { name = "sqlite-example-exts-static"; src = ./sqlite-example-exts; env.NIX_CFLAGS_COMPILE = "-DSQLITE_CORE"; buildInputs = with pkgs; [ sqlite.dev ]; buildPhase = '' runHook preBuild "$CC" -c addext.c "$AR" rcs libaddext.a addext.o "$CC" -c subext.c "$AR" rcs libsubext.a subext.o runHook postBuild ''; installPhase = '' runHook preInstall install -Dm444 *.a -t "$out/lib" runHook postInstall ''; }; sqlite-with-static-exts = self.mkSqlite { inherit pkgs; extensions = [ { library = "${sqlite-example-exts-static}/lib/libaddext.a"; init = "sqlite3_addext_init"; } { library = "${sqlite-example-exts-static}/lib/libsubext.a"; init = "sqlite3_subext_init"; } ]; }; in { inherit sqlite-example-exts-static; sqlite-with-static-ext = sqlite-with-static-exts.sqlite; sqlite-cli-with-static-ext = sqlite-with-static-exts.sqlite-cli; }); }; }