{ lib, pkgs, extraPackages ? [ ], inputsFrom ? [ ], shellHook ? "", }: let optionalPackage = path: lib.attrByPath path null pkgs; in pkgs.mkShell { inherit inputsFrom shellHook; packages = builtins.filter (pkg: pkg != null) ( [ pkgs.cargo pkgs.rustc (optionalPackage [ "rust-analyzer" ]) (optionalPackage [ "rustfmt" ]) (optionalPackage [ "clippy" ]) ] ++ extraPackages ); }