{ pkgs , stdenv , fetchFromGitHub , jdk17_headless , maven , nix-gitignore , makeWrapper , ... }: let mvn2nix = fetchFromGitHub { owner = "fzakaria"; repo = "mvn2nix"; rev = "ea21cfe97069feee55fa307ca9b125616c1fa84f"; hash = "sha256-v/HvYqzkPaGin1ujo+Fi59wXC9vWxW3lYVSwElORRi8="; }; repository = (pkgs.callPackage "${mvn2nix}/maven.nix" {}).buildMavenRepositoryFromLockFile { file = ./mvn2nix-lock.json; }; in stdenv.mkDerivation rec { name = "ldap-sync"; src = nix-gitignore.gitignoreSource [] ./.; nativeBuildInputs = [ jdk17_headless maven makeWrapper ]; buildPhase = '' mvn --offline -Dmaven.repo.local=${repository} package -DskipTests; ''; testPhase = '' mvn --offline -Dmaven.repo.local=${repository} verify; ''; installPhase = '' install -Dm644 target/${name}-1.0-SNAPSHOT-jar-with-dependencies.jar $out/share/java/${name}.jar makeWrapper ${jdk17_headless}/bin/java $out/bin/${name} \ --add-flags "-jar $out/share/java/${name}.jar" ''; passthru = { inherit repository; mvn2nix = pkgs.callPackage "${mvn2nix}/default.nix" { }; }; }