{ description = "Base dev env for Java"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; in { devShells.default = pkgs.mkShell { packages = with pkgs; [ jdk21 maven gradle jdt-language-server # LSP for editors ]; shellHook = '' echo "Java $(java -version 2>&1 | head -1)" alias jbuild='find src -name "*.java" | xargs javac -d out && echo "Build success"' alias jrun='jbuild && java -cp out src.Main' alias jclean='rm -rf out && echo "Cleaned"' mkdir -p out echo " jbuild — compile all sources" echo " jrun — compile and run" echo " jclean — remove compiled output" ''; }; }); }