| 21 Sep 2024 |
matthewcroughan | or do you mean in my PR? | 15:42:48 |
Mic92 | I mean the implementation in nixpkgs | 15:43:25 |
Mic92 | It's ext4 only afaik | 15:43:31 |
matthewcroughan | what does that have to do with disko? | 15:43:33 |
Mic92 | https://github.com/NixOS/nixpkgs/blob/636c5a8db5eb31a9ce04d0e75779ab684b0f8ae3/nixos/lib/make-disk-image.nix#L453 | 15:43:57 |
matthewcroughan | ah okay so make-disk-image from nixpkgs has a complex thing, and my thing is too simple | 15:44:50 |
matthewcroughan | and just using the path-info size is wrong in some way? | 15:45:01 |
Mic92 | It's just the raw content and doesn't take into account that filesystem need more data structures for inodes and stuff. | 15:45:31 |
matthewcroughan | I don't actually understand in what way it is wrong to just use the path-info -Sh output though, because it worked in my cases | 15:45:41 |
matthewcroughan | In reply to @joerg:thalheim.io It's just the raw content and doesn't take into account that filesystem need more data structures for inodes and stuff. Oh right, so for that I just hardcode a little bit more in, since I was unable to figure that out | 15:45:58 |
matthewcroughan | I don't think that's a bad approach, to just +10M it | 15:46:07 |
Mic92 | What about filesystem that do compression for example? | 15:46:35 |
Mic92 | I was wondering if it wouldn't be better to increase the image everytime we run out of disk space. | 15:46:59 |
matthewcroughan | What is more unsatisfying:
- A spare +10M at the end of the image
- An spare 5G and trial-and-error session that takes 30 minutes to figure out what the
imageSize should be
| 15:47:04 |
Mic92 | I think most filesystem can be dynamically increased | 15:47:09 |
matthewcroughan | * What is more unsatisfying:
- A spare +10M at the end of the image
- A spare 5G, or a trial-and-error session that takes 30 minutes to figure out what the
imageSize should be
| 15:47:33 |
matthewcroughan | In using disko I just set the imageSize to a large incorrect value since I can't be bothered with the trial-and-error | 15:47:52 |
matthewcroughan | In reply to @joerg:thalheim.io I was wondering if it wouldn't be better to increase the image everytime we run out of disk space. Oh you mean some process inside the builder that identifies that there's no disk space avail, and expands it to fit? | 15:48:35 |
Mic92 | Yes | 15:48:57 |
matthewcroughan | That's pretty clever, and I wanted to do the same for NixThePlanet VMs lol | 15:49:02 |
matthewcroughan | so if the builder fails, it'll try again until it succeeds, regarding the macos/windows builders not working 100% of the time because mac/win suck | 15:49:30 |
Mic92 | It would require filesystem dependent code but we could offer only for selected filesystems in the beginning | 15:49:32 |
matthewcroughan | In reply to @joerg:thalheim.io It would require filesystem dependent code but we could offer only for selected filesystems in the beginning Yeah, right now there isn't any of that, and if there's going to be, we should also make something like disko.image-builder.imageResizeOnFirstBoot or something | 15:50:08 |
matthewcroughan | Right now I have all this boiler plate in my disko.nix's | 15:50:41 |
matthewcroughan | boot.postBootCommands = ''
# On the first boot, resize the disk
if [ -f /disko-first-boot ]; then
set -euo pipefail
set -x
# Figure out device names for the boot device and root filesystem.
rootPart=$(${pkgs.util-linux}/bin/findmnt -n -o SOURCE /)
bootDevice=$(lsblk -npo PKNAME $rootPart)
partNum=$(lsblk -npo MAJ:MIN $rootPart | ${pkgs.gawk}/bin/awk -F: '{print $2}')
# Resize the root partition and the filesystem to fit the disk
echo ",+," | sfdisk -N$partNum --no-reread $bootDevice
${pkgs.parted}/bin/partprobe
${pkgs.bcachefs-tools}/bin/bcachefs device resize $rootPart
# Prevents this from running on later boots.
rm -f /disko-first-boot
fi
'';
| 15:50:43 |
matthewcroughan | basically stealing the bits from nixpkgs that expand on boot | 15:50:52 |
matthewcroughan | postMountHook = toString (pkgs.writeScript "postMountHook.sh" ''
touch /mnt/disko-first-boot
'');
| 15:51:10 |
matthewcroughan | * postMountHook = toString (pkgs.writeScript "postMountHook.sh" ''
touch /mnt/disko-first-boot
'');
| 15:51:12 |
matthewcroughan | Lassulus said something about how this shouldn't be a disko feature at all, because of what you're saying about the filesystem specific code | 15:51:35 |
matthewcroughan | but if we're gonna have to do it for auto calculating the imageSize, this might as well get dealt with at the same time | 15:52:02 |