devshell/docs/usage.md
2025-09-15 16:02:36 +02:00

1.3 KiB

Usage

Basic Shell

The absolute minimum to get started:

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.