server/flake.nix
GHOSCHT 884fc94001
Integrate with OpenAPI contract
Just the generated types will be used. The server stubs are unusable, since JWT auth isn't really supported in the generator (it says it does but nothing is generated...)
2024-05-30 17:25:42 +02:00

83 lines
2.5 KiB
Nix

{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
systems.url = "github:nix-systems/default";
# Dev tools
treefmt-nix.url = "github:numtide/treefmt-nix";
};
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
systems = import inputs.systems;
imports = [
inputs.treefmt-nix.flakeModule
];
perSystem = {
config,
pkgs,
...
}: let
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
openapi-generator-version = "7.6.0";
openapi-generator = pkgs.openapi-generator-cli.overrideAttrs (prev: {
version = openapi-generator-version;
src = pkgs.fetchurl {
url = "mirror://maven/org/openapitools/${prev.pname}/${openapi-generator-version}/${prev.jarfilename}";
sha256 = "sha256-NQdL3TzfxGvpqQLhGlSj+qPK4eNOtmy9lZ0cgHC719c=";
};
});
nonRustDeps = with pkgs; [
libiconv
libudev-zero
pkg-config
postgresql
openssl
openapi-generator
just
];
rust-toolchain = pkgs.symlinkJoin {
name = "rust-toolchain";
paths = with pkgs; [rustc cargo cargo-watch rust-analyzer rustPlatform.rustcSrc];
};
udev-rule = builtins.readFile ./heliox.udev;
in {
# Rust package
packages.default = pkgs.rustPlatform.buildRustPackage {
inherit (cargoToml.package) name version;
src = ./.;
cargoLock.lockFile = ./Cargo.lock;
nativeBuildInputs = with pkgs; [pkg-config udev libudev-zero libpqxx openssl];
buildInputs = with pkgs; [udev libudev-zero libpqxx openssl];
postInstall = ''
mkdir -p $out/etc/udev/rules.d
echo '${udev-rule}' > $out/etc/udev/rules.d/70-heliox.rules
'';
};
# Rust dev environment
devShells.default = pkgs.mkShell {
inputsFrom = [
config.treefmt.build.devShell
];
buildInputs = nonRustDeps;
nativeBuildInputs = with pkgs;
[
rust-toolchain
diesel-cli
]
++ nonRustDeps;
RUST_BACKTRACE = 1;
};
treefmt.config = {
projectRootFile = "flake.nix";
programs = {
nixpkgs-fmt.enable = true;
rustfmt.enable = true;
};
};
};
};
}