| 11 Apr 2026 |
matthewcroughan | the CI failure seems to be unrelated to the PR content | 21:55:42 |
matthewcroughan | It adds a test for a simple real world zfs example, that will reproduce the "Cannot allocate memory" issue if you just change the boot.kernelPackages | 21:56:47 |
magic_rb | Id do atime=off dnodesize i think defaults to auto these days, id be explicit about which zstd im using and i tend to adjust recordsize. Also xattr=on i think is sa now which i think is better than posixacl? | 22:02:53 |
matthewcroughan | It's just an example | 22:03:26 |
matthewcroughan | what do you mean by "xattr=on i think is sa" ? | 22:03:41 |
matthewcroughan | you mean xattr=sa is default? | 22:04:02 |
matthewcroughan | ping | 22:11:48 |
matthewcroughan | But yeah you're probs riht about atime | 22:12:34 |
magic_rb | Yes | 22:12:35 |
matthewcroughan | * But yeah you're probs right about atime | 22:12:37 |
magic_rb | xattr=on == xattr=sa i think | 22:12:51 |
matthewcroughan | okay so you think dnodesize is already default, too? | 22:13:03 |
matthewcroughan | what about relatime though? | 22:13:51 |
matthewcroughan | Do you think that should also be off? | 22:13:55 |
matthewcroughan | https://wiki.debian.org/ZFS | 22:14:30 |
matthewcroughan | people here are using xattr=sa still | 22:14:36 |
matthewcroughan | https://blog.tiserbox.com/posts/2024-02-09-zfs-on-nix-os.html | 22:14:51 |
matthewcroughan | you can fined the same here from 2024 too | 22:14:57 |
matthewcroughan | not sure where to find the defaults tbh | 22:15:03 |
matthewcroughan | better to be explicit and not beholden to defaults though, no? | 22:15:17 |
| 12 Apr 2026 |
pandapip1 | I've had this in my config for a while
fileSystems."/data".options = [ "nofail" ]; # TODO find out why we need this!
# Notably, https://github.com/nix-community/disko/blob/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5/tests/zfs.nix#L12 also needs this
disko.devices = {
disk = {
...
data0 = {
type = "disk";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "data";
};
};
};
};
};
data1 = {
type = "disk";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "data";
};
};
};
};
};
};
zpool = {
data = {
type = "zpool";
mode = "mirror";
rootFsOptions = {
compression = "lz4";
"com.sun:auto-snapshot" = "true";
};
postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^data@blank$' || zfs snapshot data@blank";
datasets = {
"main" = {
type = "zfs_fs";
mountpoint = "/data";
};
};
};
};
};
Got any idea why the nomount is needed? It still mounts correctly, it just shows up as failing on boot, and if nomount isn't set it blocks boot.
| 00:26:21 |
pandapip1 | * I've had this in my config for a while
fileSystems."/data".options = [ "nofail" ]; # TODO find out why we need this!
# Notably, https://github.com/nix-community/disko/blob/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5/tests/zfs.nix#L12 also needs this
disko.devices = {
disk = {
...
data0 = {
type = "disk";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "data";
};
};
};
};
};
data1 = {
type = "disk";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "data";
};
};
};
};
};
};
zpool = {
data = {
type = "zpool";
mode = "mirror";
rootFsOptions = {
compression = "lz4";
"com.sun:auto-snapshot" = "true";
};
postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^data@blank$' || zfs snapshot data@blank";
datasets = {
"main" = {
type = "zfs_fs";
mountpoint = "/data";
};
};
};
};
};
Got any idea why the nomount is needed? It still mounts correctly, it just shows up as failing on boot, and if nomount isn't set it blocks boot.
| 00:26:30 |
pandapip1 | * I've had this in my config for a while
fileSystems."/data".options = [ "nofail" ]; # TODO find out why we need this!
# Notably, https://github.com/nix-community/disko/blob/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5/tests/zfs.nix#L12 also needs this
disko.devices = {
disk = {
...
data0 = {
type = "disk";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "data";
};
};
};
};
};
data1 = {
type = "disk";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "data";
};
};
};
};
};
};
zpool = {
data = {
type = "zpool";
mode = "mirror";
rootFsOptions = {
compression = "lz4";
"com.sun:auto-snapshot" = "true";
};
postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^data@blank$' || zfs snapshot data@blank";
datasets = {
"main" = {
type = "zfs_fs";
mountpoint = "/data";
};
};
};
};
};
Got any idea why the nofail is needed? It still mounts correctly, it just shows up as failing on boot, and if nofail isn't set it blocks boot.
| 00:27:50 |
matthewcroughan | hmm | 18:48:19 |
matthewcroughan | nixos-disko-images-aarch64-linux> [2026-04-12T18:47:09Z INFO virtiofsd] Client disconnected, shutting down
nixos-disko-images-aarch64-linux> [2026-04-12T18:47:09Z INFO virtiofsd] Client disconnected, shutting down
nixos-disko-images-aarch64-linux> Virtual machine didn't produce an exit code.
error: build of '/nix/store/iqb7h2cw2bgh42l6pkijwm4g1fcqwzcw-nixos-disko-images.drv' on 'ssh-ng://nix-ssh@m2u' failed: Cannot build '/nix/store/iqb7h2cw2bgh42l6pkijwm4g1fcqwzcw-nixos-disko-images.drv'. | 18:48:21 |
matthewcroughan | that's a new one | 18:48:22 |
matthewcroughan | Why does disko spew tons of empty newlines? | 18:54:44 |
matthewcroughan |  Download image.png | 18:54:46 |
matthewcroughan | extraPostVM logs don't go here either | 18:55:01 |
matthewcroughan | something wants to get out and log, but not sure what | 18:56:09 |