{ description = "java-template"; inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ ]; systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; perSystem = { config, self', inputs', pkgs, system, ... }: let jdk = pkgs.jdk21.override { }; buildInputs = [ jdk ]; devTools = [ pkgs.google-java-format pkgs.jdt-language-server ]; in { devShells.default = pkgs.mkShell { buildInputs = buildInputs ++ devTools; }; packages = { default = pkgs.stdenv.mkDerivation { pname = "ssort"; version = "1.0.0"; src = ./.; nativeBuildInputs = buildInputs ++ [ pkgs.makeWrapper ]; buildPhase = '' javac -Werror -g:none -deprecation -verbose Sort.java ''; installPhase = '' mkdir -p $out/{bin,lib} cp *.class $out/lib makeWrapper ${pkgs.lib.getExe jdk} $out/bin/ssort --add-flags "-cp $out/lib/ Sort" ''; }; }; }; flake = { }; }; }