{ description = "Development Nix flake for the tennis court booking app (Loco.rs)"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, rust-overlay, ... }: let systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems f; in { devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; }; rust = pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-src" "rust-analyzer" "clippy" "rustfmt" ]; }; in { default = pkgs.mkShell { buildInputs = [ rust pkgs.pkg-config pkgs.openssl pkgs.sqlite pkgs.cmake pkgs.llvmPackages.clang pkgs.llvmPackages.libclang.lib ]; PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; # Use clang for any BoringSSL / bindgen-driven compilation shellHook = '' export CC=clang export CXX=clang++ echo " Tennis court booking dev shell ready" echo " rust: $(rustc --version)" echo " tip: cargo install loco-cli sea-orm-cli" ''; }; } ); }; }