22 May 2023 |
@elvishjerricco:matrix.org | How is that impure? It could be done in the sandbox by the derivation, no outside help needed | 13:47:50 |
K900 | It'll depend heavily on the kernel support for those filesystems | 13:48:02 |
@elvishjerricco:matrix.org | oh i see | 13:48:07 |
@elvishjerricco:matrix.org | yea | 13:48:08 |
Arian | could make the kernel config part of system-features :hmm: | 13:48:31 |
@elvishjerricco:matrix.org | pls no :P | 13:48:38 |
Arian | but idk if I like that | 13:48:39 |
Arian | maybe the trick is to just boot a way more minimal VM than we're currently doing | 13:49:09 |
@elvishjerricco:matrix.org | but yea we should definitely work to remove the unnecessary disk images from the nixos tests that don't need them | 13:49:14 |
Arian | and just do the filesystem bits | 13:49:18 |
@elvishjerricco:matrix.org | they take a long time to build and put a lot of strain on storage | 13:49:29 |
Arian | (or maybe we do that already; idk) | 13:49:31 |
@nikstur:matrix.org | In reply to @arianvp:matrix.org shouldn't we be able to build an image without booting a VM? Afaik all the file systems that systemd-repart supports ("ext4", "btrfs", "xfs", "vfat", "erofs", "squashfs") can be created without a VM. In fact with this commit https://github.com/systemd/systemd/commit/1eb86ddde4f36165a99732b53cc97cef1acc3aa7 we can build disk images with systemd-repart in the nix build sandbox. For all but vfat and xfs the, mkfs tools take a directory and turn it into a fs. To build a vfat fs you need to copy the files manually (with mtools) into the fs image after you have created it (still in user space though) and for xfs there is a weird protofile which you can also create outside of a VM. I have no idea about the other filesystems NixOS supports. | 16:14:07 |
@nikstur:matrix.org | And then there a fun things like bootctl install which checks that the ESP is a vfat fs, so afaik you cant call it in a chroot. | 16:14:37 |
@elvishjerricco:matrix.org | How does repart's CopyFiles thing even work? | 16:16:08 |
@nikstur:matrix.org | Ahh this is new, there is a variable for bootctl which disables the check $SYSTEMD_RELAX_ESP_CHECKS=1 | 16:16:29 |
@nikstur:matrix.org | In reply to @elvishjerricco:matrix.org How does repart's CopyFiles thing even work? It creates a root directory for most filesystems and then calls mkfs pointing at the root directory. | 16:17:11 |
@elvishjerricco:matrix.org | well but how does it actually populate the file system with contents? | 16:17:27 |
@elvishjerricco:matrix.org | does it mount the fs? | 16:17:34 |
@elvishjerricco:matrix.org | or does it have some userspace way to write to the fs | 16:17:50 |
@nikstur:matrix.org | mkfs does the population | 16:17:57 |
@nikstur:matrix.org | See: https://github.com/systemd/systemd/blob/main/src/shared/mkfs-util.c#LL482C36-L482C36 | 16:18:00 |
@nikstur:matrix.org | With the exception of vfat where they do something similar to what we do in our iso images: https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/cd-dvd/iso-image.nix#L437 | 16:20:08 |
@nikstur:matrix.org | And XFS which I don't really understand | 16:20:22 |
@elvishjerricco:matrix.org | TIL it's common for mkfs.* to support prepopulation | 16:26:12 |
Arian | So then we can get rid of qemu no? | 16:28:59 |
@elvishjerricco:matrix.org | I doubt it? I think the thing qemu is for is so we can just run a regular install process. We don't have a static fs tree to populate with | 16:30:01 |
@nikstur:matrix.org | Maybe make-diks-image-ng.nix for most use-cases? | 16:30:17 |
Arian | But the FS tree is just a nix store closure no? | 16:30:31 |
@nikstur:matrix.org | * Maybe make-diks-image-ng.nix for ~~most~~ a few use-cases? | 16:30:33 |