flake.nix 1.9 KB

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