65 lines
2.1 KiB
Nix
65 lines
2.1 KiB
Nix
target: let
|
|
pkgs = target.crossPkgs;
|
|
rustVersion = pkgs.rust-bin.stable.latest.default.override {
|
|
targets = [target.triple];
|
|
};
|
|
rustPlatform = target.crossPkgs.makeRustPlatform {
|
|
cargo = rustVersion;
|
|
rustc = rustVersion;
|
|
};
|
|
cargoToml = fromTOML (builtins.readFile ../backend/Cargo.toml);
|
|
inherit (cargoToml.package) name version;
|
|
rustBuild = rustPlatform.buildRustPackage {
|
|
pname = name;
|
|
inherit version;
|
|
src = pkgs.lib.cleanSource ../.;
|
|
cargoLock.lockFile = ../Cargo.lock;
|
|
# cargoVendorDir = "vendor";
|
|
useNextest = true;
|
|
meta = {
|
|
inherit (cargoToml.package) description homepage;
|
|
};
|
|
};
|
|
settingsDir = pkgs.runCommand "settings" {} ''
|
|
mkdir -p $out/settings
|
|
cp ${../backend/settings}/*.yaml $out/settings/
|
|
'';
|
|
makeDockerImage = tag:
|
|
pkgs.dockerTools.buildLayeredImage {
|
|
name = "phundrak/${name}";
|
|
contents = [rustBuild pkgs.cacert settingsDir];
|
|
config = {
|
|
name = "phundrak/${name}";
|
|
inherit tag;
|
|
created = "now";
|
|
};
|
|
config = {
|
|
Entrypoint = ["${rustBuild}/bin/${name}"];
|
|
WorkingDir = "/";
|
|
Env = [
|
|
"SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
|
|
];
|
|
ExposedPorts = {
|
|
"3100/tcp" = {};
|
|
};
|
|
Labels = {
|
|
"org.opencontainers.image.title" = name;
|
|
"org.opencontainers.image.version" = version;
|
|
"org.opencontainers.image.description" = "REST API backend for STA";
|
|
"org.opencontainers.image.authors" = "Lucien Cartier-Tilet <lucien@phundrak.com>";
|
|
"org.opencontainers.image.licenses" = "AGPL-3.0-only";
|
|
"org.opencontainers.image.source" = "https://labs.phundrak.com/phundrak/sta";
|
|
"org.opencontainers.image.url" = "https://labs.phundrak.com/phundrak/sta";
|
|
"org.opencontainers.image.documentation" = "https://labs.phundrak.com/phundrak/sta";
|
|
"org.opencontainers.image.vendor" = "Phundrak";
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
backend = rustBuild;
|
|
docker = {
|
|
default = makeDockerImage version;
|
|
latest = makeDockerImage "latest";
|
|
};
|
|
}
|