docs: Move developer guides into the Developer section
nix fmt address davhau review
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
|
||||
!!! Danger ":fontawesome-solid-road-barrier: Under Construction :fontawesome-solid-road-barrier:"
|
||||
Currently under construction use with caution
|
||||
|
||||
:fontawesome-solid-road-barrier: :fontawesome-solid-road-barrier: :fontawesome-solid-road-barrier:
|
||||
|
||||
|
||||
## Structure
|
||||
|
||||
A disk template consists of exactly two files
|
||||
|
||||
- `default.nix`
|
||||
- `README.md`
|
||||
|
||||
```sh
|
||||
└── single-disk
|
||||
├── default.nix
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## `default.nix`
|
||||
|
||||
Placeholders are filled with their machine specific options when a template is used for a machine.
|
||||
|
||||
The user can choose any valid options from the hardware report.
|
||||
|
||||
The file itself is then copied to `machines/{machineName}/disko.nix` and will be automatically loaded by the machine.
|
||||
|
||||
`single-disk/default.nix`
|
||||
```
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = "{{mainDisk}}";
|
||||
...
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## Placeholders
|
||||
|
||||
Each template must declare the options of its placeholders depending on the hardware-report.
|
||||
|
||||
`api/disk.py`
|
||||
```py
|
||||
templates: dict[str, dict[str, Callable[[dict[str, Any]], Placeholder]]] = {
|
||||
"single-disk": {
|
||||
# Placeholders
|
||||
"mainDisk": lambda hw_report: Placeholder(
|
||||
label="Main disk", options=hw_main_disk_options(hw_report), required=True
|
||||
),
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Introducing new local or global placeholders requires contributing to clan-core `api/disks.py`.
|
||||
|
||||
### Predefined placeholders
|
||||
|
||||
Some placeholders provide predefined functionality
|
||||
|
||||
- `uuid`: In most cases we recommend adding a unique id to all disks. This prevents the system to false boot from i.e. hot-plugged devices.
|
||||
```
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
name = "main-{{uuid}}";
|
||||
...
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Readme
|
||||
|
||||
The readme frontmatter must be of the same format as modules frontmatter.
|
||||
|
||||
```markdown
|
||||
---
|
||||
description = "Simple disk schema for single disk setups"
|
||||
---
|
||||
|
||||
# Single disk
|
||||
|
||||
Use this schema for simple setups where ....
|
||||
|
||||
```
|
||||
|
||||
|
||||
The format and fields of this file is not clear yet. We might change that once fully implemented.
|
||||
Reference in New Issue
Block a user