flake.nix 1.9 KB

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