mirror of
https://git.dirksys.ovh/dirk/bankserver.git
synced 2025-12-20 02:59:20 +01:00
89 lines
2.0 KiB
Nix
89 lines
2.0 KiB
Nix
{
|
|
lib,
|
|
rustPlatform,
|
|
stdenv,
|
|
redocly,
|
|
yq-go,
|
|
targetPlatform,
|
|
pkgsBuildBuild,
|
|
rev ? "dirty",
|
|
}:
|
|
let
|
|
src = lib.fileset.toSource {
|
|
root = ./.;
|
|
fileset =
|
|
with lib.fileset;
|
|
intersection (gitTracked ./.) (unions [
|
|
(fileFilter (
|
|
file:
|
|
file.type == "directory"
|
|
|| file.hasExt "rs"
|
|
|| file.hasExt "toml"
|
|
|| file.name == "Cargo.lock"
|
|
|| file.hasExt "sql"
|
|
|| file.name == "openapi-def.yaml"
|
|
|| file.hasExt "html"
|
|
) ./.)
|
|
]);
|
|
};
|
|
cargoDeps = rustPlatform.importCargoLock {
|
|
lockFile = ./Cargo.lock;
|
|
outputHashes = {
|
|
"dbmigrator-0.4.4-alpha" = "sha256-Nwxw74IyZeZ9dODb+aneQmuQe0grO+g45B3zv1XaihE=";
|
|
};
|
|
};
|
|
schemas = pkgsBuildBuild.stdenv.mkDerivation {
|
|
pname = "bankingserver_schemas";
|
|
version = "unstable-${rev}";
|
|
inherit src cargoDeps;
|
|
cargoBuildType = "debug";
|
|
# "CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_LINKER" =
|
|
# "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
|
|
nativeBuildInputs = [
|
|
rustPlatform.cargoSetupHook
|
|
rustPlatform.rust.cargo
|
|
];
|
|
|
|
buildPhase = ''
|
|
touch openapi.json
|
|
cargo build --bin generate-schemas
|
|
target/debug/generate-schemas
|
|
runHook postBuild
|
|
'';
|
|
installPhase = ''
|
|
mkdir -p $out/share/bankserver
|
|
cp -r schemas $out/share/bankserver/schemas
|
|
'';
|
|
doCheck = false;
|
|
};
|
|
in
|
|
rustPlatform.buildRustPackage {
|
|
pname = "bankingserver";
|
|
version = "unstable-${rev}";
|
|
inherit src cargoDeps;
|
|
|
|
nativeBuildInputs = [
|
|
schemas
|
|
redocly
|
|
yq-go
|
|
];
|
|
|
|
preBuild = ''
|
|
echo "Schemas: ${schemas}"
|
|
cp -r ${schemas}/share/bankserver/schemas schemas
|
|
|
|
yq eval-all -n 'load("openapi-def.yaml") *n load("schemas/schemas.json")' > openapi-temp.yaml
|
|
redocly bundle openapi-temp.yaml -o openapi.json
|
|
'';
|
|
|
|
buildType = "debug";
|
|
|
|
cargoBuildFlags = "--bin bankserver";
|
|
|
|
CARGO_BUILD_TARGET = targetPlatform.config;
|
|
|
|
TARGET_CC = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
|
|
|
|
doCheck = false;
|
|
}
|