mirror of
https://git.dirksys.ovh/dirk/bankserver.git
synced 2025-12-20 02:59:20 +01:00
170 lines
4.7 KiB
Nix
170 lines
4.7 KiB
Nix
{
|
|
description = "A very basic flake";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "flake:nixpkgs";
|
|
rust-overlay = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
rust-overlay,
|
|
}:
|
|
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 = [
|
|
(import rust-overlay)
|
|
(_: final: overlay final)
|
|
];
|
|
}
|
|
)
|
|
);
|
|
overlay =
|
|
pkgs:
|
|
let
|
|
rev = self.shortRev or "dirty";
|
|
cargoDeps =
|
|
platform:
|
|
platform.importCargoLock {
|
|
lockFile = ./Cargo.lock;
|
|
outputHashes = {
|
|
"dbmigrator-0.4.4-alpha" = "sha256-Nwxw74IyZeZ9dODb+aneQmuQe0grO+g45B3zv1XaihE=";
|
|
};
|
|
};
|
|
mkRustPlatform =
|
|
pkgs: rustVersion:
|
|
pkgs.makeRustPlatform {
|
|
cargo = rustVersion;
|
|
rustc = rustVersion;
|
|
};
|
|
buildRustVersion = pkgs.pkgsBuildBuild.rust-bin.stable.latest.minimal;
|
|
buildRustPlatform = mkRustPlatform pkgs.pkgsBuildBuild buildRustVersion;
|
|
schemas = pkgs.pkgsBuildBuild.stdenv.mkDerivation {
|
|
pname = "bankingserver_schemas";
|
|
version = "unstable-${rev}";
|
|
inherit src;
|
|
cargoDeps = cargoDeps buildRustPlatform;
|
|
cargoBuildType = "debug";
|
|
# "CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_LINKER" =
|
|
# "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
|
|
nativeBuildInputs = [
|
|
buildRustPlatform.cargoSetupHook
|
|
buildRustVersion
|
|
pkgs.pkgsBuildBuild.pkg-config
|
|
];
|
|
buildInputs = [ pkgs.pkgsBuildBuild.openssl ];
|
|
|
|
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;
|
|
};
|
|
|
|
rustVersion = pkgs.pkgsBuildHost.rust-bin.fromRustupToolchain {
|
|
channel = "stable";
|
|
targets = [
|
|
pkgs.pkgsBuildHost.targetPlatform.rust.rustcTarget
|
|
pkgs.pkgsBuildHost.buildPlatform.rust.rustcTarget
|
|
];
|
|
};
|
|
rustPlatform = mkRustPlatform pkgs rustVersion;
|
|
|
|
bankserver = pkgs.callPackage ./package.nix {
|
|
inherit
|
|
src
|
|
rustPlatform
|
|
schemas
|
|
rev
|
|
;
|
|
cargoDeps = cargoDeps rustPlatform;
|
|
};
|
|
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
|
|
];
|
|
};
|
|
});
|
|
};
|
|
}
|