Usage
Basic Shell
The absolute minimum to get started:
let
# make sure to add
# inputs.devshell.url = "gitlab:rensa-nix/devshell?dir=lib";
# to your inputs
devshell = inputs.devshell.lib { inherit pkgs; };
in
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:
devshell.mkShell {
packages = [ pkgs.hello pkgs.git pkgs.nodejs ];
}
Environment Variables
Set some env vars (because who doesn't love those):
devshell.mkShell {
env = {
HELLO.value = "world";
};
}
Shell Hooks
Run stuff when entering the shell:
devshell.mkShell {
enterShellCommands."hello".text = ''
echo "Welcome to the devshell!"
echo "Current directory: $PWD"
'';
}
Putting It All Together
A more realistic example:
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:
devshell.mkShell {
imports = [ some-module.devshellModule ];
# your config...
}
Check out available modules for things like automatic file generation, dev tools and more.