83 lines
2.9 KiB
Nix
83 lines
2.9 KiB
Nix
{
|
|
description = "NodeCames game server";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
|
|
build-gradle-application.url = "git+file:/home/mysaa/Documents/Projets/buildGradleApplication";#"github:raphiz/buildGradleApplication";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, build-gradle-application, ... }@inputs:
|
|
let system = "x86_64-linux";
|
|
pkgs = import nixpkgs { inherit system; overlays = [ build-gradle-application.overlays.default ]; };
|
|
lib = pkgs.lib;
|
|
jdk = pkgs.openjdk21;
|
|
gradle = pkgs.gradle;
|
|
version = "1.0";
|
|
|
|
nodecames = pkgs.buildGradleArtifact {
|
|
pname = "nodecames";
|
|
src = ./.;
|
|
buildTask = "bootJar";
|
|
installPhase = ''
|
|
cp -r "build/libs/" "$out"
|
|
'';
|
|
inherit version jdk gradle;
|
|
};
|
|
|
|
nodecames-launcher = pkgs.writeShellScriptBin "nodecames" ''
|
|
set -e
|
|
echo "Checking Database Migration"
|
|
${pkgs.flyway}/bin/flyway "-url=$NODECAMES_DATABASE" -user=nodecames "-password=$NODECAMES_PASSWORD" -locations="filesystem:${nodecames}/resources/main/db/migration/" -schemas=nodecames migrate
|
|
|
|
echo "Launching NodeCames"
|
|
${jdk}/bin/java -jar ${nodecames}/nodecames-${version}.jar --spring.datasource.url=$NODECAMES_DATABASE --spring.datasource.password=$NODECAMES_PASSWORD "$@"
|
|
'';
|
|
postgres-server = pkgs.writeShellScriptBin "postgres-server" ''
|
|
mkdir -p .postgres
|
|
${pkgs.podman}/bin/podman run -e POSTGRES_USER=nodecames -e POSTGRES_PASSWORD=nodecames-dev -e POSTGRES_DB=nodecames --volume ./.postgres:/var/lib/postgresql -p 127.0.0.1:5432:5432 postgres:18.4 &> .postgres/postgres.log &
|
|
'';
|
|
in {
|
|
packages.${system} = {
|
|
default = self.packages.${system}.nodecames;
|
|
inherit nodecames;
|
|
};
|
|
|
|
apps.${system} = {
|
|
default = self.apps.${system}.nodecames;
|
|
nodecames = { type = "app"; program = "${nodecames-launcher}/bin/nodecames"; };
|
|
postgres-server = { type = "app"; program = "${postgres-server}/bin/postgres-server"; };
|
|
};
|
|
|
|
devShells.${system} = {
|
|
default = pkgs.mkShell {
|
|
packages = [
|
|
jdk
|
|
gradle
|
|
(pkgs.vscode-with-extensions.override {
|
|
vscode = pkgs.vscodium;
|
|
vscodeExtensions = with pkgs.vscode-extensions; [
|
|
redhat.java
|
|
vscjava.vscode-java-debug
|
|
vscjava.vscode-java-test
|
|
vscjava.vscode-gradle
|
|
vscjava.vscode-java-dependency
|
|
sonarsource.sonarlint-vscode
|
|
bbenoist.nix
|
|
redhat.vscode-yaml
|
|
];
|
|
})
|
|
];
|
|
shellHook = ''
|
|
export LOGGING_LEVEL_ROOT="DEBUG"
|
|
echo "Starting Gradle daemon ..."
|
|
gradle
|
|
echo "Gradle daemon started."
|
|
'';
|
|
};
|
|
};
|
|
|
|
formatter.${system} = pkgs.nixpkgs-fmt;
|
|
};
|
|
}
|