mirror of
https://gitlab.com/rensa-nix/core.git
synced 2026-02-02 07:15:08 +01:00
44 lines
1.4 KiB
Markdown
44 lines
1.4 KiB
Markdown
# Rensa
|
|
|
|
Rensa is a powerful and flexible Nix flake framework designed to organize your Nix projects into logical units called "Cells".
|
|
It is heavily inspired by [divnix/std](https://github.com/divnix/std) but aims to provide a streamlined experience.
|
|
Feel free to check out std's awesome [docs](https://std.divnix.com/reference/std.html) too.
|
|
|
|
## Features
|
|
|
|
- **Cells**: Organize your code into functional domains (e.g., `backend`, `frontend`, `devops`).
|
|
- **Blocks**: Define types of outputs within a cell (e.g., `packages`, `devShells`, `nixosConfigurations`).
|
|
- **Actions**: Integrate with the CLI to run commands defined in your cells.
|
|
- **Cell Flakes**: Each cell can be its own flake, allowing for modular dependency management.
|
|
|
|
## Quick Start
|
|
|
|
1. **Initialize a Flake**: Create a `flake.nix` that uses `rensa`.
|
|
1. **Define Cells**: Create a `cells/` directory.
|
|
1. **Add Blocks**: Add `.nix` files in your cells to define outputs.
|
|
|
|
### Example `flake.nix`
|
|
|
|
```nix
|
|
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
|
ren.url = "gitlab:rensa-nix/core";
|
|
};
|
|
|
|
outputs = {ren, ...}@inputs: ren.buildWith {
|
|
inherit inputs;
|
|
cellsFrom = ./cells;
|
|
cellBlocks = with ren.blocks; [
|
|
(simple "packages")
|
|
(simple "devShells")
|
|
];
|
|
} {
|
|
packages = ren.select inputs.self [
|
|
["my-cell" "packages"]
|
|
];
|
|
};
|
|
}
|
|
```
|
|
|
|
See the [docs](https://rensa.projects.tf) for more.
|