Compare commits

...
2 Commits
Author SHA1 Message Date
phundrak fd9bf0999b feat(Nix): change build paths and add Docker images 2026-08-30 12:47:24 +02:00
phundrak 47c66bcdac chore(backend): update dependencies 2026-08-30 12:47:24 +02:00
5 changed files with 504 additions and 553 deletions
+5
View File
@@ -0,0 +1,5 @@
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
+1
View File
@@ -57,3 +57,4 @@ result
/target /target
*.sqlite *.sqlite
/vendor/
Generated
+434 -528
View File
File diff suppressed because it is too large Load Diff
+8 -9
View File
@@ -47,21 +47,20 @@
triple = "aarch64-unknown-linux-gnu"; triple = "aarch64-unknown-linux-gnu";
}; };
}; };
mkRustBuild = import ./nix/backend.nix; rustBuilds = import ./nix/backend.nix;
packages = { packages = {
linux-x86_64 = mkRustBuild targets.linux-x86_64; x86_64 = rustBuilds targets.linux-x86_64;
linux-aarch64 = mkRustBuild targets.linux-aarch64; aarch64 = rustBuilds targets.linux-aarch64;
}; };
defaultBySystem = { defaultBySystem = {
"x86_64-linux" = packages.linux-x86_64; x86_64-linux = packages.x86_64;
"aarch64-linux" = packages.linux-aarch64; aarch64-linux = packages.aarch64;
}; };
in { in {
formatter = alejandra.defaultPackage.${system}; formatter = alejandra.defaultPackage.${system};
packages.backend = packages = {
packages backend = packages;
// { default = defaultBySystem.${system}.backend or packages.x86_64.backend;
default = defaultBySystem.${system} or packages.linux-x86_64;
}; };
devShell = import ./nix/shell.nix {inherit pkgs rustVersion;}; devShell = import ./nix/shell.nix {inherit pkgs rustVersion;};
} }
+55 -15
View File
@@ -1,18 +1,5 @@
target: let target: let
cargoToml = fromTOML (builtins.readFile ../backend/Cargo.toml);
inherit (cargoToml.package) name version;
pkgs = target.crossPkgs; pkgs = target.crossPkgs;
buildArgs = {
pname = name;
inherit version;
src = pkgs.lib.cleanSource ../.;
cargoLock.lockFile = ../Cargo.lock;
useNextest = true;
meta = {
inherit (cargoToml.package) description homepage;
};
postBuild = "${pkgs.upx}/bin/upx target/*/release/*${name}";
};
rustVersion = pkgs.rust-bin.stable.latest.default.override { rustVersion = pkgs.rust-bin.stable.latest.default.override {
targets = [target.triple]; targets = [target.triple];
}; };
@@ -20,5 +7,58 @@ target: let
cargo = rustVersion; cargo = rustVersion;
rustc = rustVersion; rustc = rustVersion;
}; };
in cargoToml = fromTOML (builtins.readFile ../backend/Cargo.toml);
rustPlatform.buildRustPackage buildArgs 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";
};
}