flake.nix 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. {
  2. inputs = {
  3. mvn2nix.url = "github:fzakaria/mvn2nix";
  4. flake-utils.url = "github:numtide/flake-utils";
  5. };
  6. outputs = { nixpkgs, mvn2nix, flake-utils, ... }:
  7. flake-utils.lib.eachDefaultSystem (system:
  8. let
  9. pkgs = (import nixpkgs {
  10. overlays = [ mvn2nix.overlay ];
  11. inherit system;
  12. });
  13. mavenRepository = pkgs.buildMavenRepositoryFromLockFile {
  14. file = ./mvn2nix-lock.json;
  15. };
  16. in rec {
  17. packages = rec {
  18. wee = pkgs.stdenv.mkDerivation rec {
  19. pname = "wee";
  20. version = "0.0.1-SNAPSHOT";
  21. name = "${pname}-${version}";
  22. src = pkgs.nix-gitignore.gitignoreSource [ "*.nix" ] ./.;
  23. nativeBuildInputs = [
  24. pkgs.makeWrapper
  25. ];
  26. buildPhase = ''
  27. echo "Building with maven repository ${mavenRepository}"
  28. ${pkgs.maven}/bin/mvn package --offline -Dmaven.repo.local=${mavenRepository}
  29. '';
  30. installPhase = ''
  31. # create the bin directory
  32. mkdir -p $out/bin
  33. # create a symbolic link for the lib directory
  34. ln -s ${mavenRepository} $out/lib
  35. # copy out the JAR
  36. # Maven already setup the classpath to use m2 repository layout
  37. # with the prefix of lib/
  38. cp target/${name}.jar $out/
  39. # create a wrapper that will automatically set the classpath
  40. # this should be the paths from the dependency derivation
  41. makeWrapper ${pkgs.jdk11_headless}/bin/java $out/bin/${pname} \
  42. --add-flags "-jar $out/${name}.jar"
  43. '';
  44. };
  45. };
  46. defaultPackage = packages.wee;
  47. });
  48. }