{
inputs,
pkgs,
perSystem,
}: let
crateBuilder = inputs.self.lib.mkCrateBuilder pkgs;
craneLib = crateBuilder.craneLib;
lib = crateBuilder.lib;
# Treefmt doesn't easily expose the programs with out its flake-parts module (as far as I can tell)
# This snipit, modified from their default.nix, lets us grab the programs after buiding with our treefmt config
treefmt-module-builder = nixpkgs: configuration: let
mod = inputs.treefmt-nix.lib.evalModule nixpkgs configuration;
in
mod.config.build;
treefmt-module = treefmt-module-builder pkgs (import ./treefmt.nix);
treefmt-bin = treefmt-module.wrapper;
treefmt-programs = lib.attrValues treefmt-module.programs;
in
craneLib.devShell {
# Inherit inputs from checks.
#checks = self.checks.${system}; TODO
# Additional dev-shell environment variables can be set directly
# MY_CUSTOM_DEVELOPMENT_VAR = "something else";
# Extra inputs can be added here; cargo and rustc are provided by default.
packages = with pkgs;
[
cargo-limit
cargo-nextest
just
bacon
cargo-dist
oranda
treefmt-bin
perSystem.cargo-nextest-xdg.default
]
++ treefmt-programs;
}