{ pkgs, lib, config, ... }: let fenix = import (fetchTarball "https://github.com/nix-community/fenix/archive/main.tar.gz") { }; enableWasm = false; nightly = false; toolchain = if nightly then fenix.default else fenix.stable; wasmTarget = if nightly then "default" else "stable"; fenixPackage = with fenix; combine ([ (toolchain.withComponents ["cargo" "rustc" "rust-src" "rust-analyzer"]) ] ++ lib.optional enableWasm [ targets.wasm32-unknown-unknown.${wasmTarget}.rust-std ]); in { home.sessionVariables.CARGO_HOME = "${config.xdg.dataHome}/cargo"; home.sessionVariables.RUSTUP_HOME = "${config.xdg.dataHome}/rustup"; home.packages = [ fenixPackage ] ++ lib.optional enableWasm [ pkgs.trunk ]; programs.nixvim.plugins.lsp.servers.rust-analyzer = { enable = true; package = null; installCargo = false; installRustc = false; extraOptions = { settings = { rust-analyzer = { checkOnSave = { command = "clippy"; }; }; }; }; }; }