This PR adds a complete Nix build system for Metabase, enabling reproducible builds and first-class support for the growing Nix/NixOS community. We'd love for this to land so Nix users can easily build, develop, and deploy Metabase.
This change has zero impact on your existing build system, CI, or development workflow. All Nix configuration lives in nix/, flake.nix, and flake.lock. The only modification to an existing file is .gitignore (one line removed to commit flake.lock for reproducibility).
What's included
Reproducible builds — nix build produces identical output regardless of host system
Dev shell — nix develop gives you JDK 21, Clojure, Node 22, Bun, PostgreSQL 18, and all other tools, zero manual setup
Fast incremental builds — the build is split into 7 cached sub-derivations (frontend, static-viz, translations, 17 individual drivers, uberjar), so changing a backend file doesn't rebuild the frontend and vice versa
Multi-arch OCI container images with layered caching
nix/microvms/
NixOS MicroVM lifecycle tests
nix/tests/
Integration tests (health, API, migration, OCI)
nix/shell-functions/
Dev shell helpers (build, clean, database, navigation, validation)
nix/packages.nix
Dependency declarations
nix/devshell.nix
Development shell configuration
nix/readme.md
Full documentation
I have carefully separated out the drivers, so that once this is merged, I can start working on debugging and fixing the clickhouse driver. e.g. I want to address Metabase > x10 times slower than the SQL query?