| 5 Jul 2024 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | this is me, trying to make my PR to make the image builder kernel configurable | 20:41:18 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | It's quite a minimal PR | 20:41:41 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | diff --git a/lib/make-disk-image.nix b/lib/make-disk-image.nix
index a61e937..e1f7e36 100644
--- a/lib/make-disk-image.nix
+++ b/lib/make-disk-image.nix
@@ -10,7 +10,7 @@ let
vmTools = pkgs.vmTools.override {
rootModules = [ "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++ nixosConfig.config.disko.extraRootModules;
kernel = pkgs.aggregateModules
- (with nixosConfig.config.boot.kernelPackages; [ kernel ]
+ (with nixosConfig.config.disko.imageBuilderKernelPackages; [ kernel ]
++ lib.optional (lib.elem "zfs" nixosConfig.config.disko.extraRootModules) zfs);
};
cleanedConfig = diskoLib.testLib.prepareDiskoConfig nixosConfig.config diskoLib.testLib.devices;
diff --git a/module.nix b/module.nix
index 8c8fbc3..e3fde41 100644
--- a/module.nix
+++ b/module.nix
@@ -10,6 +10,15 @@ let
in
{
options.disko = {
+ imageBuilderKernelPackages = lib.mkOption {
+ type = lib.types.attrs;
+ description = ''
+ the kernel used when building disk images via make-disk-image.nix.
+ Useful when the config's kernel won't boot in the image-builder.
+ '';
+ default = config.boot.kernelPackages;
+ example = lib.literalExpression "pkgs.linuxPackages_testing";
+ };
extraRootModules = lib.mkOption {
type = lib.types.listOf lib.types.str;
description = ''
| 20:41:59 |
| ૮༼⚆︿⚆༽つ / wildan joined the room. | 20:46:17 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | Oh.. it's because my config for the thing I'm building an image for actually modifies the nixpkgs.hostPlatform of the disko image builder.. | 21:30:45 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | it's a bit too intertwined I think | 21:30:50 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | disko's image builder should not care about the nixosConfig as much as it does, it inherits too much | 21:31:18 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | i.e it needs its own pkgs instance, uneffected by the nixosConfig's overlays and stuff | 21:32:15 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | https://github.com/nix-community/disko/blob/master/lib/make-disk-image.nix#L3 | 21:33:26 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | Ah there it is.. yeah we need a module option namespace now | 21:33:34 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | disko.image-builder.pkgs for example should exist and be overridable, and all the other options we have should be inside of disko.image-builder | 21:33:56 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | I will pr that shortly | 21:59:05 |
| 8 Jul 2024 |
| wolfeexd joined the room. | 03:35:38 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | After so much hacking I finally managed to solve that problem, but it's a huge hack | 14:53:54 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | we'll end up maintaining almost all of `vmTools | 14:54:00 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | * we'll end up maintaining almost all of `vmTools` | 14:54:04 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | * we'll end up maintaining almost all of vmTools\ | 14:54:06 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | * we'll end up maintaining almost all of vmTools | 14:54:09 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | because vmTools doesn't let you directly override the qemu version used by all of the tools | 15:05:08 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | maybe I should make a PR to vmTools instead | 15:05:14 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | it just needs to stop using that damned qemuBinary function | 15:05:44 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | * it just needs to stop using that damned qemuBinary function and pass qemu as an input rather than the whole of pkgs | 15:05:56 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | https://github.com/NixOS/nixpkgs/pull/325619 | 19:04:57 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | important for disko | 19:05:00 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | unless anyone knows a better way | 19:05:07 |
matthewcroughan @ 39c3 (DECT 94667 or 97340 or 67192) | I've tried to make it as minimal as possible lassulus but it requires a vmTools change in nixpkgs | 19:16:09 |
wolfeexd | attempt: on a BIOS boot only system, I am trying to assign a id or uudi to a disko config because /dev/sdx gets switched around and becomes less viable in a raid setup problem: switching to or using /dev/disk/by-id/<some-device> causes a GRUB2 error after rebuild: "This GPT partition label contains no BIOS Boot Partition; embedding won't be possible." extra context: this is on a system that already has a disko config setup and im trying to switch it, i cannot bootstrap with /dev/disk/by-id disk either.
I've been stuck on this for a few days, just a nudge in the right direction even if its pointing out something in the docs, or a workaround would be very helpful.
config: "" { device ? throw "Set this to your disk device, e.g. /dev/sda", ... }: { disko.devices = { disk.main = { inherit device; type = "disk"; content = { type = "gpt"; partitions = { boot = { name = "boot"; size = "1M"; type = "EF02"; # for grub MBR }; esp = { name = "ESP"; size = "500M"; type = "EF00"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; }; }; swap = { size = "4G"; content = { type = "swap"; resumeDevice = true; }; }; root = { name = "root"; size = "100%"; content = { type = "lvm_pv"; vg = "root_vg"; }; }; }; }; }; lvm_vg = { root_vg = { type = "lvm_vg"; lvs = { root = { size = "100%FREE"; content = { type = "btrfs"; extraArgs = ["-f"];
subvolumes = {
"/root" = {
mountpoint = "/";
};
"/persist" = {
mountOptions = ["subvol=persist" "noatime"];
mountpoint = "/persist";
};
"/nix" = {
mountOptions = ["subvol=nix" "noatime"];
mountpoint = "/nix";
};
};
};
};
};
};
};
}; } ""
| 23:26:32 |
wolfeexd | if /dev/disk/by-id/xxx is just a link to /dev/sdx then im not sure what would grub to fail | 23:27:42 |
Philip Taron (UTC-8) | In reply to @wolfeexd:matrix.org if /dev/disk/by-id/xxx is just a link to /dev/sdx then im not sure what would grub to fail I think this link is made by systemd-udevd and happens quite late | 23:29:00 |
| 9 Jul 2024 |
wolfeexd | * if /dev/disk/by-id/xxx is just a link to /dev/sdx then im not sure what would cause grub to fail | 00:22:47 |