diff --git a/flake.nix b/flake.nix index 1f2304e..e33b253 100644 --- a/flake.nix +++ b/flake.nix @@ -187,6 +187,22 @@ echo "Bun/Node web shell ready" ''; }; + + rust = pkgs.mkShell { + name = "rust"; + packages = with pkgs; [ + cargo + rustc + rust-analyzer + rustfmt + clippy + ]; + shellHook = '' + mkdir -p "$PWD/.cache/cargo" + export CARGO_HOME="$PWD/.cache/cargo" + echo "Rust toolchain shell ready" + ''; + }; }; in baseShells // zigShell); diff --git a/modules/home/rsydn/devtools/languages.nix b/modules/home/rsydn/devtools/languages.nix index 369b170..e3a929e 100644 --- a/modules/home/rsydn/devtools/languages.nix +++ b/modules/home/rsydn/devtools/languages.nix @@ -47,6 +47,7 @@ let pkgs.nodejs_20 else getPkg "nodejs"; + cargoPackage = getPkg "cargo"; toolSpecs = [ { @@ -64,6 +65,11 @@ let cfg = cfg.node; defaultPackage = nodePackage; } + { + name = "cargo"; + cfg = cfg.cargo; + defaultPackage = cargoPackage; + } ]; languagePackages = mkToolPackages toolSpecs; @@ -90,6 +96,12 @@ in { description = "Node.js runtime for CLI tooling."; }; + cargo = mkToolOption { + name = "Cargo"; + defaultPackage = cargoPackage; + description = "Rust package manager and toolchain."; + }; + extraPackages = mkOption { type = types.listOf types.package; default = [ ];