mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 05:05:29 +03:00
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:
parent
66ca9869c7
commit
6e6be76601
1 changed files with 41 additions and 48 deletions
|
@ -9,59 +9,52 @@ let
|
||||||
inherit (lib) types;
|
inherit (lib) types;
|
||||||
|
|
||||||
imageModules = {
|
imageModules = {
|
||||||
amazon = [ ../../maintainers/scripts/ec2/amazon-image.nix ];
|
amazon = ../../maintainers/scripts/ec2/amazon-image.nix;
|
||||||
azure = [ ../virtualisation/azure-image.nix ];
|
azure = ../virtualisation/azure-image.nix;
|
||||||
digital-ocean = [ ../virtualisation/digital-ocean-image.nix ];
|
digital-ocean = ../virtualisation/digital-ocean-image.nix;
|
||||||
google-compute = [ ../virtualisation/google-compute-image.nix ];
|
google-compute = ../virtualisation/google-compute-image.nix;
|
||||||
hyperv = [ ../virtualisation/hyperv-image.nix ];
|
hyperv = ../virtualisation/hyperv-image.nix;
|
||||||
linode = [ ../virtualisation/linode-image.nix ];
|
linode = ../virtualisation/linode-image.nix;
|
||||||
lxc = [ ../virtualisation/lxc-container.nix ];
|
lxc = ../virtualisation/lxc-container.nix;
|
||||||
lxc-metadata = [ ../virtualisation/lxc-image-metadata.nix ];
|
lxc-metadata = ../virtualisation/lxc-image-metadata.nix;
|
||||||
oci = [ ../virtualisation/oci-image.nix ];
|
oci = ../virtualisation/oci-image.nix;
|
||||||
openstack = [ ../../maintainers/scripts/openstack/openstack-image.nix ];
|
openstack = ../../maintainers/scripts/openstack/openstack-image.nix;
|
||||||
openstack-zfs = [ ../../maintainers/scripts/openstack/openstack-image-zfs.nix ];
|
openstack-zfs = ../../maintainers/scripts/openstack/openstack-image-zfs.nix;
|
||||||
proxmox = [ ../virtualisation/proxmox-image.nix ];
|
proxmox = ../virtualisation/proxmox-image.nix;
|
||||||
proxmox-lxc = [ ../virtualisation/proxmox-lxc.nix ];
|
proxmox-lxc = ../virtualisation/proxmox-lxc.nix;
|
||||||
qemu-efi = [ ../virtualisation/disk-image.nix ];
|
qemu-efi = ../virtualisation/disk-image.nix;
|
||||||
qemu = [
|
qemu = {
|
||||||
../virtualisation/disk-image.nix
|
imports = [ ../virtualisation/disk-image.nix ];
|
||||||
{
|
image.efiSupport = false;
|
||||||
image.efiSupport = false;
|
};
|
||||||
}
|
raw-efi = {
|
||||||
];
|
imports = [ ../virtualisation/disk-image.nix ];
|
||||||
raw-efi = [
|
image.format = "raw";
|
||||||
../virtualisation/disk-image.nix
|
};
|
||||||
{
|
raw = {
|
||||||
image.format = "raw";
|
imports = [ ../virtualisation/disk-image.nix ];
|
||||||
}
|
image.format = "raw";
|
||||||
];
|
image.efiSupport = false;
|
||||||
raw = [
|
};
|
||||||
../virtualisation/disk-image.nix
|
kubevirt = ../virtualisation/kubevirt.nix;
|
||||||
{
|
vagrant-virtualbox = ../virtualisation/vagrant-virtualbox-image.nix;
|
||||||
image.format = "raw";
|
virtualbox = ../virtualisation/virtualbox-image.nix;
|
||||||
image.efiSupport = false;
|
vmware = ../virtualisation/vmware-image.nix;
|
||||||
}
|
iso = ../installer/cd-dvd/iso-image.nix;
|
||||||
];
|
iso-installer = ../installer/cd-dvd/installation-cd-base.nix;
|
||||||
kubevirt = [ ../virtualisation/kubevirt.nix ];
|
sd-card = {
|
||||||
vagrant-virtualbox = [ ../virtualisation/vagrant-virtualbox-image.nix ];
|
imports =
|
||||||
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 = [
|
|
||||||
(
|
|
||||||
let
|
let
|
||||||
module = ../. + "/installer/sd-card/sd-image-${pkgs.targetPlatform.linuxArch}.nix";
|
module = ../. + "/installer/sd-card/sd-image-${pkgs.targetPlatform.linuxArch}.nix";
|
||||||
in
|
in
|
||||||
if builtins.pathExists module then module else throw "The module ${module} does not exist."
|
if builtins.pathExists module then [ module ] else throw "The module ${module} does not exist.";
|
||||||
)
|
};
|
||||||
];
|
kexec = ../installer/netboot/netboot-minimal.nix;
|
||||||
kexec = [ ../installer/netboot/netboot-minimal.nix ];
|
|
||||||
};
|
};
|
||||||
imageConfigs = lib.mapAttrs (
|
imageConfigs = lib.mapAttrs (
|
||||||
name: modules:
|
name: module:
|
||||||
extendModules {
|
extendModules {
|
||||||
inherit modules;
|
modules = [ module ];
|
||||||
}
|
}
|
||||||
) config.image.modules;
|
) config.image.modules;
|
||||||
in
|
in
|
||||||
|
@ -77,7 +70,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
image.modules = lib.mkOption {
|
image.modules = lib.mkOption {
|
||||||
type = types.attrsOf (types.listOf types.deferredModule);
|
type = types.attrsOf types.deferredModule;
|
||||||
description = ''
|
description = ''
|
||||||
image-specific NixOS Modules used for `system.build.images`.
|
image-specific NixOS Modules used for `system.build.images`.
|
||||||
'';
|
'';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue