docs: write docs

This commit is contained in:
technofab 2025-09-15 16:02:36 +02:00
parent 1ecf4d461d
commit 312b725620
No known key found for this signature in database
5 changed files with 112 additions and 1 deletions

9
docs/examples.md Normal file
View file

@ -0,0 +1,9 @@
# Examples
DevShell is used in these projects, feel free to take inspiration from them:
- [nix-gitlab-ci (only V3)](https://gitlab.com/TECHNOFAB/nix-gitlab-ci)
- [soonix](https://gitlab.com/TECHNOFAB/soonix)
- [rensa-core](https://gitlab.com/rensa-nix/core)
- [rensa-devtools](https://gitlab.com/rensa-nix/devtools)

View file

@ -1 +1,15 @@
# Hello world!
# Rensa DevShell
Minimal devshell implementation using Modules.
Inspired by [numtide/devshell](https://github.com/numtide/devshell).
It features the absolute basics, like env variables (dynamic values/eval supported),
programs and shell hooks ([`enterShellCommands`](./options.md#entershellcommands)).
Additional functionality can be added with modules, like [Rensa DevTools](https://devtools.rensa.projects.tf).
## Features
- **fast**: due to the NixOS module system it's a bit slower than `pkgs.mkShell`, but only about 10% (still in the tens of milliseconds range)
- **minimal**: only contains the bare minimum, the rest should be added with imported modules
- **straight forward**: no toml (like numtide/devshell), no abstractions over Nix (like devenv), just a straight forward Nix lib

5
docs/integrations.md Normal file
View file

@ -0,0 +1,5 @@
# Integrations / Modules
- [soonix](https://soonix.projects.tf/usage/#with-devshell)
- [rensa devtools](https://devtools.rensa.projects.tf)

80
docs/usage.md Normal file
View file

@ -0,0 +1,80 @@
# 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.

View file

@ -47,6 +47,9 @@ in
};
nav = [
{"Introduction" = "index.md";}
{"Usage" = "usage.md";}
{"Integrations" = "integrations.md";}
{"Examples" = "examples.md";}
{"Options" = "options.md";}
];
markdown_extensions = [