flake.nix

      {
        description = "Java Spring Boot Development Environment";
      
        inputs = {
          nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
        };
      
        outputs = { self, nixpkgs }:
          let
            system = "x86_64-linux"; # or "aarch64-linux" for ARM
            pkgs = import nixpkgs { inherit system; };
          in
          {
            devShells.${system}.default = pkgs.mkShell {
              buildInputs = with pkgs; [
                jdk21          # Or jdk17, jdk8, etc.
                maven          # Or gradle
                spring-boot-cli
                nix-ld         # Helps with unpatched binaries/IDEs
              ];
      
              shellHook = ''
                export JAVA_HOME=${pkgs.jdk21}
                echo "Spring Boot Workbench Loaded!"
                echo "Java version: $(java -version 2>&1 | head -n 1)"
              '';
            };
          };
      }
      

Initiate the Workbench

        nix develop
      

Initialize Spring Initializer

        spring init --dependencies=web,data-jpa,h2 --build=maven --language=java my-app
      

Execute

        mvn spring-boot:run