# Usage ## Basic Shell The absolute minimum to get started: ```nix devshell.mkShell {} ``` That's it. You've got yourself a shell. Not very exciting, but it works. ## Adding Packages Want some tools? Throw them in: ```nix devshell.mkShell { packages = [ pkgs.hello pkgs.git pkgs.nodejs ]; } ``` ## Environment Variables Set some env vars (because who doesn't love those): ```nix devshell.mkShell { env = { HELLO.value = "world"; }; } ``` ## Shell Hooks Run stuff when entering the shell: ```nix devshell.mkShell { enterShellCommands."hello".text = '' echo "Welcome to the devshell!" echo "Current directory: $PWD" ''; } ``` ## Putting It All Together A more realistic example: ```nix devshell.mkShell { packages = [ pkgs.nodejs pkgs.yarn pkgs.git ]; env = { NODE_ENV.value = "development"; API_URL.value = "http://localhost:3000"; }; enterShellCommands."enter".text = '' echo "🚀 Development environment ready!" node --version ''; } ``` ## Need More Features? For additional functionality, import modules: ```nix devshell.mkShell { imports = [ some-module.devshellModule ]; # your config... } ``` Check out [available modules](./integrations.md) for things like automatic file generation, dev tools and more.