{ 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" '' 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; }; }