{ description = "BeerBrawl"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, treefmt-nix, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; inherit (pkgs) lib; treefmt = treefmt-nix.lib.evalModule pkgs { projectRootFile = "flake.nix"; programs = { nixfmt = { enable = true; package = pkgs.nixfmt-classic; }; statix.enable = true; deadnix.enable = true; prettier = { enable = true; excludes = [ "backend/**" "frontend/openapi-generated/**" ]; }; }; }; devShell = pkgs.mkShell { inputsFrom = [ treefmt.config.build.devShell ]; nativeBuildInputs = with pkgs; [ jdk21 kotlin-language-server maven nodePackages.prettier nodePackages.typescript-language-server nodejs (java-language-server.overrideAttrs (oldAttrs: { patches = (oldAttrs.patches or [ ]) ++ [ (pkgs.fetchpatch { url = "https://github.com/georgewfraser/java-language-server/commit/801e5d233dff22627a8e2655288acffb9bd939c0.patch"; hash = "sha256-9bPRMFPWjuIw1fbeFIzrFf9shrctT4OYnJSl2J4CwBE="; }) ]; })) ]; }; in { checks.formatting = treefmt.config.build.check self; formatter = treefmt.config.build.wrapper; packages.default = devShell; devShells.default = devShell; }); }