{ inputs.fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, fenix, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; ocamlPkgs = pkgs.ocaml-ng.ocamlPackages_5_1; toolchain = fenix.packages.${system}.stable.withComponents [ "cargo" "rustc" "clippy" ]; rust = pkgs.makeRustPlatform { cargo = toolchain; rustc = toolchain; }; in rec { devShells.default = pkgs.mkShell { inputsFrom = builtins.attrValues packages; nativeBuildInputs = [ pkgs.cargo-watch ocamlPkgs.ocaml-lsp pkgs.sqlite pkgs.sqlx-cli ]; }; packages = { default = packages.lambo; discocaml = ocamlPkgs.callPackage ./discocaml { }; lambo = let toml = builtins.fromTOML (builtins.readFile ./Cargo.toml); in rust.buildRustPackage { pname = toml.package.name; version = toml.package.version; src = ./.; cargoLock.lockFile = ./Cargo.lock; }; }; }); }