| 1 Apr 2026 |
phaer | Formatting it would require the (risky/"experimental") incremental mode. But as it's already formatted, you can do either. Adding it to your disko config should add it to your fileSystems config implicitly. The only real advantage would be if you were to re-provision that host with a similar block volume. And at that point, why not start with a bigger disk to begin with? | 10:55:20 |
Benedikt Ritter (britter) | Okay, so you're essentially saying "just put it into filesystems directly to keep things simple"? | 10:56:38 |
phaer | I don't think there's a "right" answer here. I'd personally would do just fileSystems in that case, but it comes down to taste & future plans IMO | 10:57:47 |
phaer | Depending on how you manage your hetzner resources, changes are that provisioning the volume isn't 100% declarative to begin with (which is most often is fine IMO) | 10:59:29 |
phaer | * Depending on how you manage your hetzner resources, chances are that provisioning the volume isn't 100% declarative to begin with (which is most often is fine IMO) | 10:59:35 |
Benedikt Ritter (britter) | We're provisioning it via terraform. But thats disconnected from everything we do in Nix. Its a different layer of our infrastructure setup. | 11:25:59 |
Benedikt Ritter (britter) | But thanks giving your opinion! I think we'll go with filesystems. | 11:26:20 |
matthewcroughan | If you had used systemd-repart from the beginning here, it has this functionality you want already baked in | 12:33:04 |
matthewcroughan | in disko AFAIK this was planned but stalled | 12:33:14 |
matthewcroughan | But systemd-repart already has what you're seeking Ibelieve | 12:33:36 |
matthewcroughan | * But systemd-repart already has what you're seeking I believe | 12:33:43 |
Benedikt Ritter (britter) | Thanks for the pointer, I'll have a look! | 15:48:26 |
magic_rb | It also supports about a quarter of the features | 17:09:46 |
| sebastian changed their display name from crstl to sebastian. | 21:09:10 |
| sebastian changed their profile picture. | 21:09:33 |
| 4 Apr 2026 |
| Sol Astrius Phoenix set a profile picture. | 00:04:38 |
| Sol Astrius Phoenix removed their profile picture. | 00:13:23 |
| 25 Apr 2024 |
| David Mell (zraexy) joined the room. | 23:38:25 |
| David Mell (zraexy) changed their display name from David Mell to David Mell (zraexy). | 23:51:57 |
| 26 Apr 2024 |
Raj | Couple of questions about NixOS live USBs:
I want to partition my 64 GB USB flash drive into two partitions (FAT32 live USB + ext4 storage), so I used the following disko config:
let
usb = "/dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_0401a943ae4197a38a6f9070194e9ea2b3fb8dbb7997e05ed1b197c0e28946be4b8f000000000000000000001cf4be6800926418a955810751ab6336-0:0";
in {
disko.devices = {
disk = {
live = {
type = "disk";
device = usb;
content = {
type = "gpt";
partitions = {
ESP = {
type = "EF00";
device = "${usb}-part1";
priority = 0;
size = "8192M";
content = {
type = "filesystem";
format = "vfat";
};
};
storage = {
device = "${usb}-part2";
priority = 1;
size = "100%";
content = {
type = "filesystem";
format = "ext4";
};
};
};
};
};
};
};
}
I then copied over the files from the (minimal, non-graphical) NixOS live ISO into partition 1, hoping that the instructions on the Arch wiki would generalize to NixOS, but then my live ISO gets stuck with the following error message:
[...]
Timed out waiting for device /dev/root, trying to mount anyway
mounting /dev/root on /iso...
mount: mounting /dev/root on /mnt-root/iso failed: No such file or directory
An error occurred [...]
How can I use my USB flash drive as both a live USB and as a storage device? I found this relevant Discourse link but there was no resolution to the problem there.
I realize this might not be the best place to ask this, but I figured that folks here would have expertise configuring boot partitions correctly.
| 02:02:16 |
Raj | * Couple of questions about NixOS live USBs:
I want to partition my 64 GB USB flash drive into two partitions (FAT32 live USB + ext4 storage), so I used the following disko config:
let
usb = "/dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_0401a943ae4197a38a6f9070194e9ea2b3fb8dbb7997e05ed1b197c0e28946be4b8f000000000000000000001cf4be6800926418a955810751ab6336-0:0";
in {
disko.devices = {
disk = {
live = {
type = "disk";
device = usb;
content = {
type = "gpt";
partitions = {
ESP = {
type = "EF00";
device = "${usb}-part1";
priority = 0;
size = "8192M";
content = {
type = "filesystem";
format = "vfat";
};
};
storage = {
device = "${usb}-part2";
priority = 1;
size = "100%";
content = {
type = "filesystem";
format = "ext4";
};
};
};
};
};
};
};
}
I then copied over the files from the (minimal, non-graphical) NixOS live ISO into partition 1, hoping that the instructions on the Arch wiki would generalize to NixOS, but then my live ISO gets stuck with the following error message:
[...]
Timed out waiting for device /dev/root, trying to mount anyway
mounting /dev/root on /iso...
mount: mounting /dev/root on /mnt-root/iso failed: No such file or directory
An error occurred [...]
How can I use my USB flash drive as both a live USB and as a storage device? I found this relevant Discourse link but there was no resolution to the problem there.
I realize this might not be the best place to ask this, but I figured that folks here would have expertise configuring boot partitions correctly.
For reference, the NixOS manual says I should dd the ISO to the disk directly: sudo dd if=<path-to-image> of=/dev/sdX bs=4M conv=fsync
| 02:12:28 |
tim | I don't think that this will work since you need to unmount the live USB to format it as storage device | 07:16:00 |
Raj | In reply to @tim92:matrix.org I don't think that this will work since you need to unmount the live USB to format it as storage device Not sure what you mean, exactly. To clarify, I'm not trying to format the USB while it's live; I'm running this from an existing NixOS install.
If the"live USB" bit uses only ~1 GiB, there should be some way to make use of the remaining space, hopefully. | 07:57:47 |
| Perchun Pak left the room. | 07:57:54 |
| lassulus changed their profile picture. | 08:25:00 |
@vartroc:matrix.org | Soooo, I have decided to just try it. After debugging some syntax issues, I have encountered this bug:
error:
… while evaluating the attribute 'diskoScript'
at /nix/store/3mlzsgflq3z4wsk2arffhd999h1hj17g-disko/share/disko/lib/default.nix:418:15:
417|
418| diskoScript = (diskoLib.writeCheckedBash { inherit pkgs checked; }) "disko" ''
| ^
419| export PATH=${lib.makeBinPath ((cfg.config._packages pkgs) ++ [ pkgs.bash ])}:$PATH
… in the condition of the assert statement
at /nix/store/y11h0vfmjaf8j1796x0n2454hqldnbbr-0vyi8f8l8cya10dmgfrj0df2iqxlhiyi-source/pkgs/build-support/writers/scripts.nix:32:5:
31| assert (types.path.check nameOrPath) || (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
32| assert (types.path.check content) || (types.str.check content);
| ^
33| let
(stack trace truncated; use '--show-trace' to show the full trace)
error: The option `disko.devices.disk.lvm_vg.root_vg' does not exist. Definition values:
- In `<unknown-file>':
{
lvs = {
games = {
content = {
extraArgs = [
...
Does anybody have any idea how I can fix this?
Here's my disko.nix:
{
disko.devices = {
disk = {
disk0 = {
type = "disk";
device = "/dev/nvme1n1";
content = {
type = "gpt";
partitions = {
esp = {
name = "ESP";
size = "500M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
root = {
name = "root0";
size = "100%";
content = {
type = "lvm_pv";
vg = "root_vg";
};
};
};
};
};
disk1 = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
root = {
name = "root1";
size = "100%";
content = {
type = "lvm_pv";
vg = "root_vg";
};
};
};
};
};
lvm_vg = {
root_vg = {
type = "lvm_vg";
lvs = {
root = {
size = "25%FREE";
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"/root" = {
mountpoint = "/";
};
"/persist" = {
mountOptions = ["subvol=persist" "noatime"];
mountpoint = "/persist";
};
"/nix" = {
mountOptions = ["subvol=nix" "noatime"];
mountpoint = "/nix";
};
};
};
};
games = {
size = "100%FREE";
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"/games" = {
mountOptions = ["subvol=games" "noatime"];
mountpoint = "/games";
};
};
};
};
};
};
};
};
};
}
| 15:33:36 |
@vartroc:matrix.org | I couldn't find anything remotely connected with this bug | 15:34:34 |
@vartroc:matrix.org | If you need anything else from me, please ask | 18:58:57 |
lassulus | in line 43 you have root_vg but your vg is called root | 21:38:05 |
lassulus | so you would need to change the name also to root instead of root_vg | 21:38:19 |