mirror of
https://git.dirksys.ovh/dirk/bankserver.git
synced 2025-12-19 18:49:20 +01:00
158 lines
4.0 KiB
Nix
158 lines
4.0 KiB
Nix
{
|
|
description = "A very basic flake";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "flake:nixpkgs";
|
|
crane.url = "github:ipetkov/crane";
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
crane,
|
|
}:
|
|
let
|
|
inherit (nixpkgs) lib;
|
|
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"
|
|
) ./.)
|
|
]);
|
|
};
|
|
|
|
forAllSystems =
|
|
function:
|
|
nixpkgs.lib.genAttrs
|
|
[
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
]
|
|
(
|
|
system:
|
|
function (
|
|
import nixpkgs {
|
|
inherit system;
|
|
overlays = [
|
|
(_: final: overlay final)
|
|
];
|
|
}
|
|
)
|
|
);
|
|
overlay =
|
|
pkgs:
|
|
let
|
|
buildCraneLib = crane.mkLib pkgs.buildPackages;
|
|
|
|
commonArgs = pkgs: {
|
|
inherit src;
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [ pkgs.buildPackages.pkg-config ];
|
|
|
|
env.OPENSSL_NO_VENDOR = true;
|
|
|
|
buildInputs = [ pkgs.openssl ];
|
|
|
|
# PKG_CONFIG_ALLOW_CROSS = if pkgs.stdenv.buildPlatform != pkgs.stdenv.hostPlatform then 1 else 0;
|
|
|
|
doCheck = false;
|
|
};
|
|
|
|
openapi = buildCraneLib.buildPackage (
|
|
let
|
|
common = (commonArgs pkgs.buildPackages);
|
|
in
|
|
common
|
|
// {
|
|
cargoArtifacts = buildCraneLib.buildDepsOnly common;
|
|
|
|
pnameSuffix = "-openapi.json";
|
|
|
|
nativeBuildInputs =
|
|
common.nativeBuildInputs
|
|
++ (with pkgs.buildPackages; [
|
|
yq-go
|
|
redocly
|
|
]);
|
|
|
|
cargoExtraArgs = "--bin generate-schemas";
|
|
|
|
preBuild = ''
|
|
touch openapi.json
|
|
'';
|
|
|
|
installPhaseCommand = ''
|
|
''${CARGO_TARGET_DIR:-target}/$CARGO_PROFILE/generate-schemas
|
|
rm -rf target
|
|
yq eval-all -n 'load("openapi-def.yaml") *n load("schemas/schemas.json")' > openapi-temp.yaml
|
|
redocly bundle openapi-temp.yaml -o openapi.json
|
|
cp openapi.json $out
|
|
'';
|
|
}
|
|
);
|
|
|
|
bankserver = pkgs.callPackage ./package.nix {
|
|
inherit src openapi;
|
|
commonArgs = commonArgs pkgs;
|
|
craneLib = crane.mkLib pkgs;
|
|
};
|
|
in
|
|
{
|
|
inherit bankserver;
|
|
bankserverDocker = pkgs.dockerTools.buildLayeredImage {
|
|
name = "bankserver";
|
|
# tag = "latest";
|
|
created = "now";
|
|
contents = [
|
|
bankserver
|
|
pkgs.catatonit
|
|
pkgs.cacert
|
|
];
|
|
config = {
|
|
Env = [ "HOST=::" ];
|
|
# Entrypoint = ["/bin/bankserver"];
|
|
Entrypoint = [
|
|
"/bin/catatonit"
|
|
"--"
|
|
];
|
|
Cmd = [ "/bin/bankserver" ];
|
|
ExposedPorts = {
|
|
"3845/tcp" = { };
|
|
};
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
packages = forAllSystems (pkgs: {
|
|
default = pkgs.bankserver;
|
|
dockerImage = pkgs.bankserverDocker;
|
|
dockerImage-cross-aarch64-linux = pkgs.pkgsCross.aarch64-multiplatform.bankserverDocker;
|
|
});
|
|
devShells = forAllSystems (pkgs: {
|
|
default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
hurl
|
|
redocly
|
|
yq-go
|
|
just
|
|
pkg-config
|
|
openssl
|
|
];
|
|
};
|
|
});
|
|
};
|
|
}
|