25 lines
436 B
Nix
25 lines
436 B
Nix
{
|
|
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
|
|
);
|
|
}
|