generated from phundrak/rust-poem-openapi-template
Lucien Cartier-Tilet
a2ea5a157d
This commit separates the core features of géjdr from the backend as these will also be used by the bot in the future. This commit also updates the dependencies of the project. It also removes the dependency lettre as well as the mailpit docker service for developers as it appears clearer this project won’t send emails anytime soon. The publication of a docker image is also postponed until later.
92 lines
2.8 KiB
Nix
92 lines
2.8 KiB
Nix
{
|
|
description = "Backend for GéJDR, a Discord helper tool for the TTRPG L'Anneau Unique";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
|
|
flake-utils.lib.eachSystem ["x86_64-linux"] (system:
|
|
let
|
|
overlays = [ (import rust-overlay) ];
|
|
pkgs = import nixpkgs { inherit system overlays; };
|
|
rustVersion = (pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml);
|
|
rustPlatform = pkgs.makeRustPlatform {
|
|
cargo = rustVersion;
|
|
rustc = rustVersion;
|
|
};
|
|
|
|
appNameBackend = "gejdr-backend";
|
|
appNameBot = "gejdr-bot";
|
|
|
|
appRustBuildBackend = rustPlatform.buildRustPackage {
|
|
pname = appNameBackend;
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
cargoLock.lockFile = ./Cargo.lock;
|
|
buildPhase = ''
|
|
cd gejdr-backend
|
|
SQLX_OFFLINE="1" cargo build --release --bin gejdr-backend
|
|
'';
|
|
installPhase = ''
|
|
cargo install --path . --root "$out/bin/"
|
|
'';
|
|
};
|
|
appRustBuildBot = rustPlatform.buildRustPackage {
|
|
pname = appNameBot;
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
cargoLock.lockFile = ./Cargo.lock;
|
|
buildPhase = ''
|
|
SQLX_OFFLINE="1" cargo build --release --bin gejdr-bot
|
|
'';
|
|
};
|
|
|
|
dockerImageBackend = pkgs.dockerTools.buildLayeredImage {
|
|
name = appNameBackend;
|
|
tag = "latest";
|
|
config = {
|
|
Entrypoint = [ "${appRustBuildBackend}/bin/${appNameBackend}" ];
|
|
Env = [ "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" ];
|
|
Tag = "latest";
|
|
};
|
|
contents = [ appRustBuildBackend pkgs.cacert ];
|
|
};
|
|
dockerImageBot = pkgs.dockerTools.buildLayeredImage {
|
|
name = appNameBot;
|
|
tag = "latest";
|
|
fromImageTag = "latest";
|
|
config = {
|
|
Entrypoint = [ "${appRustBuildBot}/bin/${appNameBot}" ];
|
|
Env = [ "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" ];
|
|
Tag = "latest";
|
|
};
|
|
contents = [ appRustBuildBot pkgs.cacert ];
|
|
};
|
|
in {
|
|
packages = {
|
|
backend = appRustBuildBot;
|
|
bot = appRustBuildBot;
|
|
dockerBackend = dockerImageBackend;
|
|
dockerBot = dockerImageBot;
|
|
};
|
|
defaultPackage = dockerImageBackend;
|
|
devShell = with pkgs; mkShell {
|
|
buildInputs = [
|
|
bacon
|
|
cargo
|
|
cargo-audit
|
|
cargo-auditable
|
|
cargo-tarpaulin
|
|
just
|
|
rust-analyzer
|
|
(rustVersion.override { extensions = [ "rust-src" ]; })
|
|
sqls
|
|
sqlx-cli
|
|
];
|
|
};
|
|
});
|
|
}
|