graphql-engine/v3/flake.nix
Daniel Chambers 7efcb2e4f6 Fix custom connector schema and update all tests to use up-to-date schema (#826)
This PR fixes the custom connector whose schema endpoint doesn't
actually return correct output (it was missing some
functions/procedures, etc). Then it updates all tests that actually talk
to the custom connector with the latest version of its
schema/capabilities in their DataConnectorLink.

This test update is done by a new script added to the justfile that
finds and patches all metadata json files and inserts the new schema and
capabilities after reading them from the custom connector running in
docker.

V3_GIT_ORIGIN_REV_ID: f1825a6f74ddcb6c01198fe4a41de6b4fc0bf533
2024-07-11 14:15:58 +00:00

237 lines
8.1 KiB
Nix

{
description = "DDN Engine";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
crane = {
url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
};
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
};
outputs = { self, nixpkgs, flake-utils, crane, rust-overlay }:
flake-utils.lib.eachDefaultSystem
(localSystem:
let
version = pkgs.lib.strings.fileContents ./nix/version;
pkgs = import nixpkgs {
system = localSystem;
overlays = [ rust-overlay.overlays.default ];
};
rust = import ./nix/rust.nix {
inherit nixpkgs rust-overlay crane localSystem;
};
rust-x86_64-linux = (import ./nix/rust.nix {
inherit nixpkgs rust-overlay crane localSystem;
crossSystem = "x86_64-linux";
});
rust-aarch64-linux = (import ./nix/rust.nix {
inherit nixpkgs rust-overlay crane localSystem;
crossSystem = "aarch64-linux";
});
in
{
formatter = pkgs.nixpkgs-fmt;
packages = {
###### ENGINE
# engine binary for whichever is the local machine
engine = rust.callPackage ./nix/app.nix {
inherit version;
pname = "engine";
};
# engine binary for x86_64-linux
engine-x86_64-linux = rust-x86_64-linux.callPackage ./nix/app.nix {
inherit version;
pname = "engine";
};
# engine binary for aarch64-linux
engine-aarch64-linux = rust-aarch64-linux.callPackage ./nix/app.nix {
inherit version;
pname = "engine";
};
# engine docker files for whichever is the local machine
engine-docker = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.engine;
image-name = "ghcr.io/hasura/v3-engine";
tag = "dev";
port = "3000";
};
# engine docker for x86_64-linux
engine-docker-x86_64-linux = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.engine-x86_64-linux;
architecture = "amd64";
image-name = "ghcr.io/hasura/v3-engine";
port = "3000";
};
# engine docker for aarch64-linux
engine-docker-aarch64-linux = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.engine-aarch64-linux;
architecture = "arm64";
image-name = "ghcr.io/hasura/v3-engine";
port = "3000";
};
default = self.packages.${localSystem}.engine;
###### CUSTOM_CONNECTOR
# custom-connector binary for whichever is the local machine
custom-connector = rust.callPackage ./nix/app.nix {
inherit version;
pname = "custom-connector";
};
# custom-connector binary for x86_64-linux
custom-connector-x86_64-linux = rust-x86_64-linux.callPackage ./nix/app.nix {
inherit version;
pname = "custom-connector";
};
# custom-connector binary for aarch64-linux
custom-connector-aarch64-linux = rust-aarch64-linux.callPackage ./nix/app.nix {
inherit version;
pname = "custom-connector";
};
# custom-connector docker files for whichever is the local machine
custom-connector-docker = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.custom-connector;
image-name = "ghcr.io/hasura/v3-custom-connector";
tag = "dev";
port = "8181";
};
# custom-connector docker for x86_64-linux
custom-connector-docker-x86_64-linux = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.custom-connector-x86_64-linux;
architecture = "amd64";
image-name = "ghcr.io/hasura/v3-custom-connector";
port = "8181";
};
# custom-connector docker for aarch64-linux
custom-connector-docker-aarch64-linux = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.custom-connector-aarch64-linux;
architecture = "arm64";
image-name = "ghcr.io/hasura/v3-custom-connector";
port = "8181";
};
###### DEV-AUTH-WEBHOOK
# dev-auth-webhook binary for whichever is the local machine
dev-auth-webhook = rust.callPackage ./nix/app.nix {
inherit version;
pname = "dev-auth-webhook";
};
# dev-auth-webhook binary for x86_64-linux
dev-auth-webhook-x86_64-linux = rust-x86_64-linux.callPackage ./nix/app.nix {
inherit version;
pname = "dev-auth-webhook";
};
# dev-auth-webhook binary for aarch64-linux
dev-auth-webhook-aarch64-linux = rust-aarch64-linux.callPackage ./nix/app.nix {
inherit version;
pname = "dev-auth-webhook";
};
# dev-auth-webhook docker files for whichever is the local machine
dev-auth-webhook-docker = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.dev-auth-webhook;
image-name = "ghcr.io/hasura/v3-dev-auth-webhook";
tag = "dev";
port = "3050";
};
# dev-auth-webhook docker for x86_64-linux
dev-auth-webhook-docker-x86_64-linux = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.dev-auth-webhook-x86_64-linux;
architecture = "amd64";
image-name = "ghcr.io/hasura/v3-dev-auth-webhook";
port = "3050";
};
# dev-auth-webhook docker for aarch64-linux
dev-auth-webhook-docker-aarch64-linux = pkgs.callPackage ./nix/docker.nix {
package = self.packages.${localSystem}.dev-auth-webhook-aarch64-linux;
architecture = "arm64";
image-name = "ghcr.io/hasura/v3-dev-auth-webhook";
port = "3050";
};
### SCRIPTS
publish-docker-image = pkgs.writeShellApplication {
name = "publish-docker-image";
runtimeInputs = with pkgs; [ coreutils skopeo ];
text = builtins.readFile ./.github/scripts/deploy.sh;
};
};
apps = {
default = self.apps.${localSystem}.engine;
engine = flake-utils.lib.mkApp {
drv = self.packages.${localSystem}.engine;
name = "engine";
};
dev-auth-webhook = flake-utils.lib.mkApp {
drv = self.packages.${localSystem}.dev-auth-webhook;
name = "dev-auth-webhook";
};
custom-connector = flake-utils.lib.mkApp {
drv = self.packages.${localSystem}.custom-connector;
name = "custom-connector";
};
};
devShells = {
default = pkgs.mkShell {
# include dependencies of the default package
inputsFrom = [ self.packages.${localSystem}.default ];
# build-time inputs
nativeBuildInputs = [
# Development
pkgs.just
pkgs.moreutils
pkgs.nixpkgs-fmt
pkgs.nodePackages.prettier
# Rust
pkgs.bacon
pkgs.cargo-edit
pkgs.cargo-expand
pkgs.cargo-flamegraph
pkgs.cargo-insta
pkgs.cargo-machete
pkgs.cargo-nextest
pkgs.cargo-watch
rust.rustToolchain
];
};
};
});
}