912 B
912 B
Dev Shell versus shellFor
This note covers 19-devshell-vs-shellfor/, which builds one local package and exposes two dev shells around it.
1. What Is Being Compared
The example defines:
devShells.<system>.generic, built withpkgs.mkShell, anddevShells.<system>.shellFor, built withhaskellPackages.shellFor.
Both shells support the same local package, but they are assembled differently.
2. Why the Difference Matters
mkShell is generic. You list tools directly.
shellFor is package-set-aware. It starts from Haskell packages and builds a shell around their dependencies.
That makes shellFor more tightly coupled to the package graph, while mkShell stays more explicit and general-purpose.
3. Commands to Try
cd 19-devshell-vs-shellfor
nix develop .#generic
nix develop .#shellFor
nix build
./result/bin/mini-shell-choice
nix flake check