{ pkgs, lib, ... }: { packages = with pkgs; [ bacon cargo-deny cargo-duplicates cargo-expand cargo-features-manager cargo-flamegraph cargo-geiger cargo-generate cargo-hack cargo-insta cargo-llvm-cov cargo-machete cargo-mutants cargo-nextest cargo-rr cargo-udeps cargo-vet cargo-workspaces git sccache tokio-console vulkan-tools ]; env.RUSTC_WRAPPER = "sccache"; # https://devenv.sh/languages/ languages.rust = { enable = true; channel = "stable"; clangLinker.enable = true; mold.enable = true; rustflags = lib.concatStringsSep " " [ ]; components = [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ]; }; tasks."devenv:git-hooks:prepare-shared-hooks-rust" = { exec = '' if hooks_dir="$(git rev-parse --git-path hooks 2>/dev/null)"; then mkdir -p "$hooks_dir" chmod u+rwx,g+rwx "$hooks_dir" 2>/dev/null || true find "$hooks_dir" -maxdepth 1 -type f ! -user "$(id -un)" ! -name '*.sample' -delete 2>/dev/null || true fi ''; after = [ "devenv:files" ]; before = [ "devenv:git-hooks:install" ]; }; git-hooks.hooks = { rustfmt.enable = true; clippy.enable = true; }; }