118 lines
3.3 KiB
Markdown
118 lines
3.3 KiB
Markdown
# Disks
|
|
The disks module can be used by importing `inputs.self.nixosModules.malobeo.disko`
|
|
|
|
|
|
#### `let cfg = malobeo.disks`
|
|
|
|
#### `cfg.enable` (bool)
|
|
- **Type:** `bool`
|
|
- **Default:** `false`
|
|
- **Description:**
|
|
Enables the disk creation process using the `disko` tool. Set to `true` to initialize disk setup.
|
|
|
|
#### `cfg.hostId` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `""`
|
|
- **Description:**
|
|
The host ID used for ZFS disks. This ID should be generated using a command like `head -c4 /dev/urandom | od -A none -t x4`.
|
|
|
|
#### `cfg.encryption` (bool)
|
|
- **Type:** `bool`
|
|
- **Default:** `true`
|
|
- **Description:**
|
|
Determines if encryption should be enabled. Set to `false` to disable encryption for testing purposes.
|
|
|
|
#### `cfg.devNodes` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `"/dev/disk/by-id/"`
|
|
- **Description:**
|
|
Specifies where the disks should be mounted from.
|
|
- Use `/dev/disk/by-id/` for general systems.
|
|
- Use `/dev/disk/by-path/` for VMs.
|
|
- For more information on disk name conventions, see [OpenZFS FAQ](https://openzfs.github.io/openzfs-docs/Project%20and%20Community/FAQ.html#selecting-dev-names-when-creating-a-pool-linux).
|
|
|
|
#### `let cfg = malobeo.disks.root`
|
|
#### `cfg.disk0` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `""`
|
|
- **Description:**
|
|
The device name (beginning after `/dev/` e.g., `sda`) for the root filesystem.
|
|
|
|
#### `cfg.disk1` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `""`
|
|
- **Description:**
|
|
The device name (beginning after `/dev/` e.g., `sdb`) for the optional mirror disk of the root filesystem.
|
|
|
|
#### `cfg.swap` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `"8G"`
|
|
- **Description:**
|
|
Size of the swap partition on `disk0`. This is applicable only for the root disk configuration.
|
|
|
|
#### `cfg.reservation` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `"20GiB"`
|
|
- **Description:**
|
|
The ZFS reservation size for the root pool.
|
|
|
|
#### `cfg.mirror` (bool)
|
|
- **Type:** `bool`
|
|
- **Default:** `false`
|
|
- **Description:**
|
|
Whether to configure a mirrored ZFS root pool. Set to `true` to mirror the root filesystem across `disk0` and `disk1`.
|
|
|
|
#### `let cfg = malobeo.disks.storage`
|
|
#### `cfg.enable` (bool)
|
|
- **Type:** `bool`
|
|
- **Default:** `false`
|
|
- **Description:**
|
|
Enables the creation of an additional storage pool. Set to `true` to create the storage pool.
|
|
|
|
#### `cfg.disks` (list of strings)
|
|
- **Type:** `listOf string`
|
|
- **Default:** `[]`
|
|
- **Description:**
|
|
A list of device names without /dev/ prefix (e.g., `sda`, `sdb`) to include in the storage pool.
|
|
Example: `["disks/by-id/ata-ST16000NE000-2RW103_ZL2P0YSZ"]`.
|
|
|
|
#### `cfg.reservation` (string)
|
|
- **Type:** `string`
|
|
- **Default:** `"20GiB"`
|
|
- **Description:**
|
|
The ZFS reservation size for the storage pool.
|
|
|
|
#### `cfg.mirror` (bool)
|
|
- **Type:** `bool`
|
|
- **Default:** `false`
|
|
- **Description:**
|
|
Whether to configure a mirrored ZFS storage pool. Set to `true` to mirror the storage pool.
|
|
|
|
## Example Configuration
|
|
|
|
```nix
|
|
{
|
|
options.malobeo.disks = {
|
|
enable = true;
|
|
hostId = "abcdef01";
|
|
encryption = true;
|
|
devNodes = "/dev/disk/by-id/";
|
|
|
|
root = {
|
|
disk0 = "sda";
|
|
disk1 = "sdb";
|
|
swap = "8G";
|
|
reservation = "40GiB";
|
|
mirror = true;
|
|
};
|
|
|
|
storage = {
|
|
enable = true;
|
|
disks = [ "sdc" "sdd" "disks/by-uuid/sde" ];
|
|
reservation = "100GiB";
|
|
mirror = false;
|
|
};
|
|
};
|
|
}
|
|
```
|