GHOSCHT
884fc94001
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...)
83 lines
2.5 KiB
Nix
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;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|