nixos/image.modules: siplify type for better UX

Usage before:

```
image.modules.my-format = [
  (
    { config, pkgs, ... }:
    {
      imports = [ ./my-other-module.nix ];
      foo = "bar";
    };
  )
]
```

Usage after:

```
image.modules.my-format = { config, pkgs, ... }: {
  imports = [ ./my-other-module.nix ];
  foo = "bar";
};
```

If the user wants to pass a list of modules only:
```
image.modules.my-format.imports = [
  ./module1.nix
  ./module2.nix
]
```

cc @phaer @zimbatm
This commit is contained in:
DavHau 2025-01-07 12:39:46 +07:00
parent 66ca9869c7
commit 6e6be76601

View file

@ -9,59 +9,52 @@ let
inherit (lib) types;
imageModules = {
amazon = [ ../../maintainers/scripts/ec2/amazon-image.nix ];
azure = [ ../virtualisation/azure-image.nix ];
digital-ocean = [ ../virtualisation/digital-ocean-image.nix ];
google-compute = [ ../virtualisation/google-compute-image.nix ];
hyperv = [ ../virtualisation/hyperv-image.nix ];
linode = [ ../virtualisation/linode-image.nix ];
lxc = [ ../virtualisation/lxc-container.nix ];
lxc-metadata = [ ../virtualisation/lxc-image-metadata.nix ];
oci = [ ../virtualisation/oci-image.nix ];
openstack = [ ../../maintainers/scripts/openstack/openstack-image.nix ];
openstack-zfs = [ ../../maintainers/scripts/openstack/openstack-image-zfs.nix ];
proxmox = [ ../virtualisation/proxmox-image.nix ];
proxmox-lxc = [ ../virtualisation/proxmox-lxc.nix ];
qemu-efi = [ ../virtualisation/disk-image.nix ];
qemu = [
../virtualisation/disk-image.nix
{
image.efiSupport = false;
}
];
raw-efi = [
../virtualisation/disk-image.nix
{
image.format = "raw";
}
];
raw = [
../virtualisation/disk-image.nix
{
image.format = "raw";
image.efiSupport = false;
}
];
kubevirt = [ ../virtualisation/kubevirt.nix ];
vagrant-virtualbox = [ ../virtualisation/vagrant-virtualbox-image.nix ];
virtualbox = [ ../virtualisation/virtualbox-image.nix ];
vmware = [ ../virtualisation/vmware-image.nix ];
iso = [ ../installer/cd-dvd/iso-image.nix ];
iso-installer = [ ../installer/cd-dvd/installation-cd-base.nix ];
sd-card = [
(
amazon = ../../maintainers/scripts/ec2/amazon-image.nix;
azure = ../virtualisation/azure-image.nix;
digital-ocean = ../virtualisation/digital-ocean-image.nix;
google-compute = ../virtualisation/google-compute-image.nix;
hyperv = ../virtualisation/hyperv-image.nix;
linode = ../virtualisation/linode-image.nix;
lxc = ../virtualisation/lxc-container.nix;
lxc-metadata = ../virtualisation/lxc-image-metadata.nix;
oci = ../virtualisation/oci-image.nix;
openstack = ../../maintainers/scripts/openstack/openstack-image.nix;
openstack-zfs = ../../maintainers/scripts/openstack/openstack-image-zfs.nix;
proxmox = ../virtualisation/proxmox-image.nix;
proxmox-lxc = ../virtualisation/proxmox-lxc.nix;
qemu-efi = ../virtualisation/disk-image.nix;
qemu = {
imports = [ ../virtualisation/disk-image.nix ];
image.efiSupport = false;
};
raw-efi = {
imports = [ ../virtualisation/disk-image.nix ];
image.format = "raw";
};
raw = {
imports = [ ../virtualisation/disk-image.nix ];
image.format = "raw";
image.efiSupport = false;
};
kubevirt = ../virtualisation/kubevirt.nix;
vagrant-virtualbox = ../virtualisation/vagrant-virtualbox-image.nix;
virtualbox = ../virtualisation/virtualbox-image.nix;
vmware = ../virtualisation/vmware-image.nix;
iso = ../installer/cd-dvd/iso-image.nix;
iso-installer = ../installer/cd-dvd/installation-cd-base.nix;
sd-card = {
imports =
let
module = ../. + "/installer/sd-card/sd-image-${pkgs.targetPlatform.linuxArch}.nix";
in
if builtins.pathExists module then module else throw "The module ${module} does not exist."
)
];
kexec = [ ../installer/netboot/netboot-minimal.nix ];
if builtins.pathExists module then [ module ] else throw "The module ${module} does not exist.";
};
kexec = ../installer/netboot/netboot-minimal.nix;
};
imageConfigs = lib.mapAttrs (
name: modules:
name: module:
extendModules {
inherit modules;
modules = [ module ];
}
) config.image.modules;
in
@ -77,7 +70,7 @@ in
};
};
image.modules = lib.mkOption {
type = types.attrsOf (types.listOf types.deferredModule);
type = types.attrsOf types.deferredModule;
description = ''
image-specific NixOS Modules used for `system.build.images`.
'';