{
  description = "Flake for environment building ILP CW";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  };

  outputs = {
    self,
    nixpkgs,
  }: {
    devShells =
      nixpkgs.lib.genAttrs [
        "x86_64-linux"
        "aarch64-darwin"
      ] (system: let
        pkgs = import nixpkgs {
          inherit system;
        };
        ciDeps = with pkgs; [
          jdk21
          gradle
          google-java-format
          go
          just
        ];
        devDeps = with pkgs; [
          vscode-langservers-extracted
          jdt-language-server
          jless
          httpie
          docker
          docker-compose
          newman
          gron
          fx
          oha
          gopls
          bun
          svelte-language-server
          typescript-language-server
          prettier
        ];
      in {
        default = pkgs.mkShell {
          buildInputs = ciDeps ++ devDeps;
          shellHook = ''
            export JAVA_HOME=${pkgs.jdk21}
            echo "Java: $(java --version | head -n 1)"
          '';
        };
        ci = pkgs.mkShell {
          buildInputs = ciDeps;
          shellHook = ''
            export JAVA_HOME=${pkgs.jdk21}
            echo "Java: $(java --version | head -n 1)"
          '';
        };
      });
  };
}
