{ description = "DevShell for Kotlin + Quarkus"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = inputs@{ self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; config = { allowUnfree = true; }; }; browsers = pkgs.playwright-driver.browsers; chromiumDir = builtins.head ( builtins.filter (n: builtins.match "chromium-[0-9]+" n != null) (builtins.attrNames (builtins.readDir "${browsers}")) ); in { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ jdk21 quarkus kotlin kotlin-language-server nodejs playwright-driver.browsers ]; JAVA_HOME = "${pkgs.jdk21}"; PLAYWRIGHT_BROWSERS_PATH = "${browsers}"; PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1"; PLAYWRIGHT_NODEJS_PATH = "${pkgs.nodejs}/bin/node"; PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${browsers}/${chromiumDir}/chrome-linux64/chrome"; shellHook = '' echo "🚀 Kotlin Quarkus development environment loaded" echo "Java version:" java -version echo "" echo "Quarkus CLI version:" quarkus version export QUARKUS_LAUNCH_DEV_MODE=true alias qdev="quarkus dev" alias qbuild="quarkus build" ''; }; } ); }