devshell/docs/usage.md

81 lines
1.3 KiB
Markdown
Raw Normal View History

2025-09-15 16:02:36 +02:00
# 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.