Files
misael/flake.nix
T

102 lines
3.7 KiB
Nix

{
description = "Misael server";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
build-gradle-application.url = "git+file:/home/mysaa/Documents/Projets/buildGradleApplication";#"github:raphiz/buildGradleApplication";
gradle2nix.url = "github:tadfisher/gradle2nix/v2";
};
outputs = { self, nixpkgs, build-gradle-application, gradle2nix, ... }@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;
misael = gradle2nix.builders.x86_64-linux.buildGradlePackage {
pname = "misael";
version = "1.0";
lockFile = ./gradle.lock;
gradleInstallFlags = [ "assemble" ];
inherit gradle;
buildJdk = jdk;
src = ./.;
buildPhase = ''
gradle assemble
'';
installPhase = ''
mkdir $out
cp ./build/libs/misael-beta.jar $out/misael.jar
cp -r ./build/resources/ $out/resources/
'';
};
misael-launcher = pkgs.writeShellScriptBin "misael" ''
set -e
echo "Checking Database Migration"
${pkgs.flyway}/bin/flyway "-url=$MISAEL_DATABASE" -user=misael "-password=$MISAEL_PASSWORD" -locations="filesystem:${misael}/resources/main/db/migration/" -schemas=misael migrate
export THECREW_IMAGES_FOLDER=${thecrew-images}
echo "Launching misael"
${jdk}/bin/java -jar ${misael}/misael.jar --spring.datasource.url=$MISAEL_DATABASE --spring.datasource.password=$MISAEL_PASSWORD "$@"
'';
postgres-server = pkgs.writeShellScriptBin "postgres-server" ''
mkdir -p .postgres
${pkgs.podman}/bin/podman run -e POSTGRES_USER=misael -e POSTGRES_PASSWORD=misael-dev -e POSTGRES_DB=misael --volume ./.postgres:/var/lib/postgresql -p 127.0.0.1:5432:5432 postgres:18.4 &> .postgres/postgres.log &
'';
thecrew-images = pkgs.runCommand "thecrew-images" {} ''
mkdir $out
cd $out
export PATH=${pkgs.inkscape}/bin:$PATH
${lib.getExe pkgs.python3} ${./src/main/resources/static/images/thecrew-make.py}\
${./src/main/resources/static/images/thecrew.svg}\
${./src/main/resources/static/images/thecrew-modifiers.svg}
'';
in {
packages.${system} = {
default = self.packages.${system}.misael;
inherit thecrew-images misael;
};
apps.${system} = {
default = self.apps.${system}.misael;
misael = { type = "app"; program = "${misael-launcher}/bin/misael"; };
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 = ''
echo "Starting Gradle daemon ..."
gradle
export THECREW_IMAGES_FOLDER=${thecrew-images}
export THECREW_MISSIONS_FILE=$PWD/thecrew-missions.json
echo "Gradle daemon started."
'';
};
};
formatter.${system} = pkgs.nixpkgs-fmt;
};
}